diff --git a/.github/workflows/sync-docs.yml b/.github/workflows/sync-docs.yml index 65d3d67..638c7d3 100644 --- a/.github/workflows/sync-docs.yml +++ b/.github/workflows/sync-docs.yml @@ -15,14 +15,17 @@ on: - "apps/docs/scripts/**" - ".github/workflows/sync-docs.yml" +# Least privilege by default; only the auto-commit job elevates to write. permissions: - contents: write + contents: read jobs: pr-check: name: Verify OpenAPI docs are up to date if: github.event_name == 'pull_request' runs-on: ubuntu-latest + permissions: + contents: read steps: - uses: actions/checkout@v4 @@ -46,6 +49,12 @@ jobs: name: Auto-commit OpenAPI docs on main if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest + permissions: + contents: write + # Serialize auto-commits so concurrent merges to main can't race on the push. + concurrency: + group: sync-docs-main + cancel-in-progress: false steps: - uses: actions/checkout@v4 with: diff --git a/.gitignore b/.gitignore index 6628503..9adbbf2 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,10 @@ __pycache__/ .env .env.local .DS_Store + +# Editor state +.idea/ +.vscode/ + +# Local Comcigan debug dump (not a source artifact) +timetable.json diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 5df65ac..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 1713577..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/mogun_api.iml b/.idea/mogun_api.iml deleted file mode 100644 index 5de930b..0000000 --- a/.idea/mogun_api.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index b26f5a9..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - { - "associatedIndex": 3 -} - - - - - - - - - - - - - - - - - - - - 1712942375238 - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 6b76b4f..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "name": "Python Debugger: Current File", - "type": "debugpy", - "request": "launch", - "program": "${file}", - "console": "integratedTerminal" - } - ] -} \ No newline at end of file diff --git a/apps/docs/app/docs/[[...slug]]/page.tsx b/apps/docs/app/docs/[[...slug]]/page.tsx index 53ce219..161ee4b 100644 --- a/apps/docs/app/docs/[[...slug]]/page.tsx +++ b/apps/docs/app/docs/[[...slug]]/page.tsx @@ -29,7 +29,7 @@ export default async function Page(props: PageProps<'/docs/[[...slug]]'>) { diff --git a/apps/docs/openapi/openapi.json b/apps/docs/openapi/openapi.json index 37e508d..3ef2c1c 100644 --- a/apps/docs/openapi/openapi.json +++ b/apps/docs/openapi/openapi.json @@ -701,6 +701,12 @@ }, { "type": "boolean" + }, + { + "type": "array", + "items": { + "type": "string" + } } ] } @@ -712,15 +718,14 @@ "$id": "#/components/schemas/ApiError" }, "SchoolInfoList": { - "minItems": 1, "examples": [ [ { "ATPT_OFCDC_SC_CODE": "B10", "ATPT_OFCDC_SC_NM": "서울특별시교육청", "SD_SCHUL_CODE": "7010208", - "SCHUL_NM": "목운중학교", - "ENG_SCHUL_NM": "Yangchung High School", + "SCHUL_NM": "양정고등학교", + "ENG_SCHUL_NM": "Yangjeong High School", "SCHUL_KND_SC_NM": "고등학교", "LCTN_SC_NM": "서울특별시", "JU_ORG_NM": "서울특별시교육청", @@ -796,14 +801,14 @@ "SCHUL_NM": { "description": "School name", "examples": [ - "목운중학교" + "양정고등학교" ], "type": "string" }, "ENG_SCHUL_NM": { "description": "English school name", "examples": [ - "Yangchung High School" + "Yangjeong High School" ], "type": "string" }, @@ -972,7 +977,6 @@ ], "properties": { "day_time": { - "minItems": 1, "examples": [ [ "09:00", @@ -989,7 +993,6 @@ } }, "timetable": { - "minItems": 1, "examples": [ [ [ @@ -1123,7 +1126,6 @@ "$id": "#/components/schemas/TimetableResponse" }, "MealList": { - "minItems": 1, "examples": [ [ { @@ -1276,7 +1278,6 @@ "$id": "#/components/schemas/MealList" }, "ScheduleList": { - "minItems": 1, "examples": [ [ { diff --git a/packages/client/src/neis/client.ts b/packages/client/src/neis/client.ts index cd03d1c..e6efac9 100644 --- a/packages/client/src/neis/client.ts +++ b/packages/client/src/neis/client.ts @@ -12,12 +12,16 @@ import type { } from "./types.js"; const NEIS_BASE = "https://open.neis.go.kr/hub"; +const DEFAULT_TIMEOUT_MS = 10_000; export interface NeisClientOptions { - /** NEIS Open API key. Uses the public sample key when omitted. */ + /** NEIS Open API key. When omitted, requests are sent anonymously (stricter rate limits apply). */ key?: string; pIndex?: number; + /** Rows per page (NEIS allows up to 1000). Defaults to 1000 to avoid silent truncation. */ pSize?: number; + /** Per-request timeout in milliseconds. Defaults to 10s. */ + timeoutMs?: number; } function extractRows(data: NeisApiResponse, key: string): T[] { @@ -33,11 +37,13 @@ export class NeisClient { private readonly key?: string; private readonly pIndex: number; private readonly pSize: number; + private readonly timeoutMs: number; constructor(options: NeisClientOptions = {}) { this.key = options.key; this.pIndex = options.pIndex ?? 1; - this.pSize = options.pSize ?? 100; + this.pSize = options.pSize ?? 1000; + this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS; } private async request( @@ -58,7 +64,9 @@ export class NeisClient { } const url = `${NEIS_BASE}${endpoint}?${search}`; - const response = await fetch(url); + const response = await fetch(url, { + signal: AbortSignal.timeout(this.timeoutMs), + }); if (!response.ok) { throw new Error(`NEIS HTTP ${response.status}: ${response.statusText}`); diff --git a/packages/client/src/timetable/index.ts b/packages/client/src/timetable/index.ts index a284a71..2709375 100644 --- a/packages/client/src/timetable/index.ts +++ b/packages/client/src/timetable/index.ts @@ -26,6 +26,15 @@ const HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36", }; +const DEFAULT_TIMEOUT_MS = 10_000; + +/** + * The `/st` route/field codes change rarely, so cache them briefly to avoid a + * scrape + parse on every timetable request. TTL keeps us resilient to the + * occasional upstream layout change without a process restart. + */ +const CODE_CACHE_TTL_MS = 5 * 60_000; +let codeCache: { value: ComciganCodes; expiresAt: number } | null = null; interface ComciganCodes { comciganCode: string; @@ -52,7 +61,10 @@ async function fetchText( url: string, encoding?: "euc-kr" | "utf-8", ): Promise { - const response = await fetch(url, { headers: HEADERS }); + const response = await fetch(url, { + headers: HEADERS, + signal: AbortSignal.timeout(DEFAULT_TIMEOUT_MS), + }); if (!response.ok) { throw new TimetableParseError( `Comcigan HTTP ${response.status}: ${response.statusText}`, @@ -66,6 +78,10 @@ async function fetchText( } async function getCode(): Promise { + if (codeCache && codeCache.expiresAt > Date.now()) { + return codeCache.value; + } + const text = await fetchText(`${COMCIGAN_URL}/st`, "euc-kr"); const comciganMatch = text.match(/\.\/[0-9]+\?[0-9]+l/); @@ -86,7 +102,7 @@ async function getCode(): Promise { ); } - return { + const value: ComciganCodes = { comciganCode: comciganMatch[0].slice(1), code0, code1, @@ -95,6 +111,8 @@ async function getCode(): Promise { code4, code5, }; + codeCache = { value, expiresAt: Date.now() + CODE_CACHE_TTL_MS }; + return value; } function encodeSchoolName(schoolName: string): string { @@ -121,6 +139,12 @@ async function resolveComciganSchool( throw new TimetableParseError("Invalid JSON from Comcigan school search"); } + if (!Array.isArray(resp?.학교검색)) { + throw new TimetableParseError( + "Unexpected Comcigan school-search payload (missing 학교검색 list)", + ); + } + if (resp.학교검색.length === 0) { throw new TimetableSchoolNotFoundError(schoolName); } @@ -148,17 +172,32 @@ async function resolveComciganSchool( } function asNumber(value: unknown): number { - if (typeof value === "number") return value; - if (typeof value === "string" && value !== "") return Number(value); + if (typeof value === "number") return Number.isFinite(value) ? value : 0; + if (typeof value === "string" && value !== "") { + const parsed = Number(value); + return Number.isFinite(parsed) ? parsed : 0; + } return 0; } function getMatrix(resp: ComciganResponse, code: string): ComciganMatrix { - return resp[`자료${code}`] as ComciganMatrix; + const field = resp[`자료${code}`]; + if (!Array.isArray(field)) { + throw new TimetableParseError( + `Comcigan response missing expected matrix field 자료${code}`, + ); + } + return field as ComciganMatrix; } function getStringList(resp: ComciganResponse, code: string): string[] { - return [...(resp[`자료${code}`] as string[])]; + const field = resp[`자료${code}`]; + if (!Array.isArray(field)) { + throw new TimetableParseError( + `Comcigan response missing expected list field 자료${code}`, + ); + } + return [...(field as string[])]; } /** @@ -246,7 +285,7 @@ export async function fetchTimeTable( dayPeriodCount < period ? 0 : asNumber(dayCells?.[period] ?? 0); const subjectIndex = Math.floor(periodNum / 1000); - const teacherIndex = periodNum % 100; + const teacherIndex = periodNum % 1000; const entry: TimeTableData = { period, @@ -260,7 +299,7 @@ export async function fetchTimeTable( entry.original = { period, subject: subList[Math.floor(originalPeriod / 1000)] ?? "", - teacher: teacherList[originalPeriod % 100] ?? "", + teacher: teacherList[originalPeriod % 1000] ?? "", }; } @@ -271,7 +310,7 @@ export async function fetchTimeTable( } } - const homeroomRaw = structuredClone(resp.담임) as number[][]; + const homeroomRaw = (resp.담임 ?? []) as number[][]; const homeroomStrings: string[][] = []; for (let g = 0; g < homeroomRaw.length; g += 1) { diff --git a/src/app.ts b/src/app.ts index 97ab0b6..cfb3865 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,13 +1,9 @@ import { cors } from "@elysiajs/cors"; import { openapi } from "@elysiajs/openapi"; import { openApiPluginConfig } from "./openapi-config.js"; -import { - fetchTimeTable, - NeisClient, - Neispy, -} from "@timeforschool/client"; +import { fetchTimeTable } from "@timeforschool/client"; import { Elysia, type Static, t } from "elysia"; -import { CORS_ORIGINS, NEIS_API_KEY } from "./config.js"; +import { API_VERSION, CORS_ORIGINS } from "./config.js"; import { ApiError, ErrorCode } from "./errors/api-error.js"; import { ApiErrorSchema, @@ -27,6 +23,7 @@ import { } from "./schemas/responses.js"; import { assertSingleSchoolParam, + createNeisClient, lookupSchoolNameByCode, requireSchoolParam, resolveSchool, @@ -34,20 +31,20 @@ import { import { omitNullsFromRows } from "./utils/json.js"; const REMOVE_PAREN_PATTERN = /\([^)]*\)/g; +const BR_TAG_PATTERN = /\s*/g; const ClassListSchema = t.Array(t.String({ examples: ["1", "2", "3"] })); -function handleRoute(fn: () => Promise): Promise { - return fn().catch((error) => { - throw ApiError.fromUnknown(error); - }); +/** Korean academic year starts in March; Jan/Feb belong to the previous year. */ +function currentAcademicYear(now = new Date()): string { + const year = now.getFullYear(); + return String(now.getMonth() + 1 < 3 ? year - 1 : year); } export const app = new Elysia({ name: "timeforschool" }) .use( cors({ origin: CORS_ORIGINS, - credentials: true, }), ) .use(openapi(openApiPluginConfig)) @@ -85,7 +82,7 @@ export const app = new Elysia({ name: "timeforschool" }) "/", () => ({ name: "TimeForSchool", - version: "0.0.1", + version: API_VERSION, docs: "/docs", openapi: "/docs/json", }), @@ -102,13 +99,11 @@ export const app = new Elysia({ name: "timeforschool" }) ) .get( "/school", - ({ query }) => - handleRoute(async () => { - requireSchoolParam(query); - const client = new NeisClient({ key: NEIS_API_KEY }); - const schools = await client.schoolInfo({ SCHUL_NM: query.schoolname! }); - return omitNullsFromRows(schools) as Static; - }), + async ({ query }) => { + const client = createNeisClient(); + const schools = await client.schoolInfo({ SCHUL_NM: query.schoolname }); + return omitNullsFromRows(schools) as Static; + }, { query: t.Object({ schoolname: SchoolName, @@ -129,28 +124,33 @@ export const app = new Elysia({ name: "timeforschool" }) ) .get( "/classes", - ({ query }) => - handleRoute(async () => { - assertSingleSchoolParam(query); - requireSchoolParam(query); + async ({ query }) => { + assertSingleSchoolParam(query); + requireSchoolParam(query); - const school = await resolveSchool(query); - const client = new Neispy({ key: NEIS_API_KEY }); - const classRows = await client.classInfo({ - ATPT_OFCDC_SC_CODE: school.ATPT_OFCDC_SC_CODE, - SD_SCHUL_CODE: school.SD_SCHUL_CODE, - GRADE: String(query.grade), - }); + const school = await resolveSchool(query); + const client = createNeisClient(); + const classRows = await client.classInfo({ + ATPT_OFCDC_SC_CODE: school.ATPT_OFCDC_SC_CODE, + SD_SCHUL_CODE: school.SD_SCHUL_CODE, + AY: currentAcademicYear(), + GRADE: String(query.grade), + }); - return [...new Set(classRows.map((row) => row.CLASS_NM))].sort( - (a, b) => { - const ai = Number.parseInt(a, 10); - const bi = Number.parseInt(b, 10); - if (Number.isNaN(ai) || Number.isNaN(bi)) return 0; - return ai - bi; - }, - ); - }), + return [...new Set(classRows.map((row) => row.CLASS_NM))].sort((a, b) => { + const ai = Number.parseInt(a, 10); + const bi = Number.parseInt(b, 10); + const aNum = Number.isNaN(ai); + const bNum = Number.isNaN(bi); + // Numeric class names sort ascending; non-numeric names sort after, + // then lexicographically — a total order so results are stable. + if (aNum && bNum) return a.localeCompare(b); + if (aNum) return 1; + if (bNum) return -1; + if (ai !== bi) return ai - bi; + return a.localeCompare(b); + }); + }, { query: t.Composite([ SchoolQuery, @@ -174,61 +174,44 @@ export const app = new Elysia({ name: "timeforschool" }) ) .get( "/timetable", - ({ query }) => - handleRoute(async () => { - const schoolname = - typeof query.schoolname === "string" ? query.schoolname : undefined; - const schoolcode = - typeof query.schoolcode === "string" ? query.schoolcode : undefined; - assertSingleSchoolParam({ schoolname, schoolcode }); + async ({ query }) => { + const { schoolname, schoolcode } = query; + assertSingleSchoolParam({ schoolname, schoolcode }); - const grade = Number(query.grade); - const classno = Number(query.classno); - const week = Number(query.week ?? 0); + const grade = query.grade; + const classno = query.classno; + const week = query.week ?? 0; - if (!Number.isInteger(grade) || grade < 1) { - throw ApiError.validation("grade must be a positive integer.", { - grade: query.grade, - }); - } - if (!Number.isInteger(classno) || classno < 1) { - throw ApiError.validation("classno must be a positive integer.", { - classno: query.classno, - }); - } - - let schoolName = schoolname; - const schoolCodeParam = schoolcode; - - if (!schoolName) { - if (!schoolCodeParam) { - throw ApiError.missingSchoolIdentifier(); - } - schoolName = await lookupSchoolNameByCode(schoolCodeParam); + let schoolName = schoolname; + if (!schoolName) { + if (!schoolcode) { + throw ApiError.missingSchoolIdentifier(); } + schoolName = await lookupSchoolNameByCode(schoolcode); + } - const timetable = await fetchTimeTable({ - schoolName, - schoolCode: schoolCodeParam ? Number(schoolCodeParam) : undefined, - weekNum: week, - }); + const timetable = await fetchTimeTable({ + schoolName, + schoolCode: schoolcode ? Number(schoolcode) : undefined, + weekNum: week, + }); - const weekDays = timetable.timetable[grade]?.[classno]?.slice(1); - if (!weekDays?.length) { - throw new ApiError( - ErrorCode.TIMETABLE_INVALID_GRADE_CLASS, - 404, - "No timetable found for this grade and class.", - { grade, classno, schoolname: schoolName }, - ); - } + const weekDays = timetable.timetable[grade]?.[classno]?.slice(1); + if (!weekDays?.length) { + throw new ApiError( + ErrorCode.TIMETABLE_INVALID_GRADE_CLASS, + 404, + "No timetable found for this grade and class.", + { grade, classno, schoolname: schoolName }, + ); + } - return { - day_time: timetable.dayTime, - timetable: weekDays, - update_date: timetable.updateDate, - } as Static; - }), + return { + day_time: timetable.dayTime, + timetable: weekDays, + update_date: timetable.updateDate, + } as Static; + }, { query: t.Composite([ SchoolQuery, @@ -255,38 +238,38 @@ export const app = new Elysia({ name: "timeforschool" }) ) .get( "/lunch", - ({ query }) => - handleRoute(async () => { - assertSingleSchoolParam(query); - requireSchoolParam(query); + async ({ query }) => { + assertSingleSchoolParam(query); + requireSchoolParam(query); - const school = await resolveSchool(query); - const client = new Neispy({ key: NEIS_API_KEY }); - const meals = await client.mealServiceDietInfo({ - ATPT_OFCDC_SC_CODE: school.ATPT_OFCDC_SC_CODE, - SD_SCHUL_CODE: school.SD_SCHUL_CODE, - MLSV_FROM_YMD: query.startdate, - MLSV_TO_YMD: query.enddate, - }); + const school = await resolveSchool(query); + const client = createNeisClient(); + const meals = await client.mealServiceDietInfo({ + ATPT_OFCDC_SC_CODE: school.ATPT_OFCDC_SC_CODE, + SD_SCHUL_CODE: school.SD_SCHUL_CODE, + MLSV_FROM_YMD: query.startdate, + MLSV_TO_YMD: query.enddate, + }); - if (meals.length === 0) { - throw ApiError.neisDataNotFound({ - endpoint: "mealServiceDietInfo", - startdate: query.startdate, - enddate: query.enddate, - schoolname: school.SCHUL_NM, - }); - } + if (meals.length === 0) { + throw ApiError.neisDataNotFound({ + endpoint: "mealServiceDietInfo", + startdate: query.startdate, + enddate: query.enddate, + schoolname: school.SCHUL_NM, + }); + } - return omitNullsFromRows( - meals.map((item) => ({ - ...item, - DDISH_NM: item.DDISH_NM.replace(REMOVE_PAREN_PATTERN, "") - .replaceAll("
", "\n") - .replaceAll("
", "\n"), - })), - ) as Static; - }), + return omitNullsFromRows( + meals.map((item) => ({ + ...item, + DDISH_NM: item.DDISH_NM.replace(REMOVE_PAREN_PATTERN, "").replace( + BR_TAG_PATTERN, + "\n", + ), + })), + ) as Static; + }, { query: t.Composite([ SchoolQuery, @@ -311,31 +294,30 @@ export const app = new Elysia({ name: "timeforschool" }) ) .get( "/schedule", - ({ query }) => - handleRoute(async () => { - assertSingleSchoolParam(query); - requireSchoolParam(query); + async ({ query }) => { + assertSingleSchoolParam(query); + requireSchoolParam(query); - const school = await resolveSchool(query); - const client = new Neispy({ key: NEIS_API_KEY }); - const rows = await client.schoolSchedule({ - ATPT_OFCDC_SC_CODE: school.ATPT_OFCDC_SC_CODE, - SD_SCHUL_CODE: school.SD_SCHUL_CODE, - AA_FROM_YMD: query.startdate, - AA_TO_YMD: query.enddate, - }); + const school = await resolveSchool(query); + const client = createNeisClient(); + const rows = await client.schoolSchedule({ + ATPT_OFCDC_SC_CODE: school.ATPT_OFCDC_SC_CODE, + SD_SCHUL_CODE: school.SD_SCHUL_CODE, + AA_FROM_YMD: query.startdate, + AA_TO_YMD: query.enddate, + }); - if (rows.length === 0) { - throw ApiError.neisDataNotFound({ - endpoint: "SchoolSchedule", - startdate: query.startdate, - enddate: query.enddate, - schoolname: school.SCHUL_NM, - }); - } + if (rows.length === 0) { + throw ApiError.neisDataNotFound({ + endpoint: "SchoolSchedule", + startdate: query.startdate, + enddate: query.enddate, + schoolname: school.SCHUL_NM, + }); + } - return omitNullsFromRows(rows) as Static; - }), + return omitNullsFromRows(rows) as Static; + }, { query: t.Composite([ SchoolQuery, diff --git a/src/config.ts b/src/config.ts index 892643d..4074f62 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,7 +1,21 @@ export const NEIS_API_KEY = process.env.NEIS_API_KEY ?? "64db83c20c8a4f66b54ac8637b1d044f"; -export const CORS_ORIGINS = [ +/** Kept in sync with package.json; surfaced on `GET /` and in the OpenAPI info. */ +export const API_VERSION = "0.0.1"; + +const DEFAULT_CORS_ORIGINS = [ "https://timetable.injoon5.com", + "https://docs.timefor.school", "http://localhost:3000", ]; + +/** + * Comma-separated `CORS_ORIGINS` env var overrides the defaults when set, + * so new frontends/preview domains don't require a code change. + */ +export const CORS_ORIGINS = process.env.CORS_ORIGINS + ? process.env.CORS_ORIGINS.split(",") + .map((origin) => origin.trim()) + .filter(Boolean) + : DEFAULT_CORS_ORIGINS; diff --git a/src/errors/api-error.ts b/src/errors/api-error.ts index ba800a5..27937ca 100644 --- a/src/errors/api-error.ts +++ b/src/errors/api-error.ts @@ -151,18 +151,14 @@ export class ApiError extends Error { }); } - const message = - error instanceof Error ? error.message : "An unexpected error occurred."; + // Unknown/unmapped errors may carry internal details (paths, dependency + // internals). Log the real error server-side; return a generic message. + console.error("Unhandled error:", error); - return new ApiError(ErrorCode.INTERNAL, 500, message); + return new ApiError( + ErrorCode.INTERNAL, + 500, + "An unexpected error occurred.", + ); } } - -export function isApiErrorBody(body: unknown): body is ApiErrorBody { - return ( - typeof body === "object" && - body !== null && - (body as ApiErrorBody).ok === false && - typeof (body as ApiErrorBody).error?.code === "string" - ); -} diff --git a/src/openapi-config.ts b/src/openapi-config.ts index ba21aed..bd35e8b 100644 --- a/src/openapi-config.ts +++ b/src/openapi-config.ts @@ -1,3 +1,5 @@ +import { API_VERSION } from "./config.js"; + const API_DESCRIPTION = ` TimeForSchool wraps the Korean **NEIS Open API** (school info, classes, meals, calendar) and **Comcigan** (weekly class timetables). @@ -27,7 +29,7 @@ export const openApiPluginConfig = { documentation: { info: { title: "TimeForSchool API", - version: "0.0.1", + version: API_VERSION, description: API_DESCRIPTION, }, tags: [ diff --git a/src/schemas/common.ts b/src/schemas/common.ts index f65091d..1b9e4f7 100644 --- a/src/schemas/common.ts +++ b/src/schemas/common.ts @@ -60,7 +60,15 @@ export const ApiErrorSchema = t.Object({ code: t.String(), message: t.String(), details: t.Optional( - t.Record(t.String(), t.Union([t.String(), t.Number(), t.Boolean()])), + t.Record( + t.String(), + t.Union([ + t.String(), + t.Number(), + t.Boolean(), + t.Array(t.String()), + ]), + ), ), }), }); diff --git a/src/schemas/responses.ts b/src/schemas/responses.ts index fa7aa60..d983706 100644 --- a/src/schemas/responses.ts +++ b/src/schemas/responses.ts @@ -20,8 +20,8 @@ export const SchoolInfoRowSchema = t.Object( ATPT_OFCDC_SC_CODE: neisString("Office of education code", "B10"), ATPT_OFCDC_SC_NM: neisString("Office of education name", "서울특별시교육청"), SD_SCHUL_CODE: neisString("School code", "7010208"), - SCHUL_NM: neisString("School name", "목운중학교"), - ENG_SCHUL_NM: neisString("English school name", "Yangchung High School"), + SCHUL_NM: neisString("School name", "양정고등학교"), + ENG_SCHUL_NM: neisString("English school name", "Yangjeong High School"), SCHUL_KND_SC_NM: neisString("School kind", "고등학교"), LCTN_SC_NM: neisString("Location", "서울특별시"), JU_ORG_NM: neisString("Administrative organization", "서울특별시교육청"), @@ -50,15 +50,14 @@ export const SchoolInfoRowSchema = t.Object( ); export const SchoolInfoListSchema = t.Array(SchoolInfoRowSchema, { - minItems: 1, examples: [ [ { ATPT_OFCDC_SC_CODE: "B10", ATPT_OFCDC_SC_NM: "서울특별시교육청", SD_SCHUL_CODE: "7010208", - SCHUL_NM: "목운중학교", - ENG_SCHUL_NM: "Yangchung High School", + SCHUL_NM: "양정고등학교", + ENG_SCHUL_NM: "Yangjeong High School", SCHUL_KND_SC_NM: "고등학교", LCTN_SC_NM: "서울특별시", JU_ORG_NM: "서울특별시교육청", @@ -106,7 +105,6 @@ export const MealRowSchema = t.Object( ); export const MealListSchema = t.Array(MealRowSchema, { - minItems: 1, examples: [ [ { @@ -155,7 +153,6 @@ export const ScheduleRowSchema = t.Object( ); export const ScheduleListSchema = t.Array(ScheduleRowSchema, { - minItems: 1, examples: [ [ { @@ -205,11 +202,9 @@ export const TimetablePeriodSchema = t.Object({ export const TimetableResponseSchema = t.Object({ day_time: t.Array(t.String({ examples: ["09:00"] }), { - minItems: 1, examples: [["09:00", "09:50", "10:00"]], }), timetable: t.Array(t.Array(TimetablePeriodSchema), { - minItems: 1, examples: [ [ [ diff --git a/src/services/school.ts b/src/services/school.ts index 77247e4..994c8b8 100644 --- a/src/services/school.ts +++ b/src/services/school.ts @@ -7,7 +7,8 @@ export interface SchoolIdentifier { schoolcode?: string; } -function neis() { +/** Single place that constructs a NEIS client, so config/options stay consistent. */ +export function createNeisClient(): NeisClient { return new NeisClient({ key: NEIS_API_KEY }); } @@ -35,7 +36,7 @@ export async function resolveSchool( assertSingleSchoolParam(params); requireSchoolParam(params); - const client = neis(); + const client = createNeisClient(); const rows = params.schoolname ? await client.schoolInfo({ SCHUL_NM: params.schoolname }) : await client.schoolInfo({ SD_SCHUL_CODE: params.schoolcode! }); diff --git a/timetable.json b/timetable.json deleted file mode 100644 index 4afd78f..0000000 --- a/timetable.json +++ /dev/null @@ -1,10089 +0,0 @@ -{ - "교사수": 86, - "자료446": [ - "*", - "김성*", - "김지*", - "허은*", - "노지*", - "성난*", - "안나*", - "민시*", - "김지*", - "김흥*", - "조은*", - "이은*", - "안상*", - "박한*", - "박진*", - "황종*", - "박희*", - "이진*", - "정지*", - "송화*", - "이선*", - "정지*", - "이소*", - "박초*", - "황수*", - "권도*", - "이수*", - "강명*", - "장유*", - "이승*", - "고소*", - "정다*", - "권선*", - "이신*", - "임지*", - "손지*", - "정선*", - "조민*", - "권은*", - "오수*", - "유혜*", - "구재*", - "왕의*", - "박지*", - "전소*", - "오진*", - "장희*", - "이도*", - "배인*", - "이수*", - "김보*", - "류승*", - "박종*", - "박효*", - "최석*", - "정유*", - "김순*", - "주지*", - "권정*", - "한동*", - "정희*", - "이동*", - "김희*", - "진승*", - "노혜*", - "고은*", - "이주*", - "이은*", - "방은*", - "이시*", - "김희*", - "이주*", - "우아*", - "정은*", - "김지*", - "최원*", - "홍유*", - "조현*", - "최선*", - "손영*", - "이은*", - "은성*", - "김재*", - "임예*", - "한광*", - "황윤*", - "최인*" - ], - "학급수": [ - 45, - 15, - 15, - 15 - ], - "요일별시수": [ - [], - [ - 0, - 6, - 7, - 7, - 6, - 6, - 0 - ], - [ - 0, - 6, - 7, - 7, - 6, - 6, - 0 - ], - [ - 0, - 6, - 7, - 7, - 6, - 6, - 0 - ] - ], - "자료492": [ - 24, - "국어", - "독서", - "주제1", - "수학", - "창체", - "영어", - "주제2", - "역사", - "사회", - "도덕", - "창체", - "과1", - "과2", - "체육", - "스포츠", - "음악", - "미술", - "중국어", - "한문", - "가정", - "기술", - "주제3", - "정보", - "진로" - ], - "자료481": [ - 3, - [ - 15, - [ - 5, - [ - 6, - 16065, - 4020, - 3003, - 3003, - 12042, - 14052 - ], - [ - 7, - 6021, - 1001, - 12042, - 14052, - 19073, - 4012, - 21078 - ], - [ - 7, - 9036, - 15059, - 20080, - 1001, - 4012, - 7023, - 7023 - ], - [ - 6, - 13043, - 9036, - 4012, - 1001, - 22080, - 16065 - ], - [ - 6, - 10041, - 24085, - 9036, - 14052, - 6021, - 21078 - ] - ], - [ - 5, - [ - 6, - 20080, - 9036, - 3001, - 3001, - 16065, - 4012 - ], - [ - 7, - 12042, - 4012, - 21078, - 6021, - 1001, - 9036, - 10041 - ], - [ - 7, - 4012, - 1001, - 15059, - 12042, - 14052, - 7021, - 7021 - ], - [ - 6, - 19073, - 1001, - 14052, - 16065, - 24085, - 21078 - ], - [ - 6, - 6021, - 14052, - 4012, - 22080, - 13043, - 9036 - ] - ], - [ - 5, - [ - 6, - 12042, - 4012, - 3002, - 3002, - 14052, - 16065 - ], - [ - 7, - 1001, - 19073, - 9036, - 4012, - 14052, - 24085, - 20080 - ], - [ - 7, - 15059, - 9036, - 6021, - 21078, - 13043, - 7022, - 7022 - ], - [ - 6, - 1001, - 12042, - 10041, - 14052, - 6021, - 4012 - ], - [ - 6, - 4012, - 21078, - 1001, - 16065, - 9036, - 22080 - ] - ], - [ - 5, - [ - 6, - 21078, - 14052, - 3041, - 3041, - 4012, - 13043 - ], - [ - 7, - 15059, - 21078, - 1002, - 9036, - 24086, - 6021, - 4012 - ], - [ - 7, - 20080, - 12042, - 16065, - 4012, - 9036, - 7073, - 7073 - ], - [ - 6, - 14052, - 4012, - 1002, - 9036, - 19073, - 6021 - ], - [ - 6, - 22080, - 16065, - 12042, - 1002, - 10041, - 14052 - ] - ], - [ - 5, - [ - 6, - 14052, - 20080, - 3039, - 3039, - 9036, - 4013 - ], - [ - 7, - 1002, - 22080, - 15059, - 16065, - 21078, - 13043, - 4013 - ], - [ - 7, - 6021, - 4013, - 1002, - 9036, - 12042, - 7075, - 7075 - ], - [ - 6, - 1002, - 6021, - 16065, - 12042, - 14052, - 9036 - ], - [ - 6, - 14052, - 19074, - 4013, - 21078, - 24086, - 10041 - ] - ], - [ - 5, - [ - 6, - 9036, - 16065, - 19074, - 4013, - 7023, - 7023 - ], - [ - 7, - 12043, - 4013, - 6021, - 15059, - 20080, - 14053, - 9036 - ], - [ - 7, - 4013, - 1002, - 24086, - 14053, - 21078, - 3003, - 3003 - ], - [ - 6, - 16065, - 22080, - 21078, - 1002, - 12043, - 4013 - ], - [ - 6, - 9036, - 1002, - 10041, - 6021, - 14053, - 13044 - ] - ], - [ - 5, - [ - 6, - 4013, - 9037, - 13044, - 14053, - 7021, - 7021 - ], - [ - 7, - 10041, - 24086, - 12043, - 22080, - 9037, - 1002, - 6023 - ], - [ - 7, - 21078, - 16065, - 19074, - 15059, - 4013, - 3001, - 3001 - ], - [ - 6, - 21078, - 14053, - 4013, - 9037, - 6023, - 1002 - ], - [ - 6, - 1002, - 14053, - 20080, - 12043, - 16065, - 4013 - ] - ], - [ - 5, - [ - 6, - 14053, - 4013, - 9037, - 16066, - 7022, - 7022 - ], - [ - 7, - 24084, - 15059, - 1003, - 13044, - 4013, - 21079, - 19073 - ], - [ - 7, - 1003, - 10041, - 12043, - 9037, - 20080, - 3002, - 3002 - ], - [ - 6, - 4013, - 6023, - 21079, - 22080, - 1003, - 14053 - ], - [ - 6, - 6023, - 12043, - 14053, - 9037, - 4013, - 16066 - ] - ], - [ - 5, - [ - 6, - 13044, - 21079, - 14053, - 12043, - 7073, - 7073 - ], - [ - 7, - 6023, - 9037, - 4013, - 12043, - 1003, - 16066, - 14053 - ], - [ - 7, - 9037, - 16066, - 4013, - 15060, - 24084, - 3041, - 3041 - ], - [ - 6, - 20081, - 9037, - 14053, - 4013, - 10041, - 1003 - ], - [ - 6, - 21079, - 22081, - 1003, - 19073, - 6023, - 4020 - ] - ], - [ - 5, - [ - 6, - 16066, - 24084, - 4014, - 14051, - 7075, - 7075 - ], - [ - 7, - 19073, - 15060, - 20081, - 9037, - 6022, - 1003, - 14051 - ], - [ - 7, - 21079, - 12043, - 9037, - 10041, - 4014, - 3039, - 3039 - ], - [ - 6, - 16066, - 1003, - 4020, - 12043, - 14051, - 21079 - ], - [ - 6, - 9037, - 13044, - 4014, - 22081, - 6022, - 1003 - ] - ], - [ - 5, - [ - 6, - 21079, - 12042, - 7023, - 7023, - 3003, - 3003 - ], - [ - 7, - 1003, - 6022, - 10041, - 16066, - 4014, - 9037, - 24084 - ], - [ - 7, - 4014, - 15060, - 13044, - 22081, - 21079, - 9037, - 14051 - ], - [ - 6, - 14051, - 20081, - 1003, - 6022, - 9037, - 4015 - ], - [ - 6, - 16066, - 12042, - 19073, - 1003, - 14051, - 4014 - ] - ], - [ - 5, - [ - 6, - 20081, - 16066, - 7021, - 7021, - 3001, - 3001 - ], - [ - 7, - 1004, - 21079, - 15060, - 10041, - 14051, - 12042, - 4014 - ], - [ - 7, - 1004, - 19073, - 9035, - 6022, - 16066, - 13044, - 4014 - ], - [ - 6, - 9035, - 21079, - 1004, - 14051, - 4014, - 6022 - ], - [ - 6, - 24084, - 4014, - 9035, - 14051, - 22081, - 12042 - ] - ], - [ - 5, - [ - 6, - 4014, - 10038, - 7022, - 7022, - 3002, - 3002 - ], - [ - 7, - 6022, - 4014, - 1004, - 9035, - 13044, - 16065, - 21079 - ], - [ - 7, - 22081, - 1004, - 15060, - 4014, - 14051, - 16065, - 12042 - ], - [ - 6, - 1004, - 4014, - 24084, - 20081, - 9035, - 14051 - ], - [ - 6, - 19073, - 9035, - 6022, - 21079, - 12042, - 14051 - ] - ], - [ - 5, - [ - 6, - 9035, - 1004, - 7073, - 7073, - 3041, - 3041 - ], - [ - 7, - 15060, - 16065, - 9035, - 4014, - 10038, - 14051, - 12042 - ], - [ - 7, - 6022, - 4014, - 1004, - 21079, - 16065, - 22081, - 9035 - ], - [ - 6, - 6022, - 14051, - 4014, - 13044, - 12042, - 20081 - ], - [ - 6, - 14051, - 21079, - 1004, - 4014, - 24084, - 19073 - ] - ], - [ - 5, - [ - 6, - 4012, - 14051, - 7075, - 7075, - 3039, - 3039 - ], - [ - 7, - 10038, - 1004, - 21079, - 12042, - 24084, - 20081, - 16065 - ], - [ - 7, - 15060, - 21079, - 22081, - 9035, - 4020, - 14051, - 13044 - ], - [ - 6, - 12042, - 1004, - 6022, - 19073, - 4012, - 9035 - ], - [ - 6, - 16065, - 1004, - 14051, - 4012, - 9035, - 6022 - ] - ] - ], - [ - 15, - [ - 5, - [ - 6, - 20076, - 1005, - 10038, - 5014, - 17069, - 17069 - ], - [ - 7, - 8029, - 13044, - 21077, - 4016, - 1005, - 12047, - 6024 - ], - [ - 7, - 1005, - 23083, - 8029, - 15061, - 6024, - 10038, - 14054 - ], - [ - 6, - 13044, - 14054, - 6024, - 10038, - 4016, - 20076 - ], - [ - 6, - 4016, - 12047, - 8029, - 21077, - 2005, - 14054 - ] - ], - [ - 5, - [ - 6, - 4016, - 23083, - 8029, - 20076, - 14054, - 13044 - ], - [ - 7, - 6024, - 15061, - 5018, - 10038, - 21077, - 14054, - 12047 - ], - [ - 7, - 20076, - 10038, - 1005, - 6024, - 12047, - 4016, - 8029 - ], - [ - 6, - 8029, - 21077, - 1005, - 4016, - 13044, - 6024 - ], - [ - 6, - 2001, - 1005, - 14054, - 10038, - 17069, - 17069 - ] - ], - [ - 5, - [ - 6, - 8029, - 1006, - 14054, - 12047, - 6024, - 10038 - ], - [ - 7, - 12047, - 21077, - 4016, - 15061, - 2002, - 17069, - 17069 - ], - [ - 7, - 21077, - 6024, - 4016, - 13044, - 1006, - 8029, - 10038 - ], - [ - 6, - 10038, - 13044, - 14054, - 8029, - 20076, - 1006 - ], - [ - 6, - 6024, - 4016, - 20076, - 14054, - 23083, - 11040 - ] - ], - [ - 5, - [ - 6, - 21077, - 4016, - 6024, - 13050, - 10038, - 8029 - ], - [ - 7, - 1006, - 6024, - 15061, - 23083, - 14054, - 4016, - 20076 - ], - [ - 7, - 1006, - 4016, - 12047, - 10038, - 11040, - 17069, - 17069 - ], - [ - 6, - 6024, - 2006, - 13050, - 21077, - 8029, - 14054 - ], - [ - 6, - 14054, - 1006, - 10038, - 20076, - 8029, - 12047 - ] - ], - [ - 5, - [ - 6, - 17069, - 17069, - 4019, - 20081, - 12047, - 14054 - ], - [ - 7, - 4019, - 10038, - 1006, - 6024, - 20081, - 8030, - 14054 - ], - [ - 7, - 11053, - 1006, - 15061, - 8030, - 14054, - 12047, - 21077 - ], - [ - 6, - 2006, - 23083, - 10038, - 13050, - 6024, - 8030 - ], - [ - 6, - 21077, - 13050, - 1006, - 6024, - 4019, - 10038 - ] - ], - [ - 5, - [ - 6, - 14054, - 6024, - 1006, - 8029, - 20081, - 13046 - ], - [ - 7, - 15061, - 20081, - 11053, - 10039, - 8029, - 4019, - 1006 - ], - [ - 7, - 4019, - 12045, - 10039, - 2006, - 21077, - 14054, - 6024 - ], - [ - 6, - 17069, - 17069, - 13046, - 1006, - 14054, - 4019 - ], - [ - 6, - 23083, - 8029, - 6024, - 12045, - 21077, - 10039 - ] - ], - [ - 5, - [ - 6, - 12045, - 6025, - 8030, - 21077, - 1006, - 4019 - ], - [ - 7, - 10039, - 23083, - 4019, - 1006, - 11053, - 14055, - 12045 - ], - [ - 7, - 15061, - 13046, - 21077, - 10039, - 4019, - 14055, - 2006 - ], - [ - 6, - 8030, - 6025, - 10039, - 14055, - 13046, - 20082 - ], - [ - 6, - 17069, - 17069, - 20082, - 6025, - 1006, - 8030 - ] - ], - [ - 5, - [ - 6, - 1005, - 4015, - 14055, - 6025, - 13046, - 21077 - ], - [ - 7, - 8030, - 1005, - 17069, - 17069, - 20082, - 10039, - 13046 - ], - [ - 7, - 8030, - 15061, - 6025, - 2003, - 14055, - 23083, - 4015 - ], - [ - 6, - 10039, - 12045, - 4015, - 1005, - 21077, - 6025 - ], - [ - 6, - 12045, - 14055, - 11077, - 8030, - 10039, - 20082 - ] - ], - [ - 5, - [ - 6, - 14055, - 8030, - 2004, - 23083, - 21078, - 6025 - ], - [ - 7, - 1005, - 10039, - 15062, - 13046, - 14055, - 4015, - 6025 - ], - [ - 7, - 20082, - 21078, - 17069, - 17069, - 1005, - 12045, - 8030 - ], - [ - 6, - 4015, - 20082, - 8030, - 12045, - 10039, - 13046 - ], - [ - 6, - 14055, - 4015, - 10039, - 1005, - 11079, - 6025 - ] - ], - [ - 5, - [ - 6, - 4015, - 10040, - 21078, - 1005, - 8030, - 14055 - ], - [ - 7, - 10040, - 12045, - 8030, - 20082, - 4015, - 6025, - 1005 - ], - [ - 7, - 6025, - 20082, - 12045, - 15062, - 23083, - 1005, - 14055 - ], - [ - 6, - 13046, - 10040, - 14055, - 21078, - 17069, - 17069 - ], - [ - 6, - 2004, - 11083, - 8030, - 4015, - 6025, - 13046 - ] - ], - [ - 5, - [ - 6, - 17070, - 17070, - 20082, - 2007, - 14055, - 12045 - ], - [ - 7, - 1007, - 6025, - 4015, - 10040, - 21076, - 11083, - 8031 - ], - [ - 7, - 15062, - 4015, - 13046, - 6025, - 21076, - 10040, - 1007 - ], - [ - 6, - 12045, - 8031, - 1007, - 6025, - 10040, - 14055 - ], - [ - 6, - 13046, - 20082, - 8031, - 23083, - 14055, - 4015 - ] - ], - [ - 5, - [ - 6, - 20082, - 13046, - 1007, - 14055, - 11083, - 4015 - ], - [ - 7, - 4015, - 21076, - 6025, - 12045, - 8031, - 1007, - 20082 - ], - [ - 7, - 2007, - 10040, - 15062, - 4015, - 13046, - 6025, - 8031 - ], - [ - 6, - 14055, - 21076, - 23083, - 10040, - 17070, - 17070 - ], - [ - 6, - 1007, - 10040, - 6025, - 14055, - 12045, - 8031 - ] - ], - [ - 5, - [ - 6, - 11083, - 12045, - 10040, - 20082, - 4015, - 1007 - ], - [ - 7, - 20082, - 15062, - 6023, - 8031, - 10040, - 13046, - 14056 - ], - [ - 7, - 23083, - 1007, - 21076, - 6023, - 4015, - 8031, - 12045 - ], - [ - 6, - 10040, - 14056, - 21076, - 4015, - 2007, - 8031 - ], - [ - 6, - 17070, - 17070, - 13046, - 1007, - 14056, - 6023 - ] - ], - [ - 5, - [ - 6, - 8031, - 14056, - 21076, - 4016, - 12045, - 10040 - ], - [ - 7, - 4016, - 13046, - 11084, - 6023, - 1007, - 17070, - 17070 - ], - [ - 7, - 8031, - 15062, - 10040, - 1007, - 20082, - 21076, - 4016 - ], - [ - 6, - 14056, - 2007, - 20082, - 6023, - 23083, - 12045 - ], - [ - 6, - 10040, - 14056, - 6023, - 13046, - 8031, - 1007 - ] - ], - [ - 5, - [ - 6, - 13046, - 14053, - 11084, - 8031, - 10040, - 4016 - ], - [ - 7, - 15062, - 10040, - 2007, - 21076, - 12045, - 6023, - 23083 - ], - [ - 7, - 17070, - 17070, - 6023, - 8031, - 1007, - 13046, - 20082 - ], - [ - 6, - 6023, - 4016, - 8031, - 14053, - 20082, - 1007 - ], - [ - 6, - 21076, - 12045, - 1007, - 10040, - 4016, - 14053 - ] - ] - ], - [ - 15, - [ - 5, - [ - 6, - 11051, - 17068, - 17068, - 6028, - 9033, - 13049 - ], - [ - 7, - 1008, - 4017, - 15063, - 12048, - 14057, - 8032, - 6028 - ], - [ - 7, - 13049, - 2008, - 18071, - 4019, - 9033, - 6028, - 16066 - ], - [ - 6, - 6028, - 4017, - 19074, - 16066, - 1008, - 14057 - ], - [ - 6, - 1008, - 12048, - 14057, - 18071, - 8032, - 4017 - ] - ], - [ - 5, - [ - 6, - 4017, - 2008, - 12048, - 14057, - 6028, - 9033 - ], - [ - 7, - 13049, - 11054, - 4017, - 15063, - 1008, - 6028, - 16066 - ], - [ - 7, - 1008, - 13049, - 8032, - 4017, - 14057, - 9033, - 18071 - ], - [ - 6, - 19074, - 16066, - 14057, - 6028, - 12048, - 1008 - ], - [ - 6, - 18071, - 4019, - 8032, - 6028, - 17068, - 17068 - ] - ], - [ - 5, - [ - 6, - 8032, - 6026, - 14057, - 4017, - 12048, - 16066 - ], - [ - 7, - 18071, - 13049, - 11057, - 1008, - 8032, - 17068, - 17068 - ], - [ - 7, - 15063, - 4017, - 9034, - 2008, - 6026, - 12048, - 14057 - ], - [ - 6, - 6026, - 13049, - 1008, - 4017, - 18071, - 19074 - ], - [ - 6, - 9034, - 14057, - 4017, - 1008, - 16066, - 6024 - ] - ], - [ - 5, - [ - 6, - 19074, - 14057, - 13049, - 8032, - 1008, - 4017 - ], - [ - 7, - 6026, - 16066, - 18071, - 11058, - 4017, - 9034, - 12048 - ], - [ - 7, - 4017, - 6026, - 15063, - 9034, - 17068, - 17068, - 1008 - ], - [ - 6, - 14057, - 2008, - 18071, - 6026, - 8032, - 12048 - ], - [ - 6, - 13049, - 16066, - 6026, - 14057, - 4017, - 1008 - ] - ], - [ - 5, - [ - 6, - 13050, - 9034, - 1008, - 18071, - 17068, - 17068 - ], - [ - 7, - 11055, - 12048, - 2011, - 18071, - 6026, - 14057, - 4017 - ], - [ - 7, - 12048, - 8032, - 16066, - 15063, - 1008, - 4017, - 6026 - ], - [ - 6, - 8032, - 9034, - 6026, - 14057, - 16066, - 4017 - ], - [ - 6, - 4017, - 6026, - 1008, - 19074, - 13050, - 14057 - ] - ], - [ - 5, - [ - 6, - 14057, - 8032, - 18071, - 6026, - 19074, - 12048 - ], - [ - 7, - 4018, - 13050, - 6026, - 2009, - 9034, - 18071, - 14057 - ], - [ - 7, - 6026, - 15063, - 13050, - 4018, - 16067, - 14057, - 1009 - ], - [ - 6, - 17068, - 17068, - 16067, - 1009, - 11072, - 4018 - ], - [ - 6, - 4018, - 1009, - 9034, - 12048, - 6026, - 8032 - ] - ], - [ - 5, - [ - 6, - 12048, - 1009, - 13050, - 14056, - 4018, - 6026 - ], - [ - 7, - 15063, - 8032, - 1009, - 4018, - 16067, - 6026, - 13050 - ], - [ - 7, - 9034, - 18071, - 12048, - 6026, - 1009, - 4018, - 8032 - ], - [ - 6, - 9034, - 4018, - 11072, - 19074, - 14056, - 16067 - ], - [ - 6, - 17068, - 17068, - 18071, - 14056, - 2009, - 6026 - ] - ], - [ - 5, - [ - 6, - 2011, - 16067, - 4018, - 9034, - 14056, - 13050 - ], - [ - 7, - 6027, - 15063, - 17068, - 17068, - 11072, - 14056, - 1009 - ], - [ - 7, - 13050, - 16067, - 6027, - 1009, - 8032, - 18072, - 4018 - ], - [ - 6, - 6027, - 12048, - 1009, - 14056, - 4018, - 9034 - ], - [ - 6, - 12048, - 8032, - 6027, - 18072, - 19074, - 4018 - ] - ], - [ - 5, - [ - 6, - 18072, - 4018, - 1010, - 6027, - 9034, - 14056 - ], - [ - 7, - 8032, - 19074, - 15064, - 16067, - 1010, - 12048, - 6027 - ], - [ - 7, - 17068, - 17068, - 4018, - 6027, - 14056, - 9034, - 13050 - ], - [ - 6, - 4019, - 11071, - 2010, - 8032, - 16067, - 6027 - ], - [ - 6, - 14056, - 1010, - 4018, - 13050, - 12048, - 18072 - ] - ], - [ - 5, - [ - 6, - 9034, - 6027, - 16067, - 4019, - 1010, - 14058 - ], - [ - 7, - 1010, - 8029, - 6027, - 13050, - 14058, - 4018, - 18072 - ], - [ - 7, - 4018, - 15064, - 1010, - 12048, - 18072, - 19074, - 6027 - ], - [ - 6, - 11077, - 8029, - 12048, - 2010, - 17068, - 17068 - ], - [ - 6, - 13050, - 14058, - 16067, - 4018, - 9034, - 6027 - ] - ], - [ - 5, - [ - 6, - 6027, - 14058, - 11077, - 12049, - 17070, - 17070 - ], - [ - 7, - 4020, - 9034, - 1010, - 19074, - 13050, - 8029, - 14058 - ], - [ - 7, - 15064, - 4019, - 18072, - 8029, - 13050, - 6027, - 1010 - ], - [ - 6, - 16067, - 2011, - 14058, - 9034, - 6027, - 4020 - ], - [ - 6, - 18072, - 6027, - 1010, - 4020, - 12049, - 16067 - ] - ], - [ - 5, - [ - 6, - 6025, - 13047, - 4020, - 11079, - 16067, - 2011 - ], - [ - 7, - 1011, - 18072, - 9034, - 6027, - 4019, - 12049, - 8030 - ], - [ - 7, - 16067, - 19074, - 1011, - 15064, - 8030, - 4020, - 14058 - ], - [ - 6, - 17070, - 17070, - 6027, - 4020, - 14058, - 12049 - ], - [ - 6, - 1011, - 18072, - 14058, - 13047, - 6027, - 9034 - ] - ], - [ - 5, - [ - 6, - 14058, - 9035, - 1011, - 18072, - 4020, - 8030 - ], - [ - 7, - 19074, - 6028, - 18072, - 4020, - 12049, - 9035, - 16067 - ], - [ - 7, - 13047, - 8030, - 15064, - 16067, - 6028, - 14058, - 1011 - ], - [ - 6, - 14058, - 4019, - 2011, - 11079, - 13047, - 6028 - ], - [ - 6, - 4020, - 1011, - 6028, - 12049, - 17070, - 17070 - ] - ], - [ - 5, - [ - 6, - 13047, - 6028, - 14058, - 9035, - 11082, - 8031 - ], - [ - 7, - 8031, - 15064, - 17070, - 17070, - 2011, - 4020, - 9035 - ], - [ - 7, - 18072, - 4020, - 6028, - 12049, - 19074, - 1011, - 16067 - ], - [ - 6, - 18072, - 6028, - 13047, - 4019, - 1011, - 14058 - ], - [ - 6, - 6028, - 12049, - 4020, - 16067, - 1011, - 14058 - ] - ], - [ - 5, - [ - 6, - 6028, - 11081, - 8031, - 1011, - 14058, - 18072 - ], - [ - 7, - 15064, - 16067, - 6028, - 13047, - 19074, - 2011, - 4020 - ], - [ - 7, - 9035, - 6028, - 4020, - 1011, - 17070, - 17070, - 12049 - ], - [ - 6, - 4020, - 14058, - 9035, - 18072, - 12049, - 13047 - ], - [ - 6, - 16067, - 8031, - 4019, - 1011, - 14058, - 6028 - ] - ] - ] - ], - "전일제": [ - 0, - 0, - 0 - ], - "버젼": "2023.11.06", - "동시수업수": 3, - "담임": [ - [ - 21, - 41, - 36, - 12, - 13, - 65, - 78, - 66, - 73, - 3, - 22, - 14, - 79, - 42, - 51, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - [ - 47, - 24, - 29, - 69, - 30, - 54, - 6, - 46, - 63, - 45, - 82, - 76, - 15, - 83, - 16, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - [ - 8, - 68, - 57, - 32, - 17, - 18, - 26, - 27, - 34, - 48, - 58, - 11, - 49, - 67, - 74, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ] - ], - "가상학급수": [ - 0, - 0, - 0, - 0 - ], - "특별실수": 6, - "열람제한일": "1899-12-30", - "자료244": "2025-03-05 13:28:22", - "학기시작일자": "2025-08-01", - "학교명": "컴시간중", - "지역명": "서울", - "학년도": 2025, - "분리": 1000, - "강의실": 0, - "시작일": "2025-03-10", - "일과시간": [ - "1(08:50)", - "2(09:45)", - "3(10:40)", - "4(11:35)", - "5(13:20)", - "6(14:15)", - "7(15:10)", - "8(16:05)" - ], - "일자자료": [ - [ - 1, - "25-03-03 ~ 25-03-08" - ], - [ - 2, - "25-03-10 ~ 25-03-15" - ] - ], - "오늘r": 1, - "자료147": [ - 3, - [ - 15, - [ - 5, - [ - 6, - 16065, - 4020, - 3003, - 3003, - 12042, - 14052 - ], - [ - 7, - 6021, - 1001, - 12042, - 14052, - 19073, - 4012, - 21078 - ], - [ - 7, - 9036, - 15059, - 20080, - 1001, - 4012, - 7023, - 7023 - ], - [ - 6, - 13043, - 9036, - 4012, - 1001, - 22080, - 16065 - ], - [ - 6, - 10041, - 24085, - 9036, - 14052, - 6021, - 21078 - ] - ], - [ - 5, - [ - 6, - 20080, - 9036, - 3001, - 3001, - 16065, - 4012 - ], - [ - 7, - 12042, - 4012, - 21078, - 6021, - 1001, - 9036, - 10041 - ], - [ - 7, - 4012, - 1001, - 15059, - 12042, - 14052, - 7021, - 7021 - ], - [ - 6, - 19073, - 1001, - 14052, - 16065, - 24085, - 21078 - ], - [ - 6, - 6021, - 14052, - 4012, - 22080, - 13043, - 9036 - ] - ], - [ - 5, - [ - 6, - 12042, - 4012, - 3002, - 3002, - 14052, - 16065 - ], - [ - 7, - 1001, - 19073, - 9036, - 4012, - 14052, - 24085, - 20080 - ], - [ - 7, - 15059, - 9036, - 6021, - 21078, - 13043, - 7022, - 7022 - ], - [ - 6, - 1001, - 12042, - 10041, - 14052, - 6021, - 4012 - ], - [ - 6, - 4012, - 21078, - 1001, - 16065, - 9036, - 22080 - ] - ], - [ - 5, - [ - 6, - 21078, - 14052, - 3041, - 3041, - 4012, - 13043 - ], - [ - 7, - 15059, - 21078, - 1002, - 9036, - 24086, - 6021, - 4012 - ], - [ - 7, - 20080, - 12042, - 16065, - 4012, - 9036, - 7073, - 7073 - ], - [ - 6, - 14052, - 4012, - 1002, - 9036, - 19073, - 6021 - ], - [ - 6, - 22080, - 16065, - 12042, - 1002, - 10041, - 14052 - ] - ], - [ - 5, - [ - 6, - 14052, - 20080, - 3039, - 3039, - 9036, - 4013 - ], - [ - 7, - 1002, - 22080, - 15059, - 16065, - 21078, - 13043, - 4013 - ], - [ - 7, - 6021, - 4013, - 1002, - 9036, - 12042, - 7075, - 7075 - ], - [ - 6, - 1002, - 6021, - 16065, - 12042, - 14052, - 9036 - ], - [ - 6, - 14052, - 19074, - 4013, - 21078, - 24086, - 10041 - ] - ], - [ - 5, - [ - 6, - 9036, - 16065, - 19074, - 4013, - 7023, - 7023 - ], - [ - 7, - 12043, - 4013, - 6021, - 15059, - 20080, - 14053, - 9036 - ], - [ - 7, - 4013, - 1002, - 24086, - 14053, - 21078, - 3003, - 3003 - ], - [ - 6, - 16065, - 22080, - 21078, - 1002, - 12043, - 4013 - ], - [ - 6, - 9036, - 1002, - 10041, - 6021, - 14053, - 13044 - ] - ], - [ - 5, - [ - 6, - 4013, - 9037, - 13044, - 14053, - 7021, - 7021 - ], - [ - 7, - 10041, - 24086, - 12043, - 22080, - 9037, - 1002, - 6023 - ], - [ - 7, - 21078, - 16065, - 19074, - 15059, - 4013, - 3001, - 3001 - ], - [ - 6, - 21078, - 14053, - 4013, - 9037, - 6023, - 1002 - ], - [ - 6, - 1002, - 14053, - 20080, - 12043, - 16065, - 4013 - ] - ], - [ - 5, - [ - 6, - 14053, - 4013, - 9037, - 16066, - 7022, - 7022 - ], - [ - 7, - 24084, - 15059, - 1003, - 13044, - 4013, - 21079, - 19073 - ], - [ - 7, - 1003, - 10041, - 12043, - 9037, - 20080, - 3002, - 3002 - ], - [ - 6, - 4013, - 6023, - 21079, - 22080, - 1003, - 14053 - ], - [ - 6, - 6023, - 12043, - 14053, - 9037, - 4013, - 16066 - ] - ], - [ - 5, - [ - 6, - 13044, - 21079, - 14053, - 12043, - 7073, - 7073 - ], - [ - 7, - 6023, - 9037, - 4013, - 12043, - 1003, - 16066, - 14053 - ], - [ - 7, - 9037, - 16066, - 4013, - 15060, - 24084, - 3041, - 3041 - ], - [ - 6, - 20081, - 9037, - 14053, - 4013, - 10041, - 1003 - ], - [ - 6, - 21079, - 22081, - 1003, - 19073, - 6023, - 4020 - ] - ], - [ - 5, - [ - 6, - 16066, - 24084, - 4014, - 14051, - 7075, - 7075 - ], - [ - 7, - 19073, - 15060, - 20081, - 9037, - 6022, - 1003, - 14051 - ], - [ - 7, - 21079, - 12043, - 9037, - 10041, - 4014, - 3039, - 3039 - ], - [ - 6, - 16066, - 1003, - 4020, - 12043, - 14051, - 21079 - ], - [ - 6, - 9037, - 13044, - 4014, - 22081, - 6022, - 1003 - ] - ], - [ - 5, - [ - 6, - 21079, - 12042, - 7023, - 7023, - 3003, - 3003 - ], - [ - 7, - 1003, - 6022, - 10041, - 16066, - 4014, - 9037, - 24084 - ], - [ - 7, - 4014, - 15060, - 13044, - 22081, - 21079, - 9037, - 14051 - ], - [ - 6, - 14051, - 20081, - 1003, - 6022, - 9037, - 4015 - ], - [ - 6, - 16066, - 12042, - 19073, - 1003, - 14051, - 4014 - ] - ], - [ - 5, - [ - 6, - 20081, - 16066, - 7021, - 7021, - 3001, - 3001 - ], - [ - 7, - 1004, - 21079, - 15060, - 10041, - 14051, - 12042, - 4014 - ], - [ - 7, - 1004, - 19073, - 9035, - 6022, - 16066, - 13044, - 4014 - ], - [ - 6, - 9035, - 21079, - 1004, - 14051, - 4014, - 6022 - ], - [ - 6, - 24084, - 4014, - 9035, - 14051, - 22081, - 12042 - ] - ], - [ - 5, - [ - 6, - 4014, - 10038, - 7022, - 7022, - 3002, - 3002 - ], - [ - 7, - 6022, - 4014, - 1004, - 9035, - 13044, - 16065, - 21079 - ], - [ - 7, - 22081, - 1004, - 15060, - 4014, - 14051, - 16065, - 12042 - ], - [ - 6, - 1004, - 4014, - 24084, - 20081, - 9035, - 14051 - ], - [ - 6, - 19073, - 9035, - 6022, - 21079, - 12042, - 14051 - ] - ], - [ - 5, - [ - 6, - 9035, - 1004, - 7073, - 7073, - 3041, - 3041 - ], - [ - 7, - 15060, - 16065, - 9035, - 4014, - 10038, - 14051, - 12042 - ], - [ - 7, - 6022, - 4014, - 1004, - 21079, - 16065, - 22081, - 9035 - ], - [ - 6, - 6022, - 14051, - 4014, - 13044, - 12042, - 20081 - ], - [ - 6, - 14051, - 21079, - 1004, - 4014, - 24084, - 19073 - ] - ], - [ - 5, - [ - 6, - 4012, - 14051, - 7075, - 7075, - 3039, - 3039 - ], - [ - 7, - 10038, - 1004, - 21079, - 12042, - 24084, - 20081, - 16065 - ], - [ - 7, - 15060, - 21079, - 22081, - 9035, - 4020, - 14051, - 13044 - ], - [ - 6, - 12042, - 1004, - 6022, - 19073, - 4012, - 9035 - ], - [ - 6, - 16065, - 1004, - 14051, - 4012, - 9035, - 6022 - ] - ] - ], - [ - 15, - [ - 5, - [ - 6, - 20076, - 1005, - 10038, - 5014, - 17069, - 17069 - ], - [ - 7, - 8029, - 13044, - 21077, - 4016, - 1005, - 12047, - 6024 - ], - [ - 7, - 1005, - 23083, - 8029, - 15061, - 6024, - 10038, - 14054 - ], - [ - 6, - 13044, - 14054, - 6024, - 10038, - 4016, - 20076 - ], - [ - 6, - 4016, - 12047, - 8029, - 21077, - 2005, - 14054 - ] - ], - [ - 5, - [ - 6, - 4016, - 23083, - 8029, - 20076, - 14054, - 13044 - ], - [ - 7, - 6024, - 15061, - 5018, - 10038, - 21077, - 14054, - 12047 - ], - [ - 7, - 20076, - 10038, - 1005, - 6024, - 12047, - 4016, - 8029 - ], - [ - 6, - 8029, - 21077, - 1005, - 4016, - 13044, - 6024 - ], - [ - 6, - 2001, - 1005, - 14054, - 10038, - 17069, - 17069 - ] - ], - [ - 5, - [ - 6, - 8029, - 1006, - 14054, - 12047, - 6024, - 10038 - ], - [ - 7, - 12047, - 21077, - 4016, - 15061, - 2002, - 17069, - 17069 - ], - [ - 7, - 21077, - 6024, - 4016, - 13044, - 1006, - 8029, - 10038 - ], - [ - 6, - 10038, - 13044, - 14054, - 8029, - 20076, - 1006 - ], - [ - 6, - 6024, - 4016, - 20076, - 14054, - 23083, - 11040 - ] - ], - [ - 5, - [ - 6, - 21077, - 4016, - 6024, - 13050, - 10038, - 8029 - ], - [ - 7, - 1006, - 6024, - 15061, - 23083, - 14054, - 4016, - 20076 - ], - [ - 7, - 1006, - 4016, - 12047, - 10038, - 11040, - 17069, - 17069 - ], - [ - 6, - 6024, - 2006, - 13050, - 21077, - 8029, - 14054 - ], - [ - 6, - 14054, - 1006, - 10038, - 20076, - 8029, - 12047 - ] - ], - [ - 5, - [ - 6, - 17069, - 17069, - 4019, - 20081, - 12047, - 14054 - ], - [ - 7, - 4019, - 10038, - 1006, - 6024, - 20081, - 8030, - 14054 - ], - [ - 7, - 11053, - 1006, - 15061, - 8030, - 14054, - 12047, - 21077 - ], - [ - 6, - 2006, - 23083, - 10038, - 13050, - 6024, - 8030 - ], - [ - 6, - 21077, - 13050, - 1006, - 6024, - 4019, - 10038 - ] - ], - [ - 5, - [ - 6, - 14054, - 6024, - 1006, - 8029, - 20081, - 13046 - ], - [ - 7, - 15061, - 20081, - 11053, - 10039, - 8029, - 4019, - 1006 - ], - [ - 7, - 4019, - 12045, - 10039, - 2006, - 21077, - 14054, - 6024 - ], - [ - 6, - 17069, - 17069, - 13046, - 1006, - 14054, - 4019 - ], - [ - 6, - 23083, - 8029, - 6024, - 12045, - 21077, - 10039 - ] - ], - [ - 5, - [ - 6, - 12045, - 6025, - 8030, - 21077, - 1006, - 4019 - ], - [ - 7, - 10039, - 23083, - 4019, - 1006, - 11053, - 14055, - 12045 - ], - [ - 7, - 15061, - 13046, - 21077, - 10039, - 4019, - 14055, - 2006 - ], - [ - 6, - 8030, - 6025, - 10039, - 14055, - 13046, - 20082 - ], - [ - 6, - 17069, - 17069, - 20082, - 6025, - 1006, - 8030 - ] - ], - [ - 5, - [ - 6, - 1005, - 4015, - 14055, - 6025, - 13046, - 21077 - ], - [ - 7, - 8030, - 1005, - 17069, - 17069, - 20082, - 10039, - 13046 - ], - [ - 7, - 8030, - 15061, - 6025, - 2003, - 14055, - 23083, - 4015 - ], - [ - 6, - 10039, - 12045, - 4015, - 1005, - 21077, - 6025 - ], - [ - 6, - 12045, - 14055, - 11077, - 8030, - 10039, - 20082 - ] - ], - [ - 5, - [ - 6, - 14055, - 8030, - 2004, - 23083, - 21078, - 6025 - ], - [ - 7, - 1005, - 10039, - 15062, - 13046, - 14055, - 4015, - 6025 - ], - [ - 7, - 20082, - 21078, - 17069, - 17069, - 1005, - 12045, - 8030 - ], - [ - 6, - 4015, - 20082, - 8030, - 12045, - 10039, - 13046 - ], - [ - 6, - 14055, - 4015, - 10039, - 1005, - 11079, - 6025 - ] - ], - [ - 5, - [ - 6, - 4015, - 10040, - 21078, - 1005, - 8030, - 14055 - ], - [ - 7, - 10040, - 12045, - 8030, - 20082, - 4015, - 6025, - 1005 - ], - [ - 7, - 6025, - 20082, - 12045, - 15062, - 23083, - 1005, - 14055 - ], - [ - 6, - 13046, - 10040, - 14055, - 21078, - 17069, - 17069 - ], - [ - 6, - 2004, - 11083, - 8030, - 4015, - 6025, - 13046 - ] - ], - [ - 5, - [ - 6, - 17070, - 17070, - 20082, - 2007, - 14055, - 12045 - ], - [ - 7, - 1007, - 6025, - 4015, - 10040, - 21076, - 11083, - 8031 - ], - [ - 7, - 15062, - 4015, - 13046, - 6025, - 21076, - 10040, - 1007 - ], - [ - 6, - 12045, - 8031, - 1007, - 6025, - 10040, - 14055 - ], - [ - 6, - 13046, - 20082, - 8031, - 23083, - 14055, - 4015 - ] - ], - [ - 5, - [ - 6, - 20082, - 13046, - 1007, - 14055, - 11083, - 4015 - ], - [ - 7, - 4015, - 21076, - 6025, - 12045, - 8031, - 1007, - 20082 - ], - [ - 7, - 2007, - 10040, - 15062, - 4015, - 13046, - 6025, - 8031 - ], - [ - 6, - 14055, - 21076, - 23083, - 10040, - 17070, - 17070 - ], - [ - 6, - 1007, - 10040, - 6025, - 14055, - 12045, - 8031 - ] - ], - [ - 5, - [ - 6, - 11083, - 12045, - 10040, - 20082, - 4015, - 1007 - ], - [ - 7, - 20082, - 15062, - 6023, - 8031, - 10040, - 13046, - 14056 - ], - [ - 7, - 23083, - 1007, - 21076, - 6023, - 4015, - 8031, - 12045 - ], - [ - 6, - 10040, - 14056, - 21076, - 4015, - 2007, - 8031 - ], - [ - 6, - 17070, - 17070, - 13046, - 1007, - 14056, - 6023 - ] - ], - [ - 5, - [ - 6, - 8031, - 14056, - 21076, - 4016, - 12045, - 10040 - ], - [ - 7, - 4016, - 13046, - 11084, - 6023, - 1007, - 17070, - 17070 - ], - [ - 7, - 8031, - 15062, - 10040, - 1007, - 20082, - 21076, - 4016 - ], - [ - 6, - 14056, - 2007, - 20082, - 6023, - 23083, - 12045 - ], - [ - 6, - 10040, - 14056, - 6023, - 13046, - 8031, - 1007 - ] - ], - [ - 5, - [ - 6, - 13046, - 14053, - 11084, - 8031, - 10040, - 4016 - ], - [ - 7, - 15062, - 10040, - 2007, - 21076, - 12045, - 6023, - 23083 - ], - [ - 7, - 17070, - 17070, - 6023, - 8031, - 1007, - 13046, - 20082 - ], - [ - 6, - 6023, - 4016, - 8031, - 14053, - 20082, - 1007 - ], - [ - 6, - 21076, - 12045, - 1007, - 10040, - 4016, - 14053 - ] - ] - ], - [ - 15, - [ - 5, - [ - 6, - 11051, - 17068, - 17068, - 6028, - 9033, - 13049 - ], - [ - 7, - 1008, - 4017, - 15063, - 12048, - 14057, - 8032, - 6028 - ], - [ - 7, - 13049, - 2008, - 18071, - 4019, - 9033, - 6028, - 16066 - ], - [ - 6, - 6028, - 4017, - 19074, - 16066, - 1008, - 14057 - ], - [ - 6, - 1008, - 12048, - 14057, - 18071, - 8032, - 4017 - ] - ], - [ - 5, - [ - 6, - 4017, - 2008, - 12048, - 14057, - 6028, - 9033 - ], - [ - 7, - 13049, - 11054, - 4017, - 15063, - 1008, - 6028, - 16066 - ], - [ - 7, - 1008, - 13049, - 8032, - 4017, - 14057, - 9033, - 18071 - ], - [ - 6, - 19074, - 16066, - 14057, - 6028, - 12048, - 1008 - ], - [ - 6, - 18071, - 4019, - 8032, - 6028, - 17068, - 17068 - ] - ], - [ - 5, - [ - 6, - 8032, - 6026, - 14057, - 4017, - 12048, - 16066 - ], - [ - 7, - 18071, - 13049, - 11057, - 1008, - 8032, - 17068, - 17068 - ], - [ - 7, - 15063, - 4017, - 9034, - 2008, - 6026, - 12048, - 14057 - ], - [ - 6, - 6026, - 13049, - 1008, - 4017, - 18071, - 19074 - ], - [ - 6, - 9034, - 14057, - 4017, - 1008, - 16066, - 6024 - ] - ], - [ - 5, - [ - 6, - 19074, - 14057, - 13049, - 8032, - 1008, - 4017 - ], - [ - 7, - 6026, - 16066, - 18071, - 11058, - 4017, - 9034, - 12048 - ], - [ - 7, - 4017, - 6026, - 15063, - 9034, - 17068, - 17068, - 1008 - ], - [ - 6, - 14057, - 2008, - 18071, - 6026, - 8032, - 12048 - ], - [ - 6, - 13049, - 16066, - 6026, - 14057, - 4017, - 1008 - ] - ], - [ - 5, - [ - 6, - 13050, - 9034, - 1008, - 18071, - 17068, - 17068 - ], - [ - 7, - 11055, - 12048, - 2011, - 18071, - 6026, - 14057, - 4017 - ], - [ - 7, - 12048, - 8032, - 16066, - 15063, - 1008, - 4017, - 6026 - ], - [ - 6, - 8032, - 9034, - 6026, - 14057, - 16066, - 4017 - ], - [ - 6, - 4017, - 6026, - 1008, - 19074, - 13050, - 14057 - ] - ], - [ - 5, - [ - 6, - 14057, - 8032, - 18071, - 6026, - 19074, - 12048 - ], - [ - 7, - 4018, - 13050, - 6026, - 2009, - 9034, - 18071, - 14057 - ], - [ - 7, - 6026, - 15063, - 13050, - 4018, - 16067, - 14057, - 1009 - ], - [ - 6, - 17068, - 17068, - 16067, - 1009, - 11072, - 4018 - ], - [ - 6, - 4018, - 1009, - 9034, - 12048, - 6026, - 8032 - ] - ], - [ - 5, - [ - 6, - 12048, - 1009, - 13050, - 14056, - 4018, - 6026 - ], - [ - 7, - 15063, - 8032, - 1009, - 4018, - 16067, - 6026, - 13050 - ], - [ - 7, - 9034, - 18071, - 12048, - 6026, - 1009, - 4018, - 8032 - ], - [ - 6, - 9034, - 4018, - 11072, - 19074, - 14056, - 16067 - ], - [ - 6, - 17068, - 17068, - 18071, - 14056, - 2009, - 6026 - ] - ], - [ - 5, - [ - 6, - 2011, - 16067, - 4018, - 9034, - 14056, - 13050 - ], - [ - 7, - 6027, - 15063, - 17068, - 17068, - 11072, - 14056, - 1009 - ], - [ - 7, - 13050, - 16067, - 6027, - 1009, - 8032, - 18072, - 4018 - ], - [ - 6, - 6027, - 12048, - 1009, - 14056, - 4018, - 9034 - ], - [ - 6, - 12048, - 8032, - 6027, - 18072, - 19074, - 4018 - ] - ], - [ - 5, - [ - 6, - 18072, - 4018, - 1010, - 6027, - 9034, - 14056 - ], - [ - 7, - 8032, - 19074, - 15064, - 16067, - 1010, - 12048, - 6027 - ], - [ - 7, - 17068, - 17068, - 4018, - 6027, - 14056, - 9034, - 13050 - ], - [ - 6, - 4019, - 11071, - 2010, - 8032, - 16067, - 6027 - ], - [ - 6, - 14056, - 1010, - 4018, - 13050, - 12048, - 18072 - ] - ], - [ - 5, - [ - 6, - 9034, - 6027, - 16067, - 4019, - 1010, - 14058 - ], - [ - 7, - 1010, - 8029, - 6027, - 13050, - 14058, - 4018, - 18072 - ], - [ - 7, - 4018, - 15064, - 1010, - 12048, - 18072, - 19074, - 6027 - ], - [ - 6, - 11077, - 8029, - 12048, - 2010, - 17068, - 17068 - ], - [ - 6, - 13050, - 14058, - 16067, - 4018, - 9034, - 6027 - ] - ], - [ - 5, - [ - 6, - 6027, - 14058, - 11077, - 12049, - 17070, - 17070 - ], - [ - 7, - 4020, - 9034, - 1010, - 19074, - 13050, - 8029, - 14058 - ], - [ - 7, - 15064, - 4019, - 18072, - 8029, - 13050, - 6027, - 1010 - ], - [ - 6, - 16067, - 2011, - 14058, - 9034, - 6027, - 4020 - ], - [ - 6, - 18072, - 6027, - 1010, - 4020, - 12049, - 16067 - ] - ], - [ - 5, - [ - 6, - 6025, - 13047, - 4020, - 11079, - 16067, - 2011 - ], - [ - 7, - 1011, - 18072, - 9034, - 6027, - 4019, - 12049, - 8030 - ], - [ - 7, - 16067, - 19074, - 1011, - 15064, - 8030, - 4020, - 14058 - ], - [ - 6, - 17070, - 17070, - 6027, - 4020, - 14058, - 12049 - ], - [ - 6, - 1011, - 18072, - 14058, - 13047, - 6027, - 9034 - ] - ], - [ - 5, - [ - 6, - 14058, - 9035, - 1011, - 18072, - 4020, - 8030 - ], - [ - 7, - 19074, - 6028, - 18072, - 4020, - 12049, - 9035, - 16067 - ], - [ - 7, - 13047, - 8030, - 15064, - 16067, - 6028, - 14058, - 1011 - ], - [ - 6, - 14058, - 4019, - 2011, - 11079, - 13047, - 6028 - ], - [ - 6, - 4020, - 1011, - 6028, - 12049, - 17070, - 17070 - ] - ], - [ - 5, - [ - 6, - 13047, - 6028, - 14058, - 9035, - 11082, - 8031 - ], - [ - 7, - 8031, - 15064, - 17070, - 17070, - 2011, - 4020, - 9035 - ], - [ - 7, - 18072, - 4020, - 6028, - 12049, - 19074, - 1011, - 16067 - ], - [ - 6, - 18072, - 6028, - 13047, - 4019, - 1011, - 14058 - ], - [ - 6, - 6028, - 12049, - 4020, - 16067, - 1011, - 14058 - ] - ], - [ - 5, - [ - 6, - 6028, - 11081, - 8031, - 1011, - 14058, - 18072 - ], - [ - 7, - 15064, - 16067, - 6028, - 13047, - 19074, - 2011, - 4020 - ], - [ - 7, - 9035, - 6028, - 4020, - 1011, - 17070, - 17070, - 12049 - ], - [ - 6, - 4020, - 14058, - 9035, - 18072, - 12049, - 13047 - ], - [ - 6, - 16067, - 8031, - 4019, - 1011, - 14058, - 6028 - ] - ] - ] - ], - "자료542": [ - 86, - [ - 5, - [ - 6, - 0, - 0, - 3102, - 3102, - 3112, - 3112 - ], - [ - 5, - 1103, - 1101, - 0, - 0, - 1102 - ], - [ - 7, - 0, - 1102, - 0, - 1101, - 0, - 3107, - 3107 - ], - [ - 4, - 1103, - 1102, - 0, - 1101 - ], - [ - 3, - 2202, - 0, - 1103 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 3103, - 3103, - 3113, - 3113 - ], - [ - 6, - 1105, - 0, - 1104, - 0, - 2203, - 1107 - ], - [ - 7, - 0, - 1106, - 1105, - 0, - 0, - 3108, - 3108 - ], - [ - 6, - 1105, - 0, - 1104, - 1106, - 0, - 1107 - ], - [ - 4, - 1107, - 1106, - 0, - 1104 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 3101, - 3101, - 3111, - 3111 - ], - [ - 6, - 1111, - 0, - 1108, - 0, - 1109, - 1110 - ], - [ - 7, - 1108, - 0, - 0, - 2208, - 0, - 3106, - 3106 - ], - [ - 6, - 0, - 1110, - 1111, - 0, - 1108, - 1109 - ], - [ - 6, - 0, - 0, - 1109, - 1111, - 0, - 1110 - ] - ], - [ - 5, - [ - 3, - 0, - 1114, - 2209 - ], - [ - 3, - 1112, - 1115, - 1113 - ], - [ - 3, - 1112, - 1113, - 1114 - ], - [ - 3, - 1113, - 1115, - 1112 - ], - [ - 3, - 2210, - 1115, - 1114 - ] - ], - [ - 5, - [ - 4, - 1208, - 1201, - 0, - 1210 - ], - [ - 7, - 1209, - 1208, - 0, - 0, - 1201, - 0, - 1210 - ], - [ - 6, - 1201, - 0, - 1202, - 0, - 1209, - 1210 - ], - [ - 4, - 0, - 0, - 1202, - 1208 - ], - [ - 5, - 0, - 1202, - 0, - 1209, - 2201 - ] - ], - [ - 5, - [ - 5, - 0, - 1203, - 1206, - 0, - 1207 - ], - [ - 7, - 1204, - 0, - 1205, - 1207, - 0, - 0, - 1206 - ], - [ - 7, - 1204, - 1205, - 0, - 2206, - 1203, - 0, - 2207 - ], - [ - 6, - 2205, - 2204, - 0, - 1206, - 0, - 1203 - ], - [ - 5, - 0, - 1204, - 1205, - 0, - 1207 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 1212, - 2211, - 0, - 1213 - ], - [ - 6, - 1211, - 0, - 2215, - 0, - 1214, - 1212 - ], - [ - 7, - 2212, - 1213, - 0, - 1214, - 1215, - 0, - 1211 - ], - [ - 6, - 0, - 2214, - 1211, - 0, - 2213, - 1215 - ], - [ - 6, - 1212, - 0, - 1215, - 1213, - 0, - 1214 - ] - ], - [ - 5, - [ - 5, - 0, - 2302, - 1305, - 0, - 1304 - ], - [ - 5, - 1301, - 0, - 0, - 1303, - 1302 - ], - [ - 7, - 1302, - 2301, - 0, - 2303, - 1305, - 0, - 1304 - ], - [ - 6, - 0, - 2304, - 1303, - 0, - 1301, - 1302 - ], - [ - 6, - 1301, - 0, - 1305, - 1303, - 0, - 1304 - ] - ], - [ - 5, - [ - 2, - 0, - 1307 - ], - [ - 7, - 0, - 0, - 1307, - 2306, - 0, - 0, - 1308 - ], - [ - 7, - 0, - 0, - 0, - 1308, - 1307, - 0, - 1306 - ], - [ - 4, - 0, - 0, - 1308, - 1306 - ], - [ - 5, - 0, - 1306, - 0, - 0, - 2307 - ] - ], - [ - 5, - [ - 5, - 0, - 0, - 1309, - 0, - 1310 - ], - [ - 5, - 1310, - 0, - 1311, - 0, - 1309 - ], - [ - 7, - 0, - 0, - 1310, - 0, - 0, - 0, - 1311 - ], - [ - 4, - 0, - 0, - 2309, - 2310 - ], - [ - 3, - 0, - 1309, - 1311 - ] - ], - [ - 5, - [ - 6, - 2308, - 0, - 1313, - 1315, - 0, - 2312 - ], - [ - 6, - 1312, - 0, - 2305, - 0, - 2314, - 2315 - ], - [ - 7, - 0, - 0, - 1312, - 1315, - 0, - 1314, - 1313 - ], - [ - 5, - 0, - 2311, - 2313, - 0, - 1314 - ], - [ - 5, - 1312, - 1313, - 0, - 1315, - 1314 - ] - ], - [ - 5, - [ - 6, - 4115, - 4103, - 0, - 0, - 4104, - 4102 - ], - [ - 7, - 0, - 4102, - 0, - 4103, - 0, - 4101, - 4104 - ], - [ - 5, - 4102, - 0, - 0, - 4104, - 4101 - ], - [ - 6, - 0, - 4104, - 4101, - 0, - 4115, - 4103 - ], - [ - 4, - 4103, - 0, - 4102, - 4115 - ] - ], - [ - 5, - [ - 6, - 4107, - 4108, - 0, - 4106, - 0, - 4105 - ], - [ - 7, - 0, - 4106, - 4109, - 0, - 4108, - 0, - 4105 - ], - [ - 5, - 4106, - 4105, - 4109, - 0, - 4107 - ], - [ - 6, - 4108, - 0, - 4107, - 4109, - 0, - 4106 - ], - [ - 6, - 0, - 0, - 4105, - 0, - 4108, - 4107 - ] - ], - [ - 5, - [ - 4, - 4113, - 0, - 4110, - 5201 - ], - [ - 7, - 0, - 4113, - 0, - 4114, - 4111, - 0, - 4112 - ], - [ - 7, - 4111, - 4114, - 0, - 4113, - 4110, - 0, - 4112 - ], - [ - 5, - 0, - 4113, - 4114, - 0, - 4112 - ], - [ - 6, - 0, - 4112, - 4110, - 4114, - 0, - 4111 - ] - ], - [ - 5, - [ - 6, - 4210, - 4208, - 0, - 0, - 4213, - 4212 - ], - [ - 6, - 4212, - 0, - 4211, - 0, - 4210, - 4209 - ], - [ - 7, - 0, - 4211, - 0, - 4212, - 4213, - 0, - 4208 - ], - [ - 6, - 4209, - 0, - 4208, - 4213, - 0, - 4111 - ], - [ - 6, - 0, - 4209, - 0, - 4210, - 0, - 4211 - ] - ], - [ - 5, - [ - 6, - 4202, - 4204, - 0, - 4214, - 0, - 4215 - ], - [ - 6, - 4214, - 0, - 4203, - 4201, - 0, - 4204 - ], - [ - 7, - 0, - 4204, - 4203, - 0, - 0, - 4202, - 4214 - ], - [ - 5, - 0, - 4215, - 0, - 4202, - 4201 - ], - [ - 5, - 4201, - 4203, - 0, - 0, - 4215 - ] - ], - [ - 5, - [ - 6, - 4302, - 0, - 0, - 4303, - 0, - 4304 - ], - [ - 7, - 0, - 4301, - 4302, - 0, - 4304, - 0, - 4305 - ], - [ - 6, - 4304, - 4303, - 0, - 4302, - 0, - 4305 - ], - [ - 6, - 0, - 4301, - 0, - 4303, - 0, - 4305 - ], - [ - 6, - 4305, - 0, - 4303, - 0, - 4304, - 4301 - ] - ], - [ - 5, - [ - 5, - 0, - 4309, - 4308, - 0, - 4307 - ], - [ - 6, - 4306, - 0, - 5202, - 4307, - 0, - 4310 - ], - [ - 7, - 4310, - 0, - 4309, - 4306, - 0, - 4307, - 4308 - ], - [ - 6, - 0, - 4307, - 0, - 0, - 4308, - 4306 - ], - [ - 6, - 4306, - 0, - 4309, - 4310, - 0, - 4308 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 4205, - 4310, - 0, - 4207 - ], - [ - 6, - 4205, - 0, - 4207, - 0, - 4312, - 4206 - ], - [ - 5, - 4206, - 4311, - 0, - 4301, - 4207 - ], - [ - 6, - 4309, - 4313, - 0, - 4314, - 0, - 4206 - ], - [ - 5, - 0, - 4302, - 4315, - 0, - 4205 - ] - ], - [ - 5, - [ - 5, - 0, - 4101, - 4312, - 0, - 4313 - ], - [ - 7, - 4311, - 0, - 0, - 4313, - 0, - 4314, - 4315 - ], - [ - 6, - 0, - 4314, - 4315, - 0, - 4115, - 4312 - ], - [ - 6, - 4315, - 0, - 4110, - 4312, - 0, - 4311 - ], - [ - 6, - 4313, - 0, - 4314, - 4311, - 0, - 4109 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 7112, - 7112, - 7107, - 7107 - ], - [ - 6, - 6101, - 0, - 6106, - 6102, - 0, - 6104 - ], - [ - 7, - 6105, - 0, - 6103, - 0, - 0, - 7102, - 7102 - ], - [ - 6, - 0, - 6105, - 0, - 0, - 6103, - 6104 - ], - [ - 5, - 6102, - 0, - 0, - 6106, - 6101 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 7113, - 7113, - 7108, - 7108 - ], - [ - 5, - 6113, - 6111, - 0, - 0, - 6110 - ], - [ - 7, - 6114, - 0, - 0, - 6112, - 0, - 7103, - 7103 - ], - [ - 6, - 6114, - 0, - 6115, - 6111, - 0, - 6112 - ], - [ - 6, - 0, - 0, - 6113, - 0, - 6110, - 6115 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 7111, - 7111, - 7106, - 7106 - ], - [ - 7, - 6109, - 0, - 6213, - 6214, - 0, - 6215, - 6107 - ], - [ - 7, - 0, - 0, - 6215, - 6213, - 0, - 7101, - 7101 - ], - [ - 5, - 6215, - 6108, - 0, - 6214, - 6107 - ], - [ - 6, - 6108, - 0, - 6214, - 0, - 6109, - 6213 - ] - ], - [ - 5, - [ - 5, - 0, - 6206, - 6204, - 0, - 6203 - ], - [ - 7, - 6202, - 6204, - 0, - 6205, - 0, - 0, - 6201 - ], - [ - 7, - 0, - 6203, - 0, - 6202, - 6201, - 0, - 6206 - ], - [ - 6, - 6204, - 0, - 6201, - 0, - 6205, - 6202 - ], - [ - 6, - 6203, - 0, - 6206, - 6205, - 0, - 6303 - ] - ], - [ - 5, - [ - 6, - 6312, - 6207, - 0, - 6208, - 0, - 6209 - ], - [ - 7, - 0, - 6211, - 6212, - 0, - 0, - 6210, - 6209 - ], - [ - 6, - 6210, - 0, - 6208, - 6211, - 0, - 6212 - ], - [ - 6, - 0, - 6207, - 0, - 6211, - 0, - 6208 - ], - [ - 6, - 0, - 0, - 6212, - 6207, - 6210, - 6209 - ] - ], - [ - 5, - [ - 6, - 0, - 6303, - 0, - 6306, - 0, - 6307 - ], - [ - 6, - 6304, - 0, - 6306, - 0, - 6305, - 6307 - ], - [ - 7, - 6306, - 6304, - 0, - 6307, - 6303, - 0, - 6305 - ], - [ - 4, - 6303, - 0, - 6305, - 6304 - ], - [ - 6, - 0, - 6305, - 6304, - 0, - 6306, - 6307 - ] - ], - [ - 5, - [ - 4, - 6311, - 6310, - 0, - 6309 - ], - [ - 7, - 6308, - 0, - 6310, - 6312, - 0, - 0, - 6309 - ], - [ - 7, - 0, - 0, - 6308, - 6309, - 0, - 6311, - 6310 - ], - [ - 6, - 6308, - 0, - 6312, - 0, - 6311, - 6309 - ], - [ - 6, - 0, - 6311, - 6308, - 0, - 6312, - 6310 - ] - ], - [ - 5, - [ - 5, - 6315, - 6314, - 0, - 6301, - 6302 - ], - [ - 7, - 0, - 6313, - 6315, - 0, - 0, - 6302, - 6301 - ], - [ - 6, - 0, - 6315, - 6314, - 0, - 6313, - 6301 - ], - [ - 6, - 6301, - 6314, - 0, - 6302, - 0, - 6313 - ], - [ - 6, - 6314, - 0, - 6313, - 6302, - 0, - 6315 - ] - ], - [ - 5, - [ - 6, - 8203, - 0, - 8202, - 8206, - 0, - 8204 - ], - [ - 6, - 8201, - 8310, - 0, - 0, - 8206, - 8311 - ], - [ - 7, - 0, - 0, - 8201, - 8311, - 0, - 8203, - 8202 - ], - [ - 5, - 8202, - 8310, - 0, - 8203, - 8204 - ], - [ - 5, - 0, - 8206, - 8201, - 0, - 8204 - ] - ], - [ - 5, - [ - 6, - 0, - 8209, - 8207, - 0, - 8210, - 8313 - ], - [ - 7, - 8208, - 0, - 8210, - 0, - 0, - 8205, - 8312 - ], - [ - 7, - 8208, - 8313, - 0, - 8205, - 8312, - 0, - 8209 - ], - [ - 6, - 8207, - 0, - 8209, - 0, - 0, - 8205 - ], - [ - 6, - 0, - 0, - 8210, - 8208, - 0, - 8207 - ] - ], - [ - 5, - [ - 6, - 8214, - 0, - 8315, - 8215, - 0, - 8314 - ], - [ - 7, - 8314, - 0, - 0, - 8213, - 8212, - 0, - 8211 - ], - [ - 7, - 8214, - 0, - 0, - 8215, - 0, - 8213, - 8212 - ], - [ - 6, - 0, - 8211, - 8215, - 0, - 0, - 8213 - ], - [ - 6, - 0, - 8315, - 8211, - 0, - 8214, - 8212 - ] - ], - [ - 5, - [ - 4, - 8303, - 8306, - 0, - 8304 - ], - [ - 6, - 8309, - 8307, - 0, - 0, - 8303, - 8301 - ], - [ - 7, - 0, - 8305, - 8302, - 0, - 8308, - 0, - 8307 - ], - [ - 5, - 8305, - 0, - 0, - 8309, - 8304 - ], - [ - 6, - 0, - 8308, - 8302, - 0, - 8301, - 8306 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 0, - 0, - 9301, - 9302 - ], - [ - 0 - ], - [ - 6, - 0, - 0, - 0, - 0, - 9301, - 9302 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 5, - 9310, - 9305, - 0, - 9308, - 9309 - ], - [ - 6, - 0, - 9311, - 9312, - 0, - 9306, - 9304 - ], - [ - 6, - 9307, - 0, - 9303, - 9304, - 0, - 9309 - ], - [ - 6, - 9307, - 9305, - 0, - 9311, - 0, - 9308 - ], - [ - 6, - 9303, - 0, - 9306, - 0, - 9310, - 9312 - ] - ], - [ - 5, - [ - 4, - 9114, - 9313, - 0, - 9314 - ], - [ - 7, - 0, - 0, - 9114, - 9113, - 0, - 9313, - 9314 - ], - [ - 7, - 9315, - 0, - 9112, - 9115, - 0, - 0, - 9114 - ], - [ - 6, - 9112, - 0, - 9315, - 0, - 9113, - 9115 - ], - [ - 5, - 0, - 9113, - 9112, - 0, - 9115 - ] - ], - [ - 5, - [ - 5, - 9106, - 9102, - 0, - 0, - 9105 - ], - [ - 7, - 0, - 0, - 9103, - 9104, - 0, - 9102, - 9106 - ], - [ - 5, - 9101, - 9103, - 0, - 9105, - 9104 - ], - [ - 6, - 0, - 9101, - 0, - 9104, - 0, - 9105 - ], - [ - 6, - 9106, - 0, - 9101, - 0, - 9103, - 9102 - ] - ], - [ - 5, - [ - 3, - 0, - 9107, - 9108 - ], - [ - 6, - 0, - 9109, - 0, - 9110, - 9107, - 9111 - ], - [ - 6, - 9109, - 0, - 9110, - 9108, - 0, - 9111 - ], - [ - 5, - 0, - 9109, - 0, - 9107, - 9111 - ], - [ - 4, - 9110, - 0, - 0, - 9108 - ] - ], - [ - 5, - [ - 6, - 0, - 10113, - 10201, - 0, - 10204, - 10203 - ], - [ - 5, - 10115, - 10205, - 0, - 10202, - 10114 - ], - [ - 7, - 0, - 10202, - 0, - 10204, - 0, - 10201, - 10203 - ], - [ - 4, - 10203, - 0, - 10205, - 10201 - ], - [ - 6, - 0, - 0, - 10204, - 10202, - 0, - 10205 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 3105, - 3105, - 3115, - 3115 - ], - [ - 6, - 10207, - 10209, - 0, - 10206, - 0, - 10208 - ], - [ - 7, - 0, - 0, - 10206, - 10207, - 0, - 3110, - 3110 - ], - [ - 5, - 10208, - 0, - 10207, - 0, - 10209 - ], - [ - 6, - 0, - 0, - 10209, - 0, - 10208, - 10206 - ] - ], - [ - 5, - [ - 6, - 0, - 10210, - 10213, - 0, - 10215, - 10214 - ], - [ - 5, - 10210, - 10215, - 0, - 10211, - 10213 - ], - [ - 6, - 0, - 10212, - 10214, - 0, - 11204, - 10211 - ], - [ - 5, - 10213, - 10210, - 0, - 10212, - 10211 - ], - [ - 6, - 10214, - 10212, - 0, - 10215, - 0, - 11203 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 3104, - 3104, - 3114, - 3114 - ], - [ - 7, - 10107, - 0, - 10111, - 10112, - 0, - 0, - 10102 - ], - [ - 7, - 0, - 10108, - 0, - 10110, - 0, - 3109, - 3109 - ], - [ - 5, - 0, - 0, - 10103, - 0, - 10109 - ], - [ - 6, - 10101, - 0, - 10106, - 0, - 10104, - 10105 - ] - ], - [ - 5, - [ - 5, - 12103, - 12111, - 0, - 0, - 12101 - ], - [ - 7, - 12102, - 0, - 12101, - 12115, - 0, - 12112, - 12114 - ], - [ - 7, - 0, - 12104, - 0, - 12102, - 12105, - 0, - 12113 - ], - [ - 5, - 12115, - 12103, - 0, - 12105, - 12114 - ], - [ - 6, - 0, - 12111, - 12104, - 0, - 12113, - 12112 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 0, - 12109, - 0, - 13104 - ], - [ - 6, - 12106, - 0, - 12107, - 12109, - 0, - 13105 - ], - [ - 5, - 0, - 12110, - 12108, - 0, - 13103 - ], - [ - 5, - 13101, - 0, - 0, - 12110, - 12106 - ], - [ - 5, - 0, - 12108, - 0, - 12107, - 13102 - ] - ], - [ - 5, - [ - 6, - 13109, - 0, - 13107, - 0, - 0, - 13202 - ], - [ - 5, - 0, - 13201, - 0, - 13108, - 13113 - ], - [ - 7, - 0, - 0, - 13111, - 13203, - 0, - 13112, - 13115 - ], - [ - 5, - 13201, - 13203, - 0, - 13114, - 13202 - ], - [ - 6, - 0, - 13110, - 0, - 0, - 0, - 13106 - ] - ], - [ - 5, - [ - 6, - 12207, - 12213, - 0, - 0, - 12214, - 12211 - ], - [ - 7, - 0, - 12210, - 0, - 12212, - 12215, - 0, - 12207 - ], - [ - 7, - 0, - 12206, - 12210, - 0, - 0, - 12209, - 12213 - ], - [ - 6, - 12211, - 12208, - 0, - 12209, - 0, - 12214 - ], - [ - 5, - 12208, - 12215, - 0, - 12206, - 12212 - ] - ], - [ - 5, - [ - 6, - 13215, - 13212, - 0, - 0, - 13208, - 13206 - ], - [ - 7, - 0, - 13214, - 0, - 13209, - 0, - 13213, - 13208 - ], - [ - 6, - 0, - 13207, - 13211, - 0, - 13212, - 13215 - ], - [ - 6, - 13210, - 0, - 13206, - 0, - 13207, - 13209 - ], - [ - 6, - 13211, - 0, - 13213, - 13214, - 0, - 13210 - ] - ], - [ - 5, - [ - 5, - 13314, - 13312, - 0, - 12203, - 12205 - ], - [ - 7, - 12203, - 0, - 0, - 13315, - 0, - 12201, - 12202 - ], - [ - 6, - 13313, - 0, - 12204, - 0, - 12202, - 12205 - ], - [ - 6, - 0, - 0, - 13314, - 0, - 13313, - 13315 - ], - [ - 6, - 0, - 12201, - 0, - 13312, - 0, - 12204 - ] - ], - [ - 5, - [ - 6, - 12307, - 0, - 12302, - 0, - 12303, - 12306 - ], - [ - 7, - 0, - 12305, - 0, - 12301, - 0, - 12309, - 12304 - ], - [ - 6, - 12305, - 0, - 12307, - 12310, - 0, - 12303 - ], - [ - 6, - 0, - 12308, - 12310, - 0, - 12302, - 12304 - ], - [ - 5, - 12308, - 12301, - 0, - 12306, - 12309 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 13304, - 12311, - 0, - 13301 - ], - [ - 6, - 13302, - 13303, - 0, - 0, - 12313, - 12312 - ], - [ - 7, - 13301, - 13302, - 0, - 12314, - 0, - 0, - 12315 - ], - [ - 6, - 0, - 13303, - 0, - 0, - 12315, - 12312 - ], - [ - 5, - 13304, - 12314, - 0, - 12313, - 12311 - ] - ], - [ - 5, - [ - 6, - 13305, - 0, - 13307, - 13204, - 0, - 13308 - ], - [ - 7, - 0, - 13306, - 0, - 13310, - 13311, - 0, - 13307 - ], - [ - 7, - 13308, - 0, - 13306, - 0, - 13311, - 0, - 13309 - ], - [ - 4, - 0, - 0, - 13204, - 13205 - ], - [ - 5, - 13310, - 13205, - 0, - 13309, - 13305 - ] - ], - [ - 5, - [ - 4, - 11301, - 14115, - 0, - 14110 - ], - [ - 7, - 0, - 0, - 0, - 0, - 14112, - 14114, - 14110 - ], - [ - 7, - 0, - 0, - 0, - 0, - 14113, - 14115, - 14111 - ], - [ - 6, - 14111, - 14114, - 0, - 14112, - 14110, - 14113 - ], - [ - 6, - 14114, - 0, - 14115, - 14112, - 14111, - 14113 - ] - ], - [ - 5, - [ - 6, - 14105, - 14104, - 0, - 0, - 14103, - 14101 - ], - [ - 5, - 0, - 0, - 0, - 14101, - 14103 - ], - [ - 5, - 0, - 0, - 0, - 0, - 14102 - ], - [ - 5, - 14104, - 0, - 14102, - 14103, - 14105 - ], - [ - 6, - 14105, - 14102, - 0, - 14101, - 0, - 14104 - ] - ], - [ - 5, - [ - 4, - 14108, - 14215, - 14109, - 14107 - ], - [ - 7, - 0, - 0, - 11206, - 0, - 11207, - 14106, - 14109 - ], - [ - 4, - 11205, - 0, - 0, - 14106 - ], - [ - 6, - 0, - 14107, - 14109, - 14215, - 0, - 14108 - ], - [ - 6, - 0, - 14107, - 14108, - 0, - 14106, - 14215 - ] - ], - [ - 5, - [ - 6, - 14206, - 0, - 14203, - 0, - 14202, - 14205 - ], - [ - 7, - 0, - 11302, - 0, - 0, - 14204, - 14202, - 14205 - ], - [ - 7, - 0, - 0, - 0, - 0, - 14205, - 14206, - 14201 - ], - [ - 6, - 0, - 14201, - 14203, - 0, - 14206, - 14204 - ], - [ - 6, - 14204, - 0, - 14202, - 14203, - 0, - 14201 - ] - ], - [ - 5, - [ - 6, - 14209, - 0, - 14208, - 14212, - 14211, - 14210 - ], - [ - 6, - 11305, - 0, - 0, - 0, - 14209, - 14207 - ], - [ - 7, - 0, - 0, - 0, - 0, - 14208, - 14207, - 14210 - ], - [ - 6, - 14212, - 0, - 14210, - 14207, - 0, - 14211 - ], - [ - 5, - 14209, - 14208, - 0, - 14212, - 14211 - ] - ], - [ - 5, - [ - 6, - 0, - 14214, - 0, - 14307, - 14308, - 14309 - ], - [ - 7, - 0, - 0, - 0, - 0, - 0, - 14308, - 14213 - ], - [ - 5, - 0, - 0, - 0, - 0, - 14309 - ], - [ - 5, - 14214, - 14213, - 0, - 14308, - 14307 - ], - [ - 5, - 14309, - 14214, - 0, - 14307, - 14213 - ] - ], - [ - 5, - [ - 4, - 14306, - 14304, - 14303, - 14302 - ], - [ - 7, - 0, - 0, - 11303, - 0, - 14301, - 14305, - 14306 - ], - [ - 7, - 0, - 0, - 0, - 0, - 14302, - 14306, - 14303 - ], - [ - 6, - 14304, - 0, - 14302, - 14305, - 0, - 14301 - ], - [ - 6, - 0, - 14303, - 14301, - 14304, - 0, - 14305 - ] - ], - [ - 5, - [ - 6, - 14313, - 14311, - 14314, - 0, - 14315, - 14310 - ], - [ - 7, - 0, - 0, - 0, - 11304, - 14310, - 0, - 14311 - ], - [ - 7, - 0, - 0, - 0, - 0, - 0, - 14313, - 14312 - ], - [ - 6, - 14313, - 14315, - 14311, - 0, - 14312, - 14314 - ], - [ - 6, - 0, - 14310, - 14312, - 0, - 14315, - 14314 - ] - ], - [ - 5, - [ - 0 - ], - [ - 4, - 15104, - 15108, - 15105, - 15106 - ], - [ - 4, - 15103, - 15101, - 15102, - 15107 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 3, - 15114, - 15110, - 15112 - ], - [ - 4, - 15115, - 15111, - 15113, - 15109 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 4, - 15206, - 15202, - 15204, - 15203 - ], - [ - 4, - 15207, - 15208, - 15205, - 15201 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 3, - 15215, - 15213, - 15209 - ], - [ - 4, - 15211, - 15214, - 15212, - 15210 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 4, - 15307, - 15308, - 15301, - 15302 - ], - [ - 4, - 15303, - 15306, - 15304, - 15305 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 3, - 15315, - 15314, - 15309 - ], - [ - 4, - 15311, - 15310, - 15313, - 15312 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 6, - 16101, - 16106, - 0, - 0, - 16102, - 16103 - ], - [ - 7, - 0, - 16114, - 0, - 16105, - 0, - 16113, - 16115 - ], - [ - 6, - 0, - 16107, - 16104, - 0, - 16114, - 16113 - ], - [ - 6, - 16106, - 0, - 16105, - 16102, - 0, - 16101 - ], - [ - 5, - 16115, - 16104, - 0, - 16103, - 16107 - ] - ], - [ - 5, - [ - 6, - 16110, - 16112, - 0, - 16108, - 0, - 16303 - ], - [ - 7, - 0, - 16304, - 0, - 16111, - 0, - 16109, - 16302 - ], - [ - 7, - 0, - 16109, - 16305, - 0, - 16112, - 0, - 16301 - ], - [ - 5, - 16110, - 16302, - 0, - 16301, - 16305 - ], - [ - 6, - 16111, - 16304, - 0, - 0, - 16303, - 16108 - ] - ], - [ - 5, - [ - 5, - 0, - 16308, - 16310, - 0, - 16312 - ], - [ - 7, - 0, - 16315, - 0, - 16309, - 16307, - 0, - 16313 - ], - [ - 7, - 16312, - 16308, - 0, - 16313, - 16306, - 0, - 16314 - ], - [ - 6, - 16311, - 0, - 16306, - 0, - 16309, - 16307 - ], - [ - 6, - 16315, - 0, - 16310, - 16314, - 0, - 16311 - ] - ], - [ - 5, - [ - 6, - 0, - 17301, - 17301, - 0, - 17305, - 17305 - ], - [ - 7, - 0, - 0, - 17308, - 17308, - 0, - 17303, - 17303 - ], - [ - 6, - 17309, - 17309, - 0, - 0, - 17304, - 17304 - ], - [ - 6, - 17306, - 17306, - 0, - 0, - 17310, - 17310 - ], - [ - 6, - 17307, - 17307, - 0, - 0, - 17302, - 17302 - ] - ], - [ - 5, - [ - 6, - 17205, - 17205, - 0, - 0, - 17201, - 17201 - ], - [ - 7, - 0, - 0, - 17208, - 17208, - 0, - 17203, - 17203 - ], - [ - 7, - 0, - 0, - 17209, - 17209, - 0, - 17204, - 17204 - ], - [ - 6, - 17206, - 17206, - 0, - 0, - 17210, - 17210 - ], - [ - 6, - 17207, - 17207, - 0, - 0, - 17202, - 17202 - ] - ], - [ - 5, - [ - 6, - 17211, - 17211, - 0, - 0, - 17311, - 17311 - ], - [ - 7, - 0, - 0, - 17314, - 17314, - 0, - 17214, - 17214 - ], - [ - 6, - 17215, - 17215, - 0, - 0, - 17315, - 17315 - ], - [ - 6, - 17312, - 17312, - 0, - 0, - 17212, - 17212 - ], - [ - 6, - 17213, - 17213, - 0, - 0, - 17313, - 17313 - ] - ], - [ - 5, - [ - 4, - 0, - 0, - 18306, - 18305 - ], - [ - 6, - 18303, - 0, - 18304, - 18305, - 0, - 18306 - ], - [ - 7, - 0, - 18307, - 18301, - 0, - 0, - 0, - 18302 - ], - [ - 5, - 0, - 11309, - 18304, - 0, - 18303 - ], - [ - 4, - 18302, - 0, - 18307, - 18301 - ] - ], - [ - 5, - [ - 6, - 18309, - 0, - 0, - 18313, - 0, - 18315 - ], - [ - 7, - 0, - 18312, - 18313, - 0, - 11308, - 0, - 18310 - ], - [ - 6, - 18314, - 0, - 18311, - 0, - 18310, - 18308 - ], - [ - 5, - 18314, - 0, - 11307, - 18315, - 11306 - ], - [ - 6, - 18311, - 18312, - 0, - 18308, - 0, - 18309 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 7114, - 7114, - 7109, - 7109 - ], - [ - 7, - 19110, - 19103, - 0, - 0, - 19101, - 0, - 19108 - ], - [ - 7, - 0, - 19112, - 0, - 0, - 0, - 7104, - 7104 - ], - [ - 5, - 19102, - 0, - 0, - 19115, - 19104 - ], - [ - 6, - 19113, - 0, - 19111, - 19109, - 0, - 19114 - ] - ], - [ - 5, - [ - 5, - 19304, - 0, - 19106, - 0, - 19306 - ], - [ - 5, - 19313, - 19309, - 0, - 19311, - 19315 - ], - [ - 6, - 0, - 19312, - 19107, - 0, - 19314, - 19310 - ], - [ - 6, - 19302, - 0, - 19301, - 19307, - 0, - 19303 - ], - [ - 5, - 0, - 19105, - 0, - 19305, - 19308 - ] - ], - [ - 5, - [ - 6, - 0, - 0, - 7115, - 7115, - 7110, - 7110 - ], - [ - 0 - ], - [ - 7, - 0, - 0, - 0, - 0, - 0, - 7105, - 7105 - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 4, - 20201, - 0, - 21214, - 20202 - ], - [ - 7, - 0, - 21212, - 0, - 21215, - 21211, - 0, - 20204 - ], - [ - 6, - 20202, - 0, - 21213, - 0, - 21211, - 21214 - ], - [ - 6, - 0, - 21212, - 21213, - 0, - 20203, - 20201 - ], - [ - 4, - 21215, - 0, - 20203, - 20204 - ] - ], - [ - 5, - [ - 6, - 21204, - 0, - 11311, - 21207, - 0, - 21208 - ], - [ - 5, - 0, - 21203, - 21201, - 0, - 21202 - ], - [ - 7, - 21203, - 0, - 21207, - 0, - 21206, - 0, - 21205 - ], - [ - 5, - 11310, - 21202, - 0, - 21204, - 21208 - ], - [ - 5, - 21205, - 0, - 11208, - 21201, - 21206 - ] - ], - [ - 5, - [ - 5, - 21104, - 0, - 21210, - 0, - 21209 - ], - [ - 7, - 0, - 21104, - 21102, - 0, - 21105, - 0, - 21101 - ], - [ - 5, - 21107, - 21209, - 0, - 21103, - 21106 - ], - [ - 6, - 21107, - 0, - 21106, - 21210, - 0, - 21102 - ], - [ - 6, - 0, - 21103, - 0, - 21105, - 0, - 21101 - ] - ], - [ - 5, - [ - 4, - 21111, - 21109, - 0, - 11312 - ], - [ - 7, - 0, - 21112, - 21115, - 0, - 0, - 21108, - 21113 - ], - [ - 5, - 21110, - 21115, - 0, - 21114, - 21111 - ], - [ - 6, - 0, - 21112, - 21108, - 11313, - 0, - 21110 - ], - [ - 5, - 21109, - 21114, - 0, - 21113, - 11209 - ] - ], - [ - 5, - [ - 2, - 20102, - 20105 - ], - [ - 7, - 0, - 22105, - 0, - 22107, - 20106, - 0, - 20103 - ], - [ - 5, - 20104, - 0, - 20101, - 0, - 20108 - ], - [ - 5, - 0, - 22106, - 0, - 22108, - 22101 - ], - [ - 6, - 22104, - 0, - 20107, - 22102, - 0, - 22103 - ] - ], - [ - 5, - [ - 5, - 20112, - 11315, - 0, - 20205, - 20206 - ], - [ - 6, - 0, - 20206, - 20110, - 0, - 20205, - 20115 - ], - [ - 6, - 22113, - 0, - 22115, - 22111, - 0, - 22114 - ], - [ - 6, - 20109, - 20111, - 0, - 20113, - 0, - 20114 - ], - [ - 5, - 0, - 22109, - 0, - 22110, - 22112 - ] - ], - [ - 5, - [ - 5, - 20212, - 0, - 20211, - 20213, - 11314 - ], - [ - 7, - 20213, - 0, - 0, - 20210, - 20208, - 0, - 20212 - ], - [ - 7, - 20209, - 20210, - 0, - 0, - 20214, - 0, - 20215 - ], - [ - 6, - 0, - 20209, - 20214, - 0, - 20215, - 20207 - ], - [ - 6, - 0, - 20211, - 20207, - 0, - 0, - 20208 - ] - ], - [ - 5, - [ - 5, - 11213, - 23202, - 0, - 23209, - 11212 - ], - [ - 7, - 0, - 23207, - 0, - 23204, - 0, - 11211, - 23215 - ], - [ - 6, - 23213, - 23201, - 0, - 0, - 23210, - 23208 - ], - [ - 5, - 0, - 23205, - 23212, - 0, - 23214 - ], - [ - 5, - 23206, - 11210, - 0, - 23211, - 23203 - ] - ], - [ - 5, - [ - 3, - 0, - 24110, - 11215 - ], - [ - 7, - 24108, - 0, - 11214, - 0, - 24115, - 0, - 24111 - ], - [ - 5, - 0, - 0, - 0, - 0, - 24109 - ], - [ - 3, - 0, - 0, - 24113 - ], - [ - 5, - 24112, - 0, - 0, - 0, - 24114 - ] - ], - [ - 5, - [ - 0 - ], - [ - 6, - 0, - 0, - 0, - 0, - 0, - 24103 - ], - [ - 0 - ], - [ - 5, - 0, - 0, - 0, - 0, - 24102 - ], - [ - 2, - 0, - 24101 - ] - ], - [ - 5, - [ - 0 - ], - [ - 5, - 0, - 24107, - 0, - 0, - 24104 - ], - [ - 3, - 0, - 0, - 24106 - ], - [ - 0 - ], - [ - 5, - 0, - 0, - 0, - 0, - 24105 - ] - ] - ], - "자료245": [ - 3, - [ - 15, - [ - 5, - [ - 6, - "", - "", - "", - "", - "", - "101_체육11" - ], - [ - 4, - "", - "", - "", - "101_체육11" - ], - [ - 0 - ], - [ - 0 - ], - [ - 4, - "", - "", - "", - "101_체육11" - ] - ], - [ - 5, - [ - 0 - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "102_체육12" - ], - [ - 3, - "", - "", - "102_체육12" - ], - [ - 2, - "", - "102_체육12" - ] - ], - [ - 5, - [ - 5, - "", - "", - "", - "", - "101_체육11" - ], - [ - 5, - "", - "", - "", - "", - "101_체육11" - ], - [ - 0 - ], - [ - 4, - "", - "", - "", - "101_체육11" - ], - [ - 0 - ] - ], - [ - 5, - [ - 2, - "", - "102_체육12" - ], - [ - 0 - ], - [ - 0 - ], - [ - 1, - "102_체육12" - ], - [ - 6, - "", - "", - "", - "", - "", - "102_체육12" - ] - ], - [ - 5, - [ - 1, - "101_체육11" - ], - [ - 0 - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "101_체육11" - ], - [ - 1, - "101_체육11" - ] - ], - [ - 5, - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "102_체육12" - ], - [ - 4, - "", - "", - "", - "102_체육12" - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "102_체육12" - ] - ], - [ - 5, - [ - 4, - "", - "", - "", - "101_체육11" - ], - [ - 0 - ], - [ - 0 - ], - [ - 2, - "", - "101_체육11" - ], - [ - 2, - "", - "101_체육11" - ] - ], - [ - 5, - [ - 1, - "102_체육12" - ], - [ - 0 - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "102_체육12" - ], - [ - 3, - "", - "", - "102_체육12" - ] - ], - [ - 5, - [ - 3, - "", - "", - "101_체육11" - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "101_체육11" - ], - [ - 0 - ], - [ - 3, - "", - "", - "101_체육11" - ], - [ - 0 - ] - ], - [ - 5, - [ - 4, - "", - "", - "", - "102_체육12" - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "102_체육12" - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "102_체육12" - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 0 - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "101_체육11" - ], - [ - 1, - "101_체육11" - ], - [ - 5, - "", - "", - "", - "", - "101_체육11" - ] - ], - [ - 5, - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "102_체육12" - ], - [ - 0 - ], - [ - 4, - "", - "", - "", - "102_체육12" - ], - [ - 4, - "", - "", - "", - "102_체육12" - ] - ], - [ - 5, - [ - 0 - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "101_체육11" - ], - [ - 6, - "", - "", - "", - "", - "", - "101_체육11" - ], - [ - 6, - "", - "", - "", - "", - "", - "101_체육11" - ] - ], - [ - 5, - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "102_체육12" - ], - [ - 0 - ], - [ - 2, - "", - "102_체육12" - ], - [ - 1, - "102_체육12" - ] - ], - [ - 5, - [ - 2, - "", - "101_체육11" - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "101_체육11" - ], - [ - 0 - ], - [ - 3, - "", - "", - "101_체육11" - ] - ] - ], - [ - 15, - [ - 5, - [ - 0 - ], - [ - 0 - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "201_체육21" - ], - [ - 2, - "", - "201_체육21" - ], - [ - 6, - "", - "", - "", - "", - "", - "201_체육21" - ] - ], - [ - 5, - [ - 5, - "", - "", - "", - "", - "202_체육22" - ], - [ - 6, - "", - "", - "", - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 0 - ], - [ - 3, - "", - "", - "202_체육22" - ] - ], - [ - 5, - [ - 3, - "", - "", - "201_체육21" - ], - [ - 0 - ], - [ - 0 - ], - [ - 3, - "", - "", - "201_체육21" - ], - [ - 4, - "", - "", - "", - "201_체육21" - ] - ], - [ - 5, - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "202_체육22" - ], - [ - 1, - "202_체육22" - ] - ], - [ - 5, - [ - 6, - "", - "", - "", - "", - "", - "201_체육21" - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "201_체육21" - ], - [ - 5, - "", - "", - "", - "", - "201_체육21" - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 1, - "202_체육22" - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "202_체육22" - ], - [ - 5, - "", - "", - "", - "", - "202_체육22" - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "201_체육21" - ], - [ - 6, - "", - "", - "", - "", - "", - "201_체육21" - ], - [ - 4, - "", - "", - "", - "201_체육21" - ], - [ - 0 - ] - ], - [ - 5, - [ - 3, - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 2, - "", - "202_체육22" - ] - ], - [ - 5, - [ - 1, - "201_체육21" - ], - [ - 5, - "", - "", - "", - "", - "201_체육21" - ], - [ - 0 - ], - [ - 0 - ], - [ - 1, - "201_체육21" - ] - ], - [ - 5, - [ - 6, - "", - "", - "", - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "202_체육22" - ], - [ - 3, - "", - "", - "202_체육22" - ], - [ - 0 - ] - ], - [ - 5, - [ - 5, - "", - "", - "", - "", - "201_체육21" - ], - [ - 0 - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "201_체육21" - ], - [ - 5, - "", - "", - "", - "", - "201_체육21" - ] - ], - [ - 5, - [ - 4, - "", - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 0 - ], - [ - 1, - "202_체육22" - ], - [ - 4, - "", - "", - "", - "202_체육22" - ] - ], - [ - 5, - [ - 0 - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "202_체육22" - ], - [ - 0 - ], - [ - 2, - "", - "202_체육22" - ], - [ - 5, - "", - "", - "", - "", - "202_체육22" - ] - ], - [ - 5, - [ - 2, - "", - "201_체육21" - ], - [ - 0 - ], - [ - 0 - ], - [ - 1, - "201_체육21" - ], - [ - 2, - "", - "201_체육21" - ] - ], - [ - 5, - [ - 2, - "", - "202_체육22" - ], - [ - 0 - ], - [ - 0 - ], - [ - 4, - "", - "", - "", - "202_체육22" - ], - [ - 6, - "", - "", - "", - "", - "", - "202_체육22" - ] - ] - ], - [ - 15, - [ - 5, - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "301_체육31" - ], - [ - 3, - "", - "", - "301_체육31" - ] - ], - [ - 5, - [ - 4, - "", - "", - "", - "302_체육32" - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "302_체육32" - ], - [ - 3, - "", - "", - "302_체육32" - ], - [ - 0 - ] - ], - [ - 5, - [ - 3, - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 2, - "", - "301_체육31" - ] - ], - [ - 5, - [ - 2, - "", - "302_체육32" - ], - [ - 0 - ], - [ - 0 - ], - [ - 1, - "302_체육32" - ], - [ - 4, - "", - "", - "", - "302_체육32" - ] - ], - [ - 5, - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 4, - "", - "", - "", - "301_체육31" - ], - [ - 6, - "", - "", - "", - "", - "", - "301_체육31" - ] - ], - [ - 5, - [ - 1, - "302_체육32" - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "302_체육32" - ], - [ - 6, - "", - "", - "", - "", - "", - "302_체육32" - ], - [ - 0 - ], - [ - 0 - ] - ], - [ - 5, - [ - 4, - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "301_체육31" - ], - [ - 4, - "", - "", - "", - "301_체육31" - ] - ], - [ - 5, - [ - 5, - "", - "", - "", - "", - "302_체육32" - ], - [ - 6, - "", - "", - "", - "", - "", - "302_체육32" - ], - [ - 0 - ], - [ - 4, - "", - "", - "", - "302_체육32" - ], - [ - 0 - ] - ], - [ - 5, - [ - 6, - "", - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 5, - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 1, - "301_체육31" - ] - ], - [ - 5, - [ - 6, - "", - "", - "", - "", - "", - "302_체육32" - ], - [ - 5, - "", - "", - "", - "", - "302_체육32" - ], - [ - 0 - ], - [ - 0 - ], - [ - 2, - "", - "302_체육32" - ] - ], - [ - 5, - [ - 2, - "", - "301_체육31" - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 3, - "", - "", - "301_체육31" - ], - [ - 0 - ] - ], - [ - 5, - [ - 0 - ], - [ - 0 - ], - [ - 7, - "", - "", - "", - "", - "", - "", - "302_체육32" - ], - [ - 5, - "", - "", - "", - "", - "302_체육32" - ], - [ - 3, - "", - "", - "302_체육32" - ] - ], - [ - 5, - [ - 1, - "301_체육31" - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "301_체육31" - ], - [ - 1, - "301_체육31" - ], - [ - 0 - ] - ], - [ - 5, - [ - 3, - "", - "", - "302_체육32" - ], - [ - 0 - ], - [ - 0 - ], - [ - 6, - "", - "", - "", - "", - "", - "302_체육32" - ], - [ - 6, - "", - "", - "", - "", - "", - "302_체육32" - ] - ], - [ - 5, - [ - 5, - "", - "", - "", - "", - "301_체육31" - ], - [ - 0 - ], - [ - 0 - ], - [ - 2, - "", - "301_체육31" - ], - [ - 5, - "", - "", - "", - "", - "301_체육31" - ] - ] - ] - ], - "동시그룹": [ - [ - 3 - ], - [ - 10, - 3101, - 3102, - 3103, - 3104, - 3105, - 7111, - 7112, - 7113, - 7114, - 7115 - ], - [ - 10, - 7106, - 7107, - 7108, - 7109, - 7110, - 3111, - 3112, - 3113, - 3114, - 3115 - ], - [ - 10, - 7101, - 7102, - 7103, - 7104, - 7105, - 3106, - 3107, - 3108, - 3109, - 3110 - ] - ] -} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index ffb2aad..3769ff0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,5 +16,5 @@ "noUnusedParameters": true }, "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "packages"] + "exclude": ["node_modules", "dist"] }