Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ LLM 마크다운 → 정규화 → 채널별 렌더링 → 안전한 분
1. **정규화.** 에이전트가 쓴 마크다운은 표준 마크다운 변환으로는 제대로 표현되지 않을 수 있습니다. 짝 없는 `**`, 줄을 접어 쓴 문단에서 줄을
넘는 강조, 닫히지 않은 코드펜스가 흔합니다. 렌더링하기 전에 고칩니다.
2. **렌더링.** 채널이 실제로 받는 문법으로 출력합니다. Telegram HTML 은 태그 아홉 개만 받고,
Slack `markdown_text` 는 표준 마크다운을 그대로 받습니다. GitHub 도 표준 마크다운을 받지만 홑 `~` 를
Slack `markdown_text` 는 표준 마크다운을 그대로 받되, 문자로 쓴 `*` 는 슬랙이 강조로 다시 읽지 않게
`\*` 로 출력합니다. GitHub 도 표준 마크다운을 받지만 홑 `~` 를
취소선으로, `<T>` 를 HTML 태그로 읽습니다. 그래서 문자로 쓴 `~`·`<` 는 이스케이프해서(`\~`, `\<`) 출력합니다.
GFM 이 닫지 않는 강조(`**(a)**` 바로 뒤에 조사가 붙은 경우)는 `<strong>` 으로 출력합니다. 노션은
그 강조를 제대로 렌더링하지만 인라인 HTML 은 텍스트로 보여 줍니다. 그래서 `notion-markdown` 은 태그를 제거하고
Expand All @@ -34,7 +35,7 @@ LLM 마크다운 → 정규화 → 채널별 렌더링 → 안전한 분
청크 경계가 `**굵게**` 안에 걸리면 안 됩니다.

이 흐름에 옵션이 하나 있습니다. **정규화 보고:** 정규화가 대신 고친 횟수(닫히지 않은 강조,
닫히지 않은 펜스, 짝 없는 백틱, 버린 마커)와 채널에 맞춰 바꿔 쓴 횟수(이스케이프한 글자, 태그로
닫히지 않은 펜스, 짝 없는 백틱, 버린 마커, 추측으로 짝지은 강조)와 채널에 맞춰 바꿔 쓴 횟수(이스케이프한 글자, 태그로
출력한 강조, 제거한 HTML, 불릿, 표, 바꾼 마커)를 셉니다. 모델이 자기 서식을 얼마나 자주 깨는지 기록하고,
채널을 도입하기 전에 그 채널에 맞춰 무엇이 바뀌는지 확인할 수 있습니다.

Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ LLM markdown → normalize → render for channel → split safely → s
Markdown converter. Typical cases: unpaired `**`, emphasis that spans a line break in wrapped
prose, unclosed code fences. Repair before rendering.
2. **Render.** Emit the syntax the channel actually accepts. Telegram HTML allows nine
tags; Slack `markdown_text` takes standard Markdown directly. GitHub takes it too, but
tags; Slack `markdown_text` takes standard Markdown directly, with a `*` meant as a character
escaped (`\*`) so Slack does not re-read it as emphasis. GitHub takes it too, but
reads a lone `~` as strikethrough and `<T>` as an HTML tag — so a `~` or `<` meant as a
character goes out escaped (`\~`, `\<`), and emphasis that GFM would not close (`**(a)**`
followed directly by a Korean particle) goes out as `<strong>`. Notion renders that bold as is
Expand All @@ -40,7 +41,7 @@ LLM markdown → normalize → render for channel → split safely → s
covers streaming: a chunk boundary must not land inside `**bold**`.

The pipeline has one option. **Repair report:** how many times the normalizer stepped
in — unclosed emphasis, unclosed fence, unpaired backticks, dropped markers — and what it
in — unclosed emphasis, unclosed fence, unpaired backticks, dropped markers, guessed pairs — and what it
rewrote for the channel — escaped characters, tags for emphasis, stripped HTML, bullets,
tables, converted markers — so you can log how often the model breaks its own formatting
and see what a channel changes before you adopt it.
Expand Down
16 changes: 10 additions & 6 deletions SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ mdwire/
| 채널 | 받는 것 | 한도 |
|---|---|---|
| Telegram HTML | `b i u s code pre a blockquote tg-spoiler` | 4096 |
| Slack `markdown_text` | 표준 마크다운 그대로 | 12,000 |
| Slack `markdown_text` | 표준 마크다운. 글자 `*` 는 이스케이프 | 12,000 |
| GitHub 코멘트 (GFM) | 표준 마크다운. 글자 `~` `<` 는 이스케이프 | 65,536 |
| 노션 페이지 (`notion-markdown`) | Notion-flavored Markdown. 글자 `*` `\` 는 이스케이프, 인라인 HTML 없음 | 65,536 |
| Plain | 마크업 제거. 폴백 | 12,000 |
Expand Down Expand Up @@ -83,7 +83,8 @@ flanking 규칙대로 닫는 `**` 앞이 구두점이고 뒤가 글자면 닫지
같은 길이의 거울 모양(앞이 구두점) 마커와 짝짓는다(2026-10-02). 추측을 닫지 않는 규칙의 예외다 — 그 규칙을 만든
글롭 · 주석은 여는 쪽 뒤가 공백이고, 마스킹 번호는 길이가 달라 걸리지 않는다. 앞이 여는 괄호 · 따옴표인 마커는
거울이 아니라 다음 강조의 여는 마커다(`2**(n-1) (**주의**)`). 짝이 없으면 버리지 않고 글자로
되돌린다(`2**(n-1)`). 출력은 닫는 쪽과 같은 장치를 탄다 — GitHub `<strong>`, 슬랙은 여는 마커 뒤 · 닫는 마커
되돌린다(`2**(n-1)`). **양 끝이 다 ASCII 영숫자면 수식이라 짝짓지 않는다**(`x**(y)**z`) — 한국어 강조는 여는 쪽 앞이나
닫는 쪽 뒤에 한글이 온다. 모델에게 수식을 백틱으로 감싸 달라고 부탁하지 않아도 되게 여기서 가른다. 출력은 닫는 쪽과 같은 장치를 탄다 — GitHub `<strong>`, 슬랙은 여는 마커 뒤 · 닫는 마커
앞에 U+2060. 슬랙 · 노션에서 굵게로 그리는 것을 실측했다.

**슬랙 `markdown_text` 도 같은 자리에서 깨진다**(실측 2026-10-01, `chat.postMessage`). 태그를 못
Expand All @@ -92,7 +93,9 @@ flanking 규칙대로 닫는 `**` 앞이 구두점이고 뒤가 글자면 닫지
줄을 가르지 않는다. 보고에서는 GitHub 의 태그와 같이 `tag_emphasis` 로 센다. 강조가 겹치면(`***중요(필수)***를`) 맞붙은 안쪽 마커
너머가 구두점일 때 안쪽 마커 앞에도 넣는다 — 바깥 조이너 때문에 안쪽 `*` 가 못 닫혔다(실측 2026-10-02). 노션은 이 모양을
그대로 그려서 건드리지 않는다. **슬랙은 홑 `~` 를 긋지 않는다**(같은 날 실측 — `약 ~40km … ~22km`,
`5~6월` 이 글자 그대로) — 그래서 슬랙에서는 `~` 를 이스케이프하지 않는다.
`5~6월` 이 글자 그대로) — 그래서 슬랙에서는 `~` 를 이스케이프하지 않는다. **글자 `*` 는 슬랙에서도 `\*` 로
낸다**(실측 2026-10-02): 글자로 둔 별표를 슬랙이 CommonMark 로 다시 읽어 `x**(y)**z 와 2**(n-1)**2` 의 `**z 와 2**`
와 마스킹 번호 `4***-****-****-003*` 의 `-****-` 를 굵게로 그렸고, `\*` 는 글자로 그렸다(`\~` `\<` `\_` 도).

- **인라인 태그(`<sub>` `<kbd>` `<ins>` `<br>` …)는 GitHub 에서 살린다** — 그리는 채널에서 벗기면
LLM 이 적은 뜻이 사라진다. **태그뿐인 줄만 벗긴다**(짝인 닫는 태그도). 줄 첫머리 여는 태그 뒤가 줄
Expand Down Expand Up @@ -230,9 +233,9 @@ CLI는 `mdwire --channel telegram-html [--limit N] [--stream] [--report]`,

**고친 것과 바꾼 것**(`Repairs`)은 정규화가 저자 대신 한 일과 채널에 맞춰 바꿔 쓴 것의 개수다 —
모델이 얼마나 자주 서식을 깨는지 로그로 재고, 채널을 들이기 전에 그 채널이 무엇을 바꾸는지 보려는 쪽이
쓴다. 세기만 하고 출력은 바꾸지 않는다. 앞 넷이 **고친 것**, 뒤 여섯이 **바꾼 것**이다 — 바꾼 것을
쓴다. 세기만 하고 출력은 바꾸지 않는다. 앞 다섯이 **고친 것**, 뒤 여섯이 **바꾼 것**이다 — 바꾼 것을
안 세던 때는 출력이 달라진 문서의 보고가 대부분 0 이라 붙일지 판단하는 근거가 되지 못했다.
"모델이 서식을 깼는가"는 `any()`(Go `Repaired()`, 앞 넷), "출력이 달라질 수 있는가"는 `changed()`
"모델이 서식을 깼는가"는 `any()`(Go `Repaired()`, 앞 다섯), "출력이 달라질 수 있는가"는 `changed()`
(Go `Changed()`, 전부)로 따로 묻는다 — 이스케이프 하나로 서식이 깨졌다고 울리지 않게.

| 필드 | 뜻 |
Expand All @@ -241,7 +244,8 @@ CLI는 `mdwire --channel telegram-html [--limit N] [--stream] [--report]`,
| `closed_fence` | 문서 끝까지 안 닫혀서 닫아 준 코드펜스 |
| `reverted_code_span` | 짝이 없어 글자로 되돌린 백틱 런 |
| `dropped_marker` | 짝 잃은 채 버린 `**` |
| `escaped_char` | 채널이 구문으로 읽을 글자를 이스케이프한 수(GitHub 의 `\~` `\<` `\*`) |
| `guessed_pair` | 규칙이 아니라 추측으로 짝지은 강조 — 여는 쪽이 막힌 마커와 같은 줄의 거울 모양 마커(`값**(합계)**를`). 양 끝이 ASCII 영숫자인 수식(`x**(y)**z`)은 짝짓지 않으니, 남는 것은 문맥으로만 가려지는 드문 모양이다. 0 이 아니면 한 번 볼 만한 답변이다 |
| `escaped_char` | 채널이 구문으로 읽을 글자를 이스케이프한 수(GitHub 의 `\~` `\<` `\*`, 슬랙·노션의 `\*`) |
| `tag_emphasis` | 채널이 마커로 못 읽는 자리라 다르게 낸 강조(GitHub 은 `<strong>`, 슬랙은 마커 안쪽의 U+2060) |
| `stripped_html` | 벗긴 원문 HTML — 그 채널이 못 그리는 태그, 주석, 줄바꿈으로 바꾼 `<br>` |
| `rewritten_bullet` | 다른 기호로 바꿔 쓴 목록 기호 — 불릿(`* ` `• ` → `- `, 텔레그램은 `- ` → `• `)과 번호(`1)` → `1.`) |
Expand Down
6 changes: 3 additions & 3 deletions corpus/cases/asterisk-is-a-letter/slack-markdown.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
- 남은 도메인: underfront.* (4개), minjunkim.* (3개)
- 주석은 /* 이렇게 */ 쓰고, 다음 *기울임*은 산다
- 남은 도메인: underfront.\* (4개), minjunkim.\* (3개)
- 주석은 /\* 이렇게 \*/ 쓰고, 다음 *기울임*은 산다
- ①**⁠"주간 졸림"(2026-02 패턴 메모) — OSA 전형 증상**
- 각주는 참고* 처럼, 곱셈은 2 ** 3 처럼 온다* 뒤에 더 있다
- 각주는 참고\* 처럼, 곱셈은 2 \*\* 3 처럼 온다\* 뒤에 더 있다
4 changes: 4 additions & 0 deletions corpus/cases/asterisk-is-a-letter/why.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@

`①**"…"**` 은 다른 뿌리다. `①` 이 유니코드로는 숫자(No)라 "글자 뒤의 `**` 는 못 연다"에
걸려 닫는 쪽만 글자로 남았다. 마커 앞뒤의 "글자"는 알파벳과 ASCII 숫자만이다.

슬랙 출력의 글자 별표도 `\*` 로 낸다(실측 2026-10-02 — 슬랙이 글자로 둔 별표를 CommonMark 로 다시 읽어 수식
`x**(y)**z 와 2**(n-1)**2` 의 `**z 와 2**` 를 굵게로 그렸다). 여기 글롭 · 주석 · 곱셈의 별표는 슬랙이 어차피
못 여는 자리지만, 판정이 같은 글자라 같은 모양으로 낸다.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
값<strong>(합계)</strong>를 본다. 이름이<strong>"홍길동"</strong>이다. 설정<strong>「캐시」</strong>는 끈다.

짝 없는 거듭제곱 2\*\*(n-1) 은 그대로 둔다.
짝 없는 거듭제곱 2\*\*(n-1) 은 그대로 둔다. 산문 속 수식 x\*\*(y)\*\*z 와 2\*\*(n-1)\*\*2 도 강조가 아니다. 수식 뒤의 값<strong>(합계)</strong>는 강조다.

줄을 넘으면 짝짓지 않는다: 값\*\*(합계)
**다음** 줄이다.
Expand Down
2 changes: 1 addition & 1 deletion corpus/cases/hemmed-opener-before-punct/html.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<p>값<strong>(합계)</strong>를 본다. 이름이<strong>"홍길동"</strong>이다. 설정<strong>「캐시」</strong>는 끈다.</p>

<p>짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다.</p>
<p>짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다. 산문 속 수식 x**(y)**z 와 2**(n-1)**2 도 강조가 아니다. 수식 뒤의 값<strong>(합계)</strong>는 강조다.</p>

<p>줄을 넘으면 짝짓지 않는다: 값**(합계)<br>
<strong>다음</strong> 줄이다.</p>
Expand Down
2 changes: 1 addition & 1 deletion corpus/cases/hemmed-opener-before-punct/input.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
값**(합계)**를 본다. 이름이**"홍길동"**이다. 설정**「캐시」**는 끈다.

짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다.
짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다. 산문 속 수식 x**(y)**z 와 2**(n-1)**2 도 강조가 아니다. 수식 뒤의 값**(합계)**는 강조다.

줄을 넘으면 짝짓지 않는다: 값**(합계)
**다음** 줄이다.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
값**(합계)**를 본다. 이름이**"홍길동"**이다. 설정**「캐시」**는 끈다.

짝 없는 거듭제곱 2\*\*(n-1) 은 그대로 둔다.
짝 없는 거듭제곱 2\*\*(n-1) 은 그대로 둔다. 산문 속 수식 x\*\*(y)\*\*z 와 2\*\*(n-1)\*\*2 도 강조가 아니다. 수식 뒤의 값**(합계)**는 강조다.

줄을 넘으면 짝짓지 않는다: 값\*\*(합계)
**다음** 줄이다.
Expand Down
2 changes: 1 addition & 1 deletion corpus/cases/hemmed-opener-before-punct/plain.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
값(합계)를 본다. 이름이"홍길동"이다. 설정「캐시」는 끈다.

짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다.
짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다. 산문 속 수식 x**(y)**z 와 2**(n-1)**2 도 강조가 아니다. 수식 뒤의 값(합계)는 강조다.

줄을 넘으면 짝짓지 않는다: 값**(합계)
다음 줄이다.
Expand Down
10 changes: 5 additions & 5 deletions corpus/cases/hemmed-opener-before-punct/slack-markdown.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
값**⁠(합계)⁠**를 본다. 이름이**⁠"홍길동"⁠**이다. 설정**⁠「캐시」⁠**는 끈다.

짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다.
짝 없는 거듭제곱 2\*\*(n-1) 은 그대로 둔다. 산문 속 수식 x\*\*(y)\*\*z 와 2\*\*(n-1)\*\*2 도 강조가 아니다. 수식 뒤의 값**⁠(합계)⁠**는 강조다.

줄을 넘으면 짝짓지 않는다: 값**(합계)
줄을 넘으면 짝짓지 않는다: 값\*\*(합계)
**다음** 줄이다.

괄호 안의 강조는 거울이 아니다: 2**(n-1) (**주의**) 를 본다.
괄호 안의 강조는 거울이 아니다: 2\*\*(n-1) (**주의**) 를 본다.

안 닫힌 코드 스팬 뒤에서도 줄은 줄이다: `값**(합계)
)**를 본다.
안 닫힌 코드 스팬 뒤에서도 줄은 줄이다: `값\*\*(합계)
)\*\*를 본다.
2 changes: 1 addition & 1 deletion corpus/cases/hemmed-opener-before-punct/telegram-html.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
값<b>(합계)</b>를 본다. 이름이<b>"홍길동"</b>이다. 설정<b>「캐시」</b>는 끈다.

짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다.
짝 없는 거듭제곱 2**(n-1) 은 그대로 둔다. 산문 속 수식 x**(y)**z 와 2**(n-1)**2 도 강조가 아니다. 수식 뒤의 값<b>(합계)</b>는 강조다.

줄을 넘으면 짝짓지 않는다: 값**(합계)
<b>다음</b> 줄이다.
Expand Down
3 changes: 3 additions & 0 deletions corpus/cases/hemmed-opener-before-punct/why.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
닫지 않는 규칙은 글롭(`underfront.* (4개)`)·주석(`/* */`)에서 나왔는데 그 둘은 여는 쪽 뒤가 공백이라 여기 걸리지
않고, 마스킹 번호(`4***-****`)는 길이가 달라 걸리지 않는다. 줄을 넘으면 짝짓지 않는다.

**양 끝이 다 ASCII 영숫자면 수식이라 짝짓지 않는다**(`x**(y)**z`, `2**(n-1)**2`). 한국어 강조는 여는 쪽 앞이나 닫는 쪽
뒤에 한글이 온다. 모델에게 수식을 백틱으로 감싸 달라고 부탁하지 않아도 되게 여기서 가른다.

**짝 없는 막힌 마커는 버리지 않고 글자로 되돌린다.** `2**(n-1)` 의 `**` 는 거듭제곱이지 짝 잃은 마커가 아니다 —
전에는 버려서 `2(n-1)` 이 됐다.

Expand Down
4 changes: 2 additions & 2 deletions corpus/cases/masked-number-asterisks/slack-markdown.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
결제 수단: 신한카드 1***-****-****-001* (본인 명의)
계좌는 농협 302-****-****-** 로 옮겼다.
결제 수단: 신한카드 1\*\*\*-\*\*\*\*-\*\*\*\*-001\* (본인 명의)
계좌는 농협 302-\*\*\*\*-\*\*\*\*-\*\* 로 옮겼다.
4 changes: 4 additions & 0 deletions corpus/cases/masked-number-asterisks/why.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@
CommonMark 는 flanking 을 런 전체로 정한다 — 남은 조각도 런 앞의 글자(`4`)를 본다. 그리고
어디에도 못 열린 런의 첫 조각 `**` 는 짝 잃은 닫기가 아니라 한 덩어리 글자라 버리지 않고
되돌린다. 버리면 별표 둘이 사라진다.

**슬랙은 글자로 둔 별표를 CommonMark 로 다시 읽는다**(실측 2026-10-02, `chat.postMessage`). 그대로 보낸
`4***-****-****-003*` 의 `-****-` 가 굵게로 그려졌다. 슬랙 `markdown_text` 는 `\*` 를 글자로 그려서, 글자로
판정된 별표는 GitHub · 노션처럼 `\*` 로 낸다.
2 changes: 1 addition & 1 deletion corpus/cases/spaced-bold-marker/slack-markdown.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
** 배포 ** 는 금지다. 2 ** 3 은 곱셈이다.
\*\* 배포 \*\* 는 금지다. 2 \*\* 3 은 곱셈이다.
3 changes: 3 additions & 0 deletions corpus/cases/spaced-bold-marker/why.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@
되돌아가고 닫는 쪽만 사라졌다 — `** 배포 는` 이 됐다. 마커가 사라지는 것은 내용 손실이다.

추측으로 연 것은 공백 뒤의 마커로 닫지 않는다. `2 ** 3` 과 같은 부류다.

슬랙 출력에서는 이 `**` 도 `\*\*` 로 낸다 — 글자로 판정된 별표는 슬랙에서 이스케이프한다(실측 2026-10-02,
`masked-number-asterisks`). 슬랙은 둘 다 글자로 그린다.
7 changes: 4 additions & 3 deletions crates/mdwire-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,13 +175,14 @@ fn repairs_json(r: &Repairs) -> String {

fn repairs_fields(r: &Repairs) -> String {
format!(
"\"closedEmphasis\":{},\"closedFence\":{},\"revertedCodeSpan\":{},\"droppedMarker\":{},\
"\"closedEmphasis\":{},\"closedFence\":{},\"revertedCodeSpan\":{},\"droppedMarker\":{},\"guessedPair\":{},\
\"escapedChar\":{},\"tagEmphasis\":{},\"strippedHtml\":{},\"rewrittenBullet\":{},\
\"rewrittenTable\":{},\"convertedMarker\":{}",
r.closed_emphasis,
r.closed_fence,
r.reverted_code_span,
r.dropped_marker,
r.guessed_pair,
r.escaped_char,
r.tag_emphasis,
r.stripped_html,
Expand Down Expand Up @@ -341,10 +342,10 @@ mod tests {
assert_eq!(failed, 0);
assert_eq!(
out,
"{\"line\":1,\"id\":\"a\\\"1\",\"closedEmphasis\":0,\"closedFence\":0,\"revertedCodeSpan\":0,\"droppedMarker\":0,\
"{\"line\":1,\"id\":\"a\\\"1\",\"closedEmphasis\":0,\"closedFence\":0,\"revertedCodeSpan\":0,\"droppedMarker\":0,\"guessedPair\":0,\
\"escapedChar\":0,\"tagEmphasis\":0,\"strippedHtml\":0,\"rewrittenBullet\":0,\"rewrittenTable\":0,\
\"convertedMarker\":1}\n\
{\"line\":3,\"id\":7,\"closedEmphasis\":1,\"closedFence\":0,\"revertedCodeSpan\":0,\"droppedMarker\":0,\
{\"line\":3,\"id\":7,\"closedEmphasis\":1,\"closedFence\":0,\"revertedCodeSpan\":0,\"droppedMarker\":0,\"guessedPair\":0,\
\"escapedChar\":0,\"tagEmphasis\":0,\"strippedHtml\":0,\"rewrittenBullet\":0,\"rewrittenTable\":0,\
\"convertedMarker\":0}\n"
);
Expand Down
Loading
Loading