import { HomeServiceAcceptanceType, HomeServiceAdminApplicationType, HomeServiceAssessmentType, HomeServiceApplicationDraftType, HomeServiceCatalogType, HomeServiceCaseType, HomeServiceOverviewCardType, HomeServicePlanType, HomeServiceRectificationType, HomeServiceSettlementType, HomeServiceTaskType, HomeServiceTimelineItemType } from '@/types/home-service.uts' const SERVICE_CATALOG: Array = [ { id: 'svc-001', name: '基础上门护理', category: '日常照护', price: 168, durationText: '约 2 小时', summary: '覆盖生命体征监测、基础照护、风险提醒。', tags: ['适老化', '护理员上门', '支持家属陪同'], suitableFor: '行动不便、术后恢复、慢病随访老人' }, { id: 'svc-002', name: '康复训练指导', category: '康复支持', price: 260, durationText: '约 3 小时', summary: '提供肢体训练、步态练习和居家康复建议。', tags: ['康复师', '步骤清晰', '可连续预约'], suitableFor: '卒中恢复、术后康复、失能半失能老人' }, { id: 'svc-003', name: '慢病健康随访', category: '健康管理', price: 128, durationText: '约 90 分钟', summary: '完成血压血糖监测、用药核对与健康宣教。', tags: ['随访', '慢病', '可生成记录'], suitableFor: '高血压、糖尿病等长期管理老人' } ] function createTimeline(title1: string, title2: string, title3: string): Array { return [ { id: 'tl-1', title: title1, time: '2026-05-12 09:00', description: '系统已建立服务申请档案。' }, { id: 'tl-2', title: title2, time: '2026-05-12 11:30', description: '评估员已完成初步核对与上门安排。' }, { id: 'tl-3', title: title3, time: '2026-05-13 08:20', description: '当前环节已进入待执行状态。' } ] } const CASE_STORE: Array = [ { id: 'case-001', caseNo: 'HS202605130001', status: 'pending_dispatch', statusText: '待派单', statusTone: 'warning', serviceName: '基础上门护理', serviceTime: '2026-05-14 09:00-11:00', applicantName: '李晓兰', elderName: '李奶奶', age: 78, phone: '13800138000', address: '梅州市梅江区学海路 18 号 2 栋 602', summary: '老人近期行动困难,需要基础照护与生命体征监测。', currentStep: 3, totalSteps: 8, staffName: '待分配', staffPhone: '待分配', amount: 168, timeline: createTimeline('已提交申请', '待上门评估', '待派单') }, { id: 'case-002', caseNo: 'HS202605130002', status: 'in_service', statusText: '服务中', statusTone: 'primary', serviceName: '慢病健康随访', serviceTime: '2026-05-13 15:00-16:30', applicantName: '张春梅', elderName: '张爷爷', age: 82, phone: '13900139000', address: '梅州市梅县区华侨城康宁路 66 号', summary: '随访血压血糖,核对用药并记录健康建议。', currentStep: 6, totalSteps: 8, staffName: '陈护理', staffPhone: '13688886666', amount: 128, timeline: createTimeline('已提交申请', '已生成服务方案', '服务执行中') } ] const TASK_STORE: Array = [ { id: 'task-001', caseId: 'case-001', caseNo: 'HS202605130001', status: 'pending_visit', statusText: '待上门', statusTone: 'warning', serviceName: '基础上门护理', elderName: '李奶奶', address: '梅州市梅江区学海路 18 号 2 栋 602', appointmentTime: '2026-05-14 09:00', checkInStatus: '未签到', recordSummary: '待填写服务记录', staffName: '黄护理', staffPhone: '13777770001', actionText: '签到开始', timeline: createTimeline('调度已派单', '护理员已接单', '等待上门签到') }, { id: 'task-002', caseId: 'case-002', caseNo: 'HS202605130002', status: 'serving', statusText: '服务中', statusTone: 'primary', serviceName: '慢病健康随访', elderName: '张爷爷', address: '梅州市梅县区华侨城康宁路 66 号', appointmentTime: '2026-05-13 15:00', checkInStatus: '已签到', recordSummary: '已完成血压血糖记录,待补充宣教备注。', staffName: '陈护理', staffPhone: '13688886666', actionText: '完成提交', timeline: createTimeline('调度已派单', '已到岗签到', '服务执行中') } ] const ADMIN_APPLICATIONS: Array = [ { id: 'admin-app-001', caseId: 'case-001', caseNo: 'HS202605130001', status: 'pending_assessment', statusText: '待评估', statusTone: 'warning', elderName: '李奶奶', serviceName: '基础上门护理', preferredTime: '2026-05-14 上午', assessmentResult: '待评估员上门', dispatcherName: '刘调度', staffName: '待分配' }, { id: 'admin-app-002', caseId: 'case-002', caseNo: 'HS202605130002', status: 'pending_acceptance', statusText: '待验收', statusTone: 'success', elderName: '张爷爷', serviceName: '慢病健康随访', preferredTime: '2026-05-13 下午', assessmentResult: '评估通过,按标准随访执行', dispatcherName: '刘调度', staffName: '陈护理' } ] const ADMIN_OVERVIEW: Array = [ { id: 'overview-1', label: '待评估申请', value: '06', tone: 'warning' }, { id: 'overview-2', label: '待派单工单', value: '03', tone: 'primary' }, { id: 'overview-3', label: '服务中任务', value: '08', tone: 'success' }, { id: 'overview-4', label: '待验收任务', value: '04', tone: 'neutral' } ] const ADMIN_ASSESSMENTS: Array = [ { caseId: 'case-001', caseNo: 'HS202605130001', elderName: '李奶奶', serviceName: '基础上门护理', riskLevel: '中风险', careLevel: '护理二级', visitTime: '2026-05-14 09:00', assessmentSummary: '行动缓慢,需重点关注跌倒风险和晨间血压波动。', requirementTags: ['血压监测', '基础照护', '跌倒风险提醒'] }, { caseId: 'case-002', caseNo: 'HS202605130002', elderName: '张爷爷', serviceName: '慢病健康随访', riskLevel: '低风险', careLevel: '随访管理', visitTime: '2026-05-13 15:00', assessmentSummary: '生命体征稳定,重点跟踪慢病用药执行情况。', requirementTags: ['血糖记录', '用药核对', '家属宣教'] } ] const ADMIN_PLANS: Array = [ { caseId: 'case-001', caseNo: 'HS202605130001', elderName: '李奶奶', serviceName: '基础上门护理', planTitle: '基础护理 7 日方案', serviceFrequency: '每周 3 次', serviceCycle: '2026-05-14 至 2026-05-21', executorAdvice: '优先安排熟悉慢病照护的护理员,首次上门同步评估跌倒风险。', billingSummary: '基础护理 ¥168/次,计划总额 ¥504', planSummary: '围绕晨间照护、生命体征监测和风险提醒开展服务。' }, { caseId: 'case-002', caseNo: 'HS202605130002', elderName: '张爷爷', serviceName: '慢病健康随访', planTitle: '慢病随访连续方案', serviceFrequency: '每周 2 次', serviceCycle: '2026-05-13 至 2026-05-27', executorAdvice: '执行人员需同步上传血压血糖记录并完成家属宣教。', billingSummary: '随访服务 ¥128/次,计划总额 ¥512', planSummary: '持续随访血压血糖、用药和饮食管理情况。' } ] const CONSUMER_ACCEPTANCE: Array = [ { caseId: 'case-001', caseNo: 'HS202605130001', elderName: '李奶奶', serviceName: '基础上门护理', acceptanceStatus: 'waiting', acceptanceStatusText: '待验收', rating: 5, feedback: '护理员按时到达,服务过程清晰,老人状态稳定。', tags: ['准时上门', '沟通清楚', '动作规范'] }, { caseId: 'case-002', caseNo: 'HS202605130002', elderName: '张爷爷', serviceName: '慢病健康随访', acceptanceStatus: 'waiting', acceptanceStatusText: '待验收', rating: 5, feedback: '已查看记录,等待家属最终确认。', tags: ['记录完整', '态度耐心'] } ] const ADMIN_RECTIFICATIONS: Array = [ { caseId: 'case-001', caseNo: 'HS202605130001', elderName: '李奶奶', serviceName: '基础上门护理', issueSummary: '家属要求补充护理动作说明和现场照片留痕。', deadline: '2026-05-14 18:00', ownerName: '黄护理', status: 'pending', statusText: '待整改' }, { caseId: 'case-002', caseNo: 'HS202605130002', elderName: '张爷爷', serviceName: '慢病健康随访', issueSummary: '记录完整,无需整改。', deadline: '2026-05-15 12:00', ownerName: '陈护理', status: 'closed', statusText: '已关闭' } ] const ADMIN_SETTLEMENTS: Array = [ { caseId: 'case-001', caseNo: 'HS202605130001', elderName: '李奶奶', serviceName: '基础上门护理', billingPeriod: '2026-05-14 至 2026-05-21', totalAmount: '¥504', insuranceAmount: '¥300', selfPayAmount: '¥204', archiveStatus: 'pending', archiveStatusText: '待归档' }, { caseId: 'case-002', caseNo: 'HS202605130002', elderName: '张爷爷', serviceName: '慢病健康随访', billingPeriod: '2026-05-13 至 2026-05-27', totalAmount: '¥512', insuranceAmount: '¥256', selfPayAmount: '¥256', archiveStatus: 'pending', archiveStatusText: '待归档' } ] function delay(): Promise { return new Promise((resolve) => { setTimeout(() => { resolve(true) }, 120) }) } function cloneCase(item: HomeServiceCaseType): HomeServiceCaseType { return { ...item, timeline: item.timeline.map((log) => ({ ...log })) } } function cloneTask(item: HomeServiceTaskType): HomeServiceTaskType { return { ...item, timeline: item.timeline.map((log) => ({ ...log })) } } function cloneAssessment(item: HomeServiceAssessmentType): HomeServiceAssessmentType { return { ...item, requirementTags: item.requirementTags.slice(0) } } function clonePlan(item: HomeServicePlanType): HomeServicePlanType { return { ...item } } function cloneAcceptance(item: HomeServiceAcceptanceType): HomeServiceAcceptanceType { return { ...item, tags: item.tags.slice(0) } } function cloneRectification(item: HomeServiceRectificationType): HomeServiceRectificationType { return { ...item } } function cloneSettlement(item: HomeServiceSettlementType): HomeServiceSettlementType { return { ...item } } export async function fetchHomeServiceCatalog(): Promise> { await delay() return SERVICE_CATALOG.map((item) => ({ ...item, tags: item.tags.slice(0) })) } export async function fetchConsumerHomeServiceCases(): Promise> { await delay() return CASE_STORE.map((item) => cloneCase(item)) } export async function fetchConsumerHomeServiceCaseDetail(caseId: string): Promise { await delay() const target = CASE_STORE.find((item) => item.id == caseId) return target == null ? null : cloneCase(target) } export async function createHomeServiceApplication(draft: HomeServiceApplicationDraftType): Promise { await delay() const matchedService = SERVICE_CATALOG.find((item) => item.id == draft.serviceId) const created: HomeServiceCaseType = { id: 'case-' + String(CASE_STORE.length + 1).padStart(3, '0'), caseNo: 'HS20260513' + String(CASE_STORE.length + 1).padStart(4, '0'), status: 'submitted', statusText: '已提交', statusTone: 'primary', serviceName: draft.serviceName, serviceTime: draft.preferredTime, applicantName: draft.applicantName, elderName: draft.elderName, age: draft.age, phone: draft.phone, address: draft.address, summary: draft.demandSummary, currentStep: 1, totalSteps: 8, staffName: '待分配', staffPhone: '待分配', amount: matchedService != null ? matchedService.price : 0, timeline: [ { id: 'new-1', title: '已提交申请', time: '2026-05-13 10:00', description: '系统已接收申请,等待受理。' } ] } CASE_STORE.unshift(created) ADMIN_APPLICATIONS.unshift({ id: 'admin-app-' + String(ADMIN_APPLICATIONS.length + 1).padStart(3, '0'), caseId: created.id, caseNo: created.caseNo, status: 'submitted', statusText: '已提交', statusTone: 'primary', elderName: created.elderName, serviceName: created.serviceName, preferredTime: created.serviceTime, assessmentResult: '待受理', dispatcherName: '待分配', staffName: '待分配' }) return cloneCase(created) } export async function fetchWorkerTasks(): Promise> { await delay() return TASK_STORE.map((item) => cloneTask(item)) } export async function fetchWorkerTaskDetail(taskId: string): Promise { await delay() const target = TASK_STORE.find((item) => item.id == taskId) return target == null ? null : cloneTask(target) } export async function advanceWorkerTask(taskId: string): Promise { await delay() const target = TASK_STORE.find((item) => item.id == taskId) if (target == null) { return null } if (target.status == 'pending_visit') { target.status = 'serving' target.statusText = '服务中' target.statusTone = 'primary' target.checkInStatus = '已签到' target.recordSummary = '已完成签到,请按步骤填写服务记录。' target.actionText = '完成提交' target.timeline.unshift({ id: 'tl-' + String(target.timeline.length + 1), title: '已到岗签到', time: '2026-05-13 14:55', description: '护理员已在服务地址完成签到。' }) } else if (target.status == 'serving') { target.status = 'completed' target.statusText = '待验收' target.statusTone = 'success' target.recordSummary = '已提交执行记录与服务凭证,等待家属验收。' target.actionText = '已提交' target.timeline.unshift({ id: 'tl-' + String(target.timeline.length + 1), title: '服务完成待验收', time: '2026-05-13 16:20', description: '服务记录和凭证已经提交。' }) } const relatedCase = CASE_STORE.find((item) => item.id == target.caseId) if (relatedCase != null) { if (target.status == 'serving') { relatedCase.status = 'in_service' relatedCase.statusText = '服务中' relatedCase.statusTone = 'primary' relatedCase.currentStep = 6 relatedCase.staffName = target.staffName relatedCase.staffPhone = target.staffPhone relatedCase.timeline.unshift({ id: 'case-log-' + String(relatedCase.timeline.length + 1), title: '护理员已签到', time: '2026-05-13 14:55', description: '执行端已开始上门服务。' }) } else if (target.status == 'completed') { relatedCase.status = 'pending_acceptance' relatedCase.statusText = '待验收' relatedCase.statusTone = 'success' relatedCase.currentStep = 7 relatedCase.timeline.unshift({ id: 'case-log-' + String(relatedCase.timeline.length + 1), title: '执行完成待验收', time: '2026-05-13 16:20', description: '家属可查看记录并进行验收反馈。' }) } } const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == target.caseId) if (relatedAdmin != null) { if (target.status == 'serving') { relatedAdmin.status = 'in_service' relatedAdmin.statusText = '服务中' relatedAdmin.statusTone = 'primary' relatedAdmin.staffName = target.staffName } else if (target.status == 'completed') { relatedAdmin.status = 'pending_acceptance' relatedAdmin.statusText = '待验收' relatedAdmin.statusTone = 'success' } } return cloneTask(target) } export async function submitWorkerCheckIn(taskId: string, note: string): Promise { await delay() const target = TASK_STORE.find((item) => item.id == taskId) if (target == null) { return null } if (target.status == 'pending_visit') { target.status = 'serving' target.statusText = '服务中' target.statusTone = 'primary' target.checkInStatus = '已签到' target.recordSummary = note == '' ? '已完成签到,请继续填写服务记录。' : note target.actionText = '完成提交' target.timeline.unshift({ id: 'checkin-' + String(target.timeline.length + 1), title: '到岗签到完成', time: '2026-05-13 14:40', description: note == '' ? '护理员已完成签到。' : note }) } const relatedCase = CASE_STORE.find((item) => item.id == target.caseId) if (relatedCase != null) { relatedCase.status = 'in_service' relatedCase.statusText = '服务中' relatedCase.statusTone = 'primary' relatedCase.currentStep = 6 relatedCase.staffName = target.staffName relatedCase.staffPhone = target.staffPhone relatedCase.timeline.unshift({ id: 'case-checkin-' + String(relatedCase.timeline.length + 1), title: '执行人员已到岗', time: '2026-05-13 14:40', description: note == '' ? '已完成签到,开始执行服务。' : note }) } const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == target.caseId) if (relatedAdmin != null) { relatedAdmin.status = 'in_service' relatedAdmin.statusText = '服务中' relatedAdmin.statusTone = 'primary' relatedAdmin.staffName = target.staffName } return cloneTask(target) } export async function submitWorkerServiceRecord(taskId: string, summary: string): Promise { await delay() const target = TASK_STORE.find((item) => item.id == taskId) if (target == null) { return null } target.recordSummary = summary == '' ? target.recordSummary : summary target.timeline.unshift({ id: 'record-' + String(target.timeline.length + 1), title: '服务记录已更新', time: '2026-05-13 15:30', description: summary == '' ? '已保存服务记录。' : summary }) const relatedCase = CASE_STORE.find((item) => item.id == target.caseId) if (relatedCase != null) { relatedCase.summary = summary == '' ? relatedCase.summary : summary relatedCase.timeline.unshift({ id: 'case-record-' + String(relatedCase.timeline.length + 1), title: '执行记录已回传', time: '2026-05-13 15:30', description: summary == '' ? '执行端已保存记录。' : summary }) } return cloneTask(target) } export async function submitWorkerException(taskId: string, exceptionType: string, description: string): Promise { await delay() const target = TASK_STORE.find((item) => item.id == taskId) if (target == null) { return null } target.status = 'exception' target.statusText = '异常上报' target.statusTone = 'warning' target.actionText = '已上报' target.timeline.unshift({ id: 'exception-' + String(target.timeline.length + 1), title: '异常已上报', time: '2026-05-13 15:45', description: exceptionType + ':' + description }) const relatedCase = CASE_STORE.find((item) => item.id == target.caseId) if (relatedCase != null) { relatedCase.status = 'exception' relatedCase.statusText = '异常处理中' relatedCase.statusTone = 'warning' relatedCase.timeline.unshift({ id: 'case-exception-' + String(relatedCase.timeline.length + 1), title: '服务异常待处理', time: '2026-05-13 15:45', description: exceptionType + ':' + description }) } const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == target.caseId) if (relatedAdmin != null) { relatedAdmin.status = 'exception' relatedAdmin.statusText = '异常处理中' relatedAdmin.statusTone = 'warning' } return cloneTask(target) } export async function fetchAdminAssessmentDetail(caseId: string): Promise { await delay() const target = ADMIN_ASSESSMENTS.find((item) => item.caseId == caseId) return target == null ? null : cloneAssessment(target) } export async function submitAdminAssessment(caseId: string, riskLevel: string, careLevel: string, assessmentSummary: string): Promise { await delay() const target = ADMIN_ASSESSMENTS.find((item) => item.caseId == caseId) if (target == null) { return null } target.riskLevel = riskLevel target.careLevel = careLevel target.assessmentSummary = assessmentSummary const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == caseId) if (relatedAdmin != null) { relatedAdmin.status = 'pending_plan' relatedAdmin.statusText = '待方案' relatedAdmin.statusTone = 'primary' relatedAdmin.assessmentResult = careLevel + ' · ' + riskLevel } const relatedCase = CASE_STORE.find((item) => item.id == caseId) if (relatedCase != null) { relatedCase.currentStep = 2 relatedCase.timeline.unshift({ id: 'case-assessment-' + String(relatedCase.timeline.length + 1), title: '上门评估完成', time: '2026-05-13 13:20', description: assessmentSummary }) } return cloneAssessment(target) } export async function fetchAdminServicePlanDetail(caseId: string): Promise { await delay() const target = ADMIN_PLANS.find((item) => item.caseId == caseId) return target == null ? null : clonePlan(target) } export async function submitAdminServicePlan( caseId: string, planTitle: string, serviceFrequency: string, serviceCycle: string, planSummary: string ): Promise { await delay() const target = ADMIN_PLANS.find((item) => item.caseId == caseId) if (target == null) { return null } target.planTitle = planTitle target.serviceFrequency = serviceFrequency target.serviceCycle = serviceCycle target.planSummary = planSummary const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == caseId) if (relatedAdmin != null) { relatedAdmin.status = 'pending_dispatch' relatedAdmin.statusText = '待派单' relatedAdmin.statusTone = 'warning' relatedAdmin.assessmentResult = target.planTitle + ' · ' + target.serviceFrequency } const relatedCase = CASE_STORE.find((item) => item.id == caseId) if (relatedCase != null) { relatedCase.currentStep = 3 relatedCase.status = 'pending_dispatch' relatedCase.statusText = '待派单' relatedCase.statusTone = 'warning' relatedCase.timeline.unshift({ id: 'case-plan-' + String(relatedCase.timeline.length + 1), title: '服务方案已生成', time: '2026-05-13 14:10', description: planSummary }) } return clonePlan(target) } export async function fetchConsumerAcceptanceDetail(caseId: string): Promise { await delay() const target = CONSUMER_ACCEPTANCE.find((item) => item.caseId == caseId) return target == null ? null : cloneAcceptance(target) } export async function submitConsumerAcceptance( caseId: string, approved: boolean, rating: number, feedback: string, tags: Array ): Promise { await delay() const target = CONSUMER_ACCEPTANCE.find((item) => item.caseId == caseId) if (target == null) { return null } target.acceptanceStatus = approved ? 'approved' : 'rejected' target.acceptanceStatusText = approved ? '已验收' : '已退回' target.rating = rating target.feedback = feedback target.tags = tags.slice(0) const relatedCase = CASE_STORE.find((item) => item.id == caseId) if (relatedCase != null) { relatedCase.status = approved ? 'completed' : 'revision_required' relatedCase.statusText = approved ? '已完成' : '待整改' relatedCase.statusTone = approved ? 'success' : 'warning' relatedCase.currentStep = approved ? 8 : 7 relatedCase.timeline.unshift({ id: 'case-accept-' + String(relatedCase.timeline.length + 1), title: approved ? '家属已验收' : '家属退回整改', time: '2026-05-13 17:10', description: feedback }) } const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == caseId) if (relatedAdmin != null) { relatedAdmin.status = approved ? 'completed' : 'revision_required' relatedAdmin.statusText = approved ? '已完成' : '待整改' relatedAdmin.statusTone = approved ? 'success' : 'warning' } return cloneAcceptance(target) } export async function fetchAdminRectificationDetail(caseId: string): Promise { await delay() const target = ADMIN_RECTIFICATIONS.find((item) => item.caseId == caseId) return target == null ? null : cloneRectification(target) } export async function submitAdminRectification(caseId: string, issueSummary: string): Promise { await delay() const target = ADMIN_RECTIFICATIONS.find((item) => item.caseId == caseId) if (target == null) { return null } target.issueSummary = issueSummary target.status = 'closed' target.statusText = '已关闭' const relatedAdmin = ADMIN_APPLICATIONS.find((item) => item.caseId == caseId) if (relatedAdmin != null) { relatedAdmin.status = 'pending_acceptance' relatedAdmin.statusText = '待复验收' relatedAdmin.statusTone = 'primary' } const relatedCase = CASE_STORE.find((item) => item.id == caseId) if (relatedCase != null) { relatedCase.status = 'pending_acceptance' relatedCase.statusText = '待复验收' relatedCase.statusTone = 'primary' relatedCase.timeline.unshift({ id: 'case-rectification-' + String(relatedCase.timeline.length + 1), title: '整改处理完成', time: '2026-05-13 18:10', description: issueSummary }) } return cloneRectification(target) } export async function fetchAdminSettlementDetail(caseId: string): Promise { await delay() const target = ADMIN_SETTLEMENTS.find((item) => item.caseId == caseId) return target == null ? null : cloneSettlement(target) } export async function submitAdminSettlementArchive(caseId: string): Promise { await delay() const target = ADMIN_SETTLEMENTS.find((item) => item.caseId == caseId) if (target == null) { return null } target.archiveStatus = 'archived' target.archiveStatusText = '已归档' const relatedCase = CASE_STORE.find((item) => item.id == caseId) if (relatedCase != null) { relatedCase.timeline.unshift({ id: 'case-settlement-' + String(relatedCase.timeline.length + 1), title: '结算归档完成', time: '2026-05-13 18:30', description: '结算单和执行材料已完成归档。' }) } return cloneSettlement(target) } export async function fetchAdminHomeServiceApplications(): Promise> { await delay() return ADMIN_APPLICATIONS.map((item) => ({ ...item })) } export async function fetchAdminHomeServiceOverview(): Promise> { await delay() return ADMIN_OVERVIEW.map((item) => ({ ...item })) }