kordoc 4.19.2 → 4.21.0

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 (134) hide show
  1. package/NOTICE +47 -0
  2. package/README.md +4 -1
  3. package/THIRD_PARTY/hwp-auto-docfit.LICENSE +23 -0
  4. package/THIRD_PARTY/korean-report-hwpx.LICENSE +21 -0
  5. package/dist/{-3JIHF2AL.js → -LJL6UNRO.js} +17 -11
  6. package/dist/{chunk-ORGWGR4K.cjs → chunk-2OTAFZ2Y.cjs} +6 -6
  7. package/dist/{chunk-ORGWGR4K.cjs.map → chunk-2OTAFZ2Y.cjs.map} +1 -1
  8. package/dist/{chunk-T2DZTOGG.cjs → chunk-3ITKDX7E.cjs} +12 -12
  9. package/dist/{chunk-T2DZTOGG.cjs.map → chunk-3ITKDX7E.cjs.map} +1 -1
  10. package/dist/{chunk-B4R443MV.js → chunk-6EXVHTBH.js} +2 -2
  11. package/dist/{chunk-AOVMOCTK.js → chunk-6SG56DDC.js} +2 -2
  12. package/dist/{chunk-5PGOZBEQ.cjs → chunk-7QL3G7UF.cjs} +22 -22
  13. package/dist/{chunk-5PGOZBEQ.cjs.map → chunk-7QL3G7UF.cjs.map} +1 -1
  14. package/dist/{chunk-R2JM2HOJ.js → chunk-ALCZCRIU.js} +4 -4
  15. package/dist/{chunk-PWQ2BVAT.js → chunk-D4EDAS3V.js} +22 -3
  16. package/dist/{chunk-PWQ2BVAT.js.map → chunk-D4EDAS3V.js.map} +1 -1
  17. package/dist/{chunk-OKHKEYTL.js → chunk-FNHELO37.js} +2 -2
  18. package/dist/{chunk-QYJPU4FZ.js → chunk-G57LD7SG.js} +2 -2
  19. package/dist/{chunk-TM4T4NYJ.js → chunk-GYPEF6GQ.js} +2 -2
  20. package/dist/{chunk-56ZWAREM.js → chunk-HDP2H33I.js} +2 -2
  21. package/dist/{chunk-VO22VAR3.js → chunk-JEKZXUIJ.js} +2 -2
  22. package/dist/{chunk-WQAGDJIP.cjs → chunk-JL525ZAU.cjs} +3 -3
  23. package/dist/{chunk-WQAGDJIP.cjs.map → chunk-JL525ZAU.cjs.map} +1 -1
  24. package/dist/{chunk-RVBQT2PD.cjs → chunk-JUFEZMXC.cjs} +3 -3
  25. package/dist/{chunk-RVBQT2PD.cjs.map → chunk-JUFEZMXC.cjs.map} +1 -1
  26. package/dist/chunk-LRHVFJ5J.js +29 -0
  27. package/dist/chunk-LRHVFJ5J.js.map +1 -0
  28. package/dist/{chunk-EUCBMW6C.js → chunk-MCMMGZOJ.js} +3 -3
  29. package/dist/{chunk-I2TBI7PN.js → chunk-O23XMVMP.js} +2 -2
  30. package/dist/{chunk-XPM7WC54.js → chunk-O33PS3VI.js} +4 -4
  31. package/dist/{chunk-6ZBORHFB.js → chunk-OVBIDELJ.js} +2 -2
  32. package/dist/{chunk-NV46IWKF.js → chunk-QQERGR6C.js} +440 -29
  33. package/dist/chunk-QQERGR6C.js.map +1 -0
  34. package/dist/{chunk-JXJDXDOU.js → chunk-SEVFALDF.js} +3 -3
  35. package/dist/{chunk-AKSCTGKG.js → chunk-T3EVQHOP.js} +2 -2
  36. package/dist/{chunk-MZ6XNFZL.cjs → chunk-UYKDMNLD.cjs} +2 -2
  37. package/dist/{chunk-MZ6XNFZL.cjs.map → chunk-UYKDMNLD.cjs.map} +1 -1
  38. package/dist/{chunk-QZ63HXEG.js → chunk-VSSMJKOX.js} +11 -9
  39. package/dist/chunk-VSSMJKOX.js.map +1 -0
  40. package/dist/{chunk-4CS7XE2Q.js → chunk-WB6RROCW.js} +2 -2
  41. package/dist/{chunk-JK7N4R4K.js → chunk-WUJNUWZ4.js} +2 -2
  42. package/dist/{chunk-J75TVRJB.js → chunk-XZ3HIQXC.js} +2 -2
  43. package/dist/{chunk-GNUGD4RO.js → chunk-ZJDZH647.js} +2 -2
  44. package/dist/{chunk-QPJXYJIK.js → chunk-ZKHLC7ZG.js} +3 -2
  45. package/dist/chunk-ZKHLC7ZG.js.map +1 -0
  46. package/dist/{chunk-U6AJU2VD.js → chunk-ZNCOOG54.js} +2 -2
  47. package/dist/chunks-XOKXUJ67.js +10 -0
  48. package/dist/cli.js +414 -65
  49. package/dist/cli.js.map +1 -1
  50. package/dist/{formula-STIFIS57.js → formula-AD75YRCB.js} +3 -3
  51. package/dist/{formula-RNATQ3FQ.cjs → formula-B7GGECPZ.cjs} +9 -9
  52. package/dist/{formula-RNATQ3FQ.cjs.map → formula-B7GGECPZ.cjs.map} +1 -1
  53. package/dist/{formula-RSTTP626.js → formula-JULH7HF6.js} +4 -4
  54. package/dist/{image-ocr-R6ZDFBAN.js → image-ocr-2UJ6QP63.js} +6 -6
  55. package/dist/{image-ocr-XKSAEEXP.js → image-ocr-3C3K64AD.js} +9 -9
  56. package/dist/{image-ocr-7L5TBBPA.cjs → image-ocr-E2IN6D4B.cjs} +15 -15
  57. package/dist/{image-ocr-7L5TBBPA.cjs.map → image-ocr-E2IN6D4B.cjs.map} +1 -1
  58. package/dist/index.cjs +977 -551
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.d.cts +104 -3
  61. package/dist/index.d.ts +104 -3
  62. package/dist/index.js +453 -27
  63. package/dist/index.js.map +1 -1
  64. package/dist/mcp.js +34 -27
  65. package/dist/mcp.js.map +1 -1
  66. package/dist/{model-bundle-NGTKULP7.js → model-bundle-XT5IXIZ3.js} +5 -5
  67. package/dist/{models-QOSU5SYL.js → models-NDSZF5T2.js} +5 -5
  68. package/dist/parse-worker-v2-XTDC2E3M.js +285 -0
  69. package/dist/parse-worker-v2-XTDC2E3M.js.map +1 -0
  70. package/dist/{parser-3G4G6SST.js → parser-3W5XWIE5.js} +11 -11
  71. package/dist/{parser-AIQBU7FS.cjs → parser-V2JLOQIC.cjs} +132 -132
  72. package/dist/{parser-AIQBU7FS.cjs.map → parser-V2JLOQIC.cjs.map} +1 -1
  73. package/dist/{parser-5GUEP6EK.js → parser-VE7A5K7X.js} +8 -8
  74. package/dist/pdf-ocr-KZ56UECD.js +20 -0
  75. package/dist/pdf-ocr-L4EUIDIW.js +16 -0
  76. package/dist/pdf-ocr-XPLOCBYI.cjs +17 -0
  77. package/dist/{pdf-ocr-7OAFUDM4.cjs.map → pdf-ocr-XPLOCBYI.cjs.map} +1 -1
  78. package/dist/{profile-io-ZVNMDLLS.js → profile-io-7Z6CPLR2.js} +3 -3
  79. package/dist/{rasterize-Y2RLMVCL.js → rasterize-IF2FNQ7Y.js} +3 -3
  80. package/dist/{redact-doc-PNRDDBI3.js → redact-doc-HE42N4TZ.js} +11 -11
  81. package/dist/{render-S3ALARVO.js → render-6ZE75NBK.js} +7 -7
  82. package/dist/seal-N2Q7WC4V.js +10 -0
  83. package/dist/{setup-JH66VSFZ.js → setup-ZTYMTCEJ.js} +3 -3
  84. package/dist/visual-3YC2PLLG.js +20 -0
  85. package/dist/{watch-KMB2FTOD.js → watch-WELSQDEN.js} +12 -12
  86. package/package.json +1 -1
  87. package/dist/chunk-NV46IWKF.js.map +0 -1
  88. package/dist/chunk-QPJXYJIK.js.map +0 -1
  89. package/dist/chunk-QZ63HXEG.js.map +0 -1
  90. package/dist/chunks-2EC2R7PY.js +0 -10
  91. package/dist/pdf-ocr-7OAFUDM4.cjs +0 -17
  92. package/dist/pdf-ocr-DAXS5RX4.js +0 -16
  93. package/dist/pdf-ocr-R3VGX6F2.js +0 -20
  94. package/dist/seal-EJWPS5VK.js +0 -10
  95. package/dist/visual-GDXMKDVY.js +0 -20
  96. /package/dist/{-3JIHF2AL.js.map → -LJL6UNRO.js.map} +0 -0
  97. /package/dist/{chunk-B4R443MV.js.map → chunk-6EXVHTBH.js.map} +0 -0
  98. /package/dist/{chunk-AOVMOCTK.js.map → chunk-6SG56DDC.js.map} +0 -0
  99. /package/dist/{chunk-R2JM2HOJ.js.map → chunk-ALCZCRIU.js.map} +0 -0
  100. /package/dist/{chunk-OKHKEYTL.js.map → chunk-FNHELO37.js.map} +0 -0
  101. /package/dist/{chunk-QYJPU4FZ.js.map → chunk-G57LD7SG.js.map} +0 -0
  102. /package/dist/{chunk-TM4T4NYJ.js.map → chunk-GYPEF6GQ.js.map} +0 -0
  103. /package/dist/{chunk-56ZWAREM.js.map → chunk-HDP2H33I.js.map} +0 -0
  104. /package/dist/{chunk-VO22VAR3.js.map → chunk-JEKZXUIJ.js.map} +0 -0
  105. /package/dist/{chunk-EUCBMW6C.js.map → chunk-MCMMGZOJ.js.map} +0 -0
  106. /package/dist/{chunk-I2TBI7PN.js.map → chunk-O23XMVMP.js.map} +0 -0
  107. /package/dist/{chunk-XPM7WC54.js.map → chunk-O33PS3VI.js.map} +0 -0
  108. /package/dist/{chunk-6ZBORHFB.js.map → chunk-OVBIDELJ.js.map} +0 -0
  109. /package/dist/{chunk-JXJDXDOU.js.map → chunk-SEVFALDF.js.map} +0 -0
  110. /package/dist/{chunk-AKSCTGKG.js.map → chunk-T3EVQHOP.js.map} +0 -0
  111. /package/dist/{chunk-4CS7XE2Q.js.map → chunk-WB6RROCW.js.map} +0 -0
  112. /package/dist/{chunk-JK7N4R4K.js.map → chunk-WUJNUWZ4.js.map} +0 -0
  113. /package/dist/{chunk-J75TVRJB.js.map → chunk-XZ3HIQXC.js.map} +0 -0
  114. /package/dist/{chunk-GNUGD4RO.js.map → chunk-ZJDZH647.js.map} +0 -0
  115. /package/dist/{chunk-U6AJU2VD.js.map → chunk-ZNCOOG54.js.map} +0 -0
  116. /package/dist/{chunks-2EC2R7PY.js.map → chunks-XOKXUJ67.js.map} +0 -0
  117. /package/dist/{formula-STIFIS57.js.map → formula-AD75YRCB.js.map} +0 -0
  118. /package/dist/{formula-RSTTP626.js.map → formula-JULH7HF6.js.map} +0 -0
  119. /package/dist/{image-ocr-R6ZDFBAN.js.map → image-ocr-2UJ6QP63.js.map} +0 -0
  120. /package/dist/{image-ocr-XKSAEEXP.js.map → image-ocr-3C3K64AD.js.map} +0 -0
  121. /package/dist/{model-bundle-NGTKULP7.js.map → model-bundle-XT5IXIZ3.js.map} +0 -0
  122. /package/dist/{models-QOSU5SYL.js.map → models-NDSZF5T2.js.map} +0 -0
  123. /package/dist/{parser-3G4G6SST.js.map → parser-3W5XWIE5.js.map} +0 -0
  124. /package/dist/{parser-5GUEP6EK.js.map → parser-VE7A5K7X.js.map} +0 -0
  125. /package/dist/{pdf-ocr-DAXS5RX4.js.map → pdf-ocr-KZ56UECD.js.map} +0 -0
  126. /package/dist/{pdf-ocr-R3VGX6F2.js.map → pdf-ocr-L4EUIDIW.js.map} +0 -0
  127. /package/dist/{profile-io-ZVNMDLLS.js.map → profile-io-7Z6CPLR2.js.map} +0 -0
  128. /package/dist/{rasterize-Y2RLMVCL.js.map → rasterize-IF2FNQ7Y.js.map} +0 -0
  129. /package/dist/{redact-doc-PNRDDBI3.js.map → redact-doc-HE42N4TZ.js.map} +0 -0
  130. /package/dist/{render-S3ALARVO.js.map → render-6ZE75NBK.js.map} +0 -0
  131. /package/dist/{seal-EJWPS5VK.js.map → seal-N2Q7WC4V.js.map} +0 -0
  132. /package/dist/{setup-JH66VSFZ.js.map → setup-ZTYMTCEJ.js.map} +0 -0
  133. /package/dist/{visual-GDXMKDVY.js.map → visual-3YC2PLLG.js.map} +0 -0
  134. /package/dist/{watch-KMB2FTOD.js.map → watch-WELSQDEN.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  blocksToPages
4
- } from "./chunk-VO22VAR3.js";
4
+ } from "./chunk-JEKZXUIJ.js";
5
5
  import {
6
6
  allLinesegRemovalSplices,
7
7
  applySplices,
@@ -14,8 +14,9 @@ import {
14
14
  paraTText,
15
15
  paraTextPureT,
16
16
  patchZipEntries,
17
+ readZipEntries,
17
18
  scanSectionXml
18
- } from "./chunk-PWQ2BVAT.js";
19
+ } from "./chunk-D4EDAS3V.js";
19
20
  import {
20
21
  CONVERT_MAP,
21
22
  FLAG_COMPRESSED,
@@ -65,7 +66,7 @@ import {
65
66
  romanNumeral,
66
67
  simulateWrap,
67
68
  takeTocLeaders
68
- } from "./chunk-QZ63HXEG.js";
69
+ } from "./chunk-VSSMJKOX.js";
69
70
  import {
70
71
  CELL_EDGES,
71
72
  HEADING_RATIO_H1,
@@ -77,7 +78,7 @@ import {
77
78
  tidyScriptTags,
78
79
  unframeLayoutTables,
79
80
  wrapScript
80
- } from "./chunk-AOVMOCTK.js";
81
+ } from "./chunk-6SG56DDC.js";
81
82
  import {
82
83
  parsePageRange
83
84
  } from "./chunk-VQFA55IC.js";
@@ -97,7 +98,7 @@ import {
97
98
  localName,
98
99
  rawTextContent,
99
100
  readZipEntry
100
- } from "./chunk-QYJPU4FZ.js";
101
+ } from "./chunk-G57LD7SG.js";
101
102
  import {
102
103
  MAX_COLS,
103
104
  MAX_ROWS,
@@ -112,7 +113,7 @@ import {
112
113
  hasStructuredCellContent,
113
114
  mapPuaText,
114
115
  noteSuffix
115
- } from "./chunk-B4R443MV.js";
116
+ } from "./chunk-6EXVHTBH.js";
116
117
  import {
117
118
  KordocError,
118
119
  classifyError,
@@ -128,7 +129,7 @@ import {
128
129
  toArrayBuffer,
129
130
  unescapeHtml,
130
131
  unzipLimitBytes
131
- } from "./chunk-OKHKEYTL.js";
132
+ } from "./chunk-FNHELO37.js";
132
133
 
133
134
  // src/table/visual.ts
134
135
  import { readFile as readFile2 } from "fs/promises";
@@ -20028,6 +20029,155 @@ function bodyTitleGeom(bodyHeight, ov = {}) {
20028
20029
  return { barH: BODY_TITLE_GEOM.barH, titleH: Math.round(BODY_TITLE_GEOM.titleH * s) };
20029
20030
  }
20030
20031
 
20032
+ // src/hwpx/agency-styles.ts
20033
+ var AGENCY_COMMON = { "report": { "docs": 1129, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 32253, "style": "para", "share": 0.37, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } };
20034
+ var AGENCY_STYLES = {
20035
+ "\uAC1C\uC778\uC815\uBCF4\uBCF4\uD638\uC704\uC6D0\uD68C": { "report": { "docs": 10, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "HY\uAD81\uC11C", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 10, "fill": "#F2F2F2" } }, "press": { "paras": 455, "style": "para", "share": 0.17, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": null, "text": "#000000" } },
20036
+ "\uACBD\uCC30\uCCAD": { "report": { "docs": 4, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uBB38\uCCB4\uBD80 \uBC14\uD0D5\uCCB4", "pt": 15 }, { "font": "\uBB38\uCCB4\uBD80 \uBC14\uD0D5\uCCB4", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25E6", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 332, "style": "para", "share": 0.06, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBB38\uCCB4\uBD80 \uBC14\uD0D5\uCCB4", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#E7F4F6", "text": "#000000" } },
20037
+ "\uACE0\uC6A9\uB178\uB3D9\uBD80": { "report": { "docs": 65, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 12 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 2104, "style": "para", "share": 0.28, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD55C\uCEF4\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD55C\uCEF4\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#193657", "text": "#FFFFFF" } },
20038
+ "\uACF5\uC815\uAC70\uB798\uC704\uC6D0\uD68C": { "report": { "docs": 29, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "ref": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "p": { "font": "\uC2E0\uBA85 \uACAC\uBA85\uC870", "pt": 18 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 977, "style": "para", "share": 0.28, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20039
+ "\uACFC\uD559\uAE30\uC220\uC815\uBCF4\uD1B5\uC2E0\uBD80": { "report": { "docs": 47, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 1365, "style": "para", "share": 0.27, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#2B2D63", "text": "#FFFFFF" } },
20040
+ "\uAD00\uC138\uCCAD": { "report": { "docs": 12, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 10 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 10 }, "bullet2": "\u25E6", "table": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12, "fill": "#F2F2F2" } }, "press": { "paras": 587, "style": "para", "share": 0.29, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": null, "text": "#000000" } },
20041
+ "\uAD50\uC721\uBD80": { "report": { "docs": 34, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 12 }, "bullet2": "\u25E6", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 654, "style": "para", "share": 0.46, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25E6" }, "band": { "fill": "#DFE6F7", "text": "#000000" } },
20042
+ "\uAD6D\uAC00\uAD50\uC721\uC704\uC6D0\uD68C": { "report": { "docs": 3, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }, "bullet2": "\u25E6", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13, "fill": "#F2F2F2" } }, "press": { "paras": 46, "style": "para", "share": 0.11, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }, "bullet2": "\u25E6" }, "band": { "fill": "#23236A", "text": "#FFFFFF" } },
20043
+ "\uAD6D\uAC00\uB370\uC774\uD130\uCC98": { "report": { "docs": 5, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u3147", "table": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 10, "fill": "#E1E1E1" } }, "press": { "paras": 1258, "style": "box", "share": 0.66, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#333399", "text": "#FFFFFF" } },
20044
+ "\uAD6D\uAC00\uBCF4\uD6C8\uBD80": { "report": { "docs": 10, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#F2F2F2" } }, "press": { "paras": 161, "style": "para", "share": 0.19, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#0000FF", "text": "#FFFFFF" } },
20045
+ "\uAD6D\uAC00\uC720\uC0B0\uCCAD": { "report": { "docs": 30, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "ref": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB", "table": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 11, "fill": "#DFE6F7" } }, "press": { "paras": 623, "style": "para", "share": 0.17, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }, { "font": "\uBC14\uD0D5", "pt": 13 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20046
+ "\uAD6D\uBB34\uC870\uC815\uC2E4": { "report": { "docs": 25, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#F0F0F0" } }, "press": { "paras": 1206, "style": "box", "share": 0.92, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20047
+ "\uAD6D\uBBFC\uAD8C\uC775\uC704\uC6D0\uD68C": { "report": { "docs": 3, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#FBEFD4" } }, "press": { "paras": 449, "style": "box", "share": 0.53, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "HY\uC911\uACE0\uB515", "pt": 13 }, "p": { "font": "\uBC14\uD0D5", "pt": 15 }, "bullet2": "\u3147" }, "band": { "fill": "#00468C", "text": "#FFFFFF" } },
20048
+ "\uAD6D\uBC29\uBD80": { "report": { "docs": 7, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 16 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25E6", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#ECF2FA" } }, "press": { "paras": 280, "style": "box", "share": 0.9, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 16 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13 }, "p": { "font": "\uD55C\uCEF4\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25E6" }, "band": { "fill": "#193657", "text": "#FFFFFF" } },
20049
+ "\uAD6D\uC138\uCCAD": { "report": { "docs": 9, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 13 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13, "fill": "#E7E7E7" } }, "press": { "paras": 380, "style": "box", "share": 0.93, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 15 }, "bullet2": "\u3147" }, "band": { "fill": "#3E57A5", "text": "#FFFFFF" } },
20050
+ "\uAD6D\uD1A0\uAD50\uD1B5\uBD80": { "report": { "docs": 35, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13 }, "p": { "font": "\uBC14\uD0D5", "pt": 12 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#D9D9D9" } }, "press": { "paras": 1441, "style": "box", "share": 0.9, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 12 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20051
+ "\uAE08\uC735\uC704\uC6D0\uD68C": { "report": { "docs": 13, "levels": [{ "font": "\uBC14\uD0D5", "pt": 13 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#FFFFE5" } }, "press": { "paras": 791, "style": "para", "share": 0.33, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20052
+ "\uAE30\uBCF8\uC0AC\uD68C\uC704\uC6D0\uD68C": { "report": null, "press": { "paras": 43, "style": "box", "share": 0.85, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": null },
20053
+ "\uAE30\uC0C1\uCCAD": { "report": { "docs": 18, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uBC14\uD0D5\uCCB4", "pt": 14 }, { "font": "\uBC14\uD0D5\uCCB4", "pt": 14 }], "note": { "font": "\uB3CB\uC6C0\uCCB4", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 9, "fill": "#D1E8FF" } }, "press": { "paras": 314, "style": "para", "share": 0.46, "levels": [{ "font": "\uBC14\uD0D5\uCCB4", "pt": 14 }, { "font": "\uBC14\uD0D5\uCCB4", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB3CB\uC6C0\uCCB4", "pt": 12 }, "p": { "font": "\uBC14\uD0D5\uCCB4", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#00468C", "text": "#FFFFFF" } },
20054
+ "\uAE30\uD68D\uC608\uC0B0\uCC98": { "report": { "docs": 5, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 16 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#DFE6F7" } }, "press": { "paras": 422, "style": "para", "share": 0.19, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#0066FF", "text": "#FFFFFF" } },
20055
+ "\uAE30\uD6C4\uC5D0\uB108\uC9C0\uD658\uACBD\uBD80": { "report": { "docs": 92, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 2042, "style": "para", "share": 0.39, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20056
+ "\uB18D\uB9BC\uCD95\uC0B0\uC2DD\uD488\uBD80": { "report": { "docs": 54, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#DFE6F7" } }, "press": { "paras": 1155, "style": "para", "share": 0.22, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#0066FF", "text": "#FFFFFF" } },
20057
+ "\uB18D\uCD0C\uC9C4\uD765\uCCAD": { "report": { "docs": 128, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 15 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "ref": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 13 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 2530, "style": "para", "share": 0.43, "levels": [{ "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 15 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 15 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB3CB\uC6C0", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#1B1760", "text": "#FFFFFF" } },
20058
+ "\uBB38\uD654\uCCB4\uC721\uAD00\uAD11\uBD80": { "report": { "docs": 44, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 16 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 717, "style": "para", "share": 0.16, "levels": [{ "font": "\uBC14\uD0D5", "pt": 16 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uBC14\uD0D5", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#193657", "text": "#FFFFFF" } },
20059
+ "\uBC29\uC1A1\uBBF8\uB514\uC5B4\uD1B5\uC2E0\uC704\uC6D0\uD68C": { "report": { "docs": 11, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#D2EBEE" } }, "press": { "paras": 390, "style": "para", "share": 0.28, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20060
+ "\uBC29\uC704\uC0AC\uC5C5\uCCAD": { "report": { "docs": 6, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u274D", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#ECF2FA" } }, "press": { "paras": 164, "style": "para", "share": 0.22, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25E6" }, "band": { "fill": "#1C3D62", "text": "#FFFFFF" } },
20061
+ "\uBC95\uBB34\uBD80": { "report": { "docs": 12, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u274D", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 361, "style": "box", "share": 0.56, "levels": [{ "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uAD74\uB9BC", "pt": 13 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u274D" }, "band": { "fill": null, "text": "#000000" } },
20062
+ "\uBC95\uC81C\uCC98": { "report": { "docs": 3, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#E3E2F2" } }, "press": { "paras": 105, "style": "para", "share": 0.17, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uBC14\uD0D5", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20063
+ "\uBCD1\uBB34\uCCAD": { "report": null, "press": { "paras": 39, "style": "para", "share": 0.37, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25CB" }, "band": null },
20064
+ "\uBCF4\uAC74\uBCF5\uC9C0\uBD80": { "report": { "docs": 78, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 10 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 1725, "style": "para", "share": 0.33, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5\uCCB4", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#0066FF", "text": "#FFFFFF" } },
20065
+ "\uC0B0\uB9BC\uCCAD": { "report": { "docs": 4, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#DFE6F7" } }, "press": { "paras": 714, "style": "para", "share": 0.01, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000066", "text": "#FFFFFF" } },
20066
+ "\uC0B0\uC5C5\uD1B5\uC0C1\uBD80": { "report": { "docs": 16, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#FAFABF" } }, "press": { "paras": 401, "style": "para", "share": 0.28, "levels": [{ "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000066", "text": "#FFFFFF" } },
20067
+ "\uC0C8\uB9CC\uAE08\uAC1C\uBC1C\uCCAD": { "report": null, "press": { "paras": 181, "style": "box", "share": 0.92, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20068
+ "\uC131\uD3C9\uB4F1\uAC00\uC871\uBD80": { "report": { "docs": 29, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#F5FCFE" } }, "press": { "paras": 639, "style": "box", "share": 0.91, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 12 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20069
+ "\uC18C\uBC29\uCCAD": { "report": null, "press": { "paras": 224, "style": "box", "share": 0.84, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": null },
20070
+ "\uC2DD\uD488\uC758\uC57D\uD488\uC548\uC804\uCC98": { "report": { "docs": 42, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 13, "fill": "#DFE6F7" } }, "press": { "paras": 731, "style": "para", "share": 0.16, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#193657", "text": "#FFFFFF" } },
20071
+ "\uC678\uAD50\uBD80": { "report": null, "press": { "paras": 443, "style": "para", "share": 0.03, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 12 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20072
+ "\uC6B0\uC8FC\uD56D\uACF5\uCCAD": { "report": { "docs": 20, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#D9D9D9" } }, "press": { "paras": 222, "style": "para", "share": 0.31, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#00294B", "text": "#FFFFFF" } },
20073
+ "\uC6D0\uC790\uB825\uC548\uC804\uC704\uC6D0\uD68C": { "report": null, "press": { "paras": 198, "style": "box", "share": 0.53, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uBC14\uD0D5", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#121275", "text": "#FFFFFF" } },
20074
+ "\uC778\uAD6C\uC804\uB7B5\uC704\uC6D0\uD68C": { "report": null, "press": { "paras": 82, "style": "para", "share": 0.5, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, "bullet2": "\u3147" }, "band": null },
20075
+ "\uC778\uC0AC\uD601\uC2E0\uCC98": { "report": { "docs": 8, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11 }, "p": { "font": "\uBC14\uD0D5", "pt": 15 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#D1DEEF" } }, "press": { "paras": 315, "style": "para", "share": 0.05, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#4B72E3", "text": "#FFFFFF" } },
20076
+ "\uC7AC\uC678\uB3D9\uD3EC\uCCAD": { "report": null, "press": { "paras": 67, "style": "box", "share": 0.92, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u3147" }, "band": null },
20077
+ "\uC7AC\uC815\uACBD\uC81C\uBD80": { "report": { "docs": 9, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "HY\uAD81\uC11C", "pt": 18 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#FCF5E7" } }, "press": { "paras": 513, "style": "para", "share": 0.2, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#0066FF", "text": "#FFFFFF" } },
20078
+ "\uC870\uB2EC\uCCAD": { "report": { "docs": 10, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 10 }, "p": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 12 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#D6D6D6" } }, "press": { "paras": 353, "style": "para", "share": 0.03, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#000066", "text": "#FFFFFF" } },
20079
+ "\uC911\uC18C\uBCA4\uCC98\uAE30\uC5C5\uBD80": { "report": { "docs": 23, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 12 }, "bullet2": "\u25E6", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#DFE6F7" } }, "press": { "paras": 529, "style": "para", "share": 0.21, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25E6" }, "band": { "fill": "#DFE6F7", "text": "#000000" } },
20080
+ "\uC9C0\uC2DD\uC7AC\uC0B0\uCC98": { "report": { "docs": 42, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#FFFFAB" } }, "press": { "paras": 558, "style": "para", "share": 0.27, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#2D629C", "text": "#FFFFFF" } },
20081
+ "\uC9C8\uBCD1\uAD00\uB9AC\uCCAD": { "report": { "docs": 32, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#DFE6F7" } }, "press": { "paras": 808, "style": "para", "share": 0.15, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uD55C\uC591\uC911\uACE0\uB515", "pt": 13 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#0066FF", "text": "#FFFFFF" } },
20082
+ "\uD1B5\uC77C\uBD80": { "report": null, "press": { "paras": 14, "style": "box", "share": 0.64, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#3A3C84", "text": "#FFFFFF" } },
20083
+ "\uD574\uC591\uACBD\uCC30\uCCAD": { "report": null, "press": { "paras": 40, "style": "box", "share": 0.57, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": null },
20084
+ "\uD574\uC591\uC218\uC0B0\uBD80": { "report": { "docs": 31, "levels": [{ "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 15 }, { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 14 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD55C\uC591\uC2E0\uBA85\uC870", "pt": 14 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 11, "fill": "#DFE6F7" } }, "press": { "paras": 652, "style": "para", "share": 0.34, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 18 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 18 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } },
20085
+ "\uD589\uC815\uC548\uC804\uBD80": { "report": { "docs": 52, "levels": [{ "font": "HY\uD5E4\uB4DC\uB77C\uC778M", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 12 }, "bullet2": "\u25CB", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#F2F2F2" } }, "press": { "paras": 1376, "style": "para", "share": 0.08, "levels": [{ "font": "\uBC14\uD0D5", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }, { "font": "\uD568\uCD08\uB86C\uBC14\uD0D5", "pt": 15 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u25CB" }, "band": { "fill": "#000066", "text": "#FFFFFF" } },
20086
+ "\uD589\uC815\uC911\uC2EC\uBCF5\uD569\uB3C4\uC2DC\uAC74\uC124\uCCAD": { "report": { "docs": 9, "levels": [{ "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 15 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "ref": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 13 }, "bullet2": "\u3147", "table": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12, "fill": "#D9D9D9" } }, "press": { "paras": 77, "style": "para", "share": 0.14, "levels": [{ "font": "\uBC14\uD0D5", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 14 }, { "font": "\uD734\uBA3C\uBA85\uC870", "pt": 13 }], "note": { "font": "\uB9D1\uC740 \uACE0\uB515", "pt": 12 }, "p": { "font": "\uBC14\uD0D5", "pt": 14 }, "bullet2": "\u3147" }, "band": { "fill": "#000080", "text": "#FFFFFF" } }
20087
+ };
20088
+
20089
+ // src/hwpx/agency.ts
20090
+ var AGENCY_COMMON_NAME = "\uACF5\uD1B5";
20091
+ var AGENCY_PRESETS = /* @__PURE__ */ new Set(["report", "plan", "ministry", "gaejosik", "press"]);
20092
+ var V5_AGENCY_PRESETS = /* @__PURE__ */ new Set(["report", "plan", "ministry"]);
20093
+ var GAEJOSIK_BODY_PT = 15;
20094
+ function agencyNames() {
20095
+ return Object.keys(AGENCY_STYLES);
20096
+ }
20097
+ function findAgency(name) {
20098
+ const n = name.trim();
20099
+ return n === AGENCY_COMMON_NAME ? AGENCY_COMMON : AGENCY_STYLES[n];
20100
+ }
20101
+ function agencyStyle(name) {
20102
+ const s = findAgency(name);
20103
+ if (!s) throw new KordocError(`agency: \uC2E4\uCE21 \uC11C\uC2DD\uC774 \uC5C6\uB294 \uAE30\uAD00\uC785\uB2C8\uB2E4 "${name}" \u2014 ${AGENCY_COMMON_NAME} \uB610\uB294 ${agencyNames().join("\xB7")}`);
20104
+ return s;
20105
+ }
20106
+ function applyAgency(opts, preset) {
20107
+ if (!opts.agency?.trim()) return { opts, agency: null };
20108
+ agencyStyle(opts.agency);
20109
+ if (!AGENCY_PRESETS.has(preset)) return { opts, agency: null };
20110
+ const name = opts.agency.trim();
20111
+ const st = agencyStyle(name);
20112
+ const userBody = opts.fonts?.body ?? (opts.bodyFont ? opts.bodyFont === "gothic" ? "\uB9D1\uC740 \uACE0\uB515" : "\uD568\uCD08\uB86C\uBC14\uD0D5" : void 0);
20113
+ const userHeading = opts.fonts?.heading;
20114
+ const ptFree = opts.bodyPt === void 0;
20115
+ const fonts = { ...opts.fonts };
20116
+ const setFont = (role, font) => {
20117
+ if (role === "body" && userBody) return;
20118
+ fonts[role] ??= font;
20119
+ };
20120
+ const lvl = (f, role) => ({
20121
+ font: role === "heading" ? userHeading ?? f.font : role === "body" ? userBody ?? f.font : f.font,
20122
+ ...ptFree || role === "note" ? { pt: f.pt } : {},
20123
+ bold: false
20124
+ });
20125
+ const sameAsBody = (f, role, body) => lvl(f, role).font === body.font && (!ptFree || f.pt === body.pt);
20126
+ let levels = {};
20127
+ let bullet2;
20128
+ let bodyPt = opts.bodyPt;
20129
+ let agency = { name, refPt: null, table: null, pressStyle: null };
20130
+ if (preset === "press") {
20131
+ const ps = st.press ?? AGENCY_COMMON.press;
20132
+ setFont("body", ps.p.font);
20133
+ bodyPt ??= ps.p.pt;
20134
+ const body = { font: fonts.body ?? userBody, pt: bodyPt };
20135
+ if (!sameAsBody(ps.levels[0], "heading", body)) levels[0] = lvl(ps.levels[0], "heading");
20136
+ if (!sameAsBody(ps.levels[1], "body", body)) levels[1] = lvl(ps.levels[1], "body");
20137
+ levels[2] = lvl(ps.note, "note");
20138
+ bullet2 = ps.bullet2;
20139
+ agency = { ...agency, pressStyle: ps.style };
20140
+ } else {
20141
+ const rs = st.report ?? AGENCY_COMMON.report;
20142
+ setFont("ref", rs.ref.font);
20143
+ setFont("table", rs.table.font);
20144
+ bullet2 = rs.bullet2;
20145
+ if (V5_AGENCY_PRESETS.has(preset)) {
20146
+ setFont("body", rs.p.font);
20147
+ levels = { 0: lvl(rs.levels[0], "heading"), 1: lvl(rs.levels[1], "body"), 2: lvl(rs.levels[2], "body") };
20148
+ agency = { ...agency, refPt: ptFree ? rs.ref.pt : null, table: { pt: ptFree ? rs.table.pt : null, headerFill: rs.table.fill } };
20149
+ } else {
20150
+ setFont("body", rs.levels[1].font);
20151
+ const body = { font: fonts.body ?? userBody, pt: bodyPt ?? GAEJOSIK_BODY_PT };
20152
+ levels[0] = lvl(rs.levels[0], "heading");
20153
+ if (!sameAsBody(rs.levels[1], "body", body)) levels[1] = lvl(rs.levels[1], "body");
20154
+ if (!sameAsBody(rs.levels[2], "body", body)) levels[2] = lvl(rs.levels[2], "body");
20155
+ }
20156
+ }
20157
+ for (const [k, v] of Object.entries(opts.levels ?? {})) levels[Number(k)] = { ...levels[Number(k)], ...v };
20158
+ const band = st.band ?? AGENCY_COMMON.band;
20159
+ const merged = {
20160
+ ...opts,
20161
+ fonts,
20162
+ bodyPt,
20163
+ levels,
20164
+ bullet2: opts.bullet2 ?? bullet2,
20165
+ ...preset !== "press" ? {
20166
+ bandColor: opts.bandColor ?? band.fill ?? "#FFFFFF",
20167
+ bandTextColor: opts.bandTextColor ?? band.text
20168
+ } : {}
20169
+ };
20170
+ return { opts: merged, agency };
20171
+ }
20172
+ function agencyWarnings(opts, preset) {
20173
+ const name = opts.agency?.trim();
20174
+ if (!name) return [];
20175
+ if (!AGENCY_PRESETS.has(preset)) return [`agency(\uAE30\uAD00 \uC11C\uC2DD)\uB294 \uBCF4\uACE0\uC11C\xB7\uACC4\uD68D\uC11C\xB7\uC5C5\uBB34\uBCF4\uACE0\xB7\uAC1C\uC870\uC2DD\xB7\uBCF4\uB3C4\uC790\uB8CC \uC804\uC6A9 \u2014 '${preset}' \uD504\uB9AC\uC14B\uC5D0\uC11C \uBB34\uC2DC\uB428`];
20176
+ const st = findAgency(name);
20177
+ if (st && preset !== "press" && !st.report) return [`agency: ${name} \uC740 \uBCF4\uACE0\uC11C\uD615 \uC2E4\uCE21 \uD45C\uBCF8\uC774 \uBAA8\uC790\uB77C \uAE30\uAD00 \uAC04 \uACF5\uD1B5 \uC11C\uC2DD\uC744 \uC500`];
20178
+ return [];
20179
+ }
20180
+
20031
20181
  // src/hwpx/gen-ids.ts
20032
20182
  var NS_SECTION = "http://www.hancom.co.kr/hwpml/2011/section";
20033
20183
  var NS_PARA = "http://www.hancom.co.kr/hwpml/2011/paragraph";
@@ -21077,6 +21227,9 @@ function incompatibleGongmunWarnings(opts) {
21077
21227
  if (opts.noticeHead && preset !== "notice") warns.push(`notice_head(\uACF5\uACE0\uBC88\uD638\xB7\uBC1C\uC2E0\uBA85\uC758)\uB294 \uD1B5\uC9C0(notice) \uC804\uC6A9 \u2014 '${preset}' \uD504\uB9AC\uC14B\uC5D0\uC11C \uBB34\uC2DC\uB428`);
21078
21228
  if (opts.press && preset !== "press") warns.push(`press(\uBA38\uB9AC\uBC15\uC2A4\xB7\uBD80\uC81C\xB7\uB2F4\uB2F9)\uB294 \uBCF4\uB3C4\uC790\uB8CC(press) \uC804\uC6A9 \u2014 '${preset}' \uD504\uB9AC\uC14B\uC5D0\uC11C \uBB34\uC2DC\uB428`);
21079
21229
  if (opts.checklist && !SEOUL_REPORT_PRESETS.has(preset)) warns.push(`checklist(\uC0AC\uC804 \uAC80\uD1A0\uD56D\uBAA9 \uC810\uAC80\uD45C)\uB294 \uBCF4\uACE0\uC11C\xB7\uACC4\uD68D\uC11C\xB7\uBC29\uCE68\uC11C \uC804\uC6A9 \u2014 '${preset}' \uD504\uB9AC\uC14B\uC5D0\uC11C \uBB34\uC2DC\uB428`);
21230
+ warns.push(...agencyWarnings(opts, preset));
21231
+ const contact = opts.press?.contact;
21232
+ if (contact?.people?.length && (contact.manager || contact.phone)) warns.push("press.contact: people(\uC0AC\uB78C\uBCC4 \uD589)\uB97C \uC8FC\uBA74 manager\xB7phone(\uD55C \uD589 \uAF34)\uC740 \uBB34\uC2DC\uB428");
21080
21233
  if (preset === "press" && (opts.cover === true || typeof opts.cover === "object" || opts.toc === true)) {
21081
21234
  warns.push("\uBCF4\uB3C4\uC790\uB8CC\uB294 \uBA38\uB9AC\uBC15\uC2A4 \uC11C\uC2DD\uACFC \uC591\uB9BD \uBD88\uAC00\uB77C \uD45C\uC9C0\xB7\uBAA9\uCC28\uAC00 \uBB34\uC2DC\uB428");
21082
21235
  }
@@ -21105,9 +21258,10 @@ function hexColorOption(name, value) {
21105
21258
  if (!/^#[0-9a-fA-F]{6}$/.test(v)) throw new KordocError(`${name} must be a #RRGGBB color (got "${value}")`);
21106
21259
  return v.toUpperCase();
21107
21260
  }
21108
- function resolveGongmun(opts) {
21109
- validateGongmunOptions(opts);
21110
- const preset = normalizeGongmunPreset(opts.preset);
21261
+ function resolveGongmun(input) {
21262
+ validateGongmunOptions(input);
21263
+ const preset = normalizeGongmunPreset(input.preset);
21264
+ const { opts, agency } = applyAgency(input, preset);
21111
21265
  const d = PRESET_DEFAULTS[preset];
21112
21266
  const bodyPt = opts.bodyPt ?? d.bodyPt;
21113
21267
  const autoFitMinRatio = opts.autoFit === false ? null : typeof opts.autoFit === "object" ? Math.min(Math.max(opts.autoFit.minRatio ?? 90, 50), 99) : 90;
@@ -21165,7 +21319,8 @@ function resolveGongmun(opts) {
21165
21319
  reportInfo: opts.reportInfo?.trim() || null,
21166
21320
  noticeHead: preset === "notice" && opts.noticeHead ? opts.noticeHead : null,
21167
21321
  // 보도자료 머리박스는 프리셋 자체가 요구 — 옵션 미지정이어도 빈 객체
21168
- press: preset === "press" ? opts.press ?? {} : null
21322
+ press: preset === "press" ? opts.press ?? {} : null,
21323
+ agency
21169
21324
  };
21170
21325
  }
21171
21326
  var REPORT_BULLETS = ["\u25A1", "\u25CB", "-", "\u318D"];
@@ -21512,7 +21667,7 @@ function parseInlineMarkdown(text) {
21512
21667
  }
21513
21668
  return spans;
21514
21669
  }
21515
- var INLINE_REGEX = /(`[^`]+`|\*{3}(?:[^*]|\*(?!\*\*))+\*{3}|\*{2}(?:[^*]|\*(?!\*))+\*{2}|\*(?:[^*]|\*{2}(?:[^*]|\*(?!\*))+\*{2})+\*|(?<![^\s\p{P}\p{S}\x00])(?<!_)_{2}(?=\S)[^_]+(?<=\S)_{2}(?!_)(?![^\s\p{P}\p{S}\x00])|(?<![^\s\p{P}\p{S}\x00])(?<!_)_(?=\S)[^_]+(?<=\S)_(?!_)(?![^\s\p{P}\p{S}\x00]))/gu;
21670
+ var INLINE_REGEX = /(`[^`]+`|\*{3}(?=\S)(?:[^*]|\*(?!\*\*))+(?<=\S)\*{3}|\*{2}(?=\S)(?:[^*]|\*(?!\*))+(?<=\S)\*{2}|\*(?=\S)(?:[^*]|\*{2}(?:[^*]|\*(?!\*))+\*{2})+(?<=\S)\*|(?<![^\s\p{P}\p{S}\x00])(?<!_)_{2}(?=\S)[^_]+(?<=\S)_{2}(?!_)(?![^\s\p{P}\p{S}\x00])|(?<![^\s\p{P}\p{S}\x00])(?<!_)_(?=\S)[^_]+(?<=\S)_(?!_)(?![^\s\p{P}\p{S}\x00]))/gu;
21516
21671
  function emphasisSpans(text, depth = 0) {
21517
21672
  const spans = [];
21518
21673
  let lastIdx = 0;
@@ -23919,10 +24074,46 @@ function buildPressHead(g, ids, bodyWidth, reg) {
23919
24074
  const table2 = tbl(rows, w, PRESS_LABEL_H + (headLine ? PRESS_HEAD_H : 0), 1);
23920
24075
  return [`<hp:p paraPrIDRef="${PARA_NORMAL}" styleIDRef="0"><hp:run charPrIDRef="${CHAR_NORMAL}">${table2}</hp:run></hp:p>`, blank()];
23921
24076
  }
24077
+ var PRESS_PEOPLE_RATIO = [6236, 15167, 6081, 5605, 5605, 9003];
24078
+ var PRESS_PEOPLE_ROW_H = 1800;
24079
+ function buildPressPeople(dept, people, ids, w, reg) {
24080
+ const total = PRESS_PEOPLE_RATIO.reduce((a, b) => a + b, 0);
24081
+ const ws = PRESS_PEOPLE_RATIO.map((r) => Math.floor(w * r / total));
24082
+ ws[ws.length - 1] += w - ws.reduce((a, b) => a + b, 0);
24083
+ const n = people.length, last = n - 1;
24084
+ const bf = (label, col, row, rows2 = 1) => reg.get({
24085
+ t: row === 0 ? "thick" : "thin",
24086
+ b: row + rows2 - 1 === last ? "thick" : "thin",
24087
+ l: col === 0 ? "thick" : "thin",
24088
+ r: col === ws.length - 1 ? "thick" : "thin",
24089
+ fill: label ? "#E6E6E6" : void 0
24090
+ });
24091
+ const cell2 = (label, col, row, text, rowSpan = 1) => tc({
24092
+ bf: bf(label, col, row, rowSpan),
24093
+ row,
24094
+ col,
24095
+ w: ws[col],
24096
+ h: PRESS_PEOPLE_ROW_H * rowSpan,
24097
+ rowSpan,
24098
+ paras: para(text, GONGMUN_TBL_CENTER, label ? ids.pressHead : ids.pressContact)
24099
+ });
24100
+ const rows = people.map((p, i) => [
24101
+ ...i === 0 ? [cell2(true, 0, 0, "\uB2F4\uB2F9 \uBD80\uC11C", n), cell2(false, 1, 0, dept, n)] : [],
24102
+ cell2(true, 2, i, p.role ?? "\uB2F4\uB2F9\uC790"),
24103
+ cell2(false, 3, i, p.title ?? ""),
24104
+ cell2(false, 4, i, p.name ?? ""),
24105
+ cell2(false, 5, i, p.phone ?? "")
24106
+ ].join(""));
24107
+ return tbl(rows, w, PRESS_PEOPLE_ROW_H * n, ws.length);
24108
+ }
23922
24109
  function buildPressContact(g, ids, bodyWidth, reg) {
23923
24110
  const c = g.press?.contact;
23924
- if (!c || !c.dept && !c.manager && !c.phone) return [];
24111
+ const people = (c?.people ?? []).filter((p) => p.role || p.title || p.name || p.phone);
24112
+ if (!c || !c.dept && !c.manager && !c.phone && people.length === 0) return [];
23925
24113
  const w = bodyWidth - 280;
24114
+ if (people.length > 0) {
24115
+ return [blank(), `<hp:p paraPrIDRef="${PARA_NORMAL}" styleIDRef="0"><hp:run charPrIDRef="${CHAR_NORMAL}">${buildPressPeople(c.dept ?? "", people, ids, w, reg)}</hp:run></hp:p>`];
24116
+ }
23926
24117
  const cells = [["\uB2F4\uB2F9 \uBD80\uC11C", c.dept ?? ""], ["\uB2F4\uB2F9\uC790", c.manager ?? ""], ["\uC5F0\uB77D\uCC98", c.phone ?? ""]];
23927
24118
  const labelW = Math.round(w * 0.14);
23928
24119
  const valueW = Math.round(w / 3) - labelW;
@@ -25001,6 +25192,11 @@ function seoulLegalScheme(bodyFont = "\uAD74\uB9BC\uCCB4", bodyPt = 12, lineSp =
25001
25192
  }
25002
25193
  function applySchemeOverrides(s, g) {
25003
25194
  const out = { ...s, levels: s.levels.map((l) => ({ ...l })), body: { ...s.body }, ref: { ...s.ref }, table: { ...s.table } };
25195
+ if (g.agency?.refPt) out.ref.pt = g.agency.refPt;
25196
+ if (g.agency?.table) {
25197
+ if (g.agency.table.pt) out.table.pt = g.agency.table.pt;
25198
+ out.table.headerFill = g.agency.table.headerFill;
25199
+ }
25004
25200
  if (g.fonts.heading) {
25005
25201
  out.levels[0].font = g.fonts.heading;
25006
25202
  out.chapter = { ...out.chapter, font: g.fonts.heading };
@@ -25289,7 +25485,7 @@ function markerRunXml(marker, charPr2, lay) {
25289
25485
  var NBSP = "\xA0";
25290
25486
  var OPENER_BEFORE = /[\s(\[{>「『〈《【〔‘“·/:,~—–-]/u;
25291
25487
  function bindSpaces(s) {
25292
- return s.replace(/(\d{4}|['’]\d{2})\. (\d{1,2})\. (\d{1,2})\.(?!\d)/g, `$1.${NBSP}$2.${NBSP}$3.`).replace(/(\d{4}|['’]\d{2})\. (\d{1,2})\.(?!\d)/g, `$1.${NBSP}$2.`).replace(/(?<![\d.])(\d{1,2})\. (\d{1,2})\.(?!\d)/g, `$1.${NBSP}$2.`).replace(/(\d{1,2}:\d{2}) ([~∼-]) (\d{1,2}:\d{2})/g, `$1${NBSP}$2${NBSP}$3`).replace(/(\d(?:조|억|만|천)?) 원/g, `$1${NBSP}\uC6D0`);
25488
+ return s.replace(/(\d{4}|['’]\d{2})\. (\d{1,2})\. (\d{1,2})\.(?!\d)/g, `$1.${NBSP}$2.${NBSP}$3.`).replace(/(\d{4}|['’]\d{2})\. (\d{1,2})\.(?!\d)/g, `$1.${NBSP}$2.`).replace(/(?<![\d.])(\d{1,2})\. (\d{1,2})\.(?!\d)/g, `$1.${NBSP}$2.`).replace(/(\d{1,2}:\d{2}) ([~∼-]) (\d{1,2}:\d{2})/g, `$1${NBSP}$2${NBSP}$3`).replace(/(\d(?:조|억|만|천)?) 원/g, `$1${NBSP}\uC6D0`).replace(/(?<=[가-힣A-Za-z0-9))*.]) 등(?=(?:으로서|으로써|으로|에서|에게|까지|부터|이며|이고|이다|이나|이라|과|와|을|를|은|는|이|가|의|에|도|만)?[,,.))」』’”]*(?:\s|$))/g, `${NBSP}\uB4F1`).replace(/(?<=[가-힣A-Za-z]) (?=\d+(?:\.\d+)?[,,](?:\s|$))/g, NBSP).replace(/(?<=\d[,,][ \u00a0]+[가-힣A-Za-z]+) (?=\d+(?:\.\d+)?[^\s,,\d]*(?:\s|$))/g, NBSP);
25293
25489
  }
25294
25490
  function neighbor(s, i, dir) {
25295
25491
  for (let k = i + dir; k >= 0 && k < s.length; k += dir) if (!/[*_~]/.test(s[k])) return s[k];
@@ -26049,12 +26245,39 @@ function legalDepthOf(marker) {
26049
26245
  return 6;
26050
26246
  }
26051
26247
 
26248
+ // src/hwpx/paste-clean.ts
26249
+ var INVISIBLE = /[\u200b\u200c\u2060\ufeff]/g;
26250
+ var CITATION_TAG = /[ \t]?【[^【】†\n]*†[^【】\n]*】/g;
26251
+ var ESCAPED_BOLD = /(?<![\\*])\\\*\\\*(?=[^\s\\*<])([^\\\n<]+?)(?<=[^\s\\*>])\\\*\\\*(?!\\\*)/g;
26252
+ function cleanPastedMarkdown(md) {
26253
+ let removed = 0;
26254
+ let fence = null;
26255
+ const count = (re, s, to) => s.replace(re, (...a) => {
26256
+ removed++;
26257
+ return typeof to === "string" ? to : to(...a);
26258
+ });
26259
+ const lines = md.split("\n").map((line) => {
26260
+ const f = line.match(/^\s*(```+|~~~+)/);
26261
+ if (f) {
26262
+ fence = fence === null ? f[1][0] : fence === f[1][0] ? null : fence;
26263
+ return line;
26264
+ }
26265
+ if (fence !== null) return line;
26266
+ let out = count(INVISIBLE, line, "");
26267
+ out = count(CITATION_TAG, out, "");
26268
+ return count(ESCAPED_BOLD, out, (_m, inner) => `**${inner}**`);
26269
+ });
26270
+ return { md: lines.join("\n"), removed };
26271
+ }
26272
+
26052
26273
  // src/hwpx/generator.ts
26053
26274
  async function markdownToHwpx(markdown, options) {
26054
26275
  const theme = resolveTheme(options?.theme);
26055
26276
  const gongmun = options?.gongmun ? resolveGongmun(options.gongmun) : null;
26056
26277
  const page = resolvePage(options?.page);
26057
- const { md, defs } = extractFootnoteDefs(markdown);
26278
+ const pasted = cleanPastedMarkdown(markdown);
26279
+ if (pasted.removed > 0) options?.warnings?.push(`\uBD99\uC5EC\uB123\uAE30 \uD754\uC801 ${pasted.removed}\uAC1C \uC815\uB9AC (\uBCF4\uC774\uC9C0 \uC54A\uB294 \uAE00\uC790\xB7\uC778\uC6A9 \uD45C\uC2DC\xB7\uC774\uC2A4\uCF00\uC774\uD504\uB41C \uAD75\uAC8C)`);
26280
+ const { md, defs } = extractFootnoteDefs(pasted.md);
26058
26281
  beginInlineDoc(defs);
26059
26282
  try {
26060
26283
  if (gongmun && usesV5Engine(gongmun.preset)) {
@@ -26097,6 +26320,9 @@ async function markdownToHwpx(markdown, options) {
26097
26320
  const richAssets = !!gongmun && needsGaejosikAssets(gongmun);
26098
26321
  const blocks = gongmun ? parseMarkdownToBlocks(md).map(polishGongmunBlock) : parseMarkdownToBlocks(md);
26099
26322
  const gongmunList = gongmun ? precomputeGongmunList(blocks, gongmun) : null;
26323
+ if (gongmun?.agency?.pressStyle === "para" && gongmunList && [...gongmunList.items.values()].some((it) => it.depth === 0)) {
26324
+ options?.warnings?.push(`agency: ${gongmun.agency.name} \uBCF4\uB3C4\uC790\uB8CC \uBCF8\uBB38\uC740 \uBB38\uB2E8\uC2DD(\uAE30\uD638 \uC5C6\uB294 \uAE30\uC0AC\uCCB4 \uBB38\uB2E8)\uC774 \uC8FC\uB41C \uBC29\uC2DD \u2014 \u25A1 \uD56D\uBAA9 \uB300\uC2E0 \uBB38\uB2E8\uC73C\uB85C \uC4F0\uB294 \uAC83\uC744 \uAC80\uD1A0\uD558\uC138\uC694`);
26325
+ }
26100
26326
  const fit = gongmun && gongmunList ? computeGongmunFitPlan(blocks, gongmun, gongmunList) : null;
26101
26327
  const staticBfEnd = staticBorderFillNext(gongmun);
26102
26328
  const remap = options?.profile ? buildProfileRemap(options.profile, charVariantBase(richAssets, !!gongmun) + (fit?.variants?.length ?? 0) * 4, staticBfEnd, staticFontNext(gongmun)) : null;
@@ -26790,14 +27016,71 @@ var DISCRIM_FIXES = [
26790
27016
  ["\uADC0\uBA38\uAC70\uB9AC", "\uCCAD\uAC01\uC7A5\uC560\uC778"]
26791
27017
  ];
26792
27018
  var DISCRIM_RE = new RegExp(DISCRIM_FIXES.map(([w]) => w).sort((a, b) => b.length - a.length).join("|"), "g");
27019
+ var PLAIN_FIXES = [
27020
+ ["\uAE08\uBC88", "\uC774\uBC88"],
27021
+ ["\uAE08\uC77C", "\uC624\uB298"],
27022
+ ["\uBA85\uC77C", "\uB0B4\uC77C"],
27023
+ ["\uC791\uC77C", "\uC5B4\uC81C"],
27024
+ ["\uC775\uC77C", "\uB2E4\uC74C \uB0A0"],
27025
+ ["\uACE0\uC218\uBD80\uC9C0", "\uB454\uCE58"],
27026
+ ["\uBD88\uCCA0\uC8FC\uC57C", "\uBC24\uB0AE\uC5C6\uC774"]
27027
+ ];
27028
+ var SPELLING_FIXES = [
27029
+ ["\uBA87\uC77C", "\uBA70\uCE60"],
27030
+ ["\uAC2F\uC218", "\uAC1C\uC218"],
27031
+ ["\uB42C\uC2B5\uB2C8\uB2E4", "\uB410\uC2B5\uB2C8\uB2E4"],
27032
+ ["\uB42C\uB2E4", "\uB410\uB2E4"],
27033
+ ["\uC660\uB9CC\uD558\uBA74", "\uC6EC\uB9CC\uD558\uBA74"],
27034
+ ["\uC5B4\uC758\uC5C6\uB2E4", "\uC5B4\uC774\uC5C6\uB2E4"],
27035
+ ["\uB418\uC694", "\uB3FC\uC694"]
27036
+ ];
27037
+ var wordRe = (fixes) => new RegExp(
27038
+ "(?<![\uAC00-\uD7A3A-Za-z0-9])(?:" + fixes.map(([w]) => w).sort((a, b) => b.length - a.length).join("|") + ")(?=(?:\uC73C\uB85C|\uBD80\uD130|\uAE4C\uC9C0|\uB3D9\uC548|\uC774\uB098|\uC740|\uB294|\uC774|\uAC00|\uC744|\uB97C|\uC5D0|\uC758|\uB3C4|\uB9CC|\uB85C|\uACFC|\uC640|\uAC04)?(?![\uAC00-\uD7A3A-Za-z0-9]))",
27039
+ "g"
27040
+ );
27041
+ var PLAIN_RE = wordRe(PLAIN_FIXES);
27042
+ var SPELLING_RE = wordRe(SPELLING_FIXES);
27043
+ var WEEKDAYS = "\uC77C\uC6D4\uD654\uC218\uBAA9\uAE08\uD1A0";
27044
+ function weekdayCheck(m) {
27045
+ const [y, mo, d] = [Number(m[1]), Number(m[2]), Number(m[3])];
27046
+ const date = new Date(y, mo - 1, d);
27047
+ if (date.getFullYear() !== y || date.getMonth() !== mo - 1 || date.getDate() !== d) return null;
27048
+ const right = WEEKDAYS[date.getDay()];
27049
+ return right === m[4] ? null : `${m[0].trim()} \u2192 ${y}. ${mo}. ${d}.(${right})`;
27050
+ }
27051
+ var HANGUL_DIGIT = { \uC77C: 1, \uC774: 2, \uC0BC: 3, \uC0AC: 4, \uC624: 5, \uC721: 6, \uCE60: 7, \uD314: 8, \uAD6C: 9, \uC601: 0 };
27052
+ var HANGUL_SMALL = { \uC2ED: 10, \uBC31: 100, \uCC9C: 1e3 };
27053
+ var HANGUL_BIG = { \uB9CC: 1e4, \uC5B5: 1e8, \uC870: 1e12 };
27054
+ function hangulToNumber(s) {
27055
+ let total = 0, section = 0, digit = 0;
27056
+ for (const ch of s) {
27057
+ if (ch in HANGUL_DIGIT) digit = HANGUL_DIGIT[ch];
27058
+ else if (ch in HANGUL_SMALL) {
27059
+ section += (digit || 1) * HANGUL_SMALL[ch];
27060
+ digit = 0;
27061
+ } else if (ch in HANGUL_BIG) {
27062
+ total += (section + digit || 1) * HANGUL_BIG[ch];
27063
+ section = 0;
27064
+ digit = 0;
27065
+ } else return null;
27066
+ }
27067
+ return total + section + digit;
27068
+ }
27069
+ function moneyHangulCheck(m) {
27070
+ const n = Number(m[1].replace(/,/g, ""));
27071
+ const h = hangulToNumber(m[2].replace(/\s/g, ""));
27072
+ if (!Number.isFinite(n) || h === null || h === n) return null;
27073
+ return `\uAE08${m[1]}\uC6D0(\uAE08${hangulAmount(n)}\uC6D0)`;
27074
+ }
26793
27075
  var RULES = [
26794
27076
  // 날짜 ─ 온점 뒤 한 칸, 0 패딩 금지, 연도 4자리, 끝 마침표
26795
27077
  // 법령 연혁 표기 `<개정 2012.2.14>`·`삭제 <2016.2.29.>`·`[시행일:2017.9.8.]` 는 법제처 정본 형식(별지서식 표제) —
26796
27078
  // 편람 날짜 규칙 대상이 아니다 (v4.12.3: 서식 595건 DATE 156건 전부 이 꼴, 기안문 0건)
27079
+ // 날짜 모양이 시작되는 자리에서만 뒤쪽 검사 — 뒤쪽 검사(\s*)를 모든 자리에서 먼저 하면 긴 공백 줄에서 이차 폭주(2만 칸 0.7초)
26797
27080
  {
26798
27081
  code: "DATE_NO_SPACE",
26799
27082
  severity: "error",
26800
- pattern: /(?<!<(?:개정|신설|전문개정|전부개정|일부개정|제정)\s*)(?<!삭제\s*<)(?<!시행일\s*:\s*)\b\d{4}\.\d{1,2}\.\d{1,2}\.?/g,
27083
+ pattern: /\b(?=\d{4}\.\d{1,2}\.\d)(?<!<(?:개정|신설|전문개정|전부개정|일부개정|제정)\s*)(?<!삭제\s*<)(?<!시행일\s*:\s*)\d{4}\.\d{1,2}\.\d{1,2}\.?/g,
26801
27084
  message: "\uB0A0\uC9DC \uC628\uC810 \uB4A4\uC5D0 \uD55C \uCE78\uC529 \uB744\uC6CC\uC57C \uD568",
26802
27085
  suggest: "\uC608) 2025. 1. 6."
26803
27086
  },
@@ -26844,7 +27127,7 @@ var RULES = [
26844
27127
  code: "TIME_24H",
26845
27128
  severity: "warning",
26846
27129
  pattern: /(?<!\d)24\s*시(?!각)/g,
26847
- message: "'24\uC2DC'\uBCF4\uB2E4 \uC775\uC77C 00:00 \uB610\uB294 '18:00\uAE4C\uC9C0' \uAD8C\uC7A5",
27130
+ message: "'24\uC2DC'\uBCF4\uB2E4 \uB2E4\uC74C \uB0A0 00:00 \uB610\uB294 '18:00\uAE4C\uC9C0' \uAD8C\uC7A5",
26848
27131
  suggest: "\uC608) 18:00"
26849
27132
  },
26850
27133
  {
@@ -26855,10 +27138,11 @@ var RULES = [
26855
27138
  suggest: "\uC608) 13:20"
26856
27139
  },
26857
27140
  // 금액 ─ '천원' 금지, 금+숫자 붙여쓰기
27141
+ // 숫자 런 첫머리에서만 시작 — 아니면 긴 숫자 줄에서 시작 자리마다 런을 다시 훑어 이차 폭주(숫자 5만 자 2.9초)
26858
27142
  {
26859
27143
  code: "MONEY_CHEONWON",
26860
27144
  severity: "error",
26861
- pattern: /\d+\s*천\s*원/g,
27145
+ pattern: /(?<!\d)\d+\s*천\s*원/g,
26862
27146
  message: "\uAE08\uC561\uC740 '\uCC9C\uC6D0'\uC73C\uB85C \uC904\uC774\uC9C0 \uC54A\uACE0 \uC544\uB77C\uBE44\uC544 \uC22B\uC790\uB85C",
26863
27147
  suggest: "\uC608) 345,000\uC6D0"
26864
27148
  },
@@ -26907,6 +27191,14 @@ var RULES = [
26907
27191
  },
26908
27192
  // ── 편람 보강 (v4.12.1) — pyhwpxlib Gongmun 검사·hwpx-skill gonmun_lint 대조로 빈 축 보충 ──
26909
27193
  // 금액 한글 병기 — 규정 시행규칙 제2조: 아라비아 숫자 다음 괄호 안에 한글로 적는다
27194
+ // 한글 금액은 글자 묶음 사이에만 공백 — 공백 수량자가 겹치면 닫는 괄호 없는 긴 공백 줄에서 폭주했다(160칸 9.8초)
27195
+ {
27196
+ code: "MONEY_HANGUL_MISMATCH",
27197
+ severity: "error",
27198
+ pattern: /금\s?(\d[\d,]*)원\s*[((]\s*(?:금\s*)?([일이삼사오육칠팔구십백천만억조영]+(?:\s+[일이삼사오육칠팔구십백천만억조영]+)*)\s*원?\s*[))]/g,
27199
+ check: moneyHangulCheck,
27200
+ message: "\uBCD1\uAE30\uD55C \uD55C\uAE00 \uAE08\uC561\uC774 \uC22B\uC790\uC640 \uB2E4\uB984"
27201
+ },
26910
27202
  {
26911
27203
  code: "MONEY_NO_HANGUL",
26912
27204
  severity: "warning",
@@ -26917,6 +27209,22 @@ var RULES = [
26917
27209
  // 물결표 앞뒤 붙여쓰기 — 기간·범위는 "2. 20.∼2. 24." 처럼 붙여 씀. 숫자·날짜·시각 범위(앞은 숫자·
26918
27210
  // 온점·괄호·년월일시분, 뒤는 숫자·연도 생략부호)에만 건다 — "기간( 부터 ~ 까지)" 기입란·"~ ※ 비고"·
26919
27211
  // "~ 수리완료시까지" 처럼 낱말이 붙는 물결표는 범위 표기가 아니다 (v4.12.2, 별지서식 47→30·기안문 32→27 실측)
27212
+ // 기간·시각 범위의 대시 — 점 날짜(연·월·일)나 시:분 사이만 잡아 전화번호(02-123-4567)·조항(제4조-2)·코드(IT-2026-01)는
27213
+ // 걸리지 않는다. 자동 치환은 하지 않는다(명세 (d) 물결표 자동 치환 위험 — 검수만)
27214
+ {
27215
+ code: "RANGE_DASH",
27216
+ severity: "warning",
27217
+ pattern: /\d{2,4}\.\s*\d{1,2}\.\s*\d{1,2}\.?\s*[-–—]\s*(?:\d{2,4}\.\s*)?\d{1,2}\.\s*\d{1,2}\.?|(?<![\d:])\d{1,2}:\d{2}\s*[-–—]\s*\d{1,2}:\d{2}(?![\d:])/g,
27218
+ message: "\uAE30\uAC04\xB7\uC2DC\uAC01 \uBC94\uC704\uB294 \uBB3C\uACB0\uD45C(\u223C)\uB85C",
27219
+ suggest: "\uC608) 2026. 3. 1.\u223C6. 30., 14:00\u223C16:00"
27220
+ },
27221
+ {
27222
+ code: "WEEKDAY_MISMATCH",
27223
+ severity: "error",
27224
+ pattern: /(?<![\d.])(\d{4})\.\s*(\d{1,2})\.\s*(\d{1,2})\.?\s*\(([월화수목금토일])\)/g,
27225
+ check: weekdayCheck,
27226
+ message: "\uB0A0\uC9DC\uC640 \uC694\uC77C\uC774 \uB9DE\uC9C0 \uC54A\uC74C"
27227
+ },
26920
27228
  {
26921
27229
  code: "TILDE_SPACE",
26922
27230
  severity: "warning",
@@ -26943,6 +27251,39 @@ var RULES = [
26943
27251
  suggest: "\uC608) \uCF58\uD150\uCE20\xB7\uC560\uD50C\uB9AC\uCF00\uC774\uC158\xB7\uBA54\uC2DC\uC9C0\xB7\uC6CC\uD06C\uC20D\xB7\uC2A4\uCF00\uC904\xB7\uCF58\uC149\uD2B8"
26944
27252
  },
26945
27253
  // 차별·비하 표현 — 행안부 공문서 작성 지침·국립국어원 순화어
27254
+ // 표 줄은 건너뜀 — 법정 서식 라벨 칸("전일 지침 | 금일 지침")은 바꿀 대상이 아니다 (gate-fill·licbyl 801건 실측 7건 전부 표 라벨)
27255
+ {
27256
+ code: "PLAIN_LANGUAGE",
27257
+ severity: "warning",
27258
+ skipTable: true,
27259
+ pattern: PLAIN_RE,
27260
+ message: "\uACF5\uACF5\uC5B8\uC5B4 \uC26C\uC6B4 \uB9D0\uB85C \uBC14\uAFD4 \uC4F0\uAE30 \uAD8C\uC7A5 (\uD2C0\uB9B0 \uB9D0\uC740 \uC544\uB2D8)"
27261
+ },
27262
+ {
27263
+ code: "SPELLING_ERROR",
27264
+ severity: "warning",
27265
+ pattern: SPELLING_RE,
27266
+ message: "\uB9DE\uCDA4\uBC95 \uC624\uAE30"
27267
+ },
27268
+ // 끝 표시·붙임 표시 2타 (규칙 제2조제2항·편람) — 생성 경로는 official 프리셋이 스스로 맞춘다
27269
+ {
27270
+ code: "END_MARK_SPACE",
27271
+ severity: "warning",
27272
+ documentOnly: true,
27273
+ rawSource: true,
27274
+ pattern: /(?<=\.)(?:[ \t\u3000]?|[ \t\u3000]{3,})끝\.[ \t\u3000]*$/g,
27275
+ message: "'\uB05D.'\uC740 \uC55E \uAE00 \uB9C8\uCE68\uD45C\uC5D0\uC11C 2\uD0C0 \uB744\uC6C0",
27276
+ suggest: "\uC608) \u2026\uBC14\uB78D\uB2C8\uB2E4. \uB05D."
27277
+ },
27278
+ {
27279
+ code: "BUNIM_SPACE",
27280
+ severity: "warning",
27281
+ documentOnly: true,
27282
+ rawSource: true,
27283
+ pattern: /^[ \t\u3000]*붙임(?:[ \t\u3000]|[ \t\u3000]{3,})(?=[^ \t\u3000::])(?=.*(?<!\d)\d+\s*부\.(?:[ \t\u3000]*끝\.)?[ \t\u3000]*$)/g,
27284
+ message: "'\uBD99\uC784' \uB4A4\uB294 2\uD0C0 \uB744\uC6C0",
27285
+ suggest: "\uC608) \uBD99\uC784 \uACC4\uD68D\uC11C 1\uBD80. \uB05D."
27286
+ },
26946
27287
  {
26947
27288
  code: "DISCRIMINATORY_TERM",
26948
27289
  severity: "warning",
@@ -26962,6 +27303,7 @@ var RULES = [
26962
27303
  {
26963
27304
  code: "AI_BOLD_OVERUSE",
26964
27305
  severity: "warning",
27306
+ rawSource: true,
26965
27307
  pattern: /(?:\*\*[^*\n]+\*\*[^*\n]*){3}/g,
26966
27308
  message: "\uD55C \uC904\uC5D0 \uAC15\uC870(**) 3\uD68C \uC774\uC0C1 \u2014 \uAC15\uC870 \uB0A8\uBC1C\uC740 \uC0DD\uC131\uD615 AI \uBB38\uCCB4 \uD754\uC801",
26967
27309
  suggest: "\uB9AC\uB4DC\uC5B4\xB7\uD575\uC2EC \uC218\uCE58 \uD55C \uACF3\uB9CC \uAC15\uC870"
@@ -26984,15 +27326,19 @@ function lintGongmunText(text, opts) {
26984
27326
  const tableLine = /^\s*\|/.test(line) || /<t[dhr][\s>]/i.test(line);
26985
27327
  for (const r of RULES) {
26986
27328
  if (r.skipTable && tableLine) continue;
27329
+ if (r.documentOnly && !opts?.document) continue;
27330
+ if (r.rawSource && opts?.parsed) continue;
26987
27331
  r.pattern.lastIndex = 0;
26988
27332
  for (const m of line.matchAll(r.pattern)) {
27333
+ const checked = r.check ? r.check(m) : void 0;
27334
+ if (checked === null) continue;
26989
27335
  findings.push({
26990
27336
  line: i + 1,
26991
- match: m[0].trim(),
27337
+ match: m[0].trim() || m[0],
26992
27338
  rule: r.code,
26993
27339
  severity: r.severity,
26994
27340
  message: r.message,
26995
- suggest: dictSuggest(r.code, m[0]) ?? r.suggest
27341
+ suggest: checked ?? dictSuggest(r.code, m[0]) ?? r.suggest
26996
27342
  });
26997
27343
  }
26998
27344
  }
@@ -27016,7 +27362,7 @@ function dictSuggest(code, match) {
27016
27362
  const d = m.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
27017
27363
  if (d) return `${m} \u2192 ${d[1]}. ${Number(d[2])}. ${Number(d[3])}.`;
27018
27364
  }
27019
- const table2 = code === "LOANWORD_ERROR" ? LOANWORD_FIXES : code === "DISCRIMINATORY_TERM" ? DISCRIM_FIXES : null;
27365
+ const table2 = code === "LOANWORD_ERROR" ? LOANWORD_FIXES : code === "DISCRIMINATORY_TERM" ? DISCRIM_FIXES : code === "PLAIN_LANGUAGE" ? PLAIN_FIXES : code === "SPELLING_ERROR" ? SPELLING_FIXES : null;
27020
27366
  if (!table2) return void 0;
27021
27367
  const hit = table2.find(([w]) => w === match.trim());
27022
27368
  return hit ? `${hit[0]} \u2192 ${hit[1]}` : void 0;
@@ -27262,6 +27608,60 @@ function muncheLintWarnings(text, limit = 10) {
27262
27608
  // src/roundtrip/patcher.ts
27263
27609
  import JSZip10 from "jszip";
27264
27610
 
27611
+ // src/roundtrip/integrity.ts
27612
+ import { DOMParser as DOMParser5 } from "@xmldom/xmldom";
27613
+ import { inflateRawSync as inflateRawSync5 } from "zlib";
27614
+ var LINESEG_RE = /<(\w+:)?linesegarray\b[^>]*?(?:\/>|>[\s\S]*?<\/\1linesegarray>)/g;
27615
+ var TAG_RE = /<[^>]+>/g;
27616
+ var sameBytes = (a, b) => Buffer.compare(a, b) === 0;
27617
+ function xmlError(xml) {
27618
+ let error = null;
27619
+ try {
27620
+ new DOMParser5({ onError: (level, msg2) => {
27621
+ if (level !== "warning" && !error) error = String(msg2);
27622
+ } }).parseFromString(xml, "text/xml");
27623
+ } catch (e) {
27624
+ error ??= e instanceof Error ? e.message : String(e);
27625
+ }
27626
+ return error;
27627
+ }
27628
+ var textOnly = (xml, s) => !s.replacement.includes("<") && !xml.slice(s.start, s.end).includes("<");
27629
+ function checkPatchIntegrity(original, patched, replacements, sections) {
27630
+ const issues = [];
27631
+ const a = readZipEntries(original), b = readZipEntries(patched);
27632
+ const names = (m) => [...m.keys()].join("\n");
27633
+ if (names(a) !== names(b)) issues.push("ZIP \uC5D4\uD2B8\uB9AC \uBAA9\uB85D\xB7\uC21C\uC11C\uAC00 \uC6D0\uBCF8\uACFC \uB2E4\uB984");
27634
+ for (const [name, entry] of a) {
27635
+ if (replacements.has(name)) continue;
27636
+ const out = b.get(name);
27637
+ if (!out || out.method !== entry.method || !sameBytes(out.compData, entry.compData)) issues.push(`\uAD50\uCCB4\uD558\uC9C0 \uC54A\uC740 \uC5D4\uD2B8\uB9AC\uC758 \uBC14\uC774\uD2B8\uAC00 \uBC14\uB01C: ${name}`);
27638
+ }
27639
+ const decoder = new TextDecoder();
27640
+ const originalText = (name) => {
27641
+ const e = a.get(name);
27642
+ if (!e) return null;
27643
+ try {
27644
+ return decoder.decode(e.method === 8 ? inflateRawSync5(e.compData) : e.compData);
27645
+ } catch {
27646
+ return null;
27647
+ }
27648
+ };
27649
+ for (const [name, data] of replacements) {
27650
+ if (!/\.xml$/i.test(name)) continue;
27651
+ const err = xmlError(decoder.decode(data));
27652
+ const before = originalText(name);
27653
+ if (err && before !== null && !xmlError(before)) issues.push(`\uAD50\uCCB4\uD55C XML \uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC74C: ${name} \u2014 ${err.split("\n")[0]}`);
27654
+ }
27655
+ for (const { name, xml, splices } of sections) {
27656
+ if (!splices.every((s) => textOnly(xml, s))) continue;
27657
+ const data = replacements.get(name);
27658
+ if (!data) continue;
27659
+ const tags = (x) => (x.replace(LINESEG_RE, "").match(TAG_RE) ?? []).join("");
27660
+ if (tags(xml) !== tags(decoder.decode(data))) issues.push(`\uAE00\uB9CC \uACE0\uCE5C \uC139\uC158\uC758 \uD0DC\uADF8\xB7\uC18D\uC131\uC774 \uBC14\uB01C: ${name}`);
27661
+ }
27662
+ return issues;
27663
+ }
27664
+
27265
27665
  // src/roundtrip/table-rows.ts
27266
27666
  var ROW_OBJECT_RE = /<(?:[A-Za-z0-9_]+:)?(?:tbl|pic|equation|ole|container|shape|drawingObject|drawText|video|chart|fieldBegin|fieldEnd|ctrl)\b/;
27267
27667
  var TAG_AT_RE = /<[A-Za-z0-9_:]+(?:"[^"]*"|'[^']*'|[^>"'])*>/y;
@@ -29226,9 +29626,9 @@ async function patchHwpx(original, editedMarkdown, options) {
29226
29626
  for (const [oi, ei] of pairs) {
29227
29627
  if (oi !== null && ei !== null) {
29228
29628
  const orig = origUnits[oi];
29229
- const edited = editedUnits[ei];
29230
- if (orig.raw === edited.raw) continue;
29231
- applied += handleModifiedUnit(orig, edited, {
29629
+ const edited2 = editedUnits[ei];
29630
+ if (orig.raw === edited2.raw) continue;
29631
+ applied += handleModifiedUnit(orig, edited2, {
29232
29632
  origBlocks,
29233
29633
  paraMap,
29234
29634
  scans,
@@ -29245,10 +29645,12 @@ async function patchHwpx(original, editedMarkdown, options) {
29245
29645
  }
29246
29646
  }
29247
29647
  const replacements = /* @__PURE__ */ new Map();
29648
+ const edited = [];
29248
29649
  const encoder = new TextEncoder();
29249
29650
  try {
29250
29651
  for (let i = 0; i < scans.length; i++) {
29251
29652
  if (sectionSplices[i].length === 0) continue;
29653
+ edited.push({ name: sectionPaths[i], xml: scans[i].xml, splices: [...sectionSplices[i]] });
29252
29654
  const claimed = sectionSplices[i].filter((s) => s.end > s.start);
29253
29655
  sectionSplices[i].push(...allLinesegRemovalSplices(scans[i].xml).filter((ls) => !claimed.some((c) => ls.start >= c.start && ls.end <= c.end)));
29254
29656
  const newXml = applySplices(scans[i].xml, sectionSplices[i]);
@@ -29273,6 +29675,8 @@ async function patchHwpx(original, editedMarkdown, options) {
29273
29675
  }
29274
29676
  let verification;
29275
29677
  if (options?.verify !== false) {
29678
+ const issues = replacements.size > 0 ? checkPatchIntegrity(original, data, replacements, edited) : [];
29679
+ if (issues.length) return { success: false, applied, skipped, error: `\uD328\uCE58\uBCF8 \uBB34\uACB0\uC131 \uAC80\uC0AC \uC2E4\uD328 \u2014 \uD328\uCE58 \uC911\uB2E8: ${issues.join("; ")}` };
29276
29680
  try {
29277
29681
  const reparsed = await parseHwpxDocument(u8ToArrayBuffer(data), { layoutTables: "keep" });
29278
29682
  verification = diffUnitLists(splitMarkdownUnits(reparsed.markdown), editedUnits);
@@ -29642,7 +30046,7 @@ async function resolveHeaderEntryName(zip) {
29642
30046
 
29643
30047
  // src/validate.ts
29644
30048
  import JSZip11 from "jszip";
29645
- import { DOMParser as DOMParser5 } from "@xmldom/xmldom";
30049
+ import { DOMParser as DOMParser6 } from "@xmldom/xmldom";
29646
30050
  var REQUIRED_FILES = [
29647
30051
  "mimetype",
29648
30052
  "META-INF/container.xml",
@@ -29688,7 +30092,7 @@ async function validateHwpx(buffer) {
29688
30092
  const text = await zip.files[name].async("string");
29689
30093
  let firstError = null;
29690
30094
  try {
29691
- new DOMParser5({
30095
+ new DOMParser6({
29692
30096
  onError(level, msg2) {
29693
30097
  if (level !== "warning" && firstError === null) firstError = String(msg2);
29694
30098
  }
@@ -30166,7 +30570,7 @@ function scriptsOff(r, off) {
30166
30570
  }
30167
30571
  async function parseImage(buffer, options) {
30168
30572
  try {
30169
- const { parseImageDocument } = await import("./image-ocr-XKSAEEXP.js");
30573
+ const { parseImageDocument } = await import("./image-ocr-3C3K64AD.js");
30170
30574
  const { blocks, warnings } = await parseImageDocument(buffer, options);
30171
30575
  stripScriptTags({ blocks });
30172
30576
  return {
@@ -30226,7 +30630,7 @@ async function parseHwp(buffer, options) {
30226
30630
  async function parsePdf(buffer, options) {
30227
30631
  let parsePdfDocument;
30228
30632
  try {
30229
- const mod = await import("./parser-3G4G6SST.js");
30633
+ const mod = await import("./parser-3W5XWIE5.js");
30230
30634
  parsePdfDocument = mod.parsePdfDocument;
30231
30635
  } catch {
30232
30636
  return {
@@ -30393,6 +30797,8 @@ async function extractTables(input, options = {}) {
30393
30797
  export {
30394
30798
  toPlainMarkdown,
30395
30799
  toHtmlTables,
30800
+ extractHwpxStyles,
30801
+ resolveSectionPaths,
30396
30802
  extractHwpxMetadataOnly,
30397
30803
  formatFillValue,
30398
30804
  ValueCursor,
@@ -30408,9 +30814,14 @@ export {
30408
30814
  collectTableBlocks,
30409
30815
  classifyTableTree,
30410
30816
  chooseTableRepresentation,
30817
+ AGENCY_COMMON_NAME,
30818
+ agencyNames,
30819
+ agencyStyle,
30411
30820
  PRESET_ALIAS,
30412
30821
  normalizeGongmunPreset,
30413
30822
  incompatibleGongmunWarnings,
30823
+ parseMarkdownToBlocks,
30824
+ parseLeadingMarker,
30414
30825
  markdownToHwpx,
30415
30826
  compare,
30416
30827
  diffBlocks,
@@ -30449,4 +30860,4 @@ export {
30449
30860
  parseHwpml,
30450
30861
  fillForm
30451
30862
  };
30452
- //# sourceMappingURL=chunk-NV46IWKF.js.map
30863
+ //# sourceMappingURL=chunk-QQERGR6C.js.map