openlearn-next 0.4.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +26 -21
  2. package/cli-data.mjs +535 -40
  3. package/cli-doctor.mjs +456 -17
  4. package/cli.mjs +214 -12
  5. package/dist/assets/AcademicYearFilter-DUUGpDKt.js +1 -0
  6. package/dist/assets/ActivityWorkspaceWidget-5PzyxF6a.js +1 -0
  7. package/dist/assets/AdminDirectoryView-BCtmQTEK.js +5 -0
  8. package/dist/assets/AssessmentCenter-B43ojHG-.js +1 -0
  9. package/dist/assets/BatchPickerModal-CbmjInp7.js +1 -0
  10. package/dist/assets/ClassesView-DEnMaDOt.js +32 -0
  11. package/dist/assets/ClassroomCountdownWidget-CHq4983w.js +2 -0
  12. package/dist/assets/CloudDriveModal-D2t3Uyzr.js +1 -0
  13. package/dist/assets/ComputerLabView-YtnoT5Rb.js +1 -0
  14. package/dist/assets/CourseManagement-DOXyJ_j-.js +1 -0
  15. package/dist/assets/CourseWizardModal-Dbi6Caw2.js +3 -0
  16. package/dist/assets/CoursewareHubPanel-CyxDIJAF.js +1 -0
  17. package/dist/assets/Dashboard-2rLu_ZBy.js +8 -0
  18. package/dist/assets/ExportWeightModal-BrmAh6VX.js +1 -0
  19. package/dist/assets/GLTFLoader-CZJbo_y1.js +1 -0
  20. package/dist/assets/HelpTour-D_q1z_MI.js +1 -0
  21. package/dist/assets/HelpView-CVBrKDrd.js +204 -0
  22. package/dist/assets/ImportLessonsModal-PhHtX31R.js +1 -0
  23. package/dist/assets/ImportModal-DqjqNeH4.js +2 -0
  24. package/dist/assets/InteractiveCoursewareViewer-Vi6lLz7a.js +1 -0
  25. package/dist/assets/InteractiveWhiteboard-lTzeayX5.js +65 -0
  26. package/dist/assets/LazyCourseware-KIt0rGtW.js +2 -0
  27. package/dist/assets/LazyWhiteboard-CCN3pYcW.js +2 -0
  28. package/dist/assets/LessonEditorView-D_GVhHuM.js +1 -0
  29. package/dist/assets/LiveClassroomView-BRsZ6QEq.js +61 -0
  30. package/dist/assets/NotificationDetailModal-tY5rxYCN.js +1 -0
  31. package/dist/assets/OrbitControls-CQjN_uwS.js +1 -0
  32. package/dist/assets/PluginView-CedpAW6d.js +77 -0
  33. package/dist/assets/ProcessLogsModal-Cfr-T9Gd.js +1 -0
  34. package/dist/assets/QuizGeneratorModal-bUA002kP.js +1 -0
  35. package/dist/assets/StudentAssignmentView-BhAz6Hfk.js +1 -0
  36. package/dist/assets/StudentLessonView-DC1yX4kG.js +1 -0
  37. package/dist/assets/StudentView-PHKxIV9T.js +2 -0
  38. package/dist/assets/SystemResourceLibraryModal-DgXYe6_x.js +1 -0
  39. package/dist/assets/TeacherView-DscJtOJ9.js +2 -0
  40. package/dist/assets/TimetableView-D2ozoj_D.js +6 -0
  41. package/dist/assets/UTIF-FfCsrHhe.js +1 -0
  42. package/dist/assets/__vite-optional-peer-dep_ai_ooxml-ui-BIHI7g3E.js +1 -0
  43. package/dist/assets/browser-DEI0QxZC.js +1 -0
  44. package/dist/assets/html2canvas-pro.esm-Bo50djkB.js +12 -0
  45. package/dist/assets/index-2676X8YB.js +131 -0
  46. package/dist/assets/index-C6hlh8pw.css +1 -0
  47. package/dist/assets/{index.es-C5eWEO4o.js → index.es-DyEF0CZ9.js} +1 -1
  48. package/dist/assets/pluginParsers-e4PSm2Iy.js +1 -0
  49. package/dist/assets/react_pptx-react-viewer-BIHI7g3E.js +1 -0
  50. package/dist/assets/teaching-modes-client-BeVaDdJ-.js +1 -0
  51. package/dist/assets/three.module-iOYB3rD4.js +4228 -0
  52. package/dist/assets/timeline-duration-BgdJCSrW.js +1 -0
  53. package/dist/assets/{vendor-charts-qLbgF1eL.js → vendor-charts-SrpBsvM3.js} +2 -2
  54. package/dist/assets/{vendor-icons-BRmhY6fg.js → vendor-icons-CXrZ3R2V.js} +2 -2
  55. package/dist/assets/{vendor-konva-CEOq4dcl.js → vendor-konva-Dne0Z-WC.js} +1 -1
  56. package/dist/assets/{vendor-pdf-D7rGevI1.js → vendor-pdf-C1Vh2Aqq.js} +56 -56
  57. package/dist/assets/vendor-pptx-Bzn6whfK.js +11311 -0
  58. package/dist/assets/vendor-pptx-DIWdXF1L.css +1 -0
  59. package/dist/assets/{vendor-react-B0t7H3hh.js → vendor-react-Kv_JATwr.js} +1 -1
  60. package/dist/assets/vendor-utils-aM7aYvPP.js +1 -0
  61. package/dist/cli-migrator.cjs +310 -0
  62. package/dist/env-validation.cjs +351 -0
  63. package/dist/index.html +13 -10
  64. package/dist/plugin-net-preload.cjs +263 -0
  65. package/dist/server.cjs +51140 -27229
  66. package/migrations/000_initial_schema.sql +410 -0
  67. package/migrations/001_add_execution_mode.sql +6 -0
  68. package/migrations/002_add_client_session_expiry.sql +6 -0
  69. package/migrations/003_classroom_runtime.sql +33 -0
  70. package/migrations/004_courseware_score_config.sql +26 -0
  71. package/migrations/005_assignment_hub.sql +155 -0
  72. package/migrations/006_classroom_event_bus.sql +28 -0
  73. package/migrations/007_interactive_classroom.sql +119 -0
  74. package/migrations/008_teaching_modes.sql +36 -0
  75. package/migrations/009_classroom_peer_review.sql +159 -0
  76. package/migrations/010_class_groups.sql +33 -0
  77. package/migrations/011_classroom_feed.sql +34 -0
  78. package/migrations/012_auto_record_score.sql +48 -0
  79. package/migrations/013_score_source_strategy.sql +81 -0
  80. package/migrations/014_performance_indexes.sql +21 -0
  81. package/migrations/015_demo_data_registry.sql +26 -0
  82. package/migrations/016_preset_polls_and_passcode_expiry.sql +33 -0
  83. package/migrations/017_pacing_signals_segment.sql +6 -0
  84. package/migrations/018_processes_plugin_owner.sql +26 -0
  85. package/migrations/019_plugins_version.sql +61 -0
  86. package/migrations/020_upload_max_file_mb.sql +14 -0
  87. package/migrations/021_class_owner_and_password_gate.sql +11 -0
  88. package/migrations/022_plugin_public_routes.sql +14 -0
  89. package/migrations/023_encrypt_class_passcodes.sql +18 -0
  90. package/migrations/024_segment_gates.sql +37 -0
  91. package/migrations/025_assignment_lookup_indexes.sql +11 -0
  92. package/migrations/026_plugin_grants.sql +21 -0
  93. package/migrations/027_academic_year.sql +26 -0
  94. package/migrations/028_classroom_indexes.sql +14 -0
  95. package/migrations/029_clean_lesson_think_artifacts.sql +13 -0
  96. package/migrations/030_backfill_academic_year.sql +30 -0
  97. package/migrations/031_assessment_core.sql +158 -0
  98. package/migrations/032_progress_verification.sql +17 -0
  99. package/migrations/033_student_lock_mode.sql +9 -0
  100. package/migrations/034_plugin_orphan_data.sql +27 -0
  101. package/migrations/035_icebreaker_checkins.sql +26 -0
  102. package/migrations/036_student_read_notifications_created_at.sql +19 -0
  103. package/migrations/037_plugin_config_scopes.sql +40 -0
  104. package/migrations/038_assessment_ai_grading_suggestion.sql +10 -0
  105. package/migrations/039_question_bank_sharing_and_papers.sql +14 -0
  106. package/migrations/040_assignment_grade_history.sql +37 -0
  107. package/migrations/041_course_package_idempotency.sql +33 -0
  108. package/migrations/042_assignment_grade_resubmit_audit.sql +12 -0
  109. package/migrations/043_mark_sha256_passwords.sql +31 -0
  110. package/migrations/README.md +61 -0
  111. package/migrations/schema-golden.json +640 -0
  112. package/package.json +54 -28
  113. package/dist/assets/AdminDirectoryView-DY--WM5Z.js +0 -1
  114. package/dist/assets/BatchPickerModal-BpWu0Lil.js +0 -1
  115. package/dist/assets/ClassesView-KbHEqJto.js +0 -22
  116. package/dist/assets/ClassroomCountdownWidget-96WFRO9A.js +0 -2
  117. package/dist/assets/CloudDriveModal-DEQ1nkNk.js +0 -1
  118. package/dist/assets/ComputerLabView-1qWDNRQ2.js +0 -1
  119. package/dist/assets/CourseManagement-D3ZpxY0l.js +0 -1
  120. package/dist/assets/CourseWizardModal-Ck_-M8pk.js +0 -3
  121. package/dist/assets/CoursewareHubPanel-CaEizhxl.js +0 -1
  122. package/dist/assets/Dashboard-CYbpbofV.js +0 -8
  123. package/dist/assets/ExportWeightModal-DW2bu9Zz.js +0 -1
  124. package/dist/assets/HelpTour-CMJbbGne.js +0 -1
  125. package/dist/assets/HelpView-CtzdqhBq.js +0 -204
  126. package/dist/assets/ImportLessonsModal-jBuIK453.js +0 -1
  127. package/dist/assets/ImportModal-D7L-KNhZ.js +0 -1
  128. package/dist/assets/InteractiveCoursewareViewer-Bj7ahXMs.js +0 -1
  129. package/dist/assets/InteractiveWhiteboard-B7JcJvDu.js +0 -77
  130. package/dist/assets/LazyCourseware-CuiPxhDg.js +0 -2
  131. package/dist/assets/LazyWhiteboard-BJwCEZAU.js +0 -2
  132. package/dist/assets/LessonEditorView-DFrOp2qp.js +0 -1
  133. package/dist/assets/LiveClassroomView-BZ5nGee3.js +0 -59
  134. package/dist/assets/NotificationDetailModal-Baqnc5pU.js +0 -1
  135. package/dist/assets/PluginView-CCbIuZ24.js +0 -66
  136. package/dist/assets/ProcessLogsModal-DmFXg9mG.js +0 -1
  137. package/dist/assets/QuizGeneratorModal-BBEDssp7.js +0 -1
  138. package/dist/assets/StudentAssignmentView-DgIjUsXz.js +0 -1
  139. package/dist/assets/StudentLessonView-CBJbI5x6.js +0 -1
  140. package/dist/assets/StudentPreviewModal-Bh8OZs0t.js +0 -1
  141. package/dist/assets/StudentView--uGxc5TJ.js +0 -2
  142. package/dist/assets/SystemResourceLibraryModal-BVCclcqA.js +0 -1
  143. package/dist/assets/TeacherView-D4Zsc0eZ.js +0 -2
  144. package/dist/assets/TimetableView-BQG-rEb5.js +0 -6
  145. package/dist/assets/index-BKBCBKvy.js +0 -217
  146. package/dist/assets/index-CvGu7LSj.css +0 -1
  147. package/dist/assets/purify.es-CYR4BTuT.js +0 -3
  148. package/dist/assets/vendor-pptx-C5-U7ieS.js +0 -39
  149. package/dist/assets/vendor-utils-m0Urvtws.js +0 -1
@@ -0,0 +1,6 @@
1
+ import{j as e,r as d}from"./vendor-react-Kv_JATwr.js";import{E as we,Y as ue,x as Cs,V as ks,Z as $s,_ as _s,N as Pt,Q as Ts,B as Ds,c as Is}from"./index-2676X8YB.js";import{aA as Mt,aJ as As,c7 as Ps,ad as ut,c2 as Es,a$ as Os,X as ve,ak as Jt,c as Le,bv as Ue,bt as qe,ac as Et,aT as Ls,f as Rs,z as Qe,$ as Ot,c8 as Fs,i as Wt,D as Ms,c9 as Lt,a8 as Js,C as Bt,ca as Ws,T as Bs,cb as Gs,u as Hs,cc as Rt,az as Vs,o as xt,a9 as Ys,aG as Us}from"./vendor-icons-CXrZ3R2V.js";import{A as qs}from"./AcademicYearFilter-DUUGpDKt.js";import{f as Qs}from"./teaching-modes-client-BeVaDdJ-.js";import"./vendor-utils-aM7aYvPP.js";import"./vendor-pdf-C1Vh2Aqq.js";import"./vendor-motion-BFAPOs-b.js";import"./vendor-charts-SrpBsvM3.js";const Ks=a=>{const m=[];for(let l=0;l<7;l++){const j=new Date(a.getTime()+l*24*60*60*1e3),_=j.getFullYear(),A=String(j.getMonth()+1).padStart(2,"0"),L=String(j.getDate()).padStart(2,"0");m.push(`${_}-${A}-${L}`)}return m},Ft=a=>{if(!a)return!1;const m=a.match(/^(\d{1,2}):(\d{2})/);return m?parseInt(m[1],10)>=12:!1},Zs=({lang:a,viewMode:m,setViewMode:l,selectedClassId:j,setSelectedClassId:_,statusFilter:A,setStatusFilter:L,searchQuery:P,setSearchQuery:w,classes:C,getClassDisplayName:H,loading:k,filteredSchedules:E,currentWeekMonday:he,setCurrentWeekMonday:q,showWeekend:ze,setShowWeekend:le,dateOverrides:F,setDateOverrides:W,setOverridingDateKey:O,setOverrideMode:T,setOverrideTargetDow:te,setOverrideTargetDate:Q,openEditModal:B,handleDeleteSchedule:Se,getDayOfWeekIndex:V,getMonday:me,getWeekRangeString:h,setFormClassId:$,setFormLessonId:se,setFormDate:Ce,setFormStatus:ke,setFormNotes:ae,setIsAddOpen:ie,onQuickStart:M,activeSessionLessonIds:oe})=>{const ne=[{key:1,label:a==="zh"?"周一 (Mon)":"Mon"},{key:2,label:a==="zh"?"周二 (Tue)":"Tue"},{key:3,label:a==="zh"?"周三 (Wed)":"Wed"},{key:4,label:a==="zh"?"周四 (Thu)":"Thu"},{key:5,label:a==="zh"?"周五 (Fri)":"Fri"},{key:6,label:a==="zh"?"周六 (Sat)":"Sat"},{key:7,label:a==="zh"?"周日 (Sun)":"Sun"}],pe=Ks(he),Re=r=>{const x=/^(\d{1,2}):(\d{2})\s*-\s*(\d{1,2}):(\d{2})$/.exec((r||"").trim());return x?{start:`${x[1].padStart(2,"0")}:${x[2]}`,end:`${x[3].padStart(2,"0")}:${x[4]}`}:null},de=(()=>{const r=new Date;return`${String(r.getHours()).padStart(2,"0")}:${String(r.getMinutes()).padStart(2,"0")}`})(),Ke=new Date().toISOString().split("T")[0],be=E.filter(r=>r.scheduled_date===Ke&&r.status!=="cancelled"&&r.status!=="holiday").sort((r,x)=>(r.time_slot||"").localeCompare(x.time_slot||"")),G=be.find(r=>{const x=Re(r.time_slot);return x&&x.start<=de&&de<=x.end}),$e=be.find(r=>{const x=Re(r.time_slot);return x&&x.start>de}),K=G||$e,ce=(r,x="xs")=>{const u=r.status==="cancelled"||r.status==="holiday",N=!!r.lesson_id,f=u||!N,g=N&&oe.has(r.lesson_id),D=u?a==="zh"?"停课/假期排课不能开始上课":"Cancelled/holiday schedules cannot start a class":N?g?a==="zh"?"该课已有进行中的课堂会话,点击直接进入":"An active session exists. Click to enter directly.":a==="zh"?"快速开始上这节课":"Quick start this class":a==="zh"?"未关联课程,请先编辑排课关联课程":"No lesson linked. Edit the schedule to link one first.",v=x==="sm"?"px-2.5 py-1 text-xs gap-1":"px-1.5 py-0.5 text-[11px] gap-0.5",y=g?a==="zh"?"进入课堂":"Enter class":a==="zh"?"开始上课":"Start class";return e.jsxs("button",{type:"button","data-testid":`quick-start-${r.id}`,disabled:f,"aria-label":`${y}:${D}:${r.lesson_title||r.class_name||r.id}`,title:D,onClick:()=>M(r),className:`flex items-center rounded-md font-bold transition-all ${f?"text-slate-300 bg-slate-50 border border-slate-100 cursor-not-allowed":g?"text-emerald-700 bg-emerald-50 border border-emerald-200 hover:bg-emerald-100 cursor-pointer":"text-white bg-indigo-600 hover:bg-indigo-700 border border-indigo-500 shadow-2xs cursor-pointer"} ${v}`,children:[g?e.jsx(Fs,{size:11,"aria-hidden":"true"}):e.jsx(Wt,{size:11,"aria-hidden":"true"}),g?a==="zh"?"进入课堂":"Enter":a==="zh"?"开始上课":"Start"]})},fe=r=>{const x=r.status==="cancelled"||r.status==="holiday";let u="border-l-green-500 bg-green-50/5 hover:bg-green-50/10 hover:border-l-green-600";return r.status==="cancelled"?u="border-l-red-500 bg-red-50/5 hover:bg-red-50/10 hover:border-l-red-600":r.status==="holiday"?u="border-l-amber-500 bg-amber-50/5 hover:bg-amber-50/10 hover:border-l-amber-600":r.status==="swap"&&(u="border-l-blue-500 bg-blue-50/5 hover:bg-blue-50/10 hover:border-l-blue-600"),e.jsxs("div",{className:`p-2.5 rounded-xl border border-slate-150 border-l-4 ${u} transition-all hover:shadow-xs relative group flex flex-col justify-between min-h-[85px]`,children:[e.jsxs("div",{children:[e.jsxs("div",{className:"text-xs font-mono text-slate-500 mb-1 font-bold flex justify-between items-center",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(Ot,{size:11,className:"text-slate-400"}),r.time_slot||(a==="zh"?"全天":"All-day")]}),m==="cycle"&&e.jsx("span",{className:"text-xs text-slate-400 font-sans font-normal bg-slate-100 px-1 py-0.5 rounded-sm",children:r.scheduled_date})]}),e.jsx("div",{className:`font-extrabold text-sm text-slate-805 tracking-tight leading-snug mt-1 ${x?"line-through opacity-60 text-slate-400":""}`,title:r.lesson_title||"",children:r.class_name}),r.notes&&e.jsxs("div",{className:"text-xs text-amber-600 font-medium mt-1 truncate",title:r.notes,children:["📌 ",r.notes]})]}),e.jsxs("div",{className:"flex items-center justify-between mt-2.5 pt-2 border-t border-slate-100/50",children:[e.jsxs("div",{className:"flex items-center gap-1 flex-wrap",children:[e.jsx("span",{className:`inline-block text-xs px-1.5 py-0.5 rounded-full font-bold uppercase tracking-wide border ${r.status==="cancelled"?"bg-red-50 border-red-100 text-red-600":r.status==="holiday"?"bg-amber-50 border-amber-100 text-amber-600":r.status==="swap"?"bg-blue-50 border-blue-100 text-blue-600":"bg-green-50 border-green-100 text-green-600"}`,children:r.status==="cancelled"?a==="zh"?"停课":"Cancelled":r.status==="holiday"?a==="zh"?"假期":"Holiday":r.status==="swap"?a==="zh"?"代课":"Swapped":a==="zh"?"正常":"Active"}),e.jsx(we,{slot:"timetable.card.badge",slotProps:{schedule:r,lang:a}}),ce(r)]}),e.jsxs("div",{className:"flex gap-1 opacity-0 group-hover:opacity-100 transition-opacity items-center",children:[e.jsx(we,{slot:"timetable.entry.action",slotProps:{schedule:r,lang:a,onEdit:()=>B(r)}}),e.jsx("button",{onClick:()=>B(r),className:"text-slate-400 hover:text-indigo-600 hover:bg-indigo-50 p-1 rounded-md transition-colors cursor-pointer",title:a==="zh"?"微调":"Edit",children:e.jsx(qe,{size:11})}),e.jsx("button",{onClick:()=>Se(r.id,r.class_id,r.isRepeating,r.scheduled_date),className:"text-slate-400 hover:text-red-600 hover:bg-red-50 p-1 rounded-md transition-colors cursor-pointer",title:a==="zh"?"删除":"Delete",children:e.jsx(Et,{size:11})})]})]})]},r.id)},ge=(r,x)=>{if(r===x){const f=E.filter(y=>y.scheduled_date===x);if(f.length>0)return f;const g=V(x),D=E.filter(y=>V(y.scheduled_date)===g&&y.scheduled_date<=x),v={};return D.forEach(y=>{const Ne=`${y.class_id}_${y.time_slot||"all-day"}`;v[Ne]||(v[Ne]={...y,scheduled_date:x,isRepeating:!0})}),Object.values(v)}let u=[];if(r.startsWith("dow-")){const f=parseInt(r.split("-")[1],10),g=E.filter(v=>V(v.scheduled_date)===f&&v.scheduled_date<=x),D={};g.forEach(v=>{const y=`${v.class_id}_${v.time_slot||"all-day"}`;D[y]||(D[y]={...v,scheduled_date:x,isRepeating:!0})}),u=Object.values(D)}else{const f=E.filter(g=>g.scheduled_date===r);if(f.length>0)u=f.map(g=>({...g,scheduled_date:x,isRepeating:!0}));else{const g=V(r),D=E.filter(y=>V(y.scheduled_date)===g&&y.scheduled_date<=r),v={};D.forEach(y=>{const Ne=`${y.class_id}_${y.time_slot||"all-day"}`;v[Ne]||(v[Ne]={...y,scheduled_date:x,isRepeating:!0})}),u=Object.values(v)}}const N=E.filter(f=>f.scheduled_date===x);if(N.length>0){const f=[...u];return N.forEach(g=>{const D=`${g.class_id}_${g.time_slot||"all-day"}`,v=f.findIndex(y=>`${y.class_id}_${y.time_slot||"all-day"}`===D);v!==-1?f[v]=g:g.status!=="cancelled"&&g.status!=="holiday"&&f.push(g)}),f}return u},je=ne.map((r,x)=>{const u=pe[x],N=F[u]||u,f=ge(N,u);return f.sort((g,D)=>(g.time_slot||"").localeCompare(D.time_slot||"")),{...r,dateStr:u,displayLabel:a==="zh"?`${r.label.split(" ")[0]} (${u.substring(5)})`:`${r.label} (${u.substring(5)})`,schedules:f}}),ye=ne.map(r=>{const x=pe[r.key-1],u=E.filter(N=>V(N.scheduled_date)===r.key);return u.sort((N,f)=>(N.time_slot||"").localeCompare(f.time_slot||"")),{...r,dateStr:x,displayLabel:r.label,schedules:u}}),Y=(m==="week"?je:ye).filter(r=>m==="week"&&!ze?r.key!==6&&r.key!==7:!0);return e.jsxs("div",{className:"flex flex-col gap-4",children:[K&&e.jsxs("div",{id:"timetable_quick_start_card","data-testid":"timetable-quick-start-card",className:`flex flex-wrap items-center gap-3 p-3 rounded-xl border shadow-2xs ${G?"bg-emerald-50/60 border-emerald-200/70":"bg-indigo-50/60 border-indigo-200/60"}`,children:[e.jsxs("div",{className:`flex items-center gap-1.5 text-xs font-extrabold uppercase tracking-wider px-2 py-0.5 rounded-full border select-none ${G?"bg-emerald-100 border-emerald-200 text-emerald-700":"bg-indigo-100 border-indigo-200 text-indigo-700"}`,children:[e.jsx(Mt,{size:12,"aria-hidden":"true"}),G?a==="zh"?"正在进行":"In Progress":a==="zh"?"下一节课":"Up Next"]}),e.jsxs("div",{className:"flex-1 min-w-[180px] leading-snug",children:[e.jsx("div",{className:"text-sm font-bold text-slate-800",children:K.lesson_title||K.class_name}),e.jsxs("div",{className:"text-xs text-slate-500 flex flex-wrap gap-x-3",children:[e.jsx("span",{className:"font-mono",children:K.time_slot}),e.jsx("span",{children:K.class_name})]})]}),ce(K,"sm")]}),e.jsxs("div",{className:"bg-slate-50 border border-slate-200/50 p-3 rounded-xl flex flex-wrap gap-3 items-center justify-between",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs("span",{className:"text-xs font-bold text-gray-500 flex items-center gap-1",children:[e.jsx(As,{size:13}),a==="zh"?"筛选:":"Filters:"]}),e.jsxs("div",{className:"flex bg-slate-200/70 p-0.5 rounded-lg border border-slate-300/30 shadow-xs mr-2 shrink-0",children:[e.jsxs("button",{onClick:()=>l("week"),className:`px-2.5 py-1 rounded-lg text-xs font-bold transition-all flex items-center gap-1 ${m==="week"?"bg-white text-indigo-700 shadow-xs":"text-muted hover:text-gray-800"}`,children:[e.jsx(Ps,{size:11}),a==="zh"?"周课表":"Week View"]}),e.jsxs("button",{onClick:()=>l("cycle"),className:`px-2.5 py-1 rounded-lg text-xs font-bold transition-all flex items-center gap-1 ${m==="cycle"?"bg-white text-indigo-700 shadow-xs":"text-muted hover:text-gray-800"}`,children:[e.jsx(ut,{size:11}),a==="zh"?"星期总览":"Cycle View"]}),e.jsxs("button",{onClick:()=>l("list"),className:`px-2.5 py-1 rounded-lg text-xs font-bold transition-all flex items-center gap-1 ${m==="list"?"bg-white text-indigo-700 shadow-xs":"text-muted hover:text-gray-800"}`,children:[e.jsx(Es,{size:11}),a==="zh"?"列表":"List View"]})]}),e.jsxs("select",{id:"timetable_class_select",title:"Select Class",className:"bg-white border border-gray-200 rounded-lg text-xs py-1.5 px-2 text-gray-700 focus:outline-hidden focus:ring-1 focus:ring-indigo-500 font-sans cursor-pointer",value:j,onChange:r=>_(r.target.value),children:[e.jsx("option",{value:"all",children:a==="zh"?"所有班级 (All Classes)":"All Classes"}),C.map(r=>e.jsx("option",{value:r.id,children:H(r.name)},r.id))]}),e.jsxs("select",{id:"timetable_status_select",title:"Select Status",className:"bg-white border border-gray-200 rounded-lg text-xs py-1.5 px-2 text-gray-700 focus:outline-hidden focus:ring-1 focus:ring-indigo-500 font-sans cursor-pointer",value:A,onChange:r=>L(r.target.value),children:[e.jsx("option",{value:"all",children:a==="zh"?"所有状态 (All Status)":"All Status"}),e.jsx("option",{value:"scheduled",children:a==="zh"?"正常上课 (Scheduled)":"Scheduled"}),e.jsx("option",{value:"cancelled",children:a==="zh"?"停课 (Cancelled)":"Cancelled"}),e.jsx("option",{value:"holiday",children:a==="zh"?"假期调休 (Holiday)":"Holiday"}),e.jsx("option",{value:"swap",children:a==="zh"?"代课换课 (Swapped)":"Swapped"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-1 max-w-xs min-w-[200px]",children:[e.jsxs("div",{className:"relative w-full",children:[e.jsx(Os,{className:"absolute left-2.5 top-2 text-gray-400",size:14}),e.jsx("input",{type:"text",placeholder:a==="zh"?"检索课程标题, 班级, 备注...":"Search title, class, notes...",className:"w-full bg-white border border-gray-200 rounded-lg pl-8 pr-2.5 py-1.5 text-xs text-gray-700 focus:outline-hidden focus:ring-1 focus:ring-indigo-500",value:P,onChange:r=>w(r.target.value)}),P&&e.jsx("button",{onClick:()=>w(""),className:"absolute right-2.5 top-2 text-gray-400 hover:text-gray-600",children:e.jsx(ve,{size:14})})]}),e.jsxs("button",{onClick:()=>{$(C[0]?.id||""),se(""),Ce(new Date().toISOString().split("T")[0]),ke("scheduled"),ae(""),ie(!0)},className:"bg-indigo-600 hover:bg-indigo-700 text-white font-semibold text-xs py-1.5 px-3 rounded-lg flex items-center gap-1 shadow-sm shrink-0 cursor-pointer transition-all",children:[e.jsx(Jt,{size:14}),a==="zh"?"排定课时":"Schedule Class"]})]})]}),k?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-indigo-500",children:[e.jsx(Le,{className:"animate-spin mb-2",size:32}),e.jsx("span",{className:"text-xs font-semibold",children:a==="zh"?"查询数据中...":"Accessing SQLite Database..."})]}):E.length===0?e.jsxs("div",{className:"text-center py-16 bg-slate-50/50 border border-dashed rounded-xl border-slate-200 flex flex-col items-center",children:[e.jsx(Ue,{className:"text-gray-300 mb-2",size:40}),e.jsx("p",{className:"text-gray-500 text-sm font-semibold",children:a==="zh"?"暂未匹配到对应的课次安排数据":"No schedules match your filters"}),e.jsx("p",{className:"text-subtle text-xs mt-1",children:a==="zh"?"您可以点击右上角“排定课时”为班级新增课程。":"Try adding a new entry using the schedule button above."})]}):m==="list"?e.jsx("div",{className:"border border-slate-200 rounded-xl overflow-hidden shadow-2xs",children:e.jsxs("table",{className:"w-full text-left border-collapse table-auto text-sm bg-white",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-slate-50 border-b border-slate-200 text-gray-600 font-semibold text-xs",children:[e.jsx("th",{className:"p-3 w-[15%]",children:a==="zh"?"上课日期":"Date"}),e.jsx("th",{className:"p-3 w-[15%]",children:a==="zh"?"具体时间段":"Time Slot"}),e.jsx("th",{className:"p-3 w-[20%]",children:a==="zh"?"关联班级":"Class"}),e.jsx("th",{className:"p-3 w-[25%]",children:a==="zh"?"授课内容主题":"Lesson Topic"}),e.jsx("th",{className:"p-3 w-[10%] text-center",children:a==="zh"?"日常状态":"Status"}),e.jsx("th",{className:"p-3 w-[15%] text-right",children:a==="zh"?"教务微调":"Actions"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-150",children:E.map(r=>{const x=r.status==="cancelled"||r.status==="holiday";return e.jsxs("tr",{className:`hover:bg-slate-50/80 transition-colors ${x?"bg-red-50/10 text-gray-400":"text-gray-700"}`,children:[e.jsx("td",{className:"p-3 font-semibold text-xs",children:e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(Ue,{size:13,className:"text-slate-400"}),r.scheduled_date]})}),e.jsx("td",{className:"p-3 font-mono text-xs text-indigo-750",children:r.time_slot||e.jsx("span",{className:"text-xs text-gray-300 italic",children:a==="zh"?"全天":"All-day"})}),e.jsx("td",{className:"p-3 text-xs",children:e.jsx("span",{className:"bg-slate-100 text-slate-800 px-2 py-1 rounded-md border border-slate-250 font-medium",children:r.class_name})}),e.jsx("td",{className:"p-3",children:e.jsxs("div",{className:"flex flex-col leading-snug",children:[e.jsx("span",{className:`font-semibold ${x?"line-through opacity-70":""}`,children:r.lesson_title}),r.notes&&e.jsxs("span",{className:`text-xs italic mt-0.5 ${r.status==="holiday"?"text-amber-600 font-medium":r.status==="cancelled"?"text-red-500 font-medium":"text-slate-400"}`,children:["📌 ",r.notes]})]})}),e.jsx("td",{className:"p-3 text-center",children:e.jsx("span",{className:`inline-block text-xs px-2 py-0.5 rounded-full font-bold uppercase tracking-wide border ${r.status==="cancelled"?"bg-red-100 border-red-200 text-red-700":r.status==="holiday"?"bg-amber-100 border-amber-200 text-amber-700":r.status==="swap"?"bg-blue-100 border-blue-200 text-blue-700":"bg-green-100 border-green-200 text-green-700"}`,children:r.status==="cancelled"?a==="zh"?"停课":"Cancelled":r.status==="holiday"?a==="zh"?"假期调休":"Holiday":r.status==="swap"?a==="zh"?"换代课":"Swapped":a==="zh"?"正常上课":"Active"})}),e.jsx("td",{className:"p-3 text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-1.5",children:[ce(r,"sm"),e.jsx(we,{slot:"timetable.entry.action",slotProps:{schedule:r,lang:a,onEdit:()=>B(r)}}),e.jsx("button",{onClick:()=>B(r),className:"text-slate-500 hover:text-indigo-600 hover:bg-indigo-50 p-1.5 rounded transition-colors cursor-pointer",title:a==="zh"?"调整此节课排课 (换课/换时间/写备注)":"Adjust this class (Swap/Edit)",children:e.jsx(qe,{size:13})}),e.jsx("button",{onClick:()=>Se(r.id,r.class_id),className:"text-slate-500 hover:text-red-600 hover:bg-red-50 p-1.5 rounded transition-colors cursor-pointer",title:a==="zh"?"永久删除该课课表":"Delete schedule",children:e.jsx(Et,{size:13})})]})})]},r.id)})})]})}):e.jsxs("div",{className:"flex flex-col gap-4",children:[m==="week"&&e.jsxs("div",{className:"flex flex-col md:flex-row items-center justify-between bg-indigo-50/40 border border-indigo-100/60 p-3 rounded-xl gap-3 shadow-2xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{onClick:()=>q(r=>new Date(r.getTime()-10080*60*1e3)),className:"p-1.5 rounded-lg hover:bg-indigo-100 hover:text-indigo-700 text-indigo-600 transition-all cursor-pointer border border-indigo-200/50 bg-white shadow-2xs flex items-center justify-center",title:a==="zh"?"上一周":"Previous Week",children:e.jsx(Ls,{size:16})}),e.jsx("button",{onClick:()=>q(me(new Date)),className:"px-3 py-1.5 rounded-lg hover:bg-indigo-100 hover:text-indigo-700 text-indigo-600 transition-all cursor-pointer text-xs font-bold border border-indigo-200/50 bg-white shadow-2xs",children:a==="zh"?"本周":"This Week"}),e.jsx("button",{onClick:()=>q(r=>new Date(r.getTime()+10080*60*1e3)),className:"p-1.5 rounded-lg hover:bg-indigo-100 hover:text-indigo-700 text-indigo-600 transition-all cursor-pointer border border-indigo-200/50 bg-white shadow-2xs flex items-center justify-center",title:a==="zh"?"下一周":"Next Week",children:e.jsx(Rs,{size:16})})]}),e.jsxs("div",{className:"text-sm font-bold text-indigo-900 flex items-center gap-2",children:[e.jsx(Ue,{size:16,className:"text-indigo-500"}),e.jsx("span",{children:h(he)})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-wrap",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-indigo-700 font-semibold",children:a==="zh"?"跳转日期:":"Go to Date:"}),e.jsx("input",{type:"date",title:"Go to Date",className:"bg-white border border-indigo-200 rounded-lg text-xs py-1 px-2 text-indigo-950 focus:outline-hidden focus:ring-1 focus:ring-indigo-500 font-sans cursor-pointer",onChange:r=>{r.target.value&&q(me(new Date(r.target.value)))}})]}),e.jsx("div",{className:"flex items-center gap-2 border-l border-indigo-150 pl-3",children:e.jsxs("label",{className:"flex items-center gap-1.5 text-xs text-indigo-700 font-semibold cursor-pointer select-none",children:[e.jsx("input",{type:"checkbox",checked:ze,onChange:r=>le(r.target.checked),className:"w-3.5 h-3.5 text-indigo-600 border-indigo-300 rounded-sm focus:ring-indigo-500 focus:outline-hidden cursor-pointer"}),a==="zh"?"显示周末":"Show Weekend"]})})]})]}),e.jsx("div",{className:"w-full overflow-x-auto pb-2",children:e.jsxs("div",{className:"flex flex-col gap-4 min-w-[1050px]",children:[e.jsx("div",{className:`grid ${Y.length===5?"grid-cols-5":"grid-cols-7"} gap-4`,children:Y.map(r=>e.jsxs("div",{className:"bg-slate-50 border border-slate-200/50 rounded-xl p-3 text-center flex flex-col items-center justify-center gap-1 relative group/col",children:[e.jsxs("div",{className:"flex items-center justify-center gap-1.5 w-full",children:[e.jsx("span",{className:"font-extrabold text-xs text-indigo-700 uppercase tracking-wider",children:r.displayLabel}),m==="week"&&e.jsx("button",{onClick:()=>{const x=F[r.dateStr]||"";O(r.dateStr),x.startsWith("dow-")?(T("dow"),te(x.split("-")[1]),Q("")):x?(T("date"),Q(x),te("")):(T("dow"),te(""),Q(""))},className:"text-slate-400 hover:text-indigo-600 p-0.5 rounded-md hover:bg-slate-200/50 transition-all opacity-0 group-hover/col:opacity-100 focus:opacity-100 cursor-pointer flex items-center justify-center",title:a==="zh"?"临时切换显示日期":"Temporarily switch date",children:e.jsx(qe,{size:10})})]}),m==="week"&&F[r.dateStr]&&(()=>{const x=F[r.dateStr];let u="";if(x.startsWith("dow-")){const N=parseInt(x.split("-")[1],10);u=a==="zh"?`常规${["","周一","周二","周三","周四","周五","周六","周日"][N]}`:`Regular ${["","Mon","Tue","Wed","Thu","Fri","Sat","Sun"][N]}`}else u=x.substring(5);return e.jsxs("div",{className:"flex items-center gap-1 bg-amber-50 border border-amber-200 text-amber-700 text-xs px-1.5 py-0.5 rounded-md font-semibold select-none shadow-3xs animate-fade-in",children:[e.jsxs("span",{children:["🔄 ",u]}),e.jsx("button",{onClick:()=>{const N={...F};delete N[r.dateStr],W(N)},className:"hover:text-red-600 hover:bg-amber-100 rounded-sm p-px flex items-center justify-center cursor-pointer",title:a==="zh"?"恢复原日期课程":"Reset to original",children:e.jsx(ve,{size:8})})]})})()]},`header-${r.key}`))}),e.jsxs("div",{className:"bg-slate-50/30 border border-slate-200/50 rounded-2xl p-3 flex flex-col gap-2.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-bold text-sky-600 bg-sky-50 px-2 py-0.5 rounded-lg w-fit select-none border border-sky-100/60 shadow-3xs",children:[e.jsx(Qe,{size:10,className:"animate-pulse"}),a==="zh"?"上午课程 (AM)":"Morning (AM)"]}),e.jsx("div",{className:`grid ${Y.length===5?"grid-cols-5":"grid-cols-7"} gap-4`,children:Y.map(r=>{const x=r.schedules.filter(u=>!Ft(u.time_slot));return e.jsx("div",{className:"flex flex-col gap-2 bg-white/40 p-2.5 rounded-xl border border-dashed border-slate-200/60 min-h-[160px] justify-start",children:x.length===0?e.jsx("div",{className:"flex-1 flex items-center justify-center text-xs text-slate-350 italic text-center p-3 border border-dashed border-slate-150 rounded-xl bg-white/30 select-none",children:a==="zh"?"无课":"Free"}):x.map(u=>fe(u))},`morning-col-${r.key}`)})})]}),e.jsxs("div",{className:"relative my-2 flex items-center justify-center",children:[e.jsx("div",{className:"absolute inset-0 flex items-center","aria-hidden":"true",children:e.jsx("div",{className:"w-full border-t-2 border-dashed border-slate-200/80"})}),e.jsxs("div",{className:"relative flex justify-center text-xs font-extrabold uppercase tracking-wider text-slate-400 bg-white px-4 py-1.5 rounded-full border border-slate-200/60 shadow-3xs",children:["☕ ",a==="zh"?"午休时间 / Midday Break":"Lunch Break"]})]}),e.jsxs("div",{className:"bg-slate-50/30 border border-slate-200/50 rounded-2xl p-3 flex flex-col gap-2.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs font-bold text-amber-600 bg-amber-50 px-2 py-0.5 rounded-lg w-fit select-none border border-amber-100/60 shadow-3xs",children:[e.jsx(Ot,{size:10}),a==="zh"?"下午课程 (PM)":"Afternoon (PM)"]}),e.jsx("div",{className:`grid ${Y.length===5?"grid-cols-5":"grid-cols-7"} gap-4`,children:Y.map(r=>{const x=r.schedules.filter(u=>Ft(u.time_slot));return e.jsx("div",{className:"flex flex-col gap-2 bg-white/40 p-2.5 rounded-xl border border-dashed border-slate-200/60 min-h-[160px] justify-start",children:x.length===0?e.jsx("div",{className:"flex-1 flex items-center justify-center text-xs text-slate-350 italic text-center p-3 border border-dashed border-slate-150 rounded-xl bg-white/30 select-none",children:a==="zh"?"无课":"Free"}):x.map(u=>fe(u))},`afternoon-col-${r.key}`)})})]})]})})]})]})},Xs=({lang:a,holStartDate:m,setHolStartDate:l,holEndDate:j,setHolEndDate:_,holType:A,setHolType:L,holNotes:P,setHolNotes:w,handleBatchHolidayAdjustment:C,loading:H})=>e.jsxs("div",{className:"max-w-2xl mx-auto bg-slate-50/50 border border-slate-200 rounded-2xl p-6 shadow-3xs",children:[e.jsxs("h2",{className:"text-base font-bold text-slate-800 flex items-center gap-2 border-b border-slate-200 pb-3 mb-4",children:[e.jsx(Qe,{className:"text-amber-500 shrink-0",size:18}),a==="zh"?"批量节假日调休排班":"Holiday / Cancellation Scheduler"]}),e.jsx("p",{className:"text-xs text-gray-500 mb-5",children:a==="zh"?"此工具能快速把选定日期范围内的课程一键设为“假期调休”或“统一停课”,避免讲师依次手动调整,极大提高教务效率。":"Instantly cancel or exclude classes falling within a holiday or default break period."}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1.5",children:a==="zh"?"开始日期 *":"Start Date *"}),e.jsx("input",{type:"date",className:"w-full border border-gray-200 rounded-lg text-xs p-2.5 bg-white focus:outline-hidden focus:ring-1 focus:ring-indigo-500 transition-all font-sans text-gray-750",value:m,onChange:k=>l(k.target.value)})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1.5",children:a==="zh"?"结束日期 *":"End Date *"}),e.jsx("input",{type:"date",className:"w-full border border-gray-200 rounded-lg text-xs p-2.5 bg-white focus:outline-hidden focus:ring-1 focus:ring-indigo-500 transition-all font-sans text-gray-750",value:j,onChange:k=>_(k.target.value)})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1.5",children:a==="zh"?"调整状态标签":"Target Status"}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs font-medium text-slate-700 cursor-pointer",children:[e.jsx("input",{type:"radio",name:"holType",checked:A==="holiday",onChange:()=>L("holiday"),className:"accent-indigo-600 cursor-pointer"}),"🏝️ ",a==="zh"?"假期调休 (Holiday)":"Holiday Exclusion"]}),e.jsxs("label",{className:"flex items-center gap-2 text-xs font-medium text-slate-700 cursor-pointer",children:[e.jsx("input",{type:"radio",name:"holType",checked:A==="cancelled",onChange:()=>L("cancelled"),className:"accent-red-600 cursor-pointer"}),"🛑 ",a==="zh"?"异常停课 (Cancelled)":"Suspicious Cancellation"]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1.5",children:a==="zh"?"假日说明 / 停课备注":"Exclusion Note / Reason"}),e.jsx("input",{type:"text",placeholder:a==="zh"?"例: 国庆节假期停课调休 / 因极寒气象全市停课":"e.g., National Day break / weather closures",className:"w-full border border-gray-200 rounded-lg text-xs p-2.5 bg-white focus:outline-hidden focus:ring-1 focus:ring-indigo-500 transition-all",value:P,onChange:k=>w(k.target.value)})]}),e.jsxs("button",{onClick:C,disabled:H,className:"w-full bg-slate-800 hover:bg-slate-900 text-white font-bold text-xs py-2.5 rounded-xl cursor-pointer transition-all flex items-center justify-center gap-1.5 shadow-sm disabled:opacity-50",children:[H?e.jsx(Le,{className:"animate-spin",size:14}):e.jsx(ut,{size:14}),a==="zh"?"一键更新该周期课表":"Execute Batch Holiday Updates"]})]})]}),ea=({lang:a,classes:m,getClassDisplayName:l,handleExportCSV:j,handleExportJSON:_,importClassId:A,setImportClassId:L,csvText:P,setCsvText:w,importMessage:C,handleImportData:H})=>e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[e.jsxs("div",{className:"bg-slate-50/50 border border-slate-200 rounded-xl p-5 flex flex-col justify-between",children:[e.jsxs("div",{children:[e.jsxs("h3",{className:"text-sm font-bold text-gray-800 flex items-center gap-2 border-b border-slate-100 pb-2.5 mb-3",children:[e.jsx(Ms,{className:"text-green-600",size:16}),a==="zh"?"导出系统课表":"Export Timetables"]}),e.jsx("p",{className:"text-xs text-gray-500 mb-4 leading-relaxed",children:a==="zh"?"把系统中当前排定的所有班级课表一键备份成标准 CSV 或 JSON 文件。您可以使用 Excel 便捷编辑修改后再导入回来。":"Download the compiled records from SQLite memory db into standard JSON or CSV sheet formats."})]}),e.jsxs("div",{className:"flex gap-2.5 mt-4",children:[e.jsxs("button",{onClick:j,className:"flex-1 bg-white hover:bg-slate-50 text-slate-800 border border-slate-250 font-bold text-xs py-2 rounded-lg cursor-pointer transition-all flex justify-center items-center gap-1",children:[e.jsx(Lt,{className:"text-green-600",size:13}),a==="zh"?"导出为 Excel CSV":"Export CSV Sheet"]}),e.jsxs("button",{onClick:_,className:"flex-1 bg-white hover:bg-slate-50 text-slate-800 border border-slate-250 font-bold text-xs py-2 rounded-lg cursor-pointer transition-all flex justify-center items-center gap-1",children:[e.jsx(Lt,{className:"text-amber-500",size:13}),a==="zh"?"导出为 JSON 树":"Export JSON Data"]})]})]}),e.jsxs("div",{className:"bg-slate-50/50 border border-slate-200 rounded-xl p-5 flex flex-col gap-3",children:[e.jsxs("h3",{className:"text-sm font-bold text-gray-800 flex items-center gap-2 border-b border-slate-100 pb-2.5",children:[e.jsx(Js,{className:"text-indigo-600",size:16}),a==="zh"?"导入课表流程":"Import New Schedule"]}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs uppercase font-bold text-gray-500 mb-1",children:a==="zh"?"分配排定给哪一个班级 *":"Target Class to load schedules *"}),e.jsxs("select",{id:"import_class_select",title:"Import Target Class",className:"w-full bg-white border border-gray-200 rounded-lg text-xs p-2 text-gray-750 cursor-pointer focus:outline-hidden",value:A,onChange:k=>L(k.target.value),children:[e.jsx("option",{value:"",children:a==="zh"?"选择班级...":"Select Class..."}),m.map(k=>e.jsx("option",{value:k.id,children:l(k.name)},k.id))]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs uppercase font-bold text-gray-500 mb-1",children:a==="zh"?"粘贴 CSV 数据内容":"Paste CSV data rows"}),e.jsx("textarea",{rows:4,placeholder:a==="zh"?`date,lesson_id,time_slot,status,notes
2
+ 2026-06-15,les-1,09:00 - 10:30,scheduled,首节授课
3
+ 2026-06-16,les-2,10:45 - 12:15,holiday,假期放假停课`:`date,lesson_id,time_slot,status,notes
4
+ 2026-06-15,les-1,09:00 - 10:30,scheduled,First Class`,className:"w-full bg-white border border-gray-250 text-xs p-2 rounded-lg font-mono placeholder:text-gray-350 focus:outline-hidden",value:P,onChange:k=>w(k.target.value)}),e.jsx("span",{className:"text-xs text-gray-400 mt-1 block",children:a==="zh"?"首行必须为属性列(支持:date, lesson_id, time_slot, status, notes)。支持复制 JSON 树粘贴直接解析。":"Ensure first line consists of column keys (date, lesson_id, time_slots)."})]}),C&&e.jsxs("div",{className:`p-2.5 rounded-lg text-xs border flex items-center gap-1.5 ${C.type==="error"?"bg-red-50 border-red-200 text-red-700":"bg-green-50 border-green-200 text-green-700"}`,children:[e.jsx(Bt,{size:14}),e.jsx("span",{children:C.text})]}),e.jsxs("button",{onClick:H,className:"w-full bg-indigo-600 hover:bg-indigo-700 text-white font-bold text-xs py-2 rounded-lg cursor-pointer transition-all flex items-center justify-center gap-1 shadow-xs",children:[e.jsx(Jt,{size:13}),a==="zh"?"开始解析并安全导入":"Execute Schema Check & Upload"]})]})]})]}),ta=({lang:a,ocrProviderId:m,setOcrProviderId:l,aiProviders:j,ocrFileInputRef:_,handleOcrDrop:A,handleOcrImageSelect:L,ocrImagePreview:P,setOcrImagePreview:w,setOcrImageBase64:C,setOcrEntries:H,setOcrMessage:k,setOcrSelectedEntries:E,ocrImageBase64:he,ocrLoading:q,handleOcrRecognize:ze,ocrProgressStatus:le,ocrProgress:F,ocrMessage:W,ocrEntries:O,ocrSelectedEntries:T,toggleAllOcrEntries:te,toggleOcrEntry:Q,dayNames:B,findMatchedClass:Se,handleOcrImport:V,ocrImporting:me})=>e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsxs("div",{className:"bg-slate-50/50 border border-slate-200 rounded-2xl p-5",children:[e.jsxs("h2",{className:"text-base font-bold text-slate-800 flex items-center gap-2 border-b border-slate-200 pb-3 mb-4",children:[e.jsx(Ws,{className:"text-violet-500 shrink-0",size:18}),a==="zh"?"第一步:上传课表图片":"Step 1: Upload Timetable Image"]}),e.jsx("p",{className:"text-xs text-gray-500 mb-4 leading-relaxed",children:a==="zh"?"拍照或截图您的纸质/电子课表,AI 将自动识别课程信息并生成结构化数据。支持 PNG、JPG 格式,建议图片清晰、文字可辨。":"Upload a photo or screenshot of your timetable. AI will automatically recognize class information and generate structured data."}),e.jsxs("div",{className:"mb-4 p-3 bg-white rounded-xl border border-slate-200",children:[e.jsxs("label",{className:"block text-xs font-semibold text-gray-700 mb-1.5 flex items-center gap-1.5",children:[e.jsx(Qe,{size:12,className:"text-violet-500"}),a==="zh"?"AI 识别引擎":"AI Recognition Engine"]}),j.length===0&&e.jsxs("div",{className:"p-3 bg-amber-50 border border-amber-200 rounded-xl text-xs text-amber-800 flex items-start gap-2 mb-2",children:[e.jsx(Bs,{size:15,className:"shrink-0 text-amber-600 mt-0.5"}),e.jsx("div",{className:"flex-1 leading-relaxed",children:a==="zh"?"未检测到可用的 AI 提供商。课表识别需借助支持视觉(Vision)的大模型(如 GPT-4o 等),请先前往「系统管理 -> AI 提供商管理」添加模型服务。":"No AI providers configured. Timetable recognition requires a vision-capable AI model. Please configure one in System Management."})]}),e.jsx("select",{title:"OCR AI Provider",disabled:j.length===0,className:"w-full bg-slate-50 border border-gray-200 rounded-lg text-xs p-2.5 text-gray-750 cursor-pointer focus:outline-hidden focus:ring-1 focus:ring-violet-500 disabled:opacity-60 disabled:cursor-not-allowed",value:m,onChange:h=>l(h.target.value),children:j.length===0?e.jsx("option",{value:"",disabled:!0,children:a==="zh"?"未配置 AI 提供商":"No AI Provider"}):j.map(h=>e.jsxs("option",{value:h.id,children:[h.name," (",h.model_name,")"]},h.id))}),e.jsx("span",{className:"text-xs text-gray-400 mt-1 block",children:a==="zh"?"选择用于识别课表图片的 AI 模型。需要支持图片输入的模型(如 GPT-4o 等)。":"Choose the AI model for timetable recognition. Must support vision/image input."})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 border-2 border-dashed border-slate-300 rounded-xl p-6 flex flex-col items-center justify-center gap-3 cursor-pointer hover:border-violet-400 hover:bg-violet-50/30 transition-all group",onClick:()=>_.current?.click(),onDragOver:h=>{h.preventDefault(),h.stopPropagation()},onDrop:A,children:[e.jsx("input",{ref:_,type:"file",accept:"image/png,image/jpeg,image/jpg,image/webp",className:"hidden",onChange:L}),e.jsx(Gs,{className:"text-slate-400 group-hover:text-violet-500 transition-colors",size:36}),e.jsx("span",{className:"text-xs font-semibold text-slate-500 group-hover:text-violet-600 transition-colors",children:a==="zh"?"点击选择、拖拽图片至此处 或 Ctrl+V 粘贴截图":"Click, drag & drop, or Ctrl+V to paste screenshot"}),e.jsx("span",{className:"text-xs text-slate-400",children:a==="zh"?"支持 PNG / JPG / JPEG / WebP,最大 20MB":"Supports PNG / JPG / JPEG / WebP, max 20MB"})]}),P&&e.jsxs("div",{className:"flex-1 relative rounded-xl overflow-hidden border border-slate-200 bg-white shadow-sm",children:[e.jsx("img",{src:P,alt:"Timetable preview",className:"w-full h-full object-contain max-h-[280px]"}),e.jsx("button",{onClick:h=>{h.stopPropagation(),w(null),C(null),H([]),k(null),E(new Set),ue.getState().clearTimetableOcrTask(),_.current&&(_.current.value="")},className:"absolute top-2 right-2 bg-black/50 hover:bg-black/70 text-white p-1.5 rounded-lg transition-colors cursor-pointer",title:a==="zh"?"移除图片":"Remove image",children:e.jsx(ve,{size:14})}),e.jsxs("div",{className:"absolute bottom-2 left-2 bg-black/50 text-white text-xs px-2 py-1 rounded-lg flex items-center gap-1",children:[e.jsx(Hs,{size:10}),a==="zh"?"课表预览":"Preview"]})]})]}),e.jsx("button",{onClick:ze,disabled:!he||q||j.length===0,className:"mt-4 w-full bg-violet-600 hover:bg-violet-700 disabled:bg-slate-300 text-white font-bold text-xs py-2.5 rounded-xl cursor-pointer transition-all flex items-center justify-center gap-2 shadow-sm disabled:cursor-not-allowed",children:q?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"animate-spin",size:14}),a==="zh"?"AI 识别中,请稍候...":"AI recognizing..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Rt,{size:14}),a==="zh"?"开始 AI 智能识别":"Start AI Recognition"]})})]}),e.jsx(we,{slot:"timetable.import.source",slotProps:{lang:a,onImportEntries:h=>{H(h),E(new Set(h.map(($,se)=>se))),k({type:"success",text:a==="zh"?`✅ 外部导入成功!共载入 ${h.length} 节课程安排,请审核后导入。`:`✅ Successfully imported ${h.length} timetable entries. Review below.`})}}}),q&&e.jsxs("div",{className:"bg-slate-50 border border-slate-200 rounded-xl p-3.5 space-y-2.5 animate-in fade-in duration-200 text-left",children:[e.jsxs("div",{className:"flex justify-between items-center text-xs",children:[e.jsx("span",{className:"font-semibold text-slate-700",children:le}),e.jsxs("span",{className:"font-mono font-bold text-indigo-600",children:[F,"%"]})]}),e.jsx("div",{className:"w-full h-2 bg-slate-200 rounded-full overflow-hidden shrink-0",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-violet-500 to-indigo-600 transition-all duration-300 rounded-full",style:{width:`${F}%`}})})]}),W&&e.jsxs("div",{className:`p-3 rounded-xl text-xs border flex items-start gap-2 ${W.type==="error"?"bg-red-50 border-red-200 text-red-700":W.type==="success"?"bg-green-50 border-green-200 text-green-700":"bg-blue-50 border-blue-200 text-blue-700"}`,children:[W.type==="error"?e.jsx(Vs,{size:14,className:"shrink-0 mt-0.5"}):W.type==="success"?e.jsx(xt,{size:14,className:"shrink-0 mt-0.5"}):e.jsx(Rt,{size:14,className:"shrink-0 mt-0.5 animate-pulse"}),e.jsx("span",{children:W.text})]}),O.length>0&&e.jsxs("div",{className:"bg-slate-50/50 border border-slate-200 rounded-2xl p-5",children:[e.jsxs("h2",{className:"text-base font-bold text-slate-800 flex items-center gap-2 border-b border-slate-200 pb-3 mb-4",children:[e.jsx(xt,{className:"text-emerald-500 shrink-0",size:18}),a==="zh"?"第二步:审核识别结果":"Step 2: Review Recognized Entries"]}),e.jsx("p",{className:"text-xs text-gray-500 mb-3",children:a==="zh"?"以下是 AI 从课表图片中识别出的课程安排,请勾选需要导入的条目。":"Below are the class entries recognized by AI. Select the ones you want to import."}),e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsxs("label",{className:"flex items-center gap-2 text-xs font-medium text-slate-700 cursor-pointer select-none",children:[e.jsx("input",{type:"checkbox",checked:T.size===O.length,onChange:te,className:"accent-violet-600 cursor-pointer rounded"}),a==="zh"?`全选 (${T.size}/${O.length})`:`Select All (${T.size}/${O.length})`]}),e.jsx("span",{className:"text-xs text-slate-400",children:a==="zh"?"取消勾选可排除不需要导入的条目":"Uncheck to exclude entries from import"})]}),e.jsx("div",{className:"border border-slate-200 rounded-xl overflow-hidden shadow-2xs",children:e.jsxs("table",{className:"w-full text-left border-collapse table-auto text-xs bg-white",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-slate-50 border-b border-slate-200 text-gray-600 font-semibold text-xs uppercase tracking-wide",children:[e.jsx("th",{className:"p-2.5 w-[40px] text-center",children:"✓"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"星期":"Day"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"节次":"Period"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"班级":"Class"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"科目":"Subject"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"时间段":"Time"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"教室":"Room"}),e.jsx("th",{className:"p-2.5",children:a==="zh"?"教师":"Teacher"})]})}),e.jsx("tbody",{className:"divide-y divide-slate-100",children:O.map((h,$)=>e.jsxs("tr",{className:`hover:bg-violet-50/30 transition-colors cursor-pointer ${T.has($)?"bg-violet-50/20":"opacity-50"}`,onClick:()=>Q($),children:[e.jsx("td",{className:"p-2.5 text-center",children:e.jsx("input",{type:"checkbox",checked:T.has($),onChange:()=>Q($),onClick:se=>se.stopPropagation(),className:"accent-violet-600 cursor-pointer"})}),e.jsx("td",{className:"p-2.5 font-medium",children:e.jsx("span",{className:"inline-block bg-indigo-100 text-indigo-700 px-1.5 py-0.5 rounded-md text-xs font-bold",children:B[h.dayOfWeek]||`Day${h.dayOfWeek}`})}),e.jsx("td",{className:"p-2.5",children:e.jsx("span",{className:"inline-block bg-slate-100 text-slate-700 px-1.5 py-0.5 rounded-md text-xs font-bold",children:a==="zh"?`第${h.periodNumber}节`:`P${h.periodNumber}`})}),e.jsx("td",{className:"p-2.5 font-semibold text-slate-800",children:h.className||"-"}),e.jsx("td",{className:"p-2.5",children:e.jsx("span",{className:"inline-block bg-amber-100 text-amber-800 px-1.5 py-0.5 rounded-md text-xs font-bold",children:h.subject||"-"})}),e.jsx("td",{className:"p-2.5 font-mono text-slate-600",children:h.timeSlot||"-"}),e.jsx("td",{className:"p-2.5 text-slate-600",children:h.location||"-"}),e.jsx("td",{className:"p-2.5 text-slate-600",children:h.teacherName||"-"})]},$))})]})})]}),O.length>0&&e.jsxs("div",{className:"bg-slate-50/50 border border-slate-200 rounded-2xl p-5",children:[e.jsxs("h2",{className:"text-base font-bold text-slate-800 flex items-center gap-2 border-b border-slate-200 pb-3 mb-4",children:[e.jsx(xt,{className:"text-emerald-500 shrink-0",size:18}),a==="zh"?"第三步:确认导入日程":"Step 3: Confirm Import"]}),(()=>{const h=new Date,$=h.getDay(),se=h.getDate()-$+($===0?-6:1),ke=new Date(h.setDate(se)).toISOString().split("T")[0],ae=O.filter((oe,ne)=>T.has(ne)),ie=new Set;let M=0;return ae.forEach(oe=>{Se(oe.className||"")?M++:oe.className&&ie.add(oe.className.trim())}),e.jsxs("div",{className:"flex flex-col gap-4 mb-4",children:[e.jsxs("div",{className:"p-3.5 bg-indigo-50 border border-indigo-100 rounded-xl text-xs leading-relaxed",children:[e.jsxs("div",{className:"font-semibold text-indigo-900 flex items-center gap-1.5 mb-1.5",children:[e.jsx(Qe,{size:14,className:"text-indigo-600 animate-pulse"}),a==="zh"?"智能自动匹配规则":"Intelligent Auto-Mapping"]}),e.jsxs("div",{className:"text-gray-650 space-y-1",children:[e.jsxs("div",{children:["•"," ",a==="zh"?`本周起始日期(周一):${ke}`:`Week Start Date (Monday): ${ke}`]}),e.jsxs("div",{children:["•"," ",a==="zh"?"班级匹配:系统将根据识别到的班级名称自动导入至系统中对应班级。若班级不存在,将自动创建。":"Class Matching: System will automatically import entries into matched classes or create new classes on the fly."]})]})]}),e.jsxs("div",{className:"text-xs",children:[e.jsx("div",{className:"font-semibold text-gray-700",children:a==="zh"?`已选择 ${ae.length} 条记录,其中 ${M} 条可直接匹配到系统班级。`:`${ae.length} entries selected, ${M} matched existing classes.`}),ie.size>0&&e.jsxs("div",{className:"mt-2 p-2.5 bg-violet-50 border border-violet-200 text-violet-800 rounded-lg leading-relaxed",children:["💡"," ",a==="zh"?`以下识别出的班级在系统中暂不存在,导入时将自动创建:${Array.from(ie).join(", ")}`:`The following recognized classes do not exist and will be automatically created on import: ${Array.from(ie).join(", ")}.`]})]})]})})(),e.jsx("button",{onClick:V,disabled:me||T.size===0,className:"w-full bg-emerald-600 hover:bg-emerald-700 disabled:bg-slate-300 text-white font-bold text-xs py-2.5 rounded-xl cursor-pointer transition-all flex items-center justify-center gap-2 shadow-sm disabled:cursor-not-allowed",children:me?e.jsxs(e.Fragment,{children:[e.jsx(Le,{className:"animate-spin",size:14}),a==="zh"?"正在导入...":"Importing..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Ys,{size:14}),a==="zh"?`确认导入选中的 ${T.size} 条课程`:`Import ${T.size} Selected Entries`]})})]})]}),sa=({classes:a,lessons:m,lang:l,onSchedulesUpdated:j,onClassesUpdated:_})=>{const A=Cs(),L=ks(),P=L?.academicYear==="all"?null:L?.academicYear??null,[w,C]=d.useState("view"),[H,k]=d.useState("week"),E=t=>{const s=new Date(t.getTime()),o=s.getDay(),i=s.getDate()-o+(o===0?-6:1),n=new Date(s.setDate(i));return n.setHours(0,0,0,0),n},[he,q]=d.useState(()=>E(new Date)),ze=t=>{const s=new Date(t.getTime()+5184e5),o=i=>{const n=i.getFullYear(),c=String(i.getMonth()+1).padStart(2,"0"),b=String(i.getDate()).padStart(2,"0");return`${n}-${c}-${b}`};return`${o(t)} ~ ${o(s)}`},[le,F]=d.useState(null),[W,O]=d.useState(""),[T,te]=d.useState("dow"),[Q,B]=d.useState(""),[Se,V]=d.useState({}),[me,h]=d.useState(!1),[$,se]=d.useState("all"),[Ce,ke]=d.useState(""),[ae,ie]=d.useState("all"),[M,oe]=d.useState([]),[ne,pe]=d.useState(!1),[Re,de]=d.useState(!1),[Ke,be]=d.useState(!1),[G,$e]=d.useState(null),[K,ce]=d.useState(""),[fe,ge]=d.useState(""),[je,ye]=d.useState(""),[Y,r]=d.useState("09:00 - 10:30"),[x,u]=d.useState("scheduled"),[N,f]=d.useState(""),[g,D]=d.useState(""),[v,y]=d.useState(""),[Ne,Fe]=d.useState(null),[Pe,ht]=d.useState(""),[Ee,mt]=d.useState(""),[Oe,Gt]=d.useState("holiday"),[pt,bt]=d.useState(""),[Me,Je]=d.useState(null),[_e,We]=d.useState(null),[Ze,Xe]=d.useState(""),[Ht,Be]=d.useState(!1),[Vt,ft]=d.useState(0),[Yt,gt]=d.useState(""),[re,Te]=d.useState([]),[Ut,R]=d.useState(null),[aa,ra]=d.useState(""),[la,ia]=d.useState(""),[qt,et]=d.useState(!1),[De,xe]=d.useState(new Set),Qt=d.useRef(null),[Kt,jt]=d.useState([]),[Ge,tt]=d.useState(""),Ie=$s(t=>t.timetableOcrTask),st=_s(t=>t.pendingTimetableSubTab),yt=d.useRef(!1);d.useEffect(()=>{const t=ue.getState().timetableOcrDraft;t&&(t.entries.length>0&&(yt.current=!0,Te(t.entries),xe(new Set(t.selected)),R({type:"info",text:l==="zh"?"已恢复上次的识别结果,请核对后导入。":"Previous OCR result restored. Review and import below."})),t.imagePreview&&Je(t.imagePreview),t.imageBase64&&We(t.imageBase64),t.fileName&&Xe(t.fileName),t.providerId&&tt(t.providerId));const s=ue.getState().timetableOcrTask?.status;(s==="running"||s==="completed")&&C("ocr_import")},[]),d.useEffect(()=>{st&&(C(st),Pt.getState().setPendingTimetableSubTab(null))},[st]),d.useEffect(()=>{const t=ue.getState().timetableOcrTask;!Me&&!_e&&re.length===0&&!t||ue.getState().setTimetableOcrDraft({imagePreview:Me,imageBase64:_e,fileName:Ze,providerId:Ge,entries:re,selected:Array.from(De)})},[Me,_e,Ze,Ge,re,De]);const[U,at]=d.useState(null),[Nt,vt]=d.useState([]),[Zt,wt]=d.useState(!1),[He,zt]=d.useState(null),[rt,St]=d.useState(!1),[Ct,lt]=d.useState(""),[Xt,es]=d.useState(new Set);d.useEffect(()=>{let t=!1;return(async()=>{try{const s=await fetch("/api/classroom/sessions?pageSize=all&status=active");if(!s.ok)return;const o=await s.json(),i=Array.isArray(o)?o:Array.isArray(o?.items)?o.items:[];t||es(new Set(i.map(n=>n.lessonId).filter(Boolean)))}catch{}})(),()=>{t=!0}},[]);const ts=t=>{at(t),zt(null),lt(""),Zt||Qs().then(s=>{vt(s),wt(!0)}).catch(()=>{vt([]),wt(!0)})},ss=async t=>{if(!(!U?.lesson_id||rt)){St(!0),lt("");try{const s=await fetch(`/api/classroom/sessions/${U.lesson_id}/init`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({classId:U.class_id,teachingModeId:t??void 0})});if(!s.ok){const o=await s.json().catch(()=>null);throw new Error(o?.error||(l==="zh"?"初始化课堂会话失败":"Failed to initialise the classroom session"))}Pt.getState().setPendingLiveClassLaunch({lessonId:U.lesson_id,classId:U.class_id,teachingModeId:t}),Ds.getState().setTeacherTab("live_class"),at(null)}catch(s){lt(s?.message||(l==="zh"?"初始化课堂会话失败,请重试":"Failed to initialise the classroom session"))}finally{St(!1)}}};d.useEffect(()=>{if(Ie?.status==="running")Be(!0),gt(l==="zh"?"🧠 AI 正在后台分析提取课表...":"🧠 AI analyzing timetable in background..."),C("ocr_import");else if(Ie?.status==="completed"){Be(!1),ft(100),C("ocr_import");const t=Ie.result?.entries||[];t.length>0&&re.length===0&&!yt.current&&(Te(t),xe(new Set(t.map((s,o)=>o))),R({type:"success",text:l==="zh"?`✅ 识别成功!共检测到 ${t.length} 节课程安排,请审核后导入。`:`✅ Success! Detected ${t.length} class entries. Review and import below.`}))}else Ie?.status==="failed"&&(Be(!1),R({type:"error",text:Ie.error||(l==="zh"?"课表识别失败":"OCR recognition failed")}))},[Ie,l,re.length]);const kt=["08:00 - 09:30","09:45 - 11:15","11:30 - 13:00","13:30 - 15:00","15:15 - 16:45","19:00 - 20:30"],$t=d.useRef(""),_t=d.useRef(""),as=t=>{try{const s=t.split("-");if(s.length<3)return 1;const o=parseInt(s[0],10),i=parseInt(s[1],10)-1,n=parseInt(s[2],10),b=new Date(o,i,n).getDay();return b===0?7:b}catch{return 1}},Z=async()=>{pe(!0);try{let t=[];const s=P?`&academicYear=${encodeURIComponent(P)}`:"";if($==="all"){const o=await fetch(`/api/schedules?pageSize=all${s}`);o.ok&&(t=Ts(await o.json()))}else{const o=a.find(i=>i.id===$);if(o){const i=await fetch(`/api/classes/${o.id}/schedules${P?`?academicYear=${encodeURIComponent(P)}`:""}`);i.ok&&(t=await i.json(),t.forEach(n=>{n.class_name=o.name}))}}t.sort((o,i)=>{const n=i.scheduled_date.localeCompare(o.scheduled_date);return n!==0?n:(o.time_slot||"").localeCompare(i.time_slot||"")}),oe(t)}catch(t){console.error(t)}finally{pe(!1)}};d.useEffect(()=>{const t=a.map(i=>`${i.id}:${i.name}`).join(","),s=t!==$t.current,o=$!==_t.current;a.length>0&&(s||o)&&($t.current=t,_t.current=$,Z())},[$,a,P]),d.useEffect(()=>{if(!A)return;const t=A.getDispatcher?.();if(!t)return;const s=t.registerHandler("host:refresh",async o=>{const i=o.action.payload.target;if(i==="timetable"||i==="all")return await Z(),j?.(),{success:!0,refreshed:["timetable"]}});return()=>{s.dispose()}},[A,j]),d.useEffect(()=>{fetch("/api/ai-providers").then(t=>t.ok?t.json():[]).then(t=>{const s=Array.isArray(t)?t:[];jt(s),s.length>0&&tt(o=>o&&s.some(i=>i.id===o)?o:s[0].id)}).catch(()=>jt([]))},[]);const rs=async t=>{if(t.preventDefault(),!K||!je){alert(l==="zh"?"请填写所有必填字段":"Please fill all required fields");return}try{const s=await fetch(`/api/classes/${K}/schedules`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({lessonId:fe,scheduledDate:je,timeSlot:Y,status:x,notes:N})});if(s.ok)de(!1),ce(""),ge(""),ye(""),f(""),u("scheduled"),Z(),j();else{const o=await s.json();alert(o.error||"Failed to schedule")}}catch(s){alert(s.message)}},ls=async t=>{if(t.preventDefault(),!!G)try{const s=G.isRepeating,o=s?`/api/classes/${G.class_id}/schedules`:`/api/classes/${G.class_id}/schedules/${G.id}`,n=await fetch(o,{method:s?"POST":"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({lessonId:fe,scheduledDate:je,timeSlot:Y,status:x,notes:N})});if(n.ok)be(!1),$e(null),Z(),j();else{const c=await n.json();alert(c.error||"Failed to update schedule")}}catch(s){alert(s.message)}},is=async(t,s,o,i)=>{if(o&&i){if(!confirm(l==="zh"?"该课程是由上周循环生成的。您确定要取消(停课)本周这一天的课程安排吗?":"This is a repeating class. Do you want to cancel (set to Cancelled) this class for this week?"))return;try{const b=M.find(z=>z.id===t);(await fetch(`/api/classes/${s}/schedules`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({lessonId:b?.lesson_id||"",scheduledDate:i,timeSlot:b?.time_slot||"",status:"cancelled",notes:l==="zh"?"循环排课取消":"Repeating schedule cancelled"})})).ok?(Z(),j()):alert("Cancel failed")}catch(b){alert(b.message)}return}if(confirm(l==="zh"?"您确定要完全删除该条课表排课记录吗?关联的考勤记录也将一并清除!":"Are you sure you want to completely delete this schedule record? Associated attendance logs will be cleared as well!"))try{(await fetch(`/api/classes/${s}/schedules/${t}`,{method:"DELETE"})).ok?(Z(),j()):alert("Delete failed")}catch(c){alert(c.message)}},os=t=>{$e(t),ce(t.class_id),ge(t.lesson_id),ye(t.scheduled_date),r(t.time_slot||"09:00 - 10:30"),u(t.status||"scheduled"),f(t.notes||""),be(!0)},ns=async()=>{if(!Pe||!Ee){alert(l==="zh"?"请选择开始日期和结束日期":"Please select both start and end dates");return}const t=M.filter(i=>{const n=i.scheduled_date;return n>=Pe&&n<=Ee&&i.status!==Oe});if(t.length===0){alert(l==="zh"?"在此日期范围内没有找到可调整的研究课表记录!":"No schedules found in the selected date range to adjust!");return}const s=l==="zh"?`此操作将会把 ${Pe} 到 ${Ee} 之间的共 ${t.length} 个课时记录一键标记为 [${Oe==="holiday"?"假日停课":"异常停课"}]。确认执行吗?`:`This will mark ${t.length} active classes between ${Pe} and ${Ee} as [${Oe}]. Continue?`;if(!confirm||!confirm(s))return;pe(!0);let o=0;try{for(const i of t)(await fetch(`/api/classes/${i.class_id}/schedules/${i.id}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({lessonId:i.lesson_id,scheduledDate:i.scheduled_date,timeSlot:i.time_slot,status:Oe,notes:pt||(l==="zh"?"假期统一调休":"Holiday adjustments")})})).ok&&o++;alert(l==="zh"?`调整成功!共更新 ${o} 个课表安排。`:`Success! Updated ${o} entries.`),ht(""),mt(""),bt(""),Z(),j()}catch(i){alert(i.message)}finally{pe(!1)}},it=t=>{if(!t.type.startsWith("image/")){R({type:"error",text:l==="zh"?"请选择图片文件(PNG, JPG, JPEG)":"Please select an image file (PNG, JPG, JPEG)"});return}if(t.size>20*1024*1024){R({type:"error",text:l==="zh"?"图片大小不能超过 20MB":"Image size must be under 20MB"});return}Xe(t.name);const s=new FileReader;s.onload=o=>{const i=o.target?.result;Je(i),We(i),Te([]),R(null),xe(new Set),ue.getState().clearTimetableOcrTask()},s.readAsDataURL(t)},ds=t=>{const s=t.target.files?.[0];s&&it(s)},cs=t=>{const s=t.clipboardData?.items;if(s){for(let o=0;o<s.length;o++)if(s[o].type.startsWith("image/")){t.preventDefault();const i=s[o].getAsFile();i&&it(i);return}}},xs=t=>{t.preventDefault(),t.stopPropagation();const s=t.dataTransfer?.files?.[0];s&&s.type.startsWith("image/")&&it(s)};d.useEffect(()=>{if(w!=="ocr_import")return;const t=s=>cs(s);return document.addEventListener("paste",t),()=>document.removeEventListener("paste",t)},[w,l]);const us=async()=>{if(!_e){R({type:"error",text:l==="zh"?"请先上传课表图片":"Please upload a timetable image first"});return}Be(!0),ft(15),gt(l==="zh"?"🚀 任务已在后台运行中,可随时切换页面...":"🚀 Task running in background, you can navigate away..."),R({type:"info",text:l==="zh"?"🔍 AI 正在后台分析提取课表,您可以随时前往其他页面,识别完成后将通过通知提醒您。":"🔍 AI is analyzing timetable in background, you can navigate freely."}),Te([]),ue.getState().startTimetableOcr({imageBase64:_e,lang:l==="zh"?"zh":"en",providerId:Ge||void 0,fileName:Ze})},hs=(t,s)=>{if(!s)return"";try{const o=new Date(s);let i=Number(t);isNaN(i)&&typeof t=="string"&&(t.includes("一")||t.includes("1")||t.includes("Mon")?i=1:t.includes("二")||t.includes("2")||t.includes("Tue")?i=2:t.includes("三")||t.includes("3")||t.includes("Wed")?i=3:t.includes("四")||t.includes("4")||t.includes("Thu")?i=4:t.includes("五")||t.includes("5")||t.includes("Fri")?i=5:t.includes("六")||t.includes("6")||t.includes("Sat")?i=6:(t.includes("日")||t.includes("天")||t.includes("7")||t.includes("Sun"))&&(i=7)),(isNaN(i)||i<1||i>7)&&(i=1);const n=i-1,c=new Date(o);return c.setDate(o.getDate()+n),c.toISOString().split("T")[0]}catch(o){return console.error("Failed to convert day of week to date:",o),s}},Tt=t=>{if(!t)return null;const s=t.replace(/\s+/g,"").trim(),o=s.match(/(\d+)(?:班)?\)?$/)||s.match(/\((\d+)\)/);if(!o)return null;const i=o[1];let n="",c=0;if(s.startsWith("高")?(n="高",s.includes("一")||s.includes("1")?c=1:s.includes("二")||s.includes("2")?c=2:(s.includes("三")||s.includes("3"))&&(c=3)):s.startsWith("初")?(n="初",s.includes("一")||s.includes("1")?c=1:s.includes("二")||s.includes("2")?c=2:(s.includes("三")||s.includes("3"))&&(c=3)):s.startsWith("七")||s.startsWith("7")?(n="初",c=1):s.startsWith("八")||s.startsWith("8")?(n="初",c=2):s.startsWith("九")||s.startsWith("9")?(n="初",c=3):s.startsWith("小")?(n="小",s.includes("一")||s.includes("1")?c=1:s.includes("二")||s.includes("2")?c=2:s.includes("三")||s.includes("3")?c=3:s.includes("四")||s.includes("4")?c=4:s.includes("五")||s.includes("5")?c=5:(s.includes("六")||s.includes("6"))&&(c=6)):s.startsWith("一")||s.startsWith("1")?(n="小",c=1):s.startsWith("二")||s.startsWith("2")?(n="小",c=2):s.startsWith("三")||s.startsWith("3")?(n="小",c=3):s.startsWith("四")||s.startsWith("4")?(n="小",c=4):s.startsWith("五")||s.startsWith("5")?(n="小",c=5):(s.startsWith("六")||s.startsWith("6"))&&(n="小",c=6),!n||c===0)return null;const b=new Date,J=b.getFullYear(),Ae=(b.getMonth()+1>=9?J:J-1)-(c-1);return`${n}${Ae}级${i}班`},ms=t=>{if(!t)return null;const s=t.match(/^(初|高|小|小学)(\d{4})级(\d+)班$/);if(!s)return null;const o=s[1],i=parseInt(s[2],10),n=s[3],c=new Date,b=c.getFullYear(),J=c.getMonth()+1;let z=b-i;if(J>=9&&(z+=1),z<1)return l==="zh"?"未开学":"Not Started";if(z>(o==="高"||o==="初"?3:6))return l==="zh"?"已毕业":"Graduated";const X=l==="zh"&&["","一","二","三","四","五","六","七","八","九","十"][z]||z.toString();return`${o}${X}(${n})`},ot=t=>{const s=ms(t);return s?`${t} (${s})`:t},nt=t=>{if(!t)return;const s=t.replace(/\s+/g,"").toLowerCase();let o=a.find(i=>{if(!i||!i.name)return!1;const n=i.name.replace(/\s+/g,"").toLowerCase();return n===s||n.includes(s)||s.includes(n)});if(!o){const i=s.replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/g,"");o=a.find(n=>{if(!n||!n.name)return!1;const c=n.name.replace(/\s+/g,"").toLowerCase().replace(/[^0-9a-zA-Z\u4e00-\u9fa5]/g,"");return c===i||c.includes(i)||i.includes(c)})}return o},ps=async()=>{try{if(De.size===0){R({type:"error",text:l==="zh"?"请至少选择一条课程记录":"Please select at least one entry"});return}const t={1:"08:00 - 08:40",2:"08:50 - 09:30",3:"10:00 - 10:40",4:"10:50 - 11:30",5:"11:40 - 12:15",6:"14:20 - 15:00",7:"15:10 - 15:50",8:"16:20 - 17:00",9:"19:00 - 20:30"},s=new Date,o=s.getDay(),i=s.getDate()-o+(o===0?-6:1),c=new Date(s.setDate(i)).toISOString().split("T")[0];et(!0),R(null);const b=re.filter((p,I)=>De.has(I)),J=new Set;b.forEach(p=>{if(p.className){const I=Tt(p.className)||p.className.trim();nt(I)||J.add(I)}});const z={};J.size>0&&(await Promise.all(Array.from(J).map(async p=>{try{const I=await fetch("/api/classes",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:p,description:"OCR自动生成规范班级"})});if(I.ok){const ee=await I.json();ee.success&&ee.id&&(z[p]=ee.id)}}catch(I){console.error(`Failed to dynamically create class ${p}:`,I)}})),_&&_());const S={},Ae=new Set;b.forEach(p=>{const I=hs(p.dayOfWeek||1,c),ee=p.timeSlot||t[p.periodNumber]||"09:00 - 10:30",Ve=p.className?Tt(p.className)||p.className.trim():"",It=nt(Ve),Ye=It?It.id:Ve?z[Ve]:null;if(!Ye){p.className&&Ae.add(p.className);return}const ws=m.find(zs=>{const ct=zs.title.toLowerCase(),At=Ve.toLowerCase(),Ss=(p.subject||"").toLowerCase();return ct.includes(At)||ct.includes(Ss)||At.includes(ct)});S[Ye]||(S[Ye]=[]),S[Ye].push({lessonId:ws?.id||"",scheduledDate:I,timeSlot:ee,status:"scheduled",notes:`${p.className||""} ${p.subject||""} ${p.location?"教室:"+p.location:""} ${p.teacherName?"教师:"+p.teacherName:""}`.trim()})});const X=Object.keys(S);if(X.length===0){R({type:"error",text:l==="zh"?"无法导入:没有解析出任何有效的班级名称。":"Could not match or create any classes for import."}),et(!1);return}let dt=0;await Promise.all(X.map(async p=>{const I=await fetch(`/api/classes/${p}/schedules/batch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedules:S[p]})});if(I.ok){const ee=await I.json();dt+=ee.count||0}else{const ee=await I.json().catch(()=>({}));throw new Error(ee.error||`Failed to import schedules for class ${p}`)}})),Te([]),xe(new Set),Je(null),We(null),Xe(""),ue.getState().clearTimetableOcrTask();let Dt=l==="zh"?`🎉 导入成功!共写入 ${dt} 节课时安排。`:`🎉 Import successful! Saved ${dt} schedule entries.`;if(J.size>0){const p=Array.from(J).filter(I=>z[I]);p.length>0&&(Dt+=l==="zh"?`(自动创建并规范了新班级:${p.join(", ")})`:` (Automatically created classes: ${p.join(", ")})`)}R({type:"success",text:Dt}),Z(),j()}catch(t){console.error("OCR Import Error:",t),alert(`${l==="zh"?"导入出错提示:":"Import error alert: "}${t.message}`),R({type:"error",text:`${l==="zh"?"导入失败:":"Import failed: "}${t.message}`})}finally{et(!1)}},bs=t=>{xe(s=>{const o=new Set(s);return o.has(t)?o.delete(t):o.add(t),o})},fs=()=>{De.size===re.length?xe(new Set):xe(new Set(re.map((t,s)=>s)))},gs=l==="zh"?["","周一","周二","周三","周四","周五","周六","周日"]:["","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],js=()=>{const t=["Date","Class Name","Lesson Title","Time Slot","Status","Notes","Class ID","Lesson ID"],s=M.map(c=>[c.scheduled_date,c.class_name||"",c.lesson_title||"",c.time_slot||"",c.status||"scheduled",c.notes||"",c.class_id,c.lesson_id]),o="data:text/csv;charset=utf-8,"+[t.join(","),...s.map(c=>c.map(b=>`"${String(b).replace(/"/g,'""')}"`).join(","))].join(`
5
+ `),i=encodeURI(o),n=document.createElement("a");n.setAttribute("href",i),n.setAttribute("download",`timetable_export_${new Date().toISOString().split("T")[0]}.csv`),document.body.appendChild(n),n.click(),document.body.removeChild(n)},ys=()=>{const t="data:text/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(M,null,2)),s=document.createElement("a");s.setAttribute("href",t),s.setAttribute("download",`timetable_export_${new Date().toISOString().split("T")[0]}.json`),document.body.appendChild(s),s.click(),document.body.removeChild(s)},Ns=async()=>{if(!v){Fe({type:"error",text:l==="zh"?"请先选择需要导入的班级!":"Please select a Class first!"});return}if(!g.trim()){Fe({type:"error",text:l==="zh"?"请在框中输入或粘贴数据内容":"Please paste formatting data content!"});return}try{let t=[];const s=g.trim();if(s.startsWith("[")){const n=JSON.parse(s);t=Array.isArray(n)?n:[n]}else{const n=s.split(`
6
+ `).map(b=>b.trim()).filter(Boolean);if(n.length<=1)throw new Error(l==="zh"?"CSV 数据行不足(必须包含表头与内容行)":"Insufficient CSV rows!");const c=n[0].split(",").map(b=>b.trim().toLowerCase().replace(/"/g,""));for(let b=1;b<n.length;b++){const J=n[b].split(",").map(S=>S.trim().replace(/"/g,"")),z={};c.forEach((S,Ae)=>{const X=J[Ae];S==="date"||S==="scheduled_date"?z.scheduledDate=X:S==="lesson_id"||S==="lesson id"||S==="lesson"?z.lessonId=X:S==="time_slot"||S==="time slot"||S==="time"?z.timeSlot=X:S==="status"?z.status=X:(S==="notes"||S==="note")&&(z.notes=X)}),z.scheduledDate&&t.push(z)}}if(t.length===0)throw new Error(l==="zh"?"未解析到合法的课时数据记录。请保证包含日期字段!":"No valid schedules parsed. Date is required!");const o=t.map(n=>{const c=n.lessonId?m.find(b=>b.id===n.lessonId||b.title.toLowerCase()===n.lessonId.toLowerCase()):null;return{lessonId:c?c.id:"",scheduledDate:n.scheduledDate,timeSlot:n.timeSlot||"09:00 - 10:30",status:n.status||"scheduled",notes:n.notes||""}}),i=await fetch(`/api/classes/${v}/schedules/batch`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({schedules:o})});if(i.ok){const n=await i.json();Fe({type:"success",text:l==="zh"?`👍 导入成功!共写入 ${n.count} 节课时安排至所选班级。`:`Success! Imported ${n.count} schedules layout.`}),D(""),Z(),j()}else{const n=await i.json();throw new Error(n.error||"Batch insert error")}}catch(t){Fe({type:"error",text:`${l==="zh"?"导入失败: ":"Import failed: "}${t.message}`})}},vs=M.filter(t=>{if($!=="all"&&t.class_id!==$||ae!=="all"&&t.status!==ae)return!1;if(Ce.trim()){const s=Ce.toLowerCase(),o=(t.lesson_title||"").toLowerCase().includes(s),i=(t.class_name||"").toLowerCase().includes(s),n=(t.notes||"").toLowerCase().includes(s);return o||i||n}return!0});return e.jsxs("div",{className:"flex-1 flex flex-col min-h-0 bg-white rounded-2xl border border-gray-200 overflow-hidden shadow-sm font-sans",id:"timetable_manager_container",children:[e.jsxs("div",{className:"p-4 border-b border-gray-100 bg-gray-50/50 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 shrink-0",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-xl font-bold text-gray-800 flex items-center gap-2",children:[e.jsx(Us,{className:"text-indigo-600 animate-pulse",size:22}),l==="zh"?"班级课表中心 & 动态调整":"Timetable Center & Adjustments"]}),e.jsx("p",{className:"text-xs text-subtle mt-0.5",children:l==="zh"?"统一管理日常排课,支持节假日批量停课、讲师临时换课、换班及 CSV 导入导出。":"Orchestrate routines schedules, holidays exclusions, and instructors swapping items."})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-wrap shrink-0",children:[e.jsxs("div",{className:"flex bg-gray-100 p-1 rounded-xl shrink-0 self-start sm:self-auto shadow-inner border border-slate-200/50",children:[e.jsx("button",{onClick:()=>C("view"),className:`px-3 py-1.5 rounded-lg text-xs font-semibold tracking-wide transition-all ${w==="view"?"bg-white text-indigo-700 shadow-sm":"text-muted hover:text-gray-800"}`,children:l==="zh"?"🗓️ 课表看板":"Schedule Grid"}),e.jsx("button",{onClick:()=>C("adjust"),className:`px-3 py-1.5 rounded-lg text-xs font-semibold tracking-wide transition-all ${w==="adjust"?"bg-white text-indigo-700 shadow-sm":"text-muted hover:text-gray-800"}`,children:l==="zh"?"🛠️ 临时调休调课":"Holiday Adjusts"}),e.jsx("button",{onClick:()=>C("import_export"),className:`px-3 py-1.5 rounded-lg text-xs font-semibold tracking-wide transition-all ${w==="import_export"?"bg-white text-indigo-700 shadow-sm":"text-muted hover:text-gray-800"}`,children:l==="zh"?"📥 快速导入导出":"Import / Export"}),e.jsx("button",{onClick:()=>C("ocr_import"),className:`px-3 py-1.5 rounded-lg text-xs font-semibold tracking-wide transition-all ${w==="ocr_import"?"bg-white text-indigo-700 shadow-sm":"text-muted hover:text-gray-800"}`,children:l==="zh"?"📷 AI 图片识课":"AI Image OCR"}),e.jsx(we,{slot:"timetable.tab",slotProps:{renderType:"button",timetableActiveTab:w,setTimetableActiveTab:C}})]}),e.jsx(qs,{value:P??"all",options:Array.from(new Set(M.map(t=>t.academic_year).filter(Boolean))),lang:l,onChange:t=>{L?.setAcademicYear?.(t==="all"?null:t)}}),e.jsx(we,{slot:"timetable.toolbar.action",slotProps:{schedules:M,currentWeekMonday:he,lang:l,onRefresh:Z}})]})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto p-5",children:[w==="view"&&e.jsx(Zs,{lang:l,viewMode:H,setViewMode:k,selectedClassId:$,setSelectedClassId:se,statusFilter:ae,setStatusFilter:ie,searchQuery:Ce,setSearchQuery:ke,classes:a,getClassDisplayName:ot,loading:ne,filteredSchedules:vs,currentWeekMonday:he,setCurrentWeekMonday:q,showWeekend:me,setShowWeekend:h,dateOverrides:Se,setDateOverrides:V,setOverridingDateKey:F,setOverrideMode:te,setOverrideTargetDow:B,setOverrideTargetDate:O,openEditModal:os,handleDeleteSchedule:is,getDayOfWeekIndex:as,getMonday:E,getWeekRangeString:ze,setFormClassId:ce,setFormLessonId:ge,setFormDate:ye,setFormStatus:u,setFormNotes:f,setIsAddOpen:de,onQuickStart:ts,activeSessionLessonIds:Xt}),w==="adjust"&&e.jsx(Xs,{lang:l,holStartDate:Pe,setHolStartDate:ht,holEndDate:Ee,setHolEndDate:mt,holType:Oe,setHolType:Gt,holNotes:pt,setHolNotes:bt,handleBatchHolidayAdjustment:ns,loading:ne}),w==="import_export"&&e.jsx(ea,{lang:l,classes:a,getClassDisplayName:ot,handleExportCSV:js,handleExportJSON:ys,importClassId:v,setImportClassId:y,csvText:g,setCsvText:D,importMessage:Ne,handleImportData:Ns}),w==="ocr_import"&&e.jsx(ta,{lang:l,ocrProviderId:Ge,setOcrProviderId:tt,aiProviders:Kt,ocrFileInputRef:Qt,handleOcrDrop:xs,handleOcrImageSelect:ds,ocrImagePreview:Me,setOcrImagePreview:Je,setOcrImageBase64:We,setOcrEntries:Te,setOcrMessage:R,setOcrSelectedEntries:xe,ocrImageBase64:_e,ocrLoading:Ht,handleOcrRecognize:us,ocrProgressStatus:Yt,ocrProgress:Vt,ocrMessage:Ut,ocrEntries:re,ocrSelectedEntries:De,toggleAllOcrEntries:fs,toggleOcrEntry:bs,dayNames:gs,findMatchedClass:nt,handleOcrImport:ps,ocrImporting:qt}),e.jsx(we,{slot:"timetable.tab",slotProps:{renderType:"panel",timetableActiveTab:w,classes:a,lessons:m,lang:l,onSchedulesUpdated:j,onClassesUpdated:_}})]}),U&&e.jsx("div",{className:"fixed inset-0 z-55 bg-black/40 backdrop-blur-xs flex items-center justify-center p-4",role:"dialog","aria-modal":"true","aria-label":l==="zh"?"快速开始上课":"Quick start class",children:e.jsxs("div",{className:"bg-white border border-slate-200 shadow-2xl rounded-2xl w-full max-w-md overflow-hidden animate-in fade-in zoom-in duration-150",children:[e.jsxs("div",{className:"p-4 bg-slate-50 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("h3",{className:"font-bold text-gray-800 flex items-center gap-1.5 text-sm xl:text-base",children:[e.jsx(Mt,{className:"text-indigo-600",size:18}),l==="zh"?"快速开始上这节课":"Quick Start This Class"]}),e.jsx("button",{type:"button",onClick:()=>at(null),"aria-label":l==="zh"?"关闭":"Close",className:"text-slate-400 hover:text-slate-600 p-1 rounded-md hover:bg-slate-200/60 transition-colors cursor-pointer",children:e.jsx(ve,{size:16})})]}),e.jsxs("div",{className:"p-4 flex flex-col gap-3 max-h-[70vh] overflow-y-auto",children:[e.jsxs("div",{className:"bg-indigo-50/60 border border-indigo-100 rounded-xl p-3 text-xs",children:[e.jsx("div",{className:"font-bold text-indigo-900",children:U.lesson_title||(l==="zh"?"未命名课程":"Untitled Lesson")}),e.jsxs("div",{className:"text-indigo-700/80 mt-1 flex flex-wrap gap-x-3 gap-y-0.5",children:[e.jsx("span",{className:"font-mono",children:U.time_slot||(l==="zh"?"全天":"All-day")}),e.jsx("span",{children:U.class_name}),e.jsx("span",{children:U.scheduled_date})]})]}),Nt.length>0&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs font-bold text-gray-500 mb-1.5",children:l==="zh"?"教学模式(可选)":"Teaching Mode (optional)"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Nt.map(t=>e.jsx("button",{type:"button",onClick:()=>zt(He===t.id?null:t.id),"aria-pressed":He===t.id,className:`px-2.5 py-1 rounded-lg text-xs font-semibold border transition-all cursor-pointer ${He===t.id?"bg-indigo-600 text-white border-indigo-500 shadow-sm":"bg-white text-slate-600 border-slate-200 hover:border-indigo-400 hover:text-indigo-600"}`,children:l==="zh"?t.name:t.nameEn||t.name},t.id))})]}),Ct&&e.jsxs("div",{className:"flex items-start gap-1.5 text-xs text-red-600 bg-red-50 border border-red-200 rounded-lg px-2.5 py-2",role:"alert",children:[e.jsx(Bt,{size:13,className:"shrink-0 mt-px"}),e.jsx("span",{children:Ct})]}),e.jsxs("button",{type:"button",onClick:()=>ss(He),disabled:rt||!U.lesson_id,className:"w-full py-2.5 rounded-xl text-sm font-bold text-white bg-indigo-600 hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed shadow-sm transition-all flex items-center justify-center gap-1.5 cursor-pointer",children:[rt?e.jsx(Le,{size:15,className:"animate-spin"}):e.jsx(Wt,{size:15,"aria-hidden":"true"}),l==="zh"?"开始上课":"Start Class"]})]})]})}),Re&&e.jsx("div",{className:"fixed inset-0 z-55 bg-black/40 backdrop-blur-xs flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white border border-slate-200 shadow-2xl rounded-2xl w-full max-w-md overflow-hidden animate-in fade-in zoom-in duration-150",children:[e.jsxs("div",{className:"p-4 bg-slate-50 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("h3",{className:"font-bold text-gray-800 flex items-center gap-1.5 text-sm xl:text-base",children:[e.jsx(Ue,{className:"text-indigo-600",size:18}),l==="zh"?"为班级排排定课次":"Arrange Timetable Scheduled"]}),e.jsx("button",{onClick:()=>de(!1),className:"text-gray-400 hover:text-gray-600 p-1 rounded-full hover:bg-gray-150 transition-colors",children:e.jsx(ve,{size:16})})]}),e.jsxs("form",{onSubmit:rs,className:"p-4 space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"选择对应上课班级 *":"Target Class *"}),e.jsxs("select",{title:"Form Class ID",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white select-none cursor-pointer focus:outline-hidden",value:K,onChange:t=>ce(t.target.value),required:!0,children:[e.jsx("option",{value:"",children:l==="zh"?"请选择班级...":"Select Class..."}),a.map(t=>e.jsx("option",{value:t.id,children:ot(t.name)},t.id))]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"对应授课课题 / 课时 (可空,上课时自选)":"Syllabus Lesson (Optional, select during class)"}),e.jsxs("select",{title:"Form Lesson ID",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white select-none cursor-pointer focus:outline-hidden rounded-lg",value:fe,onChange:t=>ge(t.target.value),children:[e.jsx("option",{value:"",children:l==="zh"?"暂不设定内容 (上课时自由选择)":"No fixed content (select during class)"}),m.map(t=>e.jsx("option",{value:t.id,children:t.title},t.id))]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"公历排定日期 *":"Scheduled Date *"}),e.jsx("input",{type:"date",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white focus:outline-hidden",value:je,onChange:t=>ye(t.target.value),required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"日常状态":"Daily Status"}),e.jsxs("select",{title:"Form Status",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white cursor-pointer focus:outline-hidden",value:x,onChange:t=>u(t.target.value),children:[e.jsx("option",{value:"scheduled",children:l==="zh"?"正常授课":"Scheduled"}),e.jsx("option",{value:"cancelled",children:l==="zh"?"停课":"Cancelled"}),e.jsx("option",{value:"holiday",children:l==="zh"?"假期调休":"Holiday"}),e.jsx("option",{value:"swap",children:l==="zh"?"临时授课/换课":"Swapped"})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"具体上课时间段":"Class Period / Time Slot"}),e.jsxs("div",{className:"flex gap-1.5 items-center",children:[e.jsx("input",{type:"text",className:"flex-1 border border-gray-200 rounded-lg text-xs p-2 bg-white text-gray-750 focus:outline-hidden",value:Y,onChange:t=>r(t.target.value),placeholder:"e.g. 09:00 - 10:30"}),e.jsxs("select",{title:"Preset Time Slot",className:"border border-gray-250 text-xs p-2 rounded-lg bg-white cursor-pointer focus:outline-hidden",onChange:t=>{t.target.value&&r(t.target.value)},children:[e.jsx("option",{value:"",children:l==="zh"?"建议课时...":"Presets..."}),kt.map(t=>e.jsx("option",{value:t,children:t},t))]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"调课备注说明":"Schedule Notes"}),e.jsx("input",{type:"text",placeholder:l==="zh"?"例如:节假日补课、更替老师讲义,不填则无":"e.g. Substitute instructor lesson outline",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white focus:outline-hidden",value:N,onChange:t=>f(t.target.value)})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t border-slate-100 pt-3 mt-4",children:[e.jsx("button",{type:"button",onClick:()=>de(!1),className:"px-3 py-1.5 rounded-lg border text-xs font-medium text-muted hover:bg-gray-150 transition-colors",children:l==="zh"?"取消":"Cancel"}),e.jsx("button",{type:"submit",className:"px-4 py-1.5 rounded-lg bg-indigo-600 hover:bg-indigo-700 text-white text-xs font-bold shadow-sm transition-colors",children:l==="zh"?"排定并发布":"Publish & Save"})]})]})]})}),Ke&&G&&e.jsx("div",{className:"fixed inset-0 z-55 bg-black/40 backdrop-blur-xs flex items-center justify-center p-4",children:e.jsxs("div",{className:"bg-white border border-slate-200 shadow-2xl rounded-2xl w-full max-w-md overflow-hidden animate-in fade-in zoom-in duration-150",children:[e.jsxs("div",{className:"p-4 bg-slate-50 border-b border-slate-100 flex items-center justify-between",children:[e.jsxs("h3",{className:"font-bold text-gray-800 flex items-center gap-1.5 text-sm xl:text-base",children:[e.jsx(qe,{className:"text-indigo-600",size:18}),l==="zh"?"微调/临时变动排课记录":"Custom Adjust Schedule"]}),e.jsx("button",{onClick:()=>{be(!1),$e(null)},className:"text-gray-400 hover:text-gray-600 p-1 rounded-full hover:bg-gray-150 transition-colors",children:e.jsx(ve,{size:16})})]}),e.jsxs("form",{onSubmit:ls,className:"p-4 space-y-4",children:[e.jsxs("div",{className:"p-2.5 bg-indigo-50 border border-indigo-100 rounded-lg text-xs leading-5",children:[e.jsx("div",{className:"font-semibold text-indigo-850",children:l==="zh"?"提示:课表的临时变动将实时更新至今日课程气泡及学生白板客户端。":"Changes will load instantly on students whiteboards and dashboards."}),e.jsxs("div",{className:"text-gray-600 mt-1",children:[l==="zh"?"目标班级:":"Target Class: "," ",e.jsx("span",{className:"font-bold",children:G.class_name})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"换课:关联授课主体 (可空,上课时自选)":"Swap Topic / Lesson (Optional, select during class)"}),e.jsxs("select",{id:"edit_lesson_select",title:"Edit Lesson",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white select-none cursor-pointer focus:outline-hidden rounded-lg",value:fe,onChange:t=>ge(t.target.value),children:[e.jsx("option",{value:"",children:l==="zh"?"暂不设定内容 (上课时自由选择)":"No fixed content (select during class)"}),m.map(t=>e.jsx("option",{value:t.id,children:t.title},t.id))]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"换时间:上课日期 *":"Scheduled Date *"}),e.jsx("input",{type:"date",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white focus:outline-hidden",value:je,onChange:t=>ye(t.target.value),required:!0})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"临时教务状态":"Ad-hoc Status"}),e.jsxs("select",{id:"edit_status_select",title:"Edit Status",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white cursor-pointer focus:outline-hidden",value:x,onChange:t=>u(t.target.value),children:[e.jsx("option",{value:"scheduled",children:l==="zh"?"正常授课 (Scheduled)":"Scheduled"}),e.jsx("option",{value:"cancelled",children:l==="zh"?"临时停课 (Cancelled)":"Cancelled"}),e.jsx("option",{value:"holiday",children:l==="zh"?"节日假期 (Holiday)":"Holiday"}),e.jsx("option",{value:"swap",children:l==="zh"?"换课/代授课 (Swapped)":"Swapped"})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"具体上课时段":"Class Time Slot"}),e.jsxs("div",{className:"flex gap-1.5 items-center",children:[e.jsx("input",{type:"text",className:"flex-1 border border-gray-200 rounded-lg text-xs p-2 bg-white text-gray-750 focus:outline-hidden",value:Y,onChange:t=>r(t.target.value),placeholder:"e.g. 09:00 - 10:30"}),e.jsxs("select",{title:"Edit Preset Time",className:"border border-gray-250 text-xs p-2 rounded-lg bg-white cursor-pointer focus:outline-hidden",onChange:t=>{t.target.value&&r(t.target.value)},children:[e.jsx("option",{value:"",children:l==="zh"?"建议时段...":"Presets..."}),kt.map(t=>e.jsx("option",{value:t,children:t},t))]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-gray-700 mb-1",children:l==="zh"?"微调备注(说明换课/放假原因)":"Notes/Adjustments Reason"}),e.jsx("input",{type:"text",placeholder:l==="zh"?"例:国庆假停课 / 本课更替为第二节":"Explain reasons of ad-hoc swaps",className:"w-full border border-gray-250 text-xs p-2 rounded-lg bg-white focus:outline-hidden",value:N,onChange:t=>f(t.target.value)})]}),e.jsxs("div",{className:"flex justify-end gap-2 border-t border-slate-100 pt-3 mt-4",children:[e.jsx("button",{type:"button",onClick:()=>{be(!1),$e(null)},className:"px-3 py-1.5 rounded-lg border text-xs font-medium text-muted hover:bg-gray-150 transition-colors",children:l==="zh"?"取消":"Cancel"}),e.jsx("button",{type:"submit",className:"px-4 py-1.5 rounded-lg bg-indigo-600 hover:bg-indigo-700 text-white text-xs font-bold shadow-sm transition-colors",children:l==="zh"?"保存调整":"Apply Adjustment"})]})]})]})}),le&&e.jsx("div",{className:"fixed inset-0 bg-slate-900/40 backdrop-blur-xs flex items-center justify-center z-50 p-4",children:e.jsxs("div",{className:"bg-white rounded-2xl border border-slate-200 shadow-2xl max-w-sm w-full p-5 flex flex-col gap-4 animate-in fade-in zoom-in duration-150",children:[e.jsxs("div",{className:"flex items-center justify-between pb-2 border-b border-slate-100",children:[e.jsxs("h3",{className:"font-bold text-sm text-slate-800 flex items-center gap-1.5",children:[e.jsx(ut,{size:16,className:"text-amber-500"}),l==="zh"?"临时切换显示课程日期":"Temporarily Override Date"]}),e.jsx("button",{onClick:()=>{F(null),O(""),B("")},className:"text-slate-400 hover:text-slate-600 hover:bg-slate-50 p-1 rounded-lg transition-colors cursor-pointer",children:e.jsx(ve,{size:16})})]}),e.jsxs("div",{className:"text-xs text-slate-500 leading-relaxed",children:[e.jsx("p",{children:l==="zh"?`您正在设置 [${le}] 的课程显示。`:`You are overriding schedules displayed for [${le}].`}),e.jsx("p",{className:"mt-1",children:l==="zh"?"您可以将某一个日期的课临时指定为星期几的常规课表,或者指定为系统内的任意其他具体日期课程。":"Specify a day of the week or another target date to temporarily view its lessons."})]}),e.jsxs("div",{className:"flex bg-slate-100 p-1 rounded-xl",children:[e.jsx("button",{type:"button",onClick:()=>te("dow"),className:`flex-1 text-center py-1.5 text-xs font-bold rounded-lg transition-all cursor-pointer ${T==="dow"?"bg-white text-indigo-700 shadow-3xs":"text-slate-500 hover:text-slate-700"}`,children:l==="zh"?"常规星期几":"Day of Week"}),e.jsx("button",{type:"button",onClick:()=>te("date"),className:`flex-1 text-center py-1.5 text-xs font-bold rounded-lg transition-all cursor-pointer ${T==="date"?"bg-white text-indigo-700 shadow-3xs":"text-slate-500 hover:text-slate-700"}`,children:l==="zh"?"具体日期":"Specific Date"})]}),T==="dow"?e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:l==="zh"?"选择常规星期几 *":"Select Day of Week *"}),e.jsxs("select",{value:Q,onChange:t=>B(t.target.value),className:"w-full border border-gray-250 rounded-lg text-xs p-2.5 bg-white focus:outline-hidden focus:ring-1 focus:ring-indigo-500 transition-all font-sans text-gray-750 cursor-pointer",children:[e.jsx("option",{value:"",children:l==="zh"?"-- 请选择星期 --":"-- Select Day --"}),e.jsx("option",{value:"1",children:l==="zh"?"星期一":"Monday"}),e.jsx("option",{value:"2",children:l==="zh"?"星期二":"Tuesday"}),e.jsx("option",{value:"3",children:l==="zh"?"星期三":"Wednesday"}),e.jsx("option",{value:"4",children:l==="zh"?"星期四":"Thursday"}),e.jsx("option",{value:"5",children:l==="zh"?"星期五":"Friday"}),e.jsx("option",{value:"6",children:l==="zh"?"星期六":"Saturday"}),e.jsx("option",{value:"7",children:l==="zh"?"星期日":"Sunday"})]})]}):e.jsxs("div",{children:[e.jsx("label",{className:"block text-xs font-semibold text-slate-700 mb-1.5",children:l==="zh"?"选择具体日期 *":"Select Target Date *"}),e.jsx("input",{type:"date",className:"w-full border border-gray-250 rounded-lg text-xs p-2.5 bg-white focus:outline-hidden focus:ring-1 focus:ring-indigo-500 transition-all font-sans text-gray-750 cursor-pointer",value:W,onChange:t=>O(t.target.value)})]}),e.jsxs("div",{className:"flex gap-2 justify-end pt-2 border-t border-slate-100",children:[e.jsx("button",{onClick:()=>{F(null),O(""),B("")},className:"px-3.5 py-2 rounded-lg text-xs font-bold text-slate-500 bg-slate-100 hover:bg-slate-200/80 transition-all cursor-pointer",children:l==="zh"?"取消":"Cancel"}),e.jsx("button",{onClick:()=>{let t="";if(T==="dow"){if(!Q){alert(l==="zh"?"请选择星期几":"Please select a day of the week");return}t=`dow-${Q}`}else{if(!W){alert(l==="zh"?"请选择一个日期":"Please select a date");return}t=W}V(s=>({...s,[le]:t})),F(null),O(""),B("")},className:"px-3.5 py-2 rounded-lg text-xs font-bold text-white bg-indigo-600 hover:bg-indigo-700 shadow-sm transition-all cursor-pointer",children:l==="zh"?"应用切换":"Apply Switch"})]})]})})]})};function ba(a={}){const m=Is(),l=a.classes??m?.classes??[],j=a.lessons??m?.lessons??[],_=a.lang??m?.lang??"zh",A=a.onSchedulesUpdated??m?.fetchTodaySchedules??(async()=>{});return e.jsx("div",{className:"flex-1 overflow-hidden flex flex-col bg-white",id:"teacher_timetable_tab_panel",children:e.jsx(sa,{classes:l,lessons:j,lang:_,onSchedulesUpdated:A})})}export{ba as TimetableView};
@@ -0,0 +1 @@
1
+ import{g as C0}from"./vendor-react-Kv_JATwr.js";import{c as m0}from"./vendor-pptx-Bzn6whfK.js";function Z0(Y,ae){for(var ne=0;ne<ae.length;ne++){const G=ae[ne];if(typeof G!="string"&&!Array.isArray(G)){for(const y in G)if(y!=="default"&&!(y in Y)){const J=Object.getOwnPropertyDescriptor(G,y);J&&Object.defineProperty(Y,y,J.get?J:{enumerable:!0,get:()=>G[y]})}}}return Object.freeze(Object.defineProperty(Y,Symbol.toStringTag,{value:"Module"}))}var qe={exports:{}},Fe={},d0;function Je(){return d0||(d0=1,(function(Y){var ae=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function ne(J,t){return Object.prototype.hasOwnProperty.call(J,t)}Y.assign=function(J){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(typeof r!="object")throw new TypeError(r+"must be non-object");for(var i in r)ne(r,i)&&(J[i]=r[i])}}return J},Y.shrinkBuf=function(J,t){return J.length===t?J:J.subarray?J.subarray(0,t):(J.length=t,J)};var G={arraySet:function(J,t,r,i,b){if(t.subarray&&J.subarray){J.set(t.subarray(r,r+i),b);return}for(var v=0;v<i;v++)J[b+v]=t[r+v]},flattenChunks:function(J){var t,r,i,b,v,d;for(i=0,t=0,r=J.length;t<r;t++)i+=J[t].length;for(d=new Uint8Array(i),b=0,t=0,r=J.length;t<r;t++)v=J[t],d.set(v,b),b+=v.length;return d}},y={arraySet:function(J,t,r,i,b){for(var v=0;v<i;v++)J[b+v]=t[r+v]},flattenChunks:function(J){return[].concat.apply([],J)}};Y.setTyped=function(J){J?(Y.Buf8=Uint8Array,Y.Buf16=Uint16Array,Y.Buf32=Int32Array,Y.assign(Y,G)):(Y.Buf8=Array,Y.Buf16=Array,Y.Buf32=Array,Y.assign(Y,y))},Y.setTyped(ae)})(Fe)),Fe}var $e={},Ce={},Ke={},u0;function P0(){if(u0)return Ke;u0=1;var Y=Je(),ae=4,ne=0,G=1,y=2;function J(h){for(var j=h.length;--j>=0;)h[j]=0}var t=0,r=1,i=2,b=3,v=258,d=29,l=256,s=l+1+d,x=30,_=19,u=2*s+1,c=15,o=16,n=7,w=256,g=16,p=17,E=18,A=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],R=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],D=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],B=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],P=512,M=new Array((s+2)*2);J(M);var Z=new Array(x*2);J(Z);var H=new Array(P);J(H);var X=new Array(v-b+1);J(X);var W=new Array(d);J(W);var C=new Array(x);J(C);function m(h,j,K,q,S){this.static_tree=h,this.extra_bits=j,this.extra_base=K,this.elems=q,this.max_length=S,this.has_stree=h&&h.length}var ie,T,F;function $(h,j){this.dyn_tree=h,this.max_code=0,this.stat_desc=j}function ve(h){return h<256?H[h]:H[256+(h>>>7)]}function fe(h,j){h.pending_buf[h.pending++]=j&255,h.pending_buf[h.pending++]=j>>>8&255}function le(h,j,K){h.bi_valid>o-K?(h.bi_buf|=j<<h.bi_valid&65535,fe(h,h.bi_buf),h.bi_buf=j>>o-h.bi_valid,h.bi_valid+=K-o):(h.bi_buf|=j<<h.bi_valid&65535,h.bi_valid+=K)}function he(h,j,K){le(h,K[j*2],K[j*2+1])}function de(h,j){var K=0;do K|=h&1,h>>>=1,K<<=1;while(--j>0);return K>>>1}function ge(h){h.bi_valid===16?(fe(h,h.bi_buf),h.bi_buf=0,h.bi_valid=0):h.bi_valid>=8&&(h.pending_buf[h.pending++]=h.bi_buf&255,h.bi_buf>>=8,h.bi_valid-=8)}function ze(h,j){var K=j.dyn_tree,q=j.max_code,S=j.stat_desc.static_tree,L=j.stat_desc.has_stree,a=j.stat_desc.extra_bits,I=j.stat_desc.extra_base,te=j.stat_desc.max_length,e,N,O,f,k,z,re=0;for(f=0;f<=c;f++)h.bl_count[f]=0;for(K[h.heap[h.heap_max]*2+1]=0,e=h.heap_max+1;e<u;e++)N=h.heap[e],f=K[K[N*2+1]*2+1]+1,f>te&&(f=te,re++),K[N*2+1]=f,!(N>q)&&(h.bl_count[f]++,k=0,N>=I&&(k=a[N-I]),z=K[N*2],h.opt_len+=z*(f+k),L&&(h.static_len+=z*(S[N*2+1]+k)));if(re!==0){do{for(f=te-1;h.bl_count[f]===0;)f--;h.bl_count[f]--,h.bl_count[f+1]+=2,h.bl_count[te]--,re-=2}while(re>0);for(f=te;f!==0;f--)for(N=h.bl_count[f];N!==0;)O=h.heap[--e],!(O>q)&&(K[O*2+1]!==f&&(h.opt_len+=(f-K[O*2+1])*K[O*2],K[O*2+1]=f),N--)}}function ke(h,j,K){var q=new Array(c+1),S=0,L,a;for(L=1;L<=c;L++)q[L]=S=S+K[L-1]<<1;for(a=0;a<=j;a++){var I=h[a*2+1];I!==0&&(h[a*2]=de(q[I]++,I))}}function ce(){var h,j,K,q,S,L=new Array(c+1);for(K=0,q=0;q<d-1;q++)for(W[q]=K,h=0;h<1<<A[q];h++)X[K++]=q;for(X[K-1]=q,S=0,q=0;q<16;q++)for(C[q]=S,h=0;h<1<<R[q];h++)H[S++]=q;for(S>>=7;q<x;q++)for(C[q]=S<<7,h=0;h<1<<R[q]-7;h++)H[256+S++]=q;for(j=0;j<=c;j++)L[j]=0;for(h=0;h<=143;)M[h*2+1]=8,h++,L[8]++;for(;h<=255;)M[h*2+1]=9,h++,L[9]++;for(;h<=279;)M[h*2+1]=7,h++,L[7]++;for(;h<=287;)M[h*2+1]=8,h++,L[8]++;for(ke(M,s+1,L),h=0;h<x;h++)Z[h*2+1]=5,Z[h*2]=de(h,5);ie=new m(M,A,l+1,s,c),T=new m(Z,R,0,x,c),F=new m(new Array(0),D,0,_,n)}function Se(h){var j;for(j=0;j<s;j++)h.dyn_ltree[j*2]=0;for(j=0;j<x;j++)h.dyn_dtree[j*2]=0;for(j=0;j<_;j++)h.bl_tree[j*2]=0;h.dyn_ltree[w*2]=1,h.opt_len=h.static_len=0,h.last_lit=h.matches=0}function me(h){h.bi_valid>8?fe(h,h.bi_buf):h.bi_valid>0&&(h.pending_buf[h.pending++]=h.bi_buf),h.bi_buf=0,h.bi_valid=0}function Ne(h,j,K,q){me(h),fe(h,K),fe(h,~K),Y.arraySet(h.pending_buf,h.window,j,K,h.pending),h.pending+=K}function oe(h,j,K,q){var S=j*2,L=K*2;return h[S]<h[L]||h[S]===h[L]&&q[j]<=q[K]}function U(h,j,K){for(var q=h.heap[K],S=K<<1;S<=h.heap_len&&(S<h.heap_len&&oe(j,h.heap[S+1],h.heap[S],h.depth)&&S++,!oe(j,q,h.heap[S],h.depth));)h.heap[K]=h.heap[S],K=S,S<<=1;h.heap[K]=q}function ee(h,j,K){var q,S,L=0,a,I;if(h.last_lit!==0)do q=h.pending_buf[h.d_buf+L*2]<<8|h.pending_buf[h.d_buf+L*2+1],S=h.pending_buf[h.l_buf+L],L++,q===0?he(h,S,j):(a=X[S],he(h,a+l+1,j),I=A[a],I!==0&&(S-=W[a],le(h,S,I)),q--,a=ve(q),he(h,a,K),I=R[a],I!==0&&(q-=C[a],le(h,q,I)));while(L<h.last_lit);he(h,w,j)}function _e(h,j){var K=j.dyn_tree,q=j.stat_desc.static_tree,S=j.stat_desc.has_stree,L=j.stat_desc.elems,a,I,te=-1,e;for(h.heap_len=0,h.heap_max=u,a=0;a<L;a++)K[a*2]!==0?(h.heap[++h.heap_len]=te=a,h.depth[a]=0):K[a*2+1]=0;for(;h.heap_len<2;)e=h.heap[++h.heap_len]=te<2?++te:0,K[e*2]=1,h.depth[e]=0,h.opt_len--,S&&(h.static_len-=q[e*2+1]);for(j.max_code=te,a=h.heap_len>>1;a>=1;a--)U(h,K,a);e=L;do a=h.heap[1],h.heap[1]=h.heap[h.heap_len--],U(h,K,1),I=h.heap[1],h.heap[--h.heap_max]=a,h.heap[--h.heap_max]=I,K[e*2]=K[a*2]+K[I*2],h.depth[e]=(h.depth[a]>=h.depth[I]?h.depth[a]:h.depth[I])+1,K[a*2+1]=K[I*2+1]=e,h.heap[1]=e++,U(h,K,1);while(h.heap_len>=2);h.heap[--h.heap_max]=h.heap[1],ze(h,j),ke(K,te,h.bl_count)}function we(h,j,K){var q,S=-1,L,a=j[1],I=0,te=7,e=4;for(a===0&&(te=138,e=3),j[(K+1)*2+1]=65535,q=0;q<=K;q++)L=a,a=j[(q+1)*2+1],!(++I<te&&L===a)&&(I<e?h.bl_tree[L*2]+=I:L!==0?(L!==S&&h.bl_tree[L*2]++,h.bl_tree[g*2]++):I<=10?h.bl_tree[p*2]++:h.bl_tree[E*2]++,I=0,S=L,a===0?(te=138,e=3):L===a?(te=6,e=3):(te=7,e=4))}function be(h,j,K){var q,S=-1,L,a=j[1],I=0,te=7,e=4;for(a===0&&(te=138,e=3),q=0;q<=K;q++)if(L=a,a=j[(q+1)*2+1],!(++I<te&&L===a)){if(I<e)do he(h,L,h.bl_tree);while(--I!==0);else L!==0?(L!==S&&(he(h,L,h.bl_tree),I--),he(h,g,h.bl_tree),le(h,I-3,2)):I<=10?(he(h,p,h.bl_tree),le(h,I-3,3)):(he(h,E,h.bl_tree),le(h,I-11,7));I=0,S=L,a===0?(te=138,e=3):L===a?(te=6,e=3):(te=7,e=4)}}function Ae(h){var j;for(we(h,h.dyn_ltree,h.l_desc.max_code),we(h,h.dyn_dtree,h.d_desc.max_code),_e(h,h.bl_desc),j=_-1;j>=3&&h.bl_tree[B[j]*2+1]===0;j--);return h.opt_len+=3*(j+1)+5+5+4,j}function We(h,j,K,q){var S;for(le(h,j-257,5),le(h,K-1,5),le(h,q-4,4),S=0;S<q;S++)le(h,h.bl_tree[B[S]*2+1],3);be(h,h.dyn_ltree,j-1),be(h,h.dyn_dtree,K-1)}function je(h){var j=4093624447,K;for(K=0;K<=31;K++,j>>>=1)if(j&1&&h.dyn_ltree[K*2]!==0)return ne;if(h.dyn_ltree[18]!==0||h.dyn_ltree[20]!==0||h.dyn_ltree[26]!==0)return G;for(K=32;K<l;K++)if(h.dyn_ltree[K*2]!==0)return G;return ne}var Me=!1;function Te(h){Me||(ce(),Me=!0),h.l_desc=new $(h.dyn_ltree,ie),h.d_desc=new $(h.dyn_dtree,T),h.bl_desc=new $(h.bl_tree,F),h.bi_buf=0,h.bi_valid=0,Se(h)}function Ie(h,j,K,q){le(h,(t<<1)+(q?1:0),3),Ne(h,j,K)}function De(h){le(h,r<<1,3),he(h,w,M),ge(h)}function Ze(h,j,K,q){var S,L,a=0;h.level>0?(h.strm.data_type===y&&(h.strm.data_type=je(h)),_e(h,h.l_desc),_e(h,h.d_desc),a=Ae(h),S=h.opt_len+3+7>>>3,L=h.static_len+3+7>>>3,L<=S&&(S=L)):S=L=K+5,K+4<=S&&j!==-1?Ie(h,j,K,q):h.strategy===ae||L===S?(le(h,(r<<1)+(q?1:0),3),ee(h,M,Z)):(le(h,(i<<1)+(q?1:0),3),We(h,h.l_desc.max_code+1,h.d_desc.max_code+1,a+1),ee(h,h.dyn_ltree,h.dyn_dtree)),Se(h),q&&me(h)}function Xe(h,j,K){return h.pending_buf[h.d_buf+h.last_lit*2]=j>>>8&255,h.pending_buf[h.d_buf+h.last_lit*2+1]=j&255,h.pending_buf[h.l_buf+h.last_lit]=K&255,h.last_lit++,j===0?h.dyn_ltree[K*2]++:(h.matches++,j--,h.dyn_ltree[(X[K]+l+1)*2]++,h.dyn_dtree[ve(j)*2]++),h.last_lit===h.lit_bufsize-1}return Ke._tr_init=Te,Ke._tr_stored_block=Ie,Ke._tr_flush_block=Ze,Ke._tr_tally=Xe,Ke._tr_align=De,Ke}var e0,v0;function z0(){if(v0)return e0;v0=1;function Y(ae,ne,G,y){for(var J=ae&65535|0,t=ae>>>16&65535|0,r=0;G!==0;){r=G>2e3?2e3:G,G-=r;do J=J+ne[y++]|0,t=t+J|0;while(--r);J%=65521,t%=65521}return J|t<<16|0}return e0=Y,e0}var r0,s0;function N0(){if(s0)return r0;s0=1;function Y(){for(var G,y=[],J=0;J<256;J++){G=J;for(var t=0;t<8;t++)G=G&1?3988292384^G>>>1:G>>>1;y[J]=G}return y}var ae=Y();function ne(G,y,J,t){var r=ae,i=t+J;G^=-1;for(var b=t;b<i;b++)G=G>>>8^r[(G^y[b])&255];return G^-1}return r0=ne,r0}var a0,c0;function o0(){return c0||(c0=1,a0={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}),a0}var w0;function G0(){if(w0)return Ce;w0=1;var Y=Je(),ae=P0(),ne=z0(),G=N0(),y=o0(),J=0,t=1,r=3,i=4,b=5,v=0,d=1,l=-2,s=-3,x=-5,_=-1,u=1,c=2,o=3,n=4,w=0,g=2,p=8,E=9,A=15,R=8,D=29,B=256,P=B+1+D,M=30,Z=19,H=2*P+1,X=15,W=3,C=258,m=C+W+1,ie=32,T=42,F=69,$=73,ve=91,fe=103,le=113,he=666,de=1,ge=2,ze=3,ke=4,ce=3;function Se(e,N){return e.msg=y[N],N}function me(e){return(e<<1)-(e>4?9:0)}function Ne(e){for(var N=e.length;--N>=0;)e[N]=0}function oe(e){var N=e.state,O=N.pending;O>e.avail_out&&(O=e.avail_out),O!==0&&(Y.arraySet(e.output,N.pending_buf,N.pending_out,O,e.next_out),e.next_out+=O,N.pending_out+=O,e.total_out+=O,e.avail_out-=O,N.pending-=O,N.pending===0&&(N.pending_out=0))}function U(e,N){ae._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,N),e.block_start=e.strstart,oe(e.strm)}function ee(e,N){e.pending_buf[e.pending++]=N}function _e(e,N){e.pending_buf[e.pending++]=N>>>8&255,e.pending_buf[e.pending++]=N&255}function we(e,N,O,f){var k=e.avail_in;return k>f&&(k=f),k===0?0:(e.avail_in-=k,Y.arraySet(N,e.input,e.next_in,k,O),e.state.wrap===1?e.adler=ne(e.adler,N,k,O):e.state.wrap===2&&(e.adler=G(e.adler,N,k,O)),e.next_in+=k,e.total_in+=k,k)}function be(e,N){var O=e.max_chain_length,f=e.strstart,k,z,re=e.prev_length,Q=e.nice_match,V=e.strstart>e.w_size-m?e.strstart-(e.w_size-m):0,ue=e.window,Ge=e.w_mask,pe=e.prev,se=e.strstart+C,Ee=ue[f+re-1],Be=ue[f+re];e.prev_length>=e.good_match&&(O>>=2),Q>e.lookahead&&(Q=e.lookahead);do if(k=N,!(ue[k+re]!==Be||ue[k+re-1]!==Ee||ue[k]!==ue[f]||ue[++k]!==ue[f+1])){f+=2,k++;do;while(ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&ue[++f]===ue[++k]&&f<se);if(z=C-(se-f),f=se-C,z>re){if(e.match_start=N,re=z,z>=Q)break;Ee=ue[f+re-1],Be=ue[f+re]}}while((N=pe[N&Ge])>V&&--O!==0);return re<=e.lookahead?re:e.lookahead}function Ae(e){var N=e.w_size,O,f,k,z,re;do{if(z=e.window_size-e.lookahead-e.strstart,e.strstart>=N+(N-m)){Y.arraySet(e.window,e.window,N,N,0),e.match_start-=N,e.strstart-=N,e.block_start-=N,f=e.hash_size,O=f;do k=e.head[--O],e.head[O]=k>=N?k-N:0;while(--f);f=N,O=f;do k=e.prev[--O],e.prev[O]=k>=N?k-N:0;while(--f);z+=N}if(e.strm.avail_in===0)break;if(f=we(e.strm,e.window,e.strstart+e.lookahead,z),e.lookahead+=f,e.lookahead+e.insert>=W)for(re=e.strstart-e.insert,e.ins_h=e.window[re],e.ins_h=(e.ins_h<<e.hash_shift^e.window[re+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[re+W-1])&e.hash_mask,e.prev[re&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=re,re++,e.insert--,!(e.lookahead+e.insert<W)););}while(e.lookahead<m&&e.strm.avail_in!==0)}function We(e,N){var O=65535;for(O>e.pending_buf_size-5&&(O=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Ae(e),e.lookahead===0&&N===J)return de;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var f=e.block_start+O;if((e.strstart===0||e.strstart>=f)&&(e.lookahead=e.strstart-f,e.strstart=f,U(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-m&&(U(e,!1),e.strm.avail_out===0))return de}return e.insert=0,N===i?(U(e,!0),e.strm.avail_out===0?ze:ke):(e.strstart>e.block_start&&(U(e,!1),e.strm.avail_out===0),de)}function je(e,N){for(var O,f;;){if(e.lookahead<m){if(Ae(e),e.lookahead<m&&N===J)return de;if(e.lookahead===0)break}if(O=0,e.lookahead>=W&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+W-1])&e.hash_mask,O=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),O!==0&&e.strstart-O<=e.w_size-m&&(e.match_length=be(e,O)),e.match_length>=W)if(f=ae._tr_tally(e,e.strstart-e.match_start,e.match_length-W),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=W){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+W-1])&e.hash_mask,O=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else f=ae._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(f&&(U(e,!1),e.strm.avail_out===0))return de}return e.insert=e.strstart<W-1?e.strstart:W-1,N===i?(U(e,!0),e.strm.avail_out===0?ze:ke):e.last_lit&&(U(e,!1),e.strm.avail_out===0)?de:ge}function Me(e,N){for(var O,f,k;;){if(e.lookahead<m){if(Ae(e),e.lookahead<m&&N===J)return de;if(e.lookahead===0)break}if(O=0,e.lookahead>=W&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+W-1])&e.hash_mask,O=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=W-1,O!==0&&e.prev_length<e.max_lazy_match&&e.strstart-O<=e.w_size-m&&(e.match_length=be(e,O),e.match_length<=5&&(e.strategy===u||e.match_length===W&&e.strstart-e.match_start>4096)&&(e.match_length=W-1)),e.prev_length>=W&&e.match_length<=e.prev_length){k=e.strstart+e.lookahead-W,f=ae._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-W),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=k&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+W-1])&e.hash_mask,O=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=W-1,e.strstart++,f&&(U(e,!1),e.strm.avail_out===0))return de}else if(e.match_available){if(f=ae._tr_tally(e,0,e.window[e.strstart-1]),f&&U(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return de}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(f=ae._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<W-1?e.strstart:W-1,N===i?(U(e,!0),e.strm.avail_out===0?ze:ke):e.last_lit&&(U(e,!1),e.strm.avail_out===0)?de:ge}function Te(e,N){for(var O,f,k,z,re=e.window;;){if(e.lookahead<=C){if(Ae(e),e.lookahead<=C&&N===J)return de;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=W&&e.strstart>0&&(k=e.strstart-1,f=re[k],f===re[++k]&&f===re[++k]&&f===re[++k])){z=e.strstart+C;do;while(f===re[++k]&&f===re[++k]&&f===re[++k]&&f===re[++k]&&f===re[++k]&&f===re[++k]&&f===re[++k]&&f===re[++k]&&k<z);e.match_length=C-(z-k),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=W?(O=ae._tr_tally(e,1,e.match_length-W),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(O=ae._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),O&&(U(e,!1),e.strm.avail_out===0))return de}return e.insert=0,N===i?(U(e,!0),e.strm.avail_out===0?ze:ke):e.last_lit&&(U(e,!1),e.strm.avail_out===0)?de:ge}function Ie(e,N){for(var O;;){if(e.lookahead===0&&(Ae(e),e.lookahead===0)){if(N===J)return de;break}if(e.match_length=0,O=ae._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,O&&(U(e,!1),e.strm.avail_out===0))return de}return e.insert=0,N===i?(U(e,!0),e.strm.avail_out===0?ze:ke):e.last_lit&&(U(e,!1),e.strm.avail_out===0)?de:ge}function De(e,N,O,f,k){this.good_length=e,this.max_lazy=N,this.nice_length=O,this.max_chain=f,this.func=k}var Ze;Ze=[new De(0,0,0,0,We),new De(4,4,8,4,je),new De(4,5,16,8,je),new De(4,6,32,32,je),new De(4,4,16,16,Me),new De(8,16,32,32,Me),new De(8,16,128,128,Me),new De(8,32,128,256,Me),new De(32,128,258,1024,Me),new De(32,258,258,4096,Me)];function Xe(e){e.window_size=2*e.w_size,Ne(e.head),e.max_lazy_match=Ze[e.level].max_lazy,e.good_match=Ze[e.level].good_length,e.nice_match=Ze[e.level].nice_length,e.max_chain_length=Ze[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=W-1,e.match_available=0,e.ins_h=0}function h(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=p,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Y.Buf16(H*2),this.dyn_dtree=new Y.Buf16((2*M+1)*2),this.bl_tree=new Y.Buf16((2*Z+1)*2),Ne(this.dyn_ltree),Ne(this.dyn_dtree),Ne(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Y.Buf16(X+1),this.heap=new Y.Buf16(2*P+1),Ne(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Y.Buf16(2*P+1),Ne(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function j(e){var N;return!e||!e.state?Se(e,l):(e.total_in=e.total_out=0,e.data_type=g,N=e.state,N.pending=0,N.pending_out=0,N.wrap<0&&(N.wrap=-N.wrap),N.status=N.wrap?T:le,e.adler=N.wrap===2?0:1,N.last_flush=J,ae._tr_init(N),v)}function K(e){var N=j(e);return N===v&&Xe(e.state),N}function q(e,N){return!e||!e.state||e.state.wrap!==2?l:(e.state.gzhead=N,v)}function S(e,N,O,f,k,z){if(!e)return l;var re=1;if(N===_&&(N=6),f<0?(re=0,f=-f):f>15&&(re=2,f-=16),k<1||k>E||O!==p||f<8||f>15||N<0||N>9||z<0||z>n)return Se(e,l);f===8&&(f=9);var Q=new h;return e.state=Q,Q.strm=e,Q.wrap=re,Q.gzhead=null,Q.w_bits=f,Q.w_size=1<<Q.w_bits,Q.w_mask=Q.w_size-1,Q.hash_bits=k+7,Q.hash_size=1<<Q.hash_bits,Q.hash_mask=Q.hash_size-1,Q.hash_shift=~~((Q.hash_bits+W-1)/W),Q.window=new Y.Buf8(Q.w_size*2),Q.head=new Y.Buf16(Q.hash_size),Q.prev=new Y.Buf16(Q.w_size),Q.lit_bufsize=1<<k+6,Q.pending_buf_size=Q.lit_bufsize*4,Q.pending_buf=new Y.Buf8(Q.pending_buf_size),Q.d_buf=1*Q.lit_bufsize,Q.l_buf=3*Q.lit_bufsize,Q.level=N,Q.strategy=z,Q.method=O,K(e)}function L(e,N){return S(e,N,p,A,R,w)}function a(e,N){var O,f,k,z;if(!e||!e.state||N>b||N<0)return e?Se(e,l):l;if(f=e.state,!e.output||!e.input&&e.avail_in!==0||f.status===he&&N!==i)return Se(e,e.avail_out===0?x:l);if(f.strm=e,O=f.last_flush,f.last_flush=N,f.status===T)if(f.wrap===2)e.adler=0,ee(f,31),ee(f,139),ee(f,8),f.gzhead?(ee(f,(f.gzhead.text?1:0)+(f.gzhead.hcrc?2:0)+(f.gzhead.extra?4:0)+(f.gzhead.name?8:0)+(f.gzhead.comment?16:0)),ee(f,f.gzhead.time&255),ee(f,f.gzhead.time>>8&255),ee(f,f.gzhead.time>>16&255),ee(f,f.gzhead.time>>24&255),ee(f,f.level===9?2:f.strategy>=c||f.level<2?4:0),ee(f,f.gzhead.os&255),f.gzhead.extra&&f.gzhead.extra.length&&(ee(f,f.gzhead.extra.length&255),ee(f,f.gzhead.extra.length>>8&255)),f.gzhead.hcrc&&(e.adler=G(e.adler,f.pending_buf,f.pending,0)),f.gzindex=0,f.status=F):(ee(f,0),ee(f,0),ee(f,0),ee(f,0),ee(f,0),ee(f,f.level===9?2:f.strategy>=c||f.level<2?4:0),ee(f,ce),f.status=le);else{var re=p+(f.w_bits-8<<4)<<8,Q=-1;f.strategy>=c||f.level<2?Q=0:f.level<6?Q=1:f.level===6?Q=2:Q=3,re|=Q<<6,f.strstart!==0&&(re|=ie),re+=31-re%31,f.status=le,_e(f,re),f.strstart!==0&&(_e(f,e.adler>>>16),_e(f,e.adler&65535)),e.adler=1}if(f.status===F)if(f.gzhead.extra){for(k=f.pending;f.gzindex<(f.gzhead.extra.length&65535)&&!(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>k&&(e.adler=G(e.adler,f.pending_buf,f.pending-k,k)),oe(e),k=f.pending,f.pending===f.pending_buf_size));)ee(f,f.gzhead.extra[f.gzindex]&255),f.gzindex++;f.gzhead.hcrc&&f.pending>k&&(e.adler=G(e.adler,f.pending_buf,f.pending-k,k)),f.gzindex===f.gzhead.extra.length&&(f.gzindex=0,f.status=$)}else f.status=$;if(f.status===$)if(f.gzhead.name){k=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>k&&(e.adler=G(e.adler,f.pending_buf,f.pending-k,k)),oe(e),k=f.pending,f.pending===f.pending_buf_size)){z=1;break}f.gzindex<f.gzhead.name.length?z=f.gzhead.name.charCodeAt(f.gzindex++)&255:z=0,ee(f,z)}while(z!==0);f.gzhead.hcrc&&f.pending>k&&(e.adler=G(e.adler,f.pending_buf,f.pending-k,k)),z===0&&(f.gzindex=0,f.status=ve)}else f.status=ve;if(f.status===ve)if(f.gzhead.comment){k=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>k&&(e.adler=G(e.adler,f.pending_buf,f.pending-k,k)),oe(e),k=f.pending,f.pending===f.pending_buf_size)){z=1;break}f.gzindex<f.gzhead.comment.length?z=f.gzhead.comment.charCodeAt(f.gzindex++)&255:z=0,ee(f,z)}while(z!==0);f.gzhead.hcrc&&f.pending>k&&(e.adler=G(e.adler,f.pending_buf,f.pending-k,k)),z===0&&(f.status=fe)}else f.status=fe;if(f.status===fe&&(f.gzhead.hcrc?(f.pending+2>f.pending_buf_size&&oe(e),f.pending+2<=f.pending_buf_size&&(ee(f,e.adler&255),ee(f,e.adler>>8&255),e.adler=0,f.status=le)):f.status=le),f.pending!==0){if(oe(e),e.avail_out===0)return f.last_flush=-1,v}else if(e.avail_in===0&&me(N)<=me(O)&&N!==i)return Se(e,x);if(f.status===he&&e.avail_in!==0)return Se(e,x);if(e.avail_in!==0||f.lookahead!==0||N!==J&&f.status!==he){var V=f.strategy===c?Ie(f,N):f.strategy===o?Te(f,N):Ze[f.level].func(f,N);if((V===ze||V===ke)&&(f.status=he),V===de||V===ze)return e.avail_out===0&&(f.last_flush=-1),v;if(V===ge&&(N===t?ae._tr_align(f):N!==b&&(ae._tr_stored_block(f,0,0,!1),N===r&&(Ne(f.head),f.lookahead===0&&(f.strstart=0,f.block_start=0,f.insert=0))),oe(e),e.avail_out===0))return f.last_flush=-1,v}return N!==i?v:f.wrap<=0?d:(f.wrap===2?(ee(f,e.adler&255),ee(f,e.adler>>8&255),ee(f,e.adler>>16&255),ee(f,e.adler>>24&255),ee(f,e.total_in&255),ee(f,e.total_in>>8&255),ee(f,e.total_in>>16&255),ee(f,e.total_in>>24&255)):(_e(f,e.adler>>>16),_e(f,e.adler&65535)),oe(e),f.wrap>0&&(f.wrap=-f.wrap),f.pending!==0?v:d)}function I(e){var N;return!e||!e.state?l:(N=e.state.status,N!==T&&N!==F&&N!==$&&N!==ve&&N!==fe&&N!==le&&N!==he?Se(e,l):(e.state=null,N===le?Se(e,s):v))}function te(e,N){var O=N.length,f,k,z,re,Q,V,ue,Ge;if(!e||!e.state||(f=e.state,re=f.wrap,re===2||re===1&&f.status!==T||f.lookahead))return l;for(re===1&&(e.adler=ne(e.adler,N,O,0)),f.wrap=0,O>=f.w_size&&(re===0&&(Ne(f.head),f.strstart=0,f.block_start=0,f.insert=0),Ge=new Y.Buf8(f.w_size),Y.arraySet(Ge,N,O-f.w_size,f.w_size,0),N=Ge,O=f.w_size),Q=e.avail_in,V=e.next_in,ue=e.input,e.avail_in=O,e.next_in=0,e.input=N,Ae(f);f.lookahead>=W;){k=f.strstart,z=f.lookahead-(W-1);do f.ins_h=(f.ins_h<<f.hash_shift^f.window[k+W-1])&f.hash_mask,f.prev[k&f.w_mask]=f.head[f.ins_h],f.head[f.ins_h]=k,k++;while(--z);f.strstart=k,f.lookahead=W-1,Ae(f)}return f.strstart+=f.lookahead,f.block_start=f.strstart,f.insert=f.lookahead,f.lookahead=0,f.match_length=f.prev_length=W-1,f.match_available=0,e.next_in=V,e.input=ue,e.avail_in=Q,f.wrap=re,v}return Ce.deflateInit=L,Ce.deflateInit2=S,Ce.deflateReset=K,Ce.deflateResetKeep=j,Ce.deflateSetHeader=q,Ce.deflate=a,Ce.deflateEnd=I,Ce.deflateSetDictionary=te,Ce.deflateInfo="pako deflate (from Nodeca project)",Ce}var Ye={},b0;function R0(){if(b0)return Ye;b0=1;var Y=Je(),ae=!0,ne=!0;try{String.fromCharCode.apply(null,[0])}catch{ae=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{ne=!1}for(var G=new Y.Buf8(256),y=0;y<256;y++)G[y]=y>=252?6:y>=248?5:y>=240?4:y>=224?3:y>=192?2:1;G[254]=G[254]=1,Ye.string2buf=function(t){var r,i,b,v,d,l=t.length,s=0;for(v=0;v<l;v++)i=t.charCodeAt(v),(i&64512)===55296&&v+1<l&&(b=t.charCodeAt(v+1),(b&64512)===56320&&(i=65536+(i-55296<<10)+(b-56320),v++)),s+=i<128?1:i<2048?2:i<65536?3:4;for(r=new Y.Buf8(s),d=0,v=0;d<s;v++)i=t.charCodeAt(v),(i&64512)===55296&&v+1<l&&(b=t.charCodeAt(v+1),(b&64512)===56320&&(i=65536+(i-55296<<10)+(b-56320),v++)),i<128?r[d++]=i:i<2048?(r[d++]=192|i>>>6,r[d++]=128|i&63):i<65536?(r[d++]=224|i>>>12,r[d++]=128|i>>>6&63,r[d++]=128|i&63):(r[d++]=240|i>>>18,r[d++]=128|i>>>12&63,r[d++]=128|i>>>6&63,r[d++]=128|i&63);return r};function J(t,r){if(r<65534&&(t.subarray&&ne||!t.subarray&&ae))return String.fromCharCode.apply(null,Y.shrinkBuf(t,r));for(var i="",b=0;b<r;b++)i+=String.fromCharCode(t[b]);return i}return Ye.buf2binstring=function(t){return J(t,t.length)},Ye.binstring2buf=function(t){for(var r=new Y.Buf8(t.length),i=0,b=r.length;i<b;i++)r[i]=t.charCodeAt(i);return r},Ye.buf2string=function(t,r){var i,b,v,d,l=r||t.length,s=new Array(l*2);for(b=0,i=0;i<l;){if(v=t[i++],v<128){s[b++]=v;continue}if(d=G[v],d>4){s[b++]=65533,i+=d-1;continue}for(v&=d===2?31:d===3?15:7;d>1&&i<l;)v=v<<6|t[i++]&63,d--;if(d>1){s[b++]=65533;continue}v<65536?s[b++]=v:(v-=65536,s[b++]=55296|v>>10&1023,s[b++]=56320|v&1023)}return J(s,b)},Ye.utf8border=function(t,r){var i;for(r=r||t.length,r>t.length&&(r=t.length),i=r-1;i>=0&&(t[i]&192)===128;)i--;return i<0||i===0?r:i+G[t[i]]>r?i:r},Ye}var i0,g0;function O0(){if(g0)return i0;g0=1;function Y(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}return i0=Y,i0}var p0;function H0(){if(p0)return $e;p0=1;var Y=G0(),ae=Je(),ne=R0(),G=o0(),y=O0(),J=Object.prototype.toString,t=0,r=4,i=0,b=1,v=2,d=-1,l=0,s=8;function x(o){if(!(this instanceof x))return new x(o);this.options=ae.assign({level:d,method:s,chunkSize:16384,windowBits:15,memLevel:8,strategy:l,to:""},o||{});var n=this.options;n.raw&&n.windowBits>0?n.windowBits=-n.windowBits:n.gzip&&n.windowBits>0&&n.windowBits<16&&(n.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new y,this.strm.avail_out=0;var w=Y.deflateInit2(this.strm,n.level,n.method,n.windowBits,n.memLevel,n.strategy);if(w!==i)throw new Error(G[w]);if(n.header&&Y.deflateSetHeader(this.strm,n.header),n.dictionary){var g;if(typeof n.dictionary=="string"?g=ne.string2buf(n.dictionary):J.call(n.dictionary)==="[object ArrayBuffer]"?g=new Uint8Array(n.dictionary):g=n.dictionary,w=Y.deflateSetDictionary(this.strm,g),w!==i)throw new Error(G[w]);this._dict_set=!0}}x.prototype.push=function(o,n){var w=this.strm,g=this.options.chunkSize,p,E;if(this.ended)return!1;E=n===~~n?n:n===!0?r:t,typeof o=="string"?w.input=ne.string2buf(o):J.call(o)==="[object ArrayBuffer]"?w.input=new Uint8Array(o):w.input=o,w.next_in=0,w.avail_in=w.input.length;do{if(w.avail_out===0&&(w.output=new ae.Buf8(g),w.next_out=0,w.avail_out=g),p=Y.deflate(w,E),p!==b&&p!==i)return this.onEnd(p),this.ended=!0,!1;(w.avail_out===0||w.avail_in===0&&(E===r||E===v))&&(this.options.to==="string"?this.onData(ne.buf2binstring(ae.shrinkBuf(w.output,w.next_out))):this.onData(ae.shrinkBuf(w.output,w.next_out)))}while((w.avail_in>0||w.avail_out===0)&&p!==b);return E===r?(p=Y.deflateEnd(this.strm),this.onEnd(p),this.ended=!0,p===i):(E===v&&(this.onEnd(i),w.avail_out=0),!0)},x.prototype.onData=function(o){this.chunks.push(o)},x.prototype.onEnd=function(o){o===i&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ae.flattenChunks(this.chunks)),this.chunks=[],this.err=o,this.msg=this.strm.msg};function _(o,n){var w=new x(n);if(w.push(o,!0),w.err)throw w.msg||G[w.err];return w.result}function u(o,n){return n=n||{},n.raw=!0,_(o,n)}function c(o,n){return n=n||{},n.gzip=!0,_(o,n)}return $e.Deflate=x,$e.deflate=_,$e.deflateRaw=u,$e.gzip=c,$e}var Qe={},Le={},t0,k0;function j0(){if(k0)return t0;k0=1;var Y=30,ae=12;return t0=function(G,y){var J,t,r,i,b,v,d,l,s,x,_,u,c,o,n,w,g,p,E,A,R,D,B,P,M;J=G.state,t=G.next_in,P=G.input,r=t+(G.avail_in-5),i=G.next_out,M=G.output,b=i-(y-G.avail_out),v=i+(G.avail_out-257),d=J.dmax,l=J.wsize,s=J.whave,x=J.wnext,_=J.window,u=J.hold,c=J.bits,o=J.lencode,n=J.distcode,w=(1<<J.lenbits)-1,g=(1<<J.distbits)-1;e:do{c<15&&(u+=P[t++]<<c,c+=8,u+=P[t++]<<c,c+=8),p=o[u&w];r:for(;;){if(E=p>>>24,u>>>=E,c-=E,E=p>>>16&255,E===0)M[i++]=p&65535;else if(E&16){A=p&65535,E&=15,E&&(c<E&&(u+=P[t++]<<c,c+=8),A+=u&(1<<E)-1,u>>>=E,c-=E),c<15&&(u+=P[t++]<<c,c+=8,u+=P[t++]<<c,c+=8),p=n[u&g];a:for(;;){if(E=p>>>24,u>>>=E,c-=E,E=p>>>16&255,E&16){if(R=p&65535,E&=15,c<E&&(u+=P[t++]<<c,c+=8,c<E&&(u+=P[t++]<<c,c+=8)),R+=u&(1<<E)-1,R>d){G.msg="invalid distance too far back",J.mode=Y;break e}if(u>>>=E,c-=E,E=i-b,R>E){if(E=R-E,E>s&&J.sane){G.msg="invalid distance too far back",J.mode=Y;break e}if(D=0,B=_,x===0){if(D+=l-E,E<A){A-=E;do M[i++]=_[D++];while(--E);D=i-R,B=M}}else if(x<E){if(D+=l+x-E,E-=x,E<A){A-=E;do M[i++]=_[D++];while(--E);if(D=0,x<A){E=x,A-=E;do M[i++]=_[D++];while(--E);D=i-R,B=M}}}else if(D+=x-E,E<A){A-=E;do M[i++]=_[D++];while(--E);D=i-R,B=M}for(;A>2;)M[i++]=B[D++],M[i++]=B[D++],M[i++]=B[D++],A-=3;A&&(M[i++]=B[D++],A>1&&(M[i++]=B[D++]))}else{D=i-R;do M[i++]=M[D++],M[i++]=M[D++],M[i++]=M[D++],A-=3;while(A>2);A&&(M[i++]=M[D++],A>1&&(M[i++]=M[D++]))}}else if((E&64)===0){p=n[(p&65535)+(u&(1<<E)-1)];continue a}else{G.msg="invalid distance code",J.mode=Y;break e}break}}else if((E&64)===0){p=o[(p&65535)+(u&(1<<E)-1)];continue r}else if(E&32){J.mode=ae;break e}else{G.msg="invalid literal/length code",J.mode=Y;break e}break}}while(t<r&&i<v);A=c>>3,t-=A,c-=A<<3,u&=(1<<c)-1,G.next_in=t,G.next_out=i,G.avail_in=t<r?5+(r-t):5-(t-r),G.avail_out=i<v?257+(v-i):257-(i-v),J.hold=u,J.bits=c},t0}var n0,x0;function I0(){if(x0)return n0;x0=1;var Y=Je(),ae=15,ne=852,G=592,y=0,J=1,t=2,r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],i=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],b=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],v=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];return n0=function(l,s,x,_,u,c,o,n){var w=n.bits,g=0,p=0,E=0,A=0,R=0,D=0,B=0,P=0,M=0,Z=0,H,X,W,C,m,ie=null,T=0,F,$=new Y.Buf16(ae+1),ve=new Y.Buf16(ae+1),fe=null,le=0,he,de,ge;for(g=0;g<=ae;g++)$[g]=0;for(p=0;p<_;p++)$[s[x+p]]++;for(R=w,A=ae;A>=1&&$[A]===0;A--);if(R>A&&(R=A),A===0)return u[c++]=1<<24|64<<16|0,u[c++]=1<<24|64<<16|0,n.bits=1,0;for(E=1;E<A&&$[E]===0;E++);for(R<E&&(R=E),P=1,g=1;g<=ae;g++)if(P<<=1,P-=$[g],P<0)return-1;if(P>0&&(l===y||A!==1))return-1;for(ve[1]=0,g=1;g<ae;g++)ve[g+1]=ve[g]+$[g];for(p=0;p<_;p++)s[x+p]!==0&&(o[ve[s[x+p]]++]=p);if(l===y?(ie=fe=o,F=19):l===J?(ie=r,T-=257,fe=i,le-=257,F=256):(ie=b,fe=v,F=-1),Z=0,p=0,g=E,m=c,D=R,B=0,W=-1,M=1<<R,C=M-1,l===J&&M>ne||l===t&&M>G)return 1;for(;;){he=g-B,o[p]<F?(de=0,ge=o[p]):o[p]>F?(de=fe[le+o[p]],ge=ie[T+o[p]]):(de=96,ge=0),H=1<<g-B,X=1<<D,E=X;do X-=H,u[m+(Z>>B)+X]=he<<24|de<<16|ge|0;while(X!==0);for(H=1<<g-1;Z&H;)H>>=1;if(H!==0?(Z&=H-1,Z+=H):Z=0,p++,--$[g]===0){if(g===A)break;g=s[x+o[p]]}if(g>R&&(Z&C)!==W){for(B===0&&(B=R),m+=E,D=g-B,P=1<<D;D+B<A&&(P-=$[D+B],!(P<=0));)D++,P<<=1;if(M+=1<<D,l===J&&M>ne||l===t&&M>G)return 1;W=Z&C,u[W]=R<<24|D<<16|m-c|0}}return Z!==0&&(u[m+Z]=g-B<<24|64<<16|0),n.bits=R,0},n0}var E0;function J0(){if(E0)return Le;E0=1;var Y=Je(),ae=z0(),ne=N0(),G=j0(),y=I0(),J=0,t=1,r=2,i=4,b=5,v=6,d=0,l=1,s=2,x=-2,_=-3,u=-4,c=-5,o=8,n=1,w=2,g=3,p=4,E=5,A=6,R=7,D=8,B=9,P=10,M=11,Z=12,H=13,X=14,W=15,C=16,m=17,ie=18,T=19,F=20,$=21,ve=22,fe=23,le=24,he=25,de=26,ge=27,ze=28,ke=29,ce=30,Se=31,me=32,Ne=852,oe=592,U=15,ee=U;function _e(S){return(S>>>24&255)+(S>>>8&65280)+((S&65280)<<8)+((S&255)<<24)}function we(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Y.Buf16(320),this.work=new Y.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function be(S){var L;return!S||!S.state?x:(L=S.state,S.total_in=S.total_out=L.total=0,S.msg="",L.wrap&&(S.adler=L.wrap&1),L.mode=n,L.last=0,L.havedict=0,L.dmax=32768,L.head=null,L.hold=0,L.bits=0,L.lencode=L.lendyn=new Y.Buf32(Ne),L.distcode=L.distdyn=new Y.Buf32(oe),L.sane=1,L.back=-1,d)}function Ae(S){var L;return!S||!S.state?x:(L=S.state,L.wsize=0,L.whave=0,L.wnext=0,be(S))}function We(S,L){var a,I;return!S||!S.state||(I=S.state,L<0?(a=0,L=-L):(a=(L>>4)+1,L<48&&(L&=15)),L&&(L<8||L>15))?x:(I.window!==null&&I.wbits!==L&&(I.window=null),I.wrap=a,I.wbits=L,Ae(S))}function je(S,L){var a,I;return S?(I=new we,S.state=I,I.window=null,a=We(S,L),a!==d&&(S.state=null),a):x}function Me(S){return je(S,ee)}var Te=!0,Ie,De;function Ze(S){if(Te){var L;for(Ie=new Y.Buf32(512),De=new Y.Buf32(32),L=0;L<144;)S.lens[L++]=8;for(;L<256;)S.lens[L++]=9;for(;L<280;)S.lens[L++]=7;for(;L<288;)S.lens[L++]=8;for(y(t,S.lens,0,288,Ie,0,S.work,{bits:9}),L=0;L<32;)S.lens[L++]=5;y(r,S.lens,0,32,De,0,S.work,{bits:5}),Te=!1}S.lencode=Ie,S.lenbits=9,S.distcode=De,S.distbits=5}function Xe(S,L,a,I){var te,e=S.state;return e.window===null&&(e.wsize=1<<e.wbits,e.wnext=0,e.whave=0,e.window=new Y.Buf8(e.wsize)),I>=e.wsize?(Y.arraySet(e.window,L,a-e.wsize,e.wsize,0),e.wnext=0,e.whave=e.wsize):(te=e.wsize-e.wnext,te>I&&(te=I),Y.arraySet(e.window,L,a-I,te,e.wnext),I-=te,I?(Y.arraySet(e.window,L,a-I,I,0),e.wnext=I,e.whave=e.wsize):(e.wnext+=te,e.wnext===e.wsize&&(e.wnext=0),e.whave<e.wsize&&(e.whave+=te))),0}function h(S,L){var a,I,te,e,N,O,f,k,z,re,Q,V,ue,Ge,pe=0,se,Ee,Be,Re,Ue,Ve,xe,Oe,ye=new Y.Buf8(4),He,Pe,_0=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!S||!S.state||!S.output||!S.input&&S.avail_in!==0)return x;a=S.state,a.mode===Z&&(a.mode=H),N=S.next_out,te=S.output,f=S.avail_out,e=S.next_in,I=S.input,O=S.avail_in,k=a.hold,z=a.bits,re=O,Q=f,Oe=d;e:for(;;)switch(a.mode){case n:if(a.wrap===0){a.mode=H;break}for(;z<16;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(a.wrap&2&&k===35615){a.check=0,ye[0]=k&255,ye[1]=k>>>8&255,a.check=ne(a.check,ye,2,0),k=0,z=0,a.mode=w;break}if(a.flags=0,a.head&&(a.head.done=!1),!(a.wrap&1)||(((k&255)<<8)+(k>>8))%31){S.msg="incorrect header check",a.mode=ce;break}if((k&15)!==o){S.msg="unknown compression method",a.mode=ce;break}if(k>>>=4,z-=4,xe=(k&15)+8,a.wbits===0)a.wbits=xe;else if(xe>a.wbits){S.msg="invalid window size",a.mode=ce;break}a.dmax=1<<xe,S.adler=a.check=1,a.mode=k&512?P:Z,k=0,z=0;break;case w:for(;z<16;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(a.flags=k,(a.flags&255)!==o){S.msg="unknown compression method",a.mode=ce;break}if(a.flags&57344){S.msg="unknown header flags set",a.mode=ce;break}a.head&&(a.head.text=k>>8&1),a.flags&512&&(ye[0]=k&255,ye[1]=k>>>8&255,a.check=ne(a.check,ye,2,0)),k=0,z=0,a.mode=g;case g:for(;z<32;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}a.head&&(a.head.time=k),a.flags&512&&(ye[0]=k&255,ye[1]=k>>>8&255,ye[2]=k>>>16&255,ye[3]=k>>>24&255,a.check=ne(a.check,ye,4,0)),k=0,z=0,a.mode=p;case p:for(;z<16;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}a.head&&(a.head.xflags=k&255,a.head.os=k>>8),a.flags&512&&(ye[0]=k&255,ye[1]=k>>>8&255,a.check=ne(a.check,ye,2,0)),k=0,z=0,a.mode=E;case E:if(a.flags&1024){for(;z<16;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}a.length=k,a.head&&(a.head.extra_len=k),a.flags&512&&(ye[0]=k&255,ye[1]=k>>>8&255,a.check=ne(a.check,ye,2,0)),k=0,z=0}else a.head&&(a.head.extra=null);a.mode=A;case A:if(a.flags&1024&&(V=a.length,V>O&&(V=O),V&&(a.head&&(xe=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),Y.arraySet(a.head.extra,I,e,V,xe)),a.flags&512&&(a.check=ne(a.check,I,V,e)),O-=V,e+=V,a.length-=V),a.length))break e;a.length=0,a.mode=R;case R:if(a.flags&2048){if(O===0)break e;V=0;do xe=I[e+V++],a.head&&xe&&a.length<65536&&(a.head.name+=String.fromCharCode(xe));while(xe&&V<O);if(a.flags&512&&(a.check=ne(a.check,I,V,e)),O-=V,e+=V,xe)break e}else a.head&&(a.head.name=null);a.length=0,a.mode=D;case D:if(a.flags&4096){if(O===0)break e;V=0;do xe=I[e+V++],a.head&&xe&&a.length<65536&&(a.head.comment+=String.fromCharCode(xe));while(xe&&V<O);if(a.flags&512&&(a.check=ne(a.check,I,V,e)),O-=V,e+=V,xe)break e}else a.head&&(a.head.comment=null);a.mode=B;case B:if(a.flags&512){for(;z<16;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(k!==(a.check&65535)){S.msg="header crc mismatch",a.mode=ce;break}k=0,z=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),S.adler=a.check=0,a.mode=Z;break;case P:for(;z<32;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}S.adler=a.check=_e(k),k=0,z=0,a.mode=M;case M:if(a.havedict===0)return S.next_out=N,S.avail_out=f,S.next_in=e,S.avail_in=O,a.hold=k,a.bits=z,s;S.adler=a.check=1,a.mode=Z;case Z:if(L===b||L===v)break e;case H:if(a.last){k>>>=z&7,z-=z&7,a.mode=ge;break}for(;z<3;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}switch(a.last=k&1,k>>>=1,z-=1,k&3){case 0:a.mode=X;break;case 1:if(Ze(a),a.mode=F,L===v){k>>>=2,z-=2;break e}break;case 2:a.mode=m;break;case 3:S.msg="invalid block type",a.mode=ce}k>>>=2,z-=2;break;case X:for(k>>>=z&7,z-=z&7;z<32;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if((k&65535)!==(k>>>16^65535)){S.msg="invalid stored block lengths",a.mode=ce;break}if(a.length=k&65535,k=0,z=0,a.mode=W,L===v)break e;case W:a.mode=C;case C:if(V=a.length,V){if(V>O&&(V=O),V>f&&(V=f),V===0)break e;Y.arraySet(te,I,e,V,N),O-=V,e+=V,f-=V,N+=V,a.length-=V;break}a.mode=Z;break;case m:for(;z<14;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(a.nlen=(k&31)+257,k>>>=5,z-=5,a.ndist=(k&31)+1,k>>>=5,z-=5,a.ncode=(k&15)+4,k>>>=4,z-=4,a.nlen>286||a.ndist>30){S.msg="too many length or distance symbols",a.mode=ce;break}a.have=0,a.mode=ie;case ie:for(;a.have<a.ncode;){for(;z<3;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}a.lens[_0[a.have++]]=k&7,k>>>=3,z-=3}for(;a.have<19;)a.lens[_0[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,He={bits:a.lenbits},Oe=y(J,a.lens,0,19,a.lencode,0,a.work,He),a.lenbits=He.bits,Oe){S.msg="invalid code lengths set",a.mode=ce;break}a.have=0,a.mode=T;case T:for(;a.have<a.nlen+a.ndist;){for(;pe=a.lencode[k&(1<<a.lenbits)-1],se=pe>>>24,Ee=pe>>>16&255,Be=pe&65535,!(se<=z);){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(Be<16)k>>>=se,z-=se,a.lens[a.have++]=Be;else{if(Be===16){for(Pe=se+2;z<Pe;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(k>>>=se,z-=se,a.have===0){S.msg="invalid bit length repeat",a.mode=ce;break}xe=a.lens[a.have-1],V=3+(k&3),k>>>=2,z-=2}else if(Be===17){for(Pe=se+3;z<Pe;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}k>>>=se,z-=se,xe=0,V=3+(k&7),k>>>=3,z-=3}else{for(Pe=se+7;z<Pe;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}k>>>=se,z-=se,xe=0,V=11+(k&127),k>>>=7,z-=7}if(a.have+V>a.nlen+a.ndist){S.msg="invalid bit length repeat",a.mode=ce;break}for(;V--;)a.lens[a.have++]=xe}}if(a.mode===ce)break;if(a.lens[256]===0){S.msg="invalid code -- missing end-of-block",a.mode=ce;break}if(a.lenbits=9,He={bits:a.lenbits},Oe=y(t,a.lens,0,a.nlen,a.lencode,0,a.work,He),a.lenbits=He.bits,Oe){S.msg="invalid literal/lengths set",a.mode=ce;break}if(a.distbits=6,a.distcode=a.distdyn,He={bits:a.distbits},Oe=y(r,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,He),a.distbits=He.bits,Oe){S.msg="invalid distances set",a.mode=ce;break}if(a.mode=F,L===v)break e;case F:a.mode=$;case $:if(O>=6&&f>=258){S.next_out=N,S.avail_out=f,S.next_in=e,S.avail_in=O,a.hold=k,a.bits=z,G(S,Q),N=S.next_out,te=S.output,f=S.avail_out,e=S.next_in,I=S.input,O=S.avail_in,k=a.hold,z=a.bits,a.mode===Z&&(a.back=-1);break}for(a.back=0;pe=a.lencode[k&(1<<a.lenbits)-1],se=pe>>>24,Ee=pe>>>16&255,Be=pe&65535,!(se<=z);){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(Ee&&(Ee&240)===0){for(Re=se,Ue=Ee,Ve=Be;pe=a.lencode[Ve+((k&(1<<Re+Ue)-1)>>Re)],se=pe>>>24,Ee=pe>>>16&255,Be=pe&65535,!(Re+se<=z);){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}k>>>=Re,z-=Re,a.back+=Re}if(k>>>=se,z-=se,a.back+=se,a.length=Be,Ee===0){a.mode=de;break}if(Ee&32){a.back=-1,a.mode=Z;break}if(Ee&64){S.msg="invalid literal/length code",a.mode=ce;break}a.extra=Ee&15,a.mode=ve;case ve:if(a.extra){for(Pe=a.extra;z<Pe;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}a.length+=k&(1<<a.extra)-1,k>>>=a.extra,z-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=fe;case fe:for(;pe=a.distcode[k&(1<<a.distbits)-1],se=pe>>>24,Ee=pe>>>16&255,Be=pe&65535,!(se<=z);){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if((Ee&240)===0){for(Re=se,Ue=Ee,Ve=Be;pe=a.distcode[Ve+((k&(1<<Re+Ue)-1)>>Re)],se=pe>>>24,Ee=pe>>>16&255,Be=pe&65535,!(Re+se<=z);){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}k>>>=Re,z-=Re,a.back+=Re}if(k>>>=se,z-=se,a.back+=se,Ee&64){S.msg="invalid distance code",a.mode=ce;break}a.offset=Be,a.extra=Ee&15,a.mode=le;case le:if(a.extra){for(Pe=a.extra;z<Pe;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}a.offset+=k&(1<<a.extra)-1,k>>>=a.extra,z-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){S.msg="invalid distance too far back",a.mode=ce;break}a.mode=he;case he:if(f===0)break e;if(V=Q-f,a.offset>V){if(V=a.offset-V,V>a.whave&&a.sane){S.msg="invalid distance too far back",a.mode=ce;break}V>a.wnext?(V-=a.wnext,ue=a.wsize-V):ue=a.wnext-V,V>a.length&&(V=a.length),Ge=a.window}else Ge=te,ue=N-a.offset,V=a.length;V>f&&(V=f),f-=V,a.length-=V;do te[N++]=Ge[ue++];while(--V);a.length===0&&(a.mode=$);break;case de:if(f===0)break e;te[N++]=a.length,f--,a.mode=$;break;case ge:if(a.wrap){for(;z<32;){if(O===0)break e;O--,k|=I[e++]<<z,z+=8}if(Q-=f,S.total_out+=Q,a.total+=Q,Q&&(S.adler=a.check=a.flags?ne(a.check,te,Q,N-Q):ae(a.check,te,Q,N-Q)),Q=f,(a.flags?k:_e(k))!==a.check){S.msg="incorrect data check",a.mode=ce;break}k=0,z=0}a.mode=ze;case ze:if(a.wrap&&a.flags){for(;z<32;){if(O===0)break e;O--,k+=I[e++]<<z,z+=8}if(k!==(a.total&4294967295)){S.msg="incorrect length check",a.mode=ce;break}k=0,z=0}a.mode=ke;case ke:Oe=l;break e;case ce:Oe=_;break e;case Se:return u;case me:default:return x}return S.next_out=N,S.avail_out=f,S.next_in=e,S.avail_in=O,a.hold=k,a.bits=z,(a.wsize||Q!==S.avail_out&&a.mode<ce&&(a.mode<ge||L!==i))&&Xe(S,S.output,S.next_out,Q-S.avail_out),re-=S.avail_in,Q-=S.avail_out,S.total_in+=re,S.total_out+=Q,a.total+=Q,a.wrap&&Q&&(S.adler=a.check=a.flags?ne(a.check,te,Q,S.next_out-Q):ae(a.check,te,Q,S.next_out-Q)),S.data_type=a.bits+(a.last?64:0)+(a.mode===Z?128:0)+(a.mode===F||a.mode===W?256:0),(re===0&&Q===0||L===i)&&Oe===d&&(Oe=c),Oe}function j(S){if(!S||!S.state)return x;var L=S.state;return L.window&&(L.window=null),S.state=null,d}function K(S,L){var a;return!S||!S.state||(a=S.state,(a.wrap&2)===0)?x:(a.head=L,L.done=!1,d)}function q(S,L){var a=L.length,I,te,e;return!S||!S.state||(I=S.state,I.wrap!==0&&I.mode!==M)?x:I.mode===M&&(te=1,te=ae(te,L,a,0),te!==I.check)?_:(e=Xe(S,L,a,a),e?(I.mode=Se,u):(I.havedict=1,d))}return Le.inflateReset=Ae,Le.inflateReset2=We,Le.inflateResetKeep=be,Le.inflateInit=Me,Le.inflateInit2=je,Le.inflate=h,Le.inflateEnd=j,Le.inflateGetHeader=K,Le.inflateSetDictionary=q,Le.inflateInfo="pako inflate (from Nodeca project)",Le}var f0,S0;function L0(){return S0||(S0=1,f0={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}),f0}var l0,y0;function K0(){if(y0)return l0;y0=1;function Y(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}return l0=Y,l0}var A0;function Y0(){if(A0)return Qe;A0=1;var Y=J0(),ae=Je(),ne=R0(),G=L0(),y=o0(),J=O0(),t=K0(),r=Object.prototype.toString;function i(d){if(!(this instanceof i))return new i(d);this.options=ae.assign({chunkSize:16384,windowBits:0,to:""},d||{});var l=this.options;l.raw&&l.windowBits>=0&&l.windowBits<16&&(l.windowBits=-l.windowBits,l.windowBits===0&&(l.windowBits=-15)),l.windowBits>=0&&l.windowBits<16&&!(d&&d.windowBits)&&(l.windowBits+=32),l.windowBits>15&&l.windowBits<48&&(l.windowBits&15)===0&&(l.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new J,this.strm.avail_out=0;var s=Y.inflateInit2(this.strm,l.windowBits);if(s!==G.Z_OK)throw new Error(y[s]);if(this.header=new t,Y.inflateGetHeader(this.strm,this.header),l.dictionary&&(typeof l.dictionary=="string"?l.dictionary=ne.string2buf(l.dictionary):r.call(l.dictionary)==="[object ArrayBuffer]"&&(l.dictionary=new Uint8Array(l.dictionary)),l.raw&&(s=Y.inflateSetDictionary(this.strm,l.dictionary),s!==G.Z_OK)))throw new Error(y[s])}i.prototype.push=function(d,l){var s=this.strm,x=this.options.chunkSize,_=this.options.dictionary,u,c,o,n,w,g=!1;if(this.ended)return!1;c=l===~~l?l:l===!0?G.Z_FINISH:G.Z_NO_FLUSH,typeof d=="string"?s.input=ne.binstring2buf(d):r.call(d)==="[object ArrayBuffer]"?s.input=new Uint8Array(d):s.input=d,s.next_in=0,s.avail_in=s.input.length;do{if(s.avail_out===0&&(s.output=new ae.Buf8(x),s.next_out=0,s.avail_out=x),u=Y.inflate(s,G.Z_NO_FLUSH),u===G.Z_NEED_DICT&&_&&(u=Y.inflateSetDictionary(this.strm,_)),u===G.Z_BUF_ERROR&&g===!0&&(u=G.Z_OK,g=!1),u!==G.Z_STREAM_END&&u!==G.Z_OK)return this.onEnd(u),this.ended=!0,!1;s.next_out&&(s.avail_out===0||u===G.Z_STREAM_END||s.avail_in===0&&(c===G.Z_FINISH||c===G.Z_SYNC_FLUSH))&&(this.options.to==="string"?(o=ne.utf8border(s.output,s.next_out),n=s.next_out-o,w=ne.buf2string(s.output,o),s.next_out=n,s.avail_out=x-n,n&&ae.arraySet(s.output,s.output,o,n,0),this.onData(w)):this.onData(ae.shrinkBuf(s.output,s.next_out))),s.avail_in===0&&s.avail_out===0&&(g=!0)}while((s.avail_in>0||s.avail_out===0)&&u!==G.Z_STREAM_END);return u===G.Z_STREAM_END&&(c=G.Z_FINISH),c===G.Z_FINISH?(u=Y.inflateEnd(this.strm),this.onEnd(u),this.ended=!0,u===G.Z_OK):(c===G.Z_SYNC_FLUSH&&(this.onEnd(G.Z_OK),s.avail_out=0),!0)},i.prototype.onData=function(d){this.chunks.push(d)},i.prototype.onEnd=function(d){d===G.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ae.flattenChunks(this.chunks)),this.chunks=[],this.err=d,this.msg=this.strm.msg};function b(d,l){var s=new i(l);if(s.push(d,!0),s.err)throw s.msg||y[s.err];return s.result}function v(d,l){return l=l||{},l.raw=!0,b(d,l)}return Qe.Inflate=i,Qe.inflate=b,Qe.inflateRaw=v,Qe.ungzip=b,Qe}var h0,D0;function W0(){if(D0)return h0;D0=1;var Y=Je().assign,ae=H0(),ne=Y0(),G=L0(),y={};return Y(y,ae,ne,G),h0=y,h0}var B0;function T0(){return B0||(B0=1,(function(Y){(function(){var ae={};Y.exports=ae;var ne;typeof m0=="function"?ne=W0():ne=self.pako;function G(){typeof process>"u"&&console.log.apply(console,arguments)}(function(y,J){(function(){var t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(b){return typeof b}:function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},r=(function(){function b(v){this.message="JPEG error: "+v}return b.prototype=Error(),b.prototype.name="JpegError",b.constructor=b})(),i=(function(){function b(v,d){this.message=v,this.g=d}return b.prototype=Error(),b.prototype.name="DNLMarkerError",b.constructor=b})();(function(){function b(){this.M=null,this.B=-1}function v(_,u){for(var c=0,o=[],n,w,g=16;0<g&&!_[g-1];)g--;o.push({children:[],index:0});var p=o[0],E;for(n=0;n<g;n++){for(w=0;w<_[n];w++){for(p=o.pop(),p.children[p.index]=u[c];0<p.index;)p=o.pop();for(p.index++,o.push(p);o.length<=n;)o.push(E={children:[],index:0}),p.children[p.index]=E.children,p=E;c++}n+1<g&&(o.push(E={children:[],index:0}),p.children[p.index]=E.children,p=E)}return o[0].children}function d(_,u,c,o,n,w,g,p,E){function A(){if(0<T)return T--,ie>>T&1;if(ie=_[u++],ie===255){var U=_[u++];if(U){if(U===220&&W){u+=2;var ee=_[u++]<<8|_[u++];if(0<ee&&ee!==c.g)throw new i("Found DNL marker (0xFFDC) while parsing scan data",ee)}throw new r("unexpected marker "+(ie<<8|U).toString(16))}}return T=7,ie>>>7}function R(U){for(;;){if(U=U[A()],typeof U=="number")return U;if((typeof U>"u"?"undefined":t(U))!=="object")throw new r("invalid huffman sequence")}}function D(U){for(var ee=0;0<U;)ee=ee<<1|A(),U--;return ee}function B(U){if(U===1)return A()===1?1:-1;var ee=D(U);return ee>=1<<U-1?ee:ee+(-1<<U)+1}function P(U,ee){var _e=R(U.D);for(_e=_e===0?0:B(_e),U.a[ee]=U.m+=_e,_e=1;64>_e;){var we=R(U.o),be=we&15;if(we>>=4,be===0){if(15>we)break;_e+=16}else _e+=we,U.a[ee+x[_e]]=B(be),_e++}}function M(U,ee){var _e=R(U.D);_e=_e===0?0:B(_e)<<E,U.a[ee]=U.m+=_e}function Z(U,ee){U.a[ee]|=A()<<E}function H(U,ee){if(0<F)F--;else for(var _e=w;_e<=g;){var we=R(U.o),be=we&15;if(we>>=4,be===0){if(15>we){F=D(we)+(1<<we)-1;break}_e+=16}else _e+=we,U.a[ee+x[_e]]=B(be)*(1<<E),_e++}}function X(U,ee){for(var _e=w,we=0,be;_e<=g;){be=ee+x[_e];var Ae=0>U.a[be]?-1:1;switch($){case 0:if(we=R(U.o),be=we&15,we>>=4,be===0)15>we?(F=D(we)+(1<<we),$=4):(we=16,$=1);else{if(be!==1)throw new r("invalid ACn encoding");ve=B(be),$=we?2:3}continue;case 1:case 2:U.a[be]?U.a[be]+=Ae*(A()<<E):(we--,we===0&&($=$===2?3:0));break;case 3:U.a[be]?U.a[be]+=Ae*(A()<<E):(U.a[be]=ve<<E,$=0);break;case 4:U.a[be]&&(U.a[be]+=Ae*(A()<<E))}_e++}$===4&&(F--,F===0&&($=0))}for(var W=9<arguments.length&&arguments[9]!==void 0?arguments[9]:!1,C=c.P,m=u,ie=0,T=0,F=0,$=0,ve,fe=o.length,le,he,de,ge,ze=c.S?w===0?p===0?M:Z:p===0?H:X:P,ke=0,ce=fe===1?o[0].c*o[0].l:C*c.O,Se,me;ke<ce;){var Ne=n?Math.min(ce-ke,n):ce;for(le=0;le<fe;le++)o[le].m=0;if(F=0,fe===1){var oe=o[0];for(ge=0;ge<Ne;ge++)ze(oe,64*((oe.c+1)*(ke/oe.c|0)+ke%oe.c)),ke++}else for(ge=0;ge<Ne;ge++){for(le=0;le<fe;le++)for(oe=o[le],Se=oe.h,me=oe.j,he=0;he<me;he++)for(de=0;de<Se;de++)ze(oe,64*((oe.c+1)*((ke/C|0)*oe.j+he)+(ke%C*oe.h+de)));ke++}if(T=0,(oe=s(_,u))&&oe.f&&((0,_util.warn)("decodeScan - unexpected MCU data, current marker is: "+oe.f),u=oe.offset),oe=oe&&oe.F,!oe||65280>=oe)throw new r("marker was not found");if(65488<=oe&&65495>=oe)u+=2;else break}return(oe=s(_,u))&&oe.f&&((0,_util.warn)("decodeScan - unexpected Scan data, current marker is: "+oe.f),u=oe.offset),u-m}function l(_,u){for(var c=u.c,o=u.l,n=new Int16Array(64),w=0;w<o;w++)for(var g=0;g<c;g++){var p=64*((u.c+1)*w+g),E=n,A=u.G,R=u.a;if(!A)throw new r("missing required Quantization Table.");for(var D=0;64>D;D+=8){var B=R[p+D],P=R[p+D+1],M=R[p+D+2],Z=R[p+D+3],H=R[p+D+4],X=R[p+D+5],W=R[p+D+6],C=R[p+D+7];if(B*=A[D],(P|M|Z|H|X|W|C)===0)B=5793*B+512>>10,E[D]=B,E[D+1]=B,E[D+2]=B,E[D+3]=B,E[D+4]=B,E[D+5]=B,E[D+6]=B,E[D+7]=B;else{P*=A[D+1],M*=A[D+2],Z*=A[D+3],H*=A[D+4],X*=A[D+5],W*=A[D+6],C*=A[D+7];var m=5793*B+128>>8,ie=5793*H+128>>8,T=M,F=W;H=2896*(P-C)+128>>8,C=2896*(P+C)+128>>8,Z<<=4,X<<=4,m=m+ie+1>>1,ie=m-ie,B=3784*T+1567*F+128>>8,T=1567*T-3784*F+128>>8,F=B,H=H+X+1>>1,X=H-X,C=C+Z+1>>1,Z=C-Z,m=m+F+1>>1,F=m-F,ie=ie+T+1>>1,T=ie-T,B=2276*H+3406*C+2048>>12,H=3406*H-2276*C+2048>>12,C=B,B=799*Z+4017*X+2048>>12,Z=4017*Z-799*X+2048>>12,X=B,E[D]=m+C,E[D+7]=m-C,E[D+1]=ie+X,E[D+6]=ie-X,E[D+2]=T+Z,E[D+5]=T-Z,E[D+3]=F+H,E[D+4]=F-H}}for(A=0;8>A;++A)B=E[A],P=E[A+8],M=E[A+16],Z=E[A+24],H=E[A+32],X=E[A+40],W=E[A+48],C=E[A+56],(P|M|Z|H|X|W|C)===0?(B=5793*B+8192>>14,B=-2040>B?0:2024<=B?255:B+2056>>4,R[p+A]=B,R[p+A+8]=B,R[p+A+16]=B,R[p+A+24]=B,R[p+A+32]=B,R[p+A+40]=B,R[p+A+48]=B,R[p+A+56]=B):(m=5793*B+2048>>12,ie=5793*H+2048>>12,T=M,F=W,H=2896*(P-C)+2048>>12,C=2896*(P+C)+2048>>12,m=(m+ie+1>>1)+4112,ie=m-ie,B=3784*T+1567*F+2048>>12,T=1567*T-3784*F+2048>>12,F=B,H=H+X+1>>1,X=H-X,C=C+Z+1>>1,Z=C-Z,m=m+F+1>>1,F=m-F,ie=ie+T+1>>1,T=ie-T,B=2276*H+3406*C+2048>>12,H=3406*H-2276*C+2048>>12,C=B,B=799*Z+4017*X+2048>>12,Z=4017*Z-799*X+2048>>12,X=B,B=m+C,C=m-C,P=ie+X,W=ie-X,M=T+Z,X=T-Z,Z=F+H,H=F-H,B=16>B?0:4080<=B?255:B>>4,P=16>P?0:4080<=P?255:P>>4,M=16>M?0:4080<=M?255:M>>4,Z=16>Z?0:4080<=Z?255:Z>>4,H=16>H?0:4080<=H?255:H>>4,X=16>X?0:4080<=X?255:X>>4,W=16>W?0:4080<=W?255:W>>4,C=16>C?0:4080<=C?255:C>>4,R[p+A]=B,R[p+A+8]=P,R[p+A+16]=M,R[p+A+24]=Z,R[p+A+32]=H,R[p+A+40]=X,R[p+A+48]=W,R[p+A+56]=C)}return u.a}function s(_,u){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:u,o=_.length-1;if(c=c<u?c:u,u>=o)return null;var n=_[u]<<8|_[u+1];if(65472<=n&&65534>=n)return{f:null,F:n,offset:u};for(var w=_[c]<<8|_[c+1];!(65472<=w&&65534>=w);){if(++c>=o)return null;w=_[c]<<8|_[c+1]}return{f:n.toString(16),F:w,offset:c}}var x=new Uint8Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);b.prototype={parse:function(_){function u(){var T=_[g]<<8|_[g+1];return g+=2,T}function c(){var T=u();T=g+T-2;var F=s(_,T,g);return F&&F.f&&((0,_util.warn)("readDataBlock - incorrect length, current marker is: "+F.f),T=F.offset),T=_.subarray(g,T),g+=T.length,T}function o(T){for(var F=Math.ceil(T.v/8/T.s),$=Math.ceil(T.g/8/T.u),ve=0;ve<T.b.length;ve++){m=T.b[ve];var fe=Math.ceil(Math.ceil(T.v/8)*m.h/T.s),le=Math.ceil(Math.ceil(T.g/8)*m.j/T.u);m.a=new Int16Array(64*$*m.j*(F*m.h+1)),m.c=fe,m.l=le}T.P=F,T.O=$}var n=(1<arguments.length&&arguments[1]!==void 0?arguments[1]:{}).N,w=n===void 0?null:n,g=0,p=null,E=0;n=[];var A=[],R=[],D=u();if(D!==65496)throw new r("SOI not found");for(D=u();D!==65497;){switch(D){case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var B=c();D===65518&&B[0]===65&&B[1]===100&&B[2]===111&&B[3]===98&&B[4]===101&&(p={version:B[5]<<8|B[6],Y:B[7]<<8|B[8],Z:B[9]<<8|B[10],W:B[11]});break;case 65499:D=u()+g-2;for(var P;g<D;){var M=_[g++],Z=new Uint16Array(64);if(M>>4===0)for(B=0;64>B;B++)P=x[B],Z[P]=_[g++];else if(M>>4===1)for(B=0;64>B;B++)P=x[B],Z[P]=u();else throw new r("DQT - invalid table spec");n[M&15]=Z}break;case 65472:case 65473:case 65474:if(H)throw new r("Only single frame JPEGs supported");u();var H={};for(H.X=D===65473,H.S=D===65474,H.precision=_[g++],D=u(),H.g=w||D,H.v=u(),H.b=[],H.C={},B=_[g++],D=Z=M=0;D<B;D++){P=_[g];var X=_[g+1]>>4,W=_[g+1]&15;M<X&&(M=X),Z<W&&(Z=W),X=H.b.push({h:X,j:W,T:_[g+2],G:null}),H.C[P]=X-1,g+=3}H.s=M,H.u=Z,o(H);break;case 65476:for(P=u(),D=2;D<P;){for(M=_[g++],Z=new Uint8Array(16),B=X=0;16>B;B++,g++)X+=Z[B]=_[g];for(W=new Uint8Array(X),B=0;B<X;B++,g++)W[B]=_[g];D+=17+X,(M>>4===0?R:A)[M&15]=v(Z,W)}break;case 65501:u();var C=u();break;case 65498:for(B=++E===1&&!w,u(),M=_[g++],P=[],D=0;D<M;D++){Z=H.C[_[g++]];var m=H.b[Z];Z=_[g++],m.D=R[Z>>4],m.o=A[Z&15],P.push(m)}D=_[g++],M=_[g++],Z=_[g++];try{var ie=d(_,g,H,P,C,D,M,Z>>4,Z&15,B);g+=ie}catch(T){if(T instanceof i)return(0,_util.warn)('Attempting to re-parse JPEG image using "scanLines" parameter found in DNL marker (0xFFDC) segment.'),this.parse(_,{N:T.g});throw T}break;case 65500:g+=4;break;case 65535:_[g]!==255&&g--;break;default:if(_[g-3]===255&&192<=_[g-2]&&254>=_[g-2])g-=3;else if((B=s(_,g-2))&&B.f)(0,_util.warn)("JpegImage.parse - unexpected data, current marker is: "+B.f),g=B.offset;else throw new r("unknown marker "+D.toString(16))}D=u()}for(this.width=H.v,this.height=H.g,this.A=p,this.b=[],D=0;D<H.b.length;D++)m=H.b[D],(C=n[m.T])&&(m.G=C),this.b.push({R:l(H,m),U:m.h/H.s,V:m.j/H.u,c:m.c,l:m.l});this.i=this.b.length},L:function(_,u){var c=this.width/_,o=this.height/u,n,w,g=this.b.length,p=_*u*g,E=new Uint8ClampedArray(p),A=new Uint32Array(_);for(w=0;w<g;w++){var R=this.b[w],D=R.U*c,B=R.V*o,P=w,M=R.R,Z=R.c+1<<3;for(n=0;n<_;n++)R=0|n*D,A[n]=(R&4294967288)<<3|R&7;for(D=0;D<u;D++)for(R=0|D*B,R=Z*(R&4294967288)|(R&7)<<3,n=0;n<_;n++)E[P]=M[R+A[n]],P+=g}if(o=this.M)for(w=0;w<p;)for(c=R=0;R<g;R++,w++,c+=2)E[w]=(E[w]*o[c]>>8)+o[c+1];return E},w:function(){return this.A?!!this.A.W:this.i===3?this.B!==0:this.B===1},I:function(_){for(var u,c,o,n=0,w=_.length;n<w;n+=3)u=_[n],c=_[n+1],o=_[n+2],_[n]=u-179.456+1.402*o,_[n+1]=u+135.459-.344*c-.714*o,_[n+2]=u-226.816+1.772*c;return _},K:function(_){for(var u,c,o,n,w=0,g=0,p=_.length;g<p;g+=4)u=_[g],c=_[g+1],o=_[g+2],n=_[g+3],_[w++]=-122.67195406894+c*(-660635669420364e-19*c+.000437130475926232*o-54080610064599e-18*u+.00048449797120281*n-.154362151871126)+o*(-.000957964378445773*o+.000817076911346625*u-.00477271405408747*n+1.53380253221734)+u*(.000961250184130688*u-.00266257332283933*n+.48357088451265)+n*(-.000336197177618394*n+.484791561490776),_[w++]=107.268039397724+c*(219927104525741e-19*c-.000640992018297945*o+.000659397001245577*u+.000426105652938837*n-.176491792462875)+o*(-.000778269941513683*o+.00130872261408275*u+.000770482631801132*n-.151051492775562)+u*(.00126935368114843*u-.00265090189010898*n+.25802910206845)+n*(-.000318913117588328*n-.213742400323665),_[w++]=-20.810012546947+c*(-.000570115196973677*c-263409051004589e-19*o+.0020741088115012*u-.00288260236853442*n+.814272968359295)+o*(-153496057440975e-19*o-.000132689043961446*u+.000560833691242812*n-.195152027534049)+u*(.00174418132927582*u-.00255243321439347*n+.116935020465145)+n*(-.000343531996510555*n+.24165260232407);return _.subarray(0,w)},J:function(_){for(var u,c,o,n=0,w=_.length;n<w;n+=4)u=_[n],c=_[n+1],o=_[n+2],_[n]=434.456-u-1.402*o,_[n+1]=119.541-u+.344*c+.714*o,_[n+2]=481.816-u-1.772*c;return _},H:function(_){for(var u,c,o,n,w=0,g=1/255,p=0,E=_.length;p<E;p+=4)u=_[p]*g,c=_[p+1]*g,o=_[p+2]*g,n=_[p+3]*g,_[w++]=255+u*(-4.387332384609988*u+54.48615194189176*c+18.82290502165302*o+212.25662451639585*n-285.2331026137004)+c*(1.7149763477362134*c-5.6096736904047315*o-17.873870861415444*n-5.497006427196366)+o*(-2.5217340131683033*o-21.248923337353073*n+17.5119270841813)-n*(21.86122147463605*n+189.48180835922747),_[w++]=255+u*(8.841041422036149*u+60.118027045597366*c+6.871425592049007*o+31.159100130055922*n-79.2970844816548)+c*(-15.310361306967817*c+17.575251261109482*o+131.35250912493976*n-190.9453302588951)+o*(4.444339102852739*o+9.8632861493405*n-24.86741582555878)-n*(20.737325471181034*n+187.80453709719578),_[w++]=255+u*(.8842522430003296*u+8.078677503112928*c+30.89978309703729*o-.23883238689178934*n-14.183576799673286)+c*(10.49593273432072*c+63.02378494754052*o+50.606957656360734*n-112.23884253719248)+o*(.03296041114873217*o+115.60384449646641*n-193.58209356861505)-n*(22.33816807309886*n+180.12613974708367);return _.subarray(0,w)},getData:function(_,u,c){if(4<this.i)throw new r("Unsupported color mode");if(_=this.L(_,u),this.i===1&&c){c=_.length,u=new Uint8ClampedArray(3*c);for(var o=0,n=0;n<c;n++){var w=_[n];u[o++]=w,u[o++]=w,u[o++]=w}return u}if(this.i===3&&this.w())return this.I(_);if(this.i===4){if(this.w())return c?this.K(_):this.J(_);if(c)return this.H(_)}return _}},y.JpegDecoder=b})()})(),y.encodeImage=function(t,r,i,b){var v={t256:[r],t257:[i],t258:[8,8,8,8],t259:[1],t262:[2],t273:[1e3],t277:[4],t278:[i],t279:[r*i*4],t282:[1],t283:[1],t284:[1],t286:[0],t287:[0],t296:[1],t305:["Photopea (UTIF.js)"],t338:[1]};if(b)for(var d in b)v[d]=b[d];for(var l=new Uint8Array(y.encode([v])),s=new Uint8Array(t),x=new Uint8Array(1e3+r*i*4),d=0;d<l.length;d++)x[d]=l[d];for(var d=0;d<s.length;d++)x[1e3+d]=s[d];return x.buffer},y.encode=function(t){var r=new Uint8Array(2e4),i=4,b=y._binBE;r[0]=77,r[1]=77,r[3]=42;var v=8;b.writeUint(r,i,v),i+=4;for(var d=0;d<t.length;d++){var l=y._writeIFD(b,r,v,t[d]);v=l[1],d<t.length-1&&b.writeUint(r,l[0],v)}return r.slice(0,v).buffer},y.decode=function(t){y.decode._decodeG3.allow2D=null;var r=new Uint8Array(t),i=0,b=y._binBE.readASCII(r,i,2);i+=2;var v=b=="II"?y._binLE:y._binBE;v.readUshort(r,i),i+=2;var d=v.readUint(r,i);i+=4;for(var l=[];;){var s=y._readIFD(v,r,d,l,0,!1);if(d=v.readUint(r,s),d==0)break}return l},y.decodeImage=function(t,r,i){var b=new Uint8Array(t),v=y._binBE.readASCII(b,0,2);if(r.t256!=null){r.isLE=v=="II",r.width=r.t256[0],r.height=r.t257[0];var d=r.t259?r.t259[0]:1,l=r.t266?r.t266[0]:1;r.t284&&r.t284[0]==2&&G("PlanarConfiguration 2 should not be used!");var s;r.t258?s=Math.min(32,r.t258[0])*r.t258.length:s=r.t277?r.t277[0]:1,d==1&&r.t279!=null&&r.t278&&r.t262[0]==32803&&(s=Math.round(r.t279[0]*8/(r.width*r.t278[0])));var x=Math.ceil(r.width*s/8)*8,_=r.t273;_==null&&(_=r.t324);var u=r.t279;d==1&&_.length==1&&(u=[r.height*(x>>>3)]),u==null&&(u=r.t325);var c=new Uint8Array(r.height*(x>>>3)),o=0;if(r.t322!=null){for(var n=r.t322[0],w=r.t323[0],g=Math.floor((r.width+n-1)/n),p=Math.floor((r.height+w-1)/w),E=new Uint8Array(Math.ceil(n*w*s/8)|0),A=0;A<p;A++)for(var R=0;R<g;R++){for(var D=A*g+R,B=0;B<E.length;B++)E[B]=0;y.decode._decompress(r,i,b,_[D],u[D],d,E,0,l),d==6?c=E:y._copyTile(E,Math.ceil(n*s/8)|0,w,c,Math.ceil(r.width*s/8)|0,r.height,Math.ceil(R*n*s/8)|0,A*w)}o=c.length*8}else{var P=r.t278?r.t278[0]:r.height;P=Math.min(P,r.height);for(var D=0;D<_.length;D++)y.decode._decompress(r,i,b,_[D],u[D],d,c,Math.ceil(o/8)|0,l),o+=x*P;o=Math.min(o,c.length*8)}r.data=new Uint8Array(c.buffer,0,Math.ceil(o/8)|0)}},y.decode._decompress=function(t,r,i,b,v,d,l,s,x){if(d==1||v==l.length&&d!=32767)for(var _=0;_<v;_++)l[s+_]=i[b+_];else if(d==3)y.decode._decodeG3(i,b,v,l,s,t.width,x);else if(d==4)y.decode._decodeG4(i,b,v,l,s,t.width,x);else if(d==5)y.decode._decodeLZW(i,b,l,s);else if(d==6)y.decode._decodeOldJPEG(t,i,b,v,l,s);else if(d==7)y.decode._decodeNewJPEG(t,i,b,v,l,s);else if(d==8)for(var u=new Uint8Array(i.buffer,b,v),c=J.inflate(u),o=0;o<c.length;o++)l[s+o]=c[o];else d==32767?y.decode._decodeARW(t,i,b,v,l,s):d==32773?y.decode._decodePackBits(i,b,v,l,s):d==32809?y.decode._decodeThunder(i,b,v,l,s):d==34713?y.decode._decodeNikon(t,r,i,b,v,l,s):G("Unknown compression",d);var n=t.t258?Math.min(32,t.t258[0]):1,w=t.t277?t.t277[0]:1,g=n*w>>>3,p=t.t278?t.t278[0]:t.height,E=Math.ceil(n*w*t.width/8);if(n==16&&!t.isLE&&t.t33422==null)for(var A=0;A<p;A++)for(var R=s+A*E,D=1;D<E;D+=2){var B=l[R+D];l[R+D]=l[R+D-1],l[R+D-1]=B}if(t.t317&&t.t317[0]==2)for(var A=0;A<p;A++){var P=s+A*E;if(n==16)for(var _=g;_<E;_+=2){var M=(l[P+_+1]<<8|l[P+_])+(l[P+_-g+1]<<8|l[P+_-g]);l[P+_]=M&255,l[P+_+1]=M>>>8&255}else if(w==3)for(var _=3;_<E;_+=3)l[P+_]=l[P+_]+l[P+_-3]&255,l[P+_+1]=l[P+_+1]+l[P+_-2]&255,l[P+_+2]=l[P+_+2]+l[P+_-1]&255;else for(var _=g;_<E;_++)l[P+_]=l[P+_]+l[P+_-g]&255}},y.decode._ljpeg_diff=function(t,r,i){var b=y.decode._getbithuff,v,d;return v=b(t,r,i[0],i),d=b(t,r,v,0),(d&1<<v-1)==0&&(d-=(1<<v)-1),d},y.decode._decodeARW=function(t,r,i,b,v,d){var l=t.t256[0],s=t.t257[0],x=t.t258[0],_=t.isLE?y._binLE:y._binBE,u=l*s==b||l*s*1.5==b;if(!u){s+=8;var c=[i,0,0,0],o=new Uint16Array(32770),n=[3857,3856,3599,3342,3085,2828,2571,2314,2057,1800,1543,1286,1029,772,771,768,514,513],$,w,g,H,Z,p=0,E=y.decode._ljpeg_diff;for(o[0]=15,g=$=0;$<18;$++)for(var A=32768>>>(n[$]>>>8),w=0;w<A;w++)o[++g]=n[$];for(H=l;H--;)for(Z=0;Z<s+1;Z+=2)if(Z==s&&(Z=1),p+=E(r,c,o),Z<s){var R=p&4095;y.decode._putsF(v,(Z*l+H)*x,R<<16-x)}return}if(l*s*1.5==b){for(var $=0;$<b;$+=3){var D=r[i+$+0],B=r[i+$+1],P=r[i+$+2];v[d+$]=B<<4|D>>>4,v[d+$+1]=D<<4|P>>>4,v[d+$+2]=P<<4|B>>>4}return}var M=new Uint16Array(16),Z,H,X,W,C,m,ie,T,F,$,ve,fe=new Uint8Array(l+1);for(Z=0;Z<s;Z++){for(var le=0;le<l;le++)fe[le]=r[i++];for(ve=0,H=0;H<l-30;ve+=16){for(W=2047&(X=_.readUint(fe,ve)),C=2047&X>>>11,m=15&X>>>22,ie=15&X>>>26,T=0;T<4&&128<<T<=W-C;T++);for(F=30,$=0;$<16;$++)$==m?M[$]=W:$==ie?M[$]=C:(M[$]=((_.readUshort(fe,ve+(F>>3))>>>(F&7)&127)<<T)+C,M[$]>2047&&(M[$]=2047),F+=7);for($=0;$<16;$++,H+=2){var R=M[$]<<1;y.decode._putsF(v,(Z*l+H)*x,R<<16-x)}H-=H&1?1:31}}},y.decode._decodeNikon=function(t,r,i,b,v,d,l){var s=[[0,0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0,5,4,3,6,2,7,1,0,8,9,11,10,12],[0,0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0,57,90,56,39,22,5,4,3,2,1,0,11,12,12],[0,0,1,4,2,3,1,2,0,0,0,0,0,0,0,0,0,5,4,6,3,7,2,8,1,9,0,10,11,12],[0,0,1,4,3,1,1,1,1,1,2,0,0,0,0,0,0,5,6,4,7,8,3,9,2,1,0,10,11,12,13,14],[0,0,1,5,1,1,1,1,1,1,1,2,0,0,0,0,0,8,92,75,58,41,7,6,5,4,3,2,1,0,13,14],[0,0,1,4,2,2,3,1,2,0,0,0,0,0,0,0,0,7,6,8,5,9,4,10,3,11,12,2,0,1,13,14]],x=t.t256[0],_=t.t257[0],u=t.t258[0],c=0,o=0,n=y.decode._make_decoder,w=y.decode._getbithuff,g=r[0].exifIFD.makerNote,p=g.t150?g.t150:g.t140,E=0,A=p[E++],R=p[E++];(A==73||R==88)&&(E+=2110),A==70&&(c=2),u==14&&(c+=3);for(var D=[[0,0],[0,0]],B=t.isLE?y._binLE:y._binBE,X=0;X<2;X++)for(var P=0;P<2;P++)D[X][P]=B.readShort(p,E),E+=2;var M=1<<u&32767,Z=0,H=B.readShort(p,E);E+=2,H>1&&(Z=Math.floor(M/(H-1))),A==68&&R==32&&Z>0&&(o=B.readShort(p,562));var X,W,C,m,ie,T,F=[0,0],$=n(s[c]),ve=[b,0,0,0];for(W=0;W<_;W++)for(o&&W==o&&($=n(s[c+1])),C=0;C<x;C++){X=w(i,ve,$[0],$),m=X&15,ie=X>>>4,T=(w(i,ve,m-ie,0)<<1)+1<<ie>>>1,(T&1<<m-1)==0&&(T-=(1<<m)-(ie==0?1:0)),C<2?F[C]=D[W&1][C]+=T:F[C&1]+=T;var fe=Math.min(Math.max(F[C&1],0),(1<<u)-1),le=(W*x+C)*u;y.decode._putsF(d,le,fe<<16-u)}},y.decode._putsF=function(t,r,i){i=i<<8-(r&7);var b=r>>>3;t[b]|=i>>>16,t[b+1]|=i>>>8,t[b+2]|=i},y.decode._getbithuff=function(t,r,i,b){var v=0;y.decode._get_byte;var d,l=r[0],s=r[1],x=r[2],_=r[3];if(i==0||x<0)return 0;for(;!_&&x<i&&(d=t[l++])!=-1&&!(_=v);)s=(s<<8)+d,x+=8;if(d=s<<32-x>>>32-i,b?(x-=b[d+1]>>>8,d=b[d+1]&255):x-=i,x<0)throw"e";return r[0]=l,r[1]=s,r[2]=x,r[3]=_,d},y.decode._make_decoder=function(t){var r,i,b,v,d,l=[];for(r=16;r!=0&&!t[r];r--);var s=17;for(l[0]=r,b=i=1;i<=r;i++)for(v=0;v<t[i];v++,++s)for(d=0;d<1<<r-i;d++)b<=1<<r&&(l[b++]=i<<8|t[s]);return l},y.decode._decodeNewJPEG=function(t,r,i,b,v,d){var l=t.t347,s=l?l.length:0,x=new Uint8Array(s+b);if(l){for(var _=216,u=217,c=0,o=0;o<s-1&&!(l[o]==255&&l[o+1]==u);o++)x[c++]=l[o];var n=r[i],w=r[i+1];(n!=255||w!=_)&&(x[c++]=n,x[c++]=w);for(var o=2;o<b;o++)x[c++]=r[i+o]}else for(var o=0;o<b;o++)x[o]=r[i+o];if(t.t262[0]==32803||t.t262[0]==34892){var g=t.t258[0],p=y.LosslessJpegDecode(x),E=p.length;if(g==16)if(t.isLE)for(var o=0;o<E;o++)v[d+(o<<1)]=p[o]&255,v[d+(o<<1)+1]=p[o]>>>8;else for(var o=0;o<E;o++)v[d+(o<<1)]=p[o]>>>8,v[d+(o<<1)+1]=p[o]&255;else if(g==14||g==12)for(var A=16-g,o=0;o<E;o++)y.decode._putsF(v,o*g,p[o]<<A);else throw new Error("unsupported bit depth "+g)}else{var R=new y.JpegDecoder;R.parse(x);for(var D=R.getData(R.width,R.height),o=0;o<D.length;o++)v[d+o]=D[o]}t.t262[0]==6&&(t.t262[0]=2)},y.decode._decodeOldJPEGInit=function(t,r,i,b){var v=216,d=219,l=196,s=221,x=192,_=218,u=0,c=0,o,n,w=!1,g,p,E,A=t.t513,R=A?A[0]:0,D=t.t514,B=D?D[0]:0,P=t.t324||t.t273||A,M=t.t530,Z=0,H=0,X=t.t277?t.t277[0]:1,W=t.t515;if(P&&(c=P[0],w=P.length>1),!w){if(r[i]==255&&r[i+1]==v)return{jpegOffset:i};if(A!=null&&(r[i+R]==255&&r[i+R+1]==v?u=i+R:G("JPEGInterchangeFormat does not point to SOI"),D==null?G("JPEGInterchangeFormatLength field is missing"):(R>=c||R+B<=c)&&G("JPEGInterchangeFormatLength field value is invalid"),u!=null))return{jpegOffset:u}}if(M!=null&&(Z=M[0],H=M[1]),A!=null&&D!=null)if(B>=2&&R+B<=c){for(r[i+R+B-2]==255&&r[i+R+B-1]==v?o=new Uint8Array(B-2):o=new Uint8Array(B),g=0;g<o.length;g++)o[g]=r[i+R+g];G("Incorrect JPEG interchange format: using JPEGInterchangeFormat offset to derive tables")}else G("JPEGInterchangeFormat+JPEGInterchangeFormatLength > offset to first strip or tile");if(o==null){var C=0,m=[];m[C++]=255,m[C++]=v;var ie=t.t519;if(ie==null)throw new Error("JPEGQTables tag is missing");for(g=0;g<ie.length;g++)for(m[C++]=255,m[C++]=d,m[C++]=0,m[C++]=67,m[C++]=g,p=0;p<64;p++)m[C++]=r[i+ie[g]+p];for(E=0;E<2;E++){var T=t[E==0?"t520":"t521"];if(T==null)throw new Error((E==0?"JPEGDCTables":"JPEGACTables")+" tag is missing");for(g=0;g<T.length;g++){m[C++]=255,m[C++]=l;var F=19;for(p=0;p<16;p++)F+=r[i+T[g]+p];for(m[C++]=F>>>8,m[C++]=F&255,m[C++]=g|E<<4,p=0;p<16;p++)m[C++]=r[i+T[g]+p];for(p=0;p<F;p++)m[C++]=r[i+T[g]+16+p]}}if(m[C++]=255,m[C++]=x,m[C++]=0,m[C++]=8+3*X,m[C++]=8,m[C++]=t.height>>>8&255,m[C++]=t.height&255,m[C++]=t.width>>>8&255,m[C++]=t.width&255,m[C++]=X,X==1)m[C++]=1,m[C++]=17,m[C++]=0;else for(g=0;g<3;g++)m[C++]=g+1,m[C++]=g!=0?17:(Z&15)<<4|H&15,m[C++]=g;W!=null&&W[0]!=0&&(m[C++]=255,m[C++]=s,m[C++]=0,m[C++]=4,m[C++]=W[0]>>>8&255,m[C++]=W[0]&255),o=new Uint8Array(m)}var $=-1;for(g=0;g<o.length-1;){if(o[g]==255&&o[g+1]==x){$=g;break}g++}if($==-1){var ve=new Uint8Array(o.length+10+3*X);ve.set(o);var fe=o.length;if($=o.length,o=ve,o[fe++]=255,o[fe++]=x,o[fe++]=0,o[fe++]=8+3*X,o[fe++]=8,o[fe++]=t.height>>>8&255,o[fe++]=t.height&255,o[fe++]=t.width>>>8&255,o[fe++]=t.width&255,o[fe++]=X,X==1)o[fe++]=1,o[fe++]=17,o[fe++]=0;else for(g=0;g<3;g++)o[fe++]=g+1,o[fe++]=g!=0?17:(Z&15)<<4|H&15,o[fe++]=g}if(r[c]==255&&r[c+1]==_){var le=r[c+2]<<8|r[c+3];for(n=new Uint8Array(le+2),n[0]=r[c],n[1]=r[c+1],n[2]=r[c+2],n[3]=r[c+3],g=0;g<le-2;g++)n[g+4]=r[c+g+4]}else{n=new Uint8Array(8+2*X);var he=0;if(n[he++]=255,n[he++]=_,n[he++]=0,n[he++]=6+2*X,n[he++]=X,X==1)n[he++]=1,n[he++]=0;else for(g=0;g<3;g++)n[he++]=g+1,n[he++]=g<<4|g;n[he++]=0,n[he++]=63,n[he++]=0}return{jpegOffset:i,tables:o,sosMarker:n,sofPosition:$}},y.decode._decodeOldJPEG=function(t,r,i,b,v,d){var l,s,x,_,u,c=y.decode._decodeOldJPEGInit(t,r,i,b);if(c.jpegOffset!=null)for(s=i+b-c.jpegOffset,_=new Uint8Array(s),l=0;l<s;l++)_[l]=r[c.jpegOffset+l];else{for(x=c.tables.length,_=new Uint8Array(x+c.sosMarker.length+b+2),_.set(c.tables),u=x,_[c.sofPosition+5]=t.height>>>8&255,_[c.sofPosition+6]=t.height&255,_[c.sofPosition+7]=t.width>>>8&255,_[c.sofPosition+8]=t.width&255,(r[i]!=255||r[i+1]!=SOS)&&(_.set(c.sosMarker,u),u+=sosMarker.length),l=0;l<b;l++)_[u++]=r[i+l];_[u++]=255,_[u++]=EOI}var o=new y.JpegDecoder;o.parse(_);for(var n=o.getData(o.width,o.height),l=0;l<n.length;l++)v[d+l]=n[l];t.t262&&t.t262[0]==6&&(t.t262[0]=2)},y.decode._decodePackBits=function(t,r,i,b,v){for(var d=new Int8Array(t.buffer),l=new Int8Array(b.buffer),s=r+i;r<s;){var x=d[r];if(r++,x>=0&&x<128)for(var _=0;_<x+1;_++)l[v]=d[r],v++,r++;if(x>=-127&&x<0){for(var _=0;_<-x+1;_++)l[v]=d[r],v++;r++}}},y.decode._decodeThunder=function(t,r,i,b,v){for(var d=[0,1,0,-1],l=[0,1,2,3,0,-3,-2,-1],s=r+i,x=v*2,_=0;r<s;){var u=t[r],c=u>>>6,o=u&63;if(r++,c==3&&(_=o&15,b[x>>>1]|=_<<4*(1-x&1),x++),c==0)for(var n=0;n<o;n++)b[x>>>1]|=_<<4*(1-x&1),x++;if(c==2)for(var n=0;n<2;n++){var w=o>>>3*(1-n)&7;w!=4&&(_+=l[w],b[x>>>1]|=_<<4*(1-x&1),x++)}if(c==1)for(var n=0;n<3;n++){var w=o>>>2*(2-n)&3;w!=2&&(_+=d[w],b[x>>>1]|=_<<4*(1-x&1),x++)}}},y.decode._dmap={1:0,"011":1,"000011":2,"0000011":3,"010":-1,"000010":-2,"0000010":-3},y.decode._lens=(function(){var t=function(x,_,u,c){for(var o=0;o<_.length;o++)x[_[o]]=u+o*c},r="00110101,000111,0111,1000,1011,1100,1110,1111,10011,10100,00111,01000,001000,000011,110100,110101,101010,101011,0100111,0001100,0001000,0010111,0000011,0000100,0101000,0101011,0010011,0100100,0011000,00000010,00000011,00011010,00011011,00010010,00010011,00010100,00010101,00010110,00010111,00101000,00101001,00101010,00101011,00101100,00101101,00000100,00000101,00001010,00001011,01010010,01010011,01010100,01010101,00100100,00100101,01011000,01011001,01011010,01011011,01001010,01001011,00110010,00110011,00110100",i="0000110111,010,11,10,011,0011,0010,00011,000101,000100,0000100,0000101,0000111,00000100,00000111,000011000,0000010111,0000011000,0000001000,00001100111,00001101000,00001101100,00000110111,00000101000,00000010111,00000011000,000011001010,000011001011,000011001100,000011001101,000001101000,000001101001,000001101010,000001101011,000011010010,000011010011,000011010100,000011010101,000011010110,000011010111,000001101100,000001101101,000011011010,000011011011,000001010100,000001010101,000001010110,000001010111,000001100100,000001100101,000001010010,000001010011,000000100100,000000110111,000000111000,000000100111,000000101000,000001011000,000001011001,000000101011,000000101100,000001011010,000001100110,000001100111",b="11011,10010,010111,0110111,00110110,00110111,01100100,01100101,01101000,01100111,011001100,011001101,011010010,011010011,011010100,011010101,011010110,011010111,011011000,011011001,011011010,011011011,010011000,010011001,010011010,011000,010011011",v="0000001111,000011001000,000011001001,000001011011,000000110011,000000110100,000000110101,0000001101100,0000001101101,0000001001010,0000001001011,0000001001100,0000001001101,0000001110010,0000001110011,0000001110100,0000001110101,0000001110110,0000001110111,0000001010010,0000001010011,0000001010100,0000001010101,0000001011010,0000001011011,0000001100100,0000001100101",d="00000001000,00000001100,00000001101,000000010010,000000010011,000000010100,000000010101,000000010110,000000010111,000000011100,000000011101,000000011110,000000011111";r=r.split(","),i=i.split(","),b=b.split(","),v=v.split(","),d=d.split(",");var l={},s={};return t(l,r,0,1),t(l,b,64,64),t(l,d,1792,64),t(s,i,0,1),t(s,v,64,64),t(s,d,1792,64),[l,s]})(),y.decode._decodeG4=function(t,r,i,b,v,d,l){for(var s=y.decode,x=r<<3,_=0,u="",c=[],o=[],n=0;n<d;n++)o.push(0);o=s._makeDiff(o);for(var w=0,g=0,p=0,E=0,A=0,R=0,D="",B=0,P=Math.ceil(d/8)*8;x>>>3<r+i;){p=s._findDiff(o,w+(w==0?0:1),1-A),E=s._findDiff(o,p,A);var M=0;if(l==1&&(M=t[x>>>3]>>>7-(x&7)&1),l==2&&(M=t[x>>>3]>>>(x&7)&1),x++,u+=M,D=="H"){if(s._lens[A][u]!=null){var Z=s._lens[A][u];u="",_+=Z,Z<64&&(s._addNtimes(c,_,A),w+=_,A=1-A,_=0,B--,B==0&&(D=""))}}else u=="0001"&&(u="",s._addNtimes(c,E-w,A),w=E),u=="001"&&(u="",D="H",B=2),s._dmap[u]!=null&&(g=p+s._dmap[u],s._addNtimes(c,g-w,A),w=g,u="",A=1-A);c.length==d&&D==""&&(s._writeBits(c,b,v*8+R*P),A=0,R++,w=0,o=s._makeDiff(c),c=[])}},y.decode._findDiff=function(t,r,i){for(var b=0;b<t.length;b+=2)if(t[b]>=r&&t[b+1]==i)return t[b]},y.decode._makeDiff=function(t){var r=[];t[0]==1&&r.push(0,1);for(var i=1;i<t.length;i++)t[i-1]!=t[i]&&r.push(i,t[i]);return r.push(t.length,0,t.length,1),r},y.decode._decodeG3=function(t,r,i,b,v,d,l){for(var s=y.decode,x=r<<3,_=0,u="",c=[],o=[],n=0;n<d;n++)c.push(0);for(var w=0,g=0,p=0,E=0,A=0,R=-1,D="",B=0,P=!1,M=Math.ceil(d/8)*8;x>>>3<r+i;){p=s._findDiff(o,w+(w==0?0:1),1-A),E=s._findDiff(o,p,A);var Z=0;if(l==1&&(Z=t[x>>>3]>>>7-(x&7)&1),l==2&&(Z=t[x>>>3]>>>(x&7)&1),x++,u+=Z,P){if(s._lens[A][u]!=null){var H=s._lens[A][u];u="",_+=H,H<64&&(s._addNtimes(c,_,A),A=1-A,_=0)}}else if(D=="H"){if(s._lens[A][u]!=null){var H=s._lens[A][u];u="",_+=H,H<64&&(s._addNtimes(c,_,A),w+=_,A=1-A,_=0,B--,B==0&&(D=""))}}else u=="0001"&&(u="",s._addNtimes(c,E-w,A),w=E),u=="001"&&(u="",D="H",B=2),s._dmap[u]!=null&&(g=p+s._dmap[u],s._addNtimes(c,g-w,A),w=g,u="",A=1-A);u.endsWith("000000000001")&&(R>=0&&s._writeBits(c,b,v*8+R*M),l==1&&(P=(t[x>>>3]>>>7-(x&7)&1)==1),l==2&&(P=(t[x>>>3]>>>(x&7)&1)==1),x++,s._decodeG3.allow2D==null&&(s._decodeG3.allow2D=P),s._decodeG3.allow2D||(P=!0,x--),u="",A=0,R++,w=0,o=s._makeDiff(c),c=[])}c.length==d&&s._writeBits(c,b,v*8+R*M)},y.decode._addNtimes=function(t,r,i){for(var b=0;b<r;b++)t.push(i)},y.decode._writeBits=function(t,r,i){for(var b=0;b<t.length;b++)r[i+b>>>3]|=t[b]<<7-(i+b&7)},y.decode._decodeLZW=function(t,r,i,b){if(y.decode._lzwTab==null){for(var v=new Uint32Array(65535),d=new Uint16Array(65535),u=new Uint8Array(2e6),l=0;l<256;l++)u[l<<2]=l,v[l]=l<<2,d[l]=1;y.decode._lzwTab=[v,d,u]}for(var s=y.decode._copyData,x=y.decode._lzwTab[0],_=y.decode._lzwTab[1],u=y.decode._lzwTab[2],c=258,o=1032,n=9,w=r<<3,g=256,p=257,E=0,A=0,R=0;E=t[w>>>3]<<16|t[w+8>>>3]<<8|t[w+16>>>3],A=E>>24-(w&7)-n&(1<<n)-1,w+=n,A!=p;){if(A==g){if(n=9,c=258,o=1032,E=t[w>>>3]<<16|t[w+8>>>3]<<8|t[w+16>>>3],A=E>>24-(w&7)-n&(1<<n)-1,w+=n,A==p)break;i[b]=A,b++}else if(A<c){var D=x[A],B=_[A];if(s(u,D,i,b,B),b+=B,R>=c)x[c]=o,u[x[c]]=D[0],_[c]=1,o=o+1+3&-4,c++;else{x[c]=o;var P=x[R],M=_[R];s(u,P,u,o,M),u[o+M]=u[D],M++,_[c]=M,c++,o=o+M+3&-4}c+1==1<<n&&n++}else{if(R>=c)x[c]=o,_[c]=0,c++;else{x[c]=o;var P=x[R],M=_[R];s(u,P,u,o,M),u[o+M]=u[o],M++,_[c]=M,c++,s(u,o,i,b,M),b+=M,o=o+M+3&-4}c+1==1<<n&&n++}R=A}},y.decode._copyData=function(t,r,i,b,v){for(var d=0;d<v;d+=4)i[b+d]=t[r+d],i[b+d+1]=t[r+d+1],i[b+d+2]=t[r+d+2],i[b+d+3]=t[r+d+3]},y.tags={},y.ttypes={256:3,257:3,258:3,259:3,262:3,273:4,274:3,277:3,278:4,279:4,282:5,283:5,284:3,286:5,287:5,296:3,305:2,306:2,338:3,513:4,514:4,34665:4},y._readIFD=function(t,r,i,b,v,d){var l=t.readUshort(r,i);i+=2;var s={};b.push(s),d&&G(" ".repeat(v),b.length-1,">>>----------------");for(var x=0;x<l;x++){var _=t.readUshort(r,i);i+=2;var u=t.readUshort(r,i);i+=2;var c=t.readUint(r,i);i+=4;var o=t.readUint(r,i);i+=4;var n=[];if((u==1||u==7)&&(n=new Uint8Array(r.buffer,c<5?i-4:o,c)),u==2){var w=c<5?i-4:o,g=r[w];g<128?n.push(t.readASCII(r,w,c-1)):n=new Uint8Array(r.buffer,w,c-1)}if(u==3)for(var p=0;p<c;p++)n.push(t.readUshort(r,(c<3?i-4:o)+2*p));if(u==4)for(var p=0;p<c;p++)n.push(t.readUint(r,(c<2?i-4:o)+4*p));if(u==5)for(var p=0;p<c;p++)n.push(t.readUint(r,o+p*8)/t.readUint(r,o+p*8+4));if(u==8)for(var p=0;p<c;p++)n.push(t.readShort(r,(c<3?i-4:o)+2*p));if(u==9)for(var p=0;p<c;p++)n.push(t.readInt(r,(c<2?i-4:o)+4*p));if(u==10)for(var p=0;p<c;p++)n.push(t.readInt(r,o+p*8)/t.readInt(r,o+p*8+4));if(u==11)for(var p=0;p<c;p++)n.push(t.readFloat(r,o+p*4));if(u==12)for(var p=0;p<c;p++)n.push(t.readDouble(r,o+p*8));if(s["t"+_]=n,c!=0&&n.length==0&&G("unknown TIFF tag type: ",u,"num:",c),d&&G(" ".repeat(v),_,u,y.tags[_],n),!(_==330&&s.t272&&s.t272[0]=="DSLR-A100")){if(_==330||_==34665||_==50740&&t.readUshort(r,t.readUint(n,0))<300){for(var E=_==50740?[t.readUint(n,0)]:n,A=[],p=0;p<E.length;p++)y._readIFD(t,r,E[p],A,v+1,d);_==330&&(s.subIFD=A),_==34665&&(s.exifIFD=A[0]),_==50740&&(s.dngPrvt=A[0])}}if(_==37500){var R=n;if(t.readASCII(R,0,5)=="Nikon")s.makerNote=y.decode(R.slice(10).buffer)[0];else if(t.readUshort(r,o)<300){var D=[];y._readIFD(t,r,o,D,v+1,d),s.makerNote=D[0]}}}return d&&G(" ".repeat(v),"<<<---------------"),i},y._writeIFD=function(t,r,i,b){var v=Object.keys(b);t.writeUshort(r,i,v.length),i+=2;for(var d=i+v.length*12+4,l=0;l<v.length;l++){var s=v[l],x=parseInt(s.slice(1)),_=y.ttypes[x];if(_==null)throw new Error("unknown type of tag: "+x);var u=b[s];_==2&&(u=u[0]+"\0");var c=u.length;t.writeUshort(r,i,x),i+=2,t.writeUshort(r,i,_),i+=2,t.writeUint(r,i,c),i+=4;var o=[-1,1,1,2,4,8,0,0,0,0,0,0,8][_]*c,n=i;if(o>4&&(t.writeUint(r,i,d),n=d),_==2&&t.writeASCII(r,n,u),_==3)for(var w=0;w<c;w++)t.writeUshort(r,n+2*w,u[w]);if(_==4)for(var w=0;w<c;w++)t.writeUint(r,n+4*w,u[w]);if(_==5)for(var w=0;w<c;w++)t.writeUint(r,n+8*w,Math.round(u[w]*1e4)),t.writeUint(r,n+8*w+4,1e4);if(_==12)for(var w=0;w<c;w++)t.writeDouble(r,n+8*w,u[w]);o>4&&(o+=o&1,d+=o),i+=4}return[i,d]},y.toRGBA8=function(t){var r=t.width,i=t.height,b=r*i,v=b*4,d=t.data,l=new Uint8Array(b*4),s=t.t262?t.t262[0]:2,x=t.t258?Math.min(32,t.t258[0]):1;if(s==0)for(var _=Math.ceil(x*r/8),u=0;u<i;u++){var c=u*_,o=u*r;if(x==1)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+(n>>3)]>>7-(n&7)&1;l[w]=l[w+1]=l[w+2]=(1-g)*255,l[w+3]=255}if(x==4)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+(n>>1)]>>4-4*(n&1)&15;l[w]=l[w+1]=l[w+2]=(15-g)*17,l[w+3]=255}if(x==8)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+n];l[w]=l[w+1]=l[w+2]=255-g,l[w+3]=255}}else if(s==1)for(var _=Math.ceil(x*r/8),u=0;u<i;u++){var c=u*_,o=u*r;if(x==1)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+(n>>3)]>>7-(n&7)&1;l[w]=l[w+1]=l[w+2]=g*255,l[w+3]=255}if(x==2)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+(n>>2)]>>6-2*(n&3)&3;l[w]=l[w+1]=l[w+2]=g*85,l[w+3]=255}if(x==8)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+n];l[w]=l[w+1]=l[w+2]=g,l[w+3]=255}if(x==16)for(var n=0;n<r;n++){var w=o+n<<2,g=d[c+(2*n+1)];l[w]=l[w+1]=l[w+2]=Math.min(255,g),l[w+3]=255}}else if(s==2){var p=t.t258?t.t258.length:3;if(x==8){if(p==4)for(var n=0;n<v;n++)l[n]=d[n];if(p==3)for(var n=0;n<b;n++){var w=n<<2,E=n*3;l[w]=d[E],l[w+1]=d[E+1],l[w+2]=d[E+2],l[w+3]=255}}else{if(p==4)for(var n=0;n<b;n++){var w=n<<2,E=n*8+1;l[w]=d[E],l[w+1]=d[E+2],l[w+2]=d[E+4],l[w+3]=d[E+6]}if(p==3)for(var n=0;n<b;n++){var w=n<<2,E=n*6+1;l[w]=d[E],l[w+1]=d[E+2],l[w+2]=d[E+4],l[w+3]=255}}}else if(s==3)for(var A=t.t320,n=0;n<b;n++){var w=n<<2,R=d[n];l[w]=A[R]>>8,l[w+1]=A[256+R]>>8,l[w+2]=A[512+R]>>8,l[w+3]=255}else if(s==5)for(var p=t.t258?t.t258.length:4,D=p>4?1:0,n=0;n<b;n++){var w=n<<2,B=n*p,P=255-d[B],M=255-d[B+1],Z=255-d[B+2],H=(255-d[B+3])*(1/255);l[w]=~~(P*H+.5),l[w+1]=~~(M*H+.5),l[w+2]=~~(Z*H+.5),l[w+3]=255*(1-D)+d[B+4]*D}else G("Unknown Photometric interpretation: "+s);return l},y.replaceIMG=function(t){t==null&&(t=document.getElementsByTagName("img"));for(var r=["tif","tiff","dng","cr2","nef"],i=0;i<t.length;i++){var b=t[i],v=b.getAttribute("src");if(v!=null){var d=v.split(".").pop().toLowerCase();if(r.indexOf(d)!=-1){var l=new XMLHttpRequest;y._xhrs.push(l),y._imgs.push(b),l.open("GET",v),l.responseType="arraybuffer",l.onload=y._imgLoaded,l.send()}}}},y._xhrs=[],y._imgs=[],y._imgLoaded=function(t){var r=t.target.response,i=y.decode(r),b=i,v=0,d=b[0];i[0].subIFD&&(b=b.concat(i[0].subIFD));for(var l=0;l<b.length;l++){var o=b[l];if(!(o.t258==null||o.t258.length<3)){var s=o.t256*o.t257;s>v&&(v=s,d=o)}}y.decodeImage(r,d,i);var x=y.toRGBA8(d),_=d.width,u=d.height,c=y._xhrs.indexOf(t.target),o=y._imgs[c];y._xhrs.splice(c,1),y._imgs.splice(c,1);var n=document.createElement("canvas");n.width=_,n.height=u;for(var w=n.getContext("2d"),g=w.createImageData(_,u),l=0;l<x.length;l++)g.data[l]=x[l];w.putImageData(g,0,0),o.setAttribute("src",n.toDataURL())},y._binBE={nextZero:function(t,r){for(;t[r]!=0;)r++;return r},readUshort:function(t,r){return t[r]<<8|t[r+1]},readShort:function(t,r){var i=y._binBE.ui8;return i[0]=t[r+1],i[1]=t[r+0],y._binBE.i16[0]},readInt:function(t,r){var i=y._binBE.ui8;return i[0]=t[r+3],i[1]=t[r+2],i[2]=t[r+1],i[3]=t[r+0],y._binBE.i32[0]},readUint:function(t,r){var i=y._binBE.ui8;return i[0]=t[r+3],i[1]=t[r+2],i[2]=t[r+1],i[3]=t[r+0],y._binBE.ui32[0]},readASCII:function(t,r,i){for(var b="",v=0;v<i;v++)b+=String.fromCharCode(t[r+v]);return b},readFloat:function(t,r){for(var i=y._binBE.ui8,b=0;b<4;b++)i[b]=t[r+3-b];return y._binBE.fl32[0]},readDouble:function(t,r){for(var i=y._binBE.ui8,b=0;b<8;b++)i[b]=t[r+7-b];return y._binBE.fl64[0]},writeUshort:function(t,r,i){t[r]=i>>8&255,t[r+1]=i&255},writeUint:function(t,r,i){t[r]=i>>24&255,t[r+1]=i>>16&255,t[r+2]=i>>8&255,t[r+3]=i>>0&255},writeASCII:function(t,r,i){for(var b=0;b<i.length;b++)t[r+b]=i.charCodeAt(b)},writeDouble:function(t,r,i){y._binBE.fl64[0]=i;for(var b=0;b<8;b++)t[r+b]=y._binBE.ui8[7-b]}},y._binBE.ui8=new Uint8Array(8),y._binBE.i16=new Int16Array(y._binBE.ui8.buffer),y._binBE.i32=new Int32Array(y._binBE.ui8.buffer),y._binBE.ui32=new Uint32Array(y._binBE.ui8.buffer),y._binBE.fl32=new Float32Array(y._binBE.ui8.buffer),y._binBE.fl64=new Float64Array(y._binBE.ui8.buffer),y._binLE={nextZero:y._binBE.nextZero,readUshort:function(t,r){return t[r+1]<<8|t[r]},readShort:function(t,r){var i=y._binBE.ui8;return i[0]=t[r+0],i[1]=t[r+1],y._binBE.i16[0]},readInt:function(t,r){var i=y._binBE.ui8;return i[0]=t[r+0],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],y._binBE.i32[0]},readUint:function(t,r){var i=y._binBE.ui8;return i[0]=t[r+0],i[1]=t[r+1],i[2]=t[r+2],i[3]=t[r+3],y._binBE.ui32[0]},readASCII:y._binBE.readASCII,readFloat:function(t,r){for(var i=y._binBE.ui8,b=0;b<4;b++)i[b]=t[r+b];return y._binBE.fl32[0]},readDouble:function(t,r){for(var i=y._binBE.ui8,b=0;b<8;b++)i[b]=t[r+b];return y._binBE.fl64[0]}},y._copyTile=function(t,r,i,b,v,d,l,s){for(var x=Math.min(r,v-l),_=Math.min(i,d-s),u=0;u<_;u++)for(var c=(s+u)*v+l,o=u*r,n=0;n<x;n++)b[c+n]=t[o+n]},y.LosslessJpegDecode=(function(){function t(v){this.w=v,this.N=0,this._=0,this.G=0}t.prototype={t:function(v){this.N=Math.max(0,Math.min(this.w.length,v))},i:function(){return this.w[this.N++]},l:function(){var v=this.N;return this.N+=2,this.w[v]<<8|this.w[v+1]},J:function(){return this._==0&&(this.G=this.w[this.N],this.N+=1+(this.G+1>>>8),this._=8),this.G>>>--this._&1},Z:function(v){var d=this._,l=this.G,s=Math.min(d,v);v-=s,d-=s;for(var x=l>>>d&(1<<s)-1;v>0;)l=this.w[this.N],this.N+=1+(l+1>>>8),s=Math.min(8,v),v-=s,d=8-s,x<<=s,x|=l>>>d&(1<<s)-1;return this._=d,this.G=l,x}};var r={};r.X=function(){return[0,0,-1]},r.s=function(v,d,l){v[r.Y(v,0,l)+2]=d},r.Y=function(v,d,l){if(v[d+2]!=-1)return 0;if(l==0)return d;for(var s=0;s<2;s++){v[d+s]==0&&(v[d+s]=v.length,v.push(0),v.push(0),v.push(-1));var x=r.Y(v,v[d+s],l-1);if(x!=0)return x}return 0},r.B=function(v,d){for(var l=0,s=0,x=0,_=d._,u=d.G,c=d.N;;)if(_==0&&(u=d.w[c],c+=1+(u+1>>>8),_=8),x=u>>>--_&1,l=v[l+x],s=v[l+2],s!=-1)return d._=_,d.G=u,d.N=c,s;return-1};function i(v){this.z=new t(v),this.D(this.z)}i.prototype={$:function(v,d){this.Q=v.i(),this.F=v.l(),this.o=v.l();var l=this.O=v.i();this.L=[];for(var s=0;s<l;s++){var x=v.i();v.i(),v.i(),this.L[x]=s}v.t(v.N+d-(6+l*3))},e:function(){var v=0,d=this.z.i();this.H==null&&(this.H={});for(var l=this.H[d]=r.X(),s=[],x=0;x<16;x++)s[x]=this.z.i(),v+=s[x];for(var x=0;x<16;x++)for(var _=0;_<s[x];_++)r.s(l,this.z.i(),x+1);return v+17},W:function(v){for(;v>0;)v-=this.e()},p:function(v,d){var l=v.i();this.U||(this.U=[]);for(var s=0;s<l;s++){var x=v.i(),_=v.i();this.U[this.L[x]]=this.H[_>>>4]}this.g=v.i(),v.t(v.N+d-(2+l*2))},D:function(v){var d=!1,l=v.l();if(l===i.q)do{var l=v.l(),s=v.l()-2;switch(l){case i.m:this.$(v,s);break;case i.K:this.W(s);break;case i.V:this.p(v,s),d=!0;break;default:v.t(v.N+s);break}}while(!d)},I:function(v,d){var l=r.B(d,v);if(l==16)return-32768;var s=v.Z(l);return(s&1<<l-1)==0&&(s-=(1<<l)-1),s},B:function(v,d){for(var l=this.z,s=this.O,x=this.F,_=this.I,u=this.g,c=this.o*s,o=this.U,n=0;n<s;n++)v[n]=_(l,o[n])+(1<<this.Q-1);for(var w=s;w<c;w+=s)for(var n=0;n<s;n++)v[w+n]=_(l,o[n])+v[w+n-s];for(var g=d,p=1;p<x;p++){for(var n=0;n<s;n++)v[g+n]=_(l,o[n])+v[g+n-d];for(var w=s;w<c;w+=s)for(var n=0;n<s;n++){var E=g+w+n,A=v[E-s];u==6&&(A=v[E-d]+(A-v[E-s-d]>>>1)),v[E]=A+_(l,o[n])}g+=d}}},i.m=65475,i.K=65476,i.q=65496,i.V=65498;function b(v){var d=new i(v),l=d.Q>8?Uint16Array:Uint8Array,s=new l(d.o*d.F*d.O),x=d.o*d.O;return d.B(s,x),s}return b})()})(ae,ne)})()})(qe)),qe.exports}var M0=T0();const X0=C0(M0),U0=Z0({__proto__:null,default:X0},[M0]);export{U0 as U};
@@ -0,0 +1 @@
1
+ const e={};export{e as default};