Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
fdb1779a
Commit
fdb1779a
authored
Jan 23, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: implement referenced content renderer
parent
a316e239
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
393 additions
and
176 deletions
+393
-176
markdown_service.go
api/v2/markdown_service.go
+4
-0
markdown_service.proto
proto/api/v2/markdown_service.proto
+7
-0
README.md
proto/gen/api/v2/README.md
+19
-0
markdown_service.pb.go
proto/gen/api/v2/markdown_service.pb.go
+275
-176
Error.tsx
web/src/components/MemoContent/ReferencedContent/Error.tsx
+9
-0
ReferencedMemo.tsx
...mponents/MemoContent/ReferencedContent/ReferencedMemo.tsx
+53
-0
index.tsx
web/src/components/MemoContent/ReferencedContent/index.tsx
+22
-0
Renderer.tsx
web/src/components/MemoContent/Renderer.tsx
+4
-0
No files found.
api/v2/markdown_service.go
View file @
fdb1779a
...
...
@@ -98,6 +98,8 @@ func convertFromASTNode(rawNode ast.Node) *apiv2pb.Node {
node
.
Node
=
&
apiv2pb
.
Node_SubscriptNode
{
SubscriptNode
:
&
apiv2pb
.
SubscriptNode
{
Content
:
n
.
Content
}}
case
*
ast
.
Superscript
:
node
.
Node
=
&
apiv2pb
.
Node_SuperscriptNode
{
SuperscriptNode
:
&
apiv2pb
.
SuperscriptNode
{
Content
:
n
.
Content
}}
case
*
ast
.
ReferencedContent
:
node
.
Node
=
&
apiv2pb
.
Node_ReferencedContentNode
{
ReferencedContentNode
:
&
apiv2pb
.
ReferencedContentNode
{
ResourceName
:
n
.
ResourceName
,
Params
:
n
.
Params
}}
default
:
node
.
Node
=
&
apiv2pb
.
Node_TextNode
{
TextNode
:
&
apiv2pb
.
TextNode
{}}
}
...
...
@@ -177,6 +179,8 @@ func convertToASTNode(node *apiv2pb.Node) ast.Node {
return
&
ast
.
Subscript
{
Content
:
n
.
SubscriptNode
.
Content
}
case
*
apiv2pb
.
Node_SuperscriptNode
:
return
&
ast
.
Superscript
{
Content
:
n
.
SuperscriptNode
.
Content
}
case
*
apiv2pb
.
Node_ReferencedContentNode
:
return
&
ast
.
ReferencedContent
{
ResourceName
:
n
.
ReferencedContentNode
.
ResourceName
,
Params
:
n
.
ReferencedContentNode
.
Params
}
default
:
return
&
ast
.
Text
{}
}
...
...
proto/api/v2/markdown_service.proto
View file @
fdb1779a
...
...
@@ -52,6 +52,7 @@ enum NodeType {
HIGHLIGHT
=
25
;
SUBSCRIPT
=
26
;
SUPERSCRIPT
=
27
;
REFERENCED_CONTENT
=
28
;
}
message
Node
{
...
...
@@ -84,6 +85,7 @@ message Node {
HighlightNode
highlight_node
=
26
;
SubscriptNode
subscript_node
=
27
;
SuperscriptNode
superscript_node
=
28
;
ReferencedContentNode
referenced_content_node
=
29
;
}
}
...
...
@@ -214,3 +216,8 @@ message SubscriptNode {
message
SuperscriptNode
{
string
content
=
1
;
}
message
ReferencedContentNode
{
string
resource_name
=
1
;
string
params
=
2
;
}
proto/gen/api/v2/README.md
View file @
fdb1779a
...
...
@@ -88,6 +88,7 @@
-
[
ParagraphNode
](
#memos-api-v2-ParagraphNode
)
-
[
ParseMarkdownRequest
](
#memos-api-v2-ParseMarkdownRequest
)
-
[
ParseMarkdownResponse
](
#memos-api-v2-ParseMarkdownResponse
)
-
[
ReferencedContentNode
](
#memos-api-v2-ReferencedContentNode
)
-
[
StrikethroughNode
](
#memos-api-v2-StrikethroughNode
)
-
[
SubscriptNode
](
#memos-api-v2-SubscriptNode
)
-
[
SuperscriptNode
](
#memos-api-v2-SuperscriptNode
)
...
...
@@ -1266,6 +1267,7 @@
| highlight_node |
[
HighlightNode
](
#memos-api-v2-HighlightNode
)
| | |
| subscript_node |
[
SubscriptNode
](
#memos-api-v2-SubscriptNode
)
| | |
| superscript_node |
[
SuperscriptNode
](
#memos-api-v2-SuperscriptNode
)
| | |
| referenced_content_node |
[
ReferencedContentNode
](
#memos-api-v2-ReferencedContentNode
)
| | |
...
...
@@ -1334,6 +1336,22 @@
<a
name=
"memos-api-v2-ReferencedContentNode"
></a>
### ReferencedContentNode
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| resource_name |
[
string
](
#string
)
| | |
| params |
[
string
](
#string
)
| | |
<a
name=
"memos-api-v2-StrikethroughNode"
></a>
### StrikethroughNode
...
...
@@ -1513,6 +1531,7 @@
| HIGHLIGHT | 25 | |
| SUBSCRIPT | 26 | |
| SUPERSCRIPT | 27 | |
| REFERENCED_CONTENT | 28 | |
...
...
proto/gen/api/v2/markdown_service.pb.go
View file @
fdb1779a
...
...
@@ -52,6 +52,7 @@ const (
NodeType_HIGHLIGHT
NodeType
=
25
NodeType_SUBSCRIPT
NodeType
=
26
NodeType_SUPERSCRIPT
NodeType
=
27
NodeType_REFERENCED_CONTENT
NodeType
=
28
)
// Enum value maps for NodeType.
...
...
@@ -85,6 +86,7 @@ var (
25
:
"HIGHLIGHT"
,
26
:
"SUBSCRIPT"
,
27
:
"SUPERSCRIPT"
,
28
:
"REFERENCED_CONTENT"
,
}
NodeType_value
=
map
[
string
]
int32
{
"NODE_UNSPECIFIED"
:
0
,
...
...
@@ -115,6 +117,7 @@ var (
"HIGHLIGHT"
:
25
,
"SUBSCRIPT"
:
26
,
"SUPERSCRIPT"
:
27
,
"REFERENCED_CONTENT"
:
28
,
}
)
...
...
@@ -274,6 +277,7 @@ type Node struct {
// *Node_HighlightNode
// *Node_SubscriptNode
// *Node_SuperscriptNode
// *Node_ReferencedContentNode
Node
isNode_Node
`protobuf_oneof:"node"`
}
...
...
@@ -512,6 +516,13 @@ func (x *Node) GetSuperscriptNode() *SuperscriptNode {
return
nil
}
func
(
x
*
Node
)
GetReferencedContentNode
()
*
ReferencedContentNode
{
if
x
,
ok
:=
x
.
GetNode
()
.
(
*
Node_ReferencedContentNode
);
ok
{
return
x
.
ReferencedContentNode
}
return
nil
}
type
isNode_Node
interface
{
isNode_Node
()
}
...
...
@@ -624,6 +635,10 @@ type Node_SuperscriptNode struct {
SuperscriptNode
*
SuperscriptNode
`protobuf:"bytes,28,opt,name=superscript_node,json=superscriptNode,proto3,oneof"`
}
type
Node_ReferencedContentNode
struct
{
ReferencedContentNode
*
ReferencedContentNode
`protobuf:"bytes,29,opt,name=referenced_content_node,json=referencedContentNode,proto3,oneof"`
}
func
(
*
Node_LineBreakNode
)
isNode_Node
()
{}
func
(
*
Node_ParagraphNode
)
isNode_Node
()
{}
...
...
@@ -678,6 +693,8 @@ func (*Node_SubscriptNode) isNode_Node() {}
func
(
*
Node_SuperscriptNode
)
isNode_Node
()
{}
func
(
*
Node_ReferencedContentNode
)
isNode_Node
()
{}
type
LineBreakNode
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
...
...
@@ -2082,6 +2099,61 @@ func (x *SuperscriptNode) GetContent() string {
return
""
}
type
ReferencedContentNode
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
ResourceName
string
`protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"`
Params
string
`protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"`
}
func
(
x
*
ReferencedContentNode
)
Reset
()
{
*
x
=
ReferencedContentNode
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v2_markdown_service_proto_msgTypes
[
30
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
ReferencedContentNode
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ReferencedContentNode
)
ProtoMessage
()
{}
func
(
x
*
ReferencedContentNode
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v2_markdown_service_proto_msgTypes
[
30
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ReferencedContentNode.ProtoReflect.Descriptor instead.
func
(
*
ReferencedContentNode
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_api_v2_markdown_service_proto_rawDescGZIP
(),
[]
int
{
30
}
}
func
(
x
*
ReferencedContentNode
)
GetResourceName
()
string
{
if
x
!=
nil
{
return
x
.
ResourceName
}
return
""
}
func
(
x
*
ReferencedContentNode
)
GetParams
()
string
{
if
x
!=
nil
{
return
x
.
Params
}
return
""
}
type
TableNode_Row
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
...
...
@@ -2093,7 +2165,7 @@ type TableNode_Row struct {
func
(
x
*
TableNode_Row
)
Reset
()
{
*
x
=
TableNode_Row
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v2_markdown_service_proto_msgTypes
[
3
0
]
mi
:=
&
file_api_v2_markdown_service_proto_msgTypes
[
3
1
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
...
...
@@ -2106,7 +2178,7 @@ func (x *TableNode_Row) String() string {
func
(
*
TableNode_Row
)
ProtoMessage
()
{}
func
(
x
*
TableNode_Row
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v2_markdown_service_proto_msgTypes
[
3
0
]
mi
:=
&
file_api_v2_markdown_service_proto_msgTypes
[
3
1
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
...
...
@@ -2144,7 +2216,7 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x12
,
0x28
,
0x0a
,
0x05
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x05
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x22
,
0x
80
,
0x0f
,
0x0a
,
0x04
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x04
,
0x74
,
0x65
,
0x73
,
0x22
,
0x
df
,
0x0f
,
0x0a
,
0x04
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0e
,
0x32
,
0x16
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x52
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x12
,
0x45
,
0x0a
,
0x0f
,
0x6c
,
0x69
,
0x6e
,
0x65
,
0x5f
,
...
...
@@ -2263,166 +2335,178 @@ var file_api_v2_markdown_service_proto_rawDesc = []byte{
0x5f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x18
,
0x1c
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x53
,
0x75
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0f
,
0x73
,
0x75
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x42
,
0x06
,
0x0a
,
0x04
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x0f
,
0x0a
,
0x0d
,
0x4c
,
0x69
,
0x6e
,
0x65
,
0x42
,
0x72
,
0x65
,
0x61
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x3f
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x61
,
0x67
,
0x72
,
0x61
,
0x70
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x45
,
0x0a
,
0x0d
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x6c
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x08
,
0x6c
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x53
,
0x0a
,
0x0b
,
0x48
,
0x65
,
0x61
,
0x64
,
0x69
,
0x6e
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x2c
,
0x0a
,
0x12
,
0x48
,
0x6f
,
0x72
,
0x69
,
0x7a
,
0x6f
,
0x6e
,
0x74
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0e
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x71
,
0x75
,
0x6f
,
0x74
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x71
,
0x0a
,
0x0f
,
0x4f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x5d
,
0x0a
,
0x17
,
0x72
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x64
,
0x5f
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x5f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x18
,
0x1d
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x23
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x52
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x48
,
0x00
,
0x52
,
0x15
,
0x72
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x42
,
0x06
,
0x0a
,
0x04
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x0f
,
0x0a
,
0x0d
,
0x4c
,
0x69
,
0x6e
,
0x65
,
0x42
,
0x72
,
0x65
,
0x61
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x3f
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x61
,
0x67
,
0x72
,
0x61
,
0x70
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x73
,
0x0a
,
0x11
,
0x55
,
0x6e
,
0x6f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x45
,
0x0a
,
0x0d
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x6c
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x08
,
0x6c
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x53
,
0x0a
,
0x0b
,
0x48
,
0x65
,
0x61
,
0x64
,
0x69
,
0x6e
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x2c
,
0x0a
,
0x12
,
0x48
,
0x6f
,
0x72
,
0x69
,
0x7a
,
0x6f
,
0x6e
,
0x74
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0e
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x71
,
0x75
,
0x6f
,
0x74
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x71
,
0x0a
,
0x0f
,
0x4f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x73
,
0x0a
,
0x11
,
0x55
,
0x6e
,
0x6f
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x8a
,
0x01
,
0x0a
,
0x0c
,
0x54
,
0x61
,
0x73
,
0x6b
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x8a
,
0x01
,
0x0a
,
0x0c
,
0x54
,
0x61
,
0x73
,
0x6b
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x04
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x8f
,
0x01
,
0x0a
,
0x09
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x12
,
0x1c
,
0x0a
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x12
,
0x2f
,
0x0a
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x52
,
0x6f
,
0x77
,
0x52
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x1a
,
0x1b
,
0x0a
,
0x03
,
0x52
,
0x6f
,
0x77
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x22
,
0x52
,
0x0a
,
0x13
,
0x45
,
0x6d
,
0x62
,
0x65
,
0x64
,
0x64
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x54
,
0x65
,
0x78
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x04
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x8f
,
0x01
,
0x0a
,
0x09
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x12
,
0x1c
,
0x0a
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x09
,
0x64
,
0x65
,
0x6c
,
0x69
,
0x6d
,
0x69
,
0x74
,
0x65
,
0x72
,
0x12
,
0x2f
,
0x0a
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x52
,
0x6f
,
0x77
,
0x52
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x1a
,
0x1b
,
0x0a
,
0x03
,
0x52
,
0x6f
,
0x77
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x22
,
0x52
,
0x0a
,
0x13
,
0x45
,
0x6d
,
0x62
,
0x65
,
0x64
,
0x64
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x54
,
0x65
,
0x78
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x52
,
0x0a
,
0x08
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x3e
,
0x0a
,
0x0a
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x42
,
0x0a
,
0x0e
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x38
,
0x0a
,
0x09
,
0x49
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x61
,
0x6c
,
0x74
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x61
,
0x6c
,
0x74
,
0x54
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x30
,
0x0a
,
0x08
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0c
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x12
,
0x1e
,
0x0a
,
0x0b
,
0x69
,
0x73
,
0x5f
,
0x72
,
0x61
,
0x77
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x09
,
0x69
,
0x73
,
0x52
,
0x61
,
0x77
,
0x54
,
0x65
,
0x78
,
0x74
,
0x22
,
0x23
,
0x0a
,
0x07
,
0x54
,
0x61
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x52
,
0x0a
,
0x08
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x3e
,
0x0a
,
0x0a
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x42
,
0x0a
,
0x0e
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x38
,
0x0a
,
0x09
,
0x49
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x61
,
0x6c
,
0x74
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x61
,
0x6c
,
0x74
,
0x54
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x30
,
0x0a
,
0x08
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x74
,
0x65
,
0x78
,
0x74
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0c
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x03
,
0x75
,
0x72
,
0x6c
,
0x12
,
0x1e
,
0x0a
,
0x0b
,
0x69
,
0x73
,
0x5f
,
0x72
,
0x61
,
0x77
,
0x5f
,
0x74
,
0x65
,
0x78
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x09
,
0x69
,
0x73
,
0x52
,
0x61
,
0x77
,
0x54
,
0x65
,
0x78
,
0x74
,
0x22
,
0x23
,
0x0a
,
0x07
,
0x54
,
0x61
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x2d
,
0x0a
,
0x11
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6b
,
0x65
,
0x74
,
0x68
,
0x72
,
0x6f
,
0x75
,
0x67
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2f
,
0x0a
,
0x15
,
0x45
,
0x73
,
0x63
,
0x61
,
0x70
,
0x69
,
0x6e
,
0x67
,
0x43
,
0x68
,
0x61
,
0x72
,
0x61
,
0x63
,
0x74
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x48
,
0x69
,
0x67
,
0x68
,
0x6c
,
0x69
,
0x67
,
0x68
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2d
,
0x0a
,
0x11
,
0x53
,
0x74
,
0x72
,
0x69
,
0x6b
,
0x65
,
0x74
,
0x68
,
0x72
,
0x6f
,
0x75
,
0x67
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2f
,
0x0a
,
0x15
,
0x45
,
0x73
,
0x63
,
0x61
,
0x70
,
0x69
,
0x6e
,
0x67
,
0x43
,
0x68
,
0x61
,
0x72
,
0x61
,
0x63
,
0x74
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x48
,
0x69
,
0x67
,
0x68
,
0x6c
,
0x69
,
0x67
,
0x68
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x53
,
0x75
,
0x62
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2b
,
0x0a
,
0x0f
,
0x53
,
0x75
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x2a
,
0xb3
,
0x03
,
0x0a
,
0x08
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x4e
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x45
,
0x44
,
0x10
,
0x00
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4c
,
0x49
,
0x4e
,
0x45
,
0x5f
,
0x42
,
0x52
,
0x45
,
0x41
,
0x4b
,
0x10
,
0x01
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x50
,
0x41
,
0x52
,
0x41
,
0x47
,
0x52
,
0x41
,
0x50
,
0x48
,
0x10
,
0x02
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x03
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x48
,
0x45
,
0x41
,
0x44
,
0x49
,
0x4e
,
0x47
,
0x10
,
0x04
,
0x12
,
0x13
,
0x0a
,
0x0f
,
0x48
,
0x4f
,
0x52
,
0x49
,
0x5a
,
0x4f
,
0x4e
,
0x54
,
0x41
,
0x4c
,
0x5f
,
0x52
,
0x55
,
0x4c
,
0x45
,
0x10
,
0x05
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x51
,
0x55
,
0x4f
,
0x54
,
0x45
,
0x10
,
0x06
,
0x12
,
0x10
,
0x0a
,
0x0c
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x07
,
0x12
,
0x12
,
0x0a
,
0x0e
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x08
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x54
,
0x41
,
0x53
,
0x4b
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x09
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x0a
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x54
,
0x41
,
0x42
,
0x4c
,
0x45
,
0x10
,
0x0b
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x45
,
0x4d
,
0x42
,
0x45
,
0x44
,
0x44
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x0c
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x54
,
0x45
,
0x58
,
0x54
,
0x10
,
0x0d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x10
,
0x0e
,
0x12
,
0x0a
,
0x0a
,
0x06
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x0f
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x5f
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x10
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x10
,
0x11
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x49
,
0x4d
,
0x41
,
0x47
,
0x45
,
0x10
,
0x12
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x13
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x41
,
0x55
,
0x54
,
0x4f
,
0x5f
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x14
,
0x12
,
0x07
,
0x0a
,
0x03
,
0x54
,
0x41
,
0x47
,
0x10
,
0x15
,
0x12
,
0x11
,
0x0a
,
0x0d
,
0x53
,
0x54
,
0x52
,
0x49
,
0x4b
,
0x45
,
0x54
,
0x48
,
0x52
,
0x4f
,
0x55
,
0x47
,
0x48
,
0x10
,
0x16
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x45
,
0x53
,
0x43
,
0x41
,
0x50
,
0x49
,
0x4e
,
0x47
,
0x5f
,
0x43
,
0x48
,
0x41
,
0x52
,
0x41
,
0x43
,
0x54
,
0x45
,
0x52
,
0x10
,
0x17
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x10
,
0x18
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x48
,
0x49
,
0x47
,
0x48
,
0x4c
,
0x49
,
0x47
,
0x48
,
0x54
,
0x10
,
0x19
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x53
,
0x55
,
0x42
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x1a
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x53
,
0x55
,
0x50
,
0x45
,
0x52
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x1b
,
0x32
,
0x88
,
0x01
,
0x0a
,
0x0f
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x75
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x22
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x23
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x1b
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x15
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x10
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x32
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x42
,
0x14
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x2f
,
0x67
,
0x65
,
0x6e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x32
,
0x3b
,
0x61
,
0x70
,
0x69
,
0x76
,
0x32
,
0xa2
,
0x02
,
0x03
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x32
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x32
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x32
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x32
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
0x22
,
0x29
,
0x0a
,
0x0d
,
0x53
,
0x75
,
0x62
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2b
,
0x0a
,
0x0f
,
0x53
,
0x75
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x54
,
0x0a
,
0x15
,
0x52
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x2a
,
0xcb
,
0x03
,
0x0a
,
0x08
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x4e
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x45
,
0x44
,
0x10
,
0x00
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4c
,
0x49
,
0x4e
,
0x45
,
0x5f
,
0x42
,
0x52
,
0x45
,
0x41
,
0x4b
,
0x10
,
0x01
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x50
,
0x41
,
0x52
,
0x41
,
0x47
,
0x52
,
0x41
,
0x50
,
0x48
,
0x10
,
0x02
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x03
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x48
,
0x45
,
0x41
,
0x44
,
0x49
,
0x4e
,
0x47
,
0x10
,
0x04
,
0x12
,
0x13
,
0x0a
,
0x0f
,
0x48
,
0x4f
,
0x52
,
0x49
,
0x5a
,
0x4f
,
0x4e
,
0x54
,
0x41
,
0x4c
,
0x5f
,
0x52
,
0x55
,
0x4c
,
0x45
,
0x10
,
0x05
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x51
,
0x55
,
0x4f
,
0x54
,
0x45
,
0x10
,
0x06
,
0x12
,
0x10
,
0x0a
,
0x0c
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x07
,
0x12
,
0x12
,
0x0a
,
0x0e
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x08
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x54
,
0x41
,
0x53
,
0x4b
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x09
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x0a
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x54
,
0x41
,
0x42
,
0x4c
,
0x45
,
0x10
,
0x0b
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x45
,
0x4d
,
0x42
,
0x45
,
0x44
,
0x44
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x0c
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x54
,
0x45
,
0x58
,
0x54
,
0x10
,
0x0d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x10
,
0x0e
,
0x12
,
0x0a
,
0x0a
,
0x06
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x0f
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x5f
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x10
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x10
,
0x11
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x49
,
0x4d
,
0x41
,
0x47
,
0x45
,
0x10
,
0x12
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x13
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x41
,
0x55
,
0x54
,
0x4f
,
0x5f
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x14
,
0x12
,
0x07
,
0x0a
,
0x03
,
0x54
,
0x41
,
0x47
,
0x10
,
0x15
,
0x12
,
0x11
,
0x0a
,
0x0d
,
0x53
,
0x54
,
0x52
,
0x49
,
0x4b
,
0x45
,
0x54
,
0x48
,
0x52
,
0x4f
,
0x55
,
0x47
,
0x48
,
0x10
,
0x16
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x45
,
0x53
,
0x43
,
0x41
,
0x50
,
0x49
,
0x4e
,
0x47
,
0x5f
,
0x43
,
0x48
,
0x41
,
0x52
,
0x41
,
0x43
,
0x54
,
0x45
,
0x52
,
0x10
,
0x17
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x10
,
0x18
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x48
,
0x49
,
0x47
,
0x48
,
0x4c
,
0x49
,
0x47
,
0x48
,
0x54
,
0x10
,
0x19
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x53
,
0x55
,
0x42
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x1a
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x53
,
0x55
,
0x50
,
0x45
,
0x52
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x1b
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x52
,
0x45
,
0x46
,
0x45
,
0x52
,
0x45
,
0x4e
,
0x43
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x1c
,
0x32
,
0x88
,
0x01
,
0x0a
,
0x0f
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x75
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x22
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x23
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x1b
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x15
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x10
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x32
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x32
,
0x42
,
0x14
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x2f
,
0x67
,
0x65
,
0x6e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x32
,
0x3b
,
0x61
,
0x70
,
0x69
,
0x76
,
0x32
,
0xa2
,
0x02
,
0x03
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x32
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x32
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x32
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x32
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
}
var
(
...
...
@@ -2438,7 +2522,7 @@ func file_api_v2_markdown_service_proto_rawDescGZIP() []byte {
}
var
file_api_v2_markdown_service_proto_enumTypes
=
make
([]
protoimpl
.
EnumInfo
,
1
)
var
file_api_v2_markdown_service_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
3
1
)
var
file_api_v2_markdown_service_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
3
2
)
var
file_api_v2_markdown_service_proto_goTypes
=
[]
interface
{}{
(
NodeType
)(
0
),
// 0: memos.api.v2.NodeType
(
*
ParseMarkdownRequest
)(
nil
),
// 1: memos.api.v2.ParseMarkdownRequest
...
...
@@ -2471,7 +2555,8 @@ var file_api_v2_markdown_service_proto_goTypes = []interface{}{
(
*
HighlightNode
)(
nil
),
// 28: memos.api.v2.HighlightNode
(
*
SubscriptNode
)(
nil
),
// 29: memos.api.v2.SubscriptNode
(
*
SuperscriptNode
)(
nil
),
// 30: memos.api.v2.SuperscriptNode
(
*
TableNode_Row
)(
nil
),
// 31: memos.api.v2.TableNode.Row
(
*
ReferencedContentNode
)(
nil
),
// 31: memos.api.v2.ReferencedContentNode
(
*
TableNode_Row
)(
nil
),
// 32: memos.api.v2.TableNode.Row
}
var
file_api_v2_markdown_service_proto_depIdxs
=
[]
int32
{
3
,
// 0: memos.api.v2.ParseMarkdownResponse.nodes:type_name -> memos.api.v2.Node
...
...
@@ -2503,21 +2588,22 @@ var file_api_v2_markdown_service_proto_depIdxs = []int32{
28
,
// 26: memos.api.v2.Node.highlight_node:type_name -> memos.api.v2.HighlightNode
29
,
// 27: memos.api.v2.Node.subscript_node:type_name -> memos.api.v2.SubscriptNode
30
,
// 28: memos.api.v2.Node.superscript_node:type_name -> memos.api.v2.SuperscriptNode
3
,
// 29: memos.api.v2.ParagraphNode.children:type_name -> memos.api.v2.Node
3
,
// 30: memos.api.v2.HeadingNode.children:type_name -> memos.api.v2.Node
3
,
// 31: memos.api.v2.BlockquoteNode.children:type_name -> memos.api.v2.Node
3
,
// 32: memos.api.v2.OrderedListNode.children:type_name -> memos.api.v2.Node
3
,
// 33: memos.api.v2.UnorderedListNode.children:type_name -> memos.api.v2.Node
3
,
// 34: memos.api.v2.TaskListNode.children:type_name -> memos.api.v2.Node
31
,
// 35: memos.api.v2.TableNode.rows:type_name -> memos.api.v2.TableNode.Row
3
,
// 36: memos.api.v2.BoldNode.children:type_name -> memos.api.v2.Node
1
,
// 37: memos.api.v2.MarkdownService.ParseMarkdown:input_type -> memos.api.v2.ParseMarkdownRequest
2
,
// 38: memos.api.v2.MarkdownService.ParseMarkdown:output_type -> memos.api.v2.ParseMarkdownResponse
38
,
// [38:39] is the sub-list for method output_type
37
,
// [37:38] is the sub-list for method input_type
37
,
// [37:37] is the sub-list for extension type_name
37
,
// [37:37] is the sub-list for extension extendee
0
,
// [0:37] is the sub-list for field type_name
31
,
// 29: memos.api.v2.Node.referenced_content_node:type_name -> memos.api.v2.ReferencedContentNode
3
,
// 30: memos.api.v2.ParagraphNode.children:type_name -> memos.api.v2.Node
3
,
// 31: memos.api.v2.HeadingNode.children:type_name -> memos.api.v2.Node
3
,
// 32: memos.api.v2.BlockquoteNode.children:type_name -> memos.api.v2.Node
3
,
// 33: memos.api.v2.OrderedListNode.children:type_name -> memos.api.v2.Node
3
,
// 34: memos.api.v2.UnorderedListNode.children:type_name -> memos.api.v2.Node
3
,
// 35: memos.api.v2.TaskListNode.children:type_name -> memos.api.v2.Node
32
,
// 36: memos.api.v2.TableNode.rows:type_name -> memos.api.v2.TableNode.Row
3
,
// 37: memos.api.v2.BoldNode.children:type_name -> memos.api.v2.Node
1
,
// 38: memos.api.v2.MarkdownService.ParseMarkdown:input_type -> memos.api.v2.ParseMarkdownRequest
2
,
// 39: memos.api.v2.MarkdownService.ParseMarkdown:output_type -> memos.api.v2.ParseMarkdownResponse
39
,
// [39:40] is the sub-list for method output_type
38
,
// [38:39] is the sub-list for method input_type
38
,
// [38:38] is the sub-list for extension type_name
38
,
// [38:38] is the sub-list for extension extendee
0
,
// [0:38] is the sub-list for field type_name
}
func
init
()
{
file_api_v2_markdown_service_proto_init
()
}
...
...
@@ -2887,6 +2973,18 @@ func file_api_v2_markdown_service_proto_init() {
}
}
file_api_v2_markdown_service_proto_msgTypes
[
30
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
ReferencedContentNode
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_api_v2_markdown_service_proto_msgTypes
[
31
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
TableNode_Row
);
i
{
case
0
:
return
&
v
.
state
...
...
@@ -2927,6 +3025,7 @@ func file_api_v2_markdown_service_proto_init() {
(
*
Node_HighlightNode
)(
nil
),
(
*
Node_SubscriptNode
)(
nil
),
(
*
Node_SuperscriptNode
)(
nil
),
(
*
Node_ReferencedContentNode
)(
nil
),
}
type
x
struct
{}
out
:=
protoimpl
.
TypeBuilder
{
...
...
@@ -2934,7 +3033,7 @@ func file_api_v2_markdown_service_proto_init() {
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
RawDescriptor
:
file_api_v2_markdown_service_proto_rawDesc
,
NumEnums
:
1
,
NumMessages
:
3
1
,
NumMessages
:
3
2
,
NumExtensions
:
0
,
NumServices
:
1
,
},
...
...
web/src/components/MemoContent/ReferencedContent/Error.tsx
0 → 100644
View file @
fdb1779a
interface
Props
{
message
:
string
;
}
const
Error
=
({
message
}:
Props
)
=>
{
return
<
p
className=
"font-mono text-sm text-red-600 dark:text-red-700"
>
{
message
}
</
p
>;
};
export
default
Error
;
web/src/components/MemoContent/ReferencedContent/ReferencedMemo.tsx
0 → 100644
View file @
fdb1779a
import
{
useContext
,
useEffect
}
from
"react"
;
import
useLoading
from
"@/hooks/useLoading"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
{
useMemoStore
}
from
"@/store/v1"
;
import
{
RendererContext
}
from
"../types"
;
import
Error
from
"./Error"
;
interface
Props
{
resourceId
:
string
;
params
:
string
;
}
const
ReferencedMemo
=
({
resourceId
}:
Props
)
=>
{
const
context
=
useContext
(
RendererContext
);
const
navigateTo
=
useNavigateTo
();
const
loadingState
=
useLoading
();
const
memoStore
=
useMemoStore
();
const
memo
=
memoStore
.
getMemoByName
(
resourceId
);
const
resourceName
=
`memos/
${
resourceId
}
`
;
useEffect
(()
=>
{
memoStore
.
getOrFetchMemoByName
(
resourceId
).
finally
(()
=>
loadingState
.
setFinish
());
},
[
resourceId
]);
if
(
loadingState
.
isLoading
)
{
return
null
;
}
if
(
!
memo
)
{
return
<
Error
message=
{
`Memo not found: ${resourceId}`
}
/>;
}
if
(
memo
.
id
===
context
.
memoId
||
context
.
embeddedMemos
.
has
(
resourceName
))
{
return
<
Error
message=
{
`Nested Rendering Error: ![[${resourceName}]]`
}
/>;
}
const
displayContent
=
memo
.
content
.
length
>
12
?
`
${
memo
.
content
.
slice
(
0
,
12
)}
...`
:
memo
.
content
;
const
handleGotoMemoDetailPage
=
()
=>
{
navigateTo
(
`/m/
${
memo
.
name
}
`
);
};
// Add the memo to the set of embedded memos. This is used to prevent infinite loops when a memo embeds itself.
context
.
embeddedMemos
.
add
(
resourceName
);
return
(
<
span
className=
"text-blue-600 whitespace-nowrap dark:text-blue-400 cursor-pointer underline break-all hover:opacity-80 decoration-1"
onClick=
{
handleGotoMemoDetailPage
}
>
{
displayContent
}
</
span
>
);
};
export
default
ReferencedMemo
;
web/src/components/MemoContent/ReferencedContent/index.tsx
0 → 100644
View file @
fdb1779a
import
Error
from
"./Error"
;
import
ReferencedMemo
from
"./ReferencedMemo"
;
interface
Props
{
resourceName
:
string
;
params
:
string
;
}
const
extractResourceTypeAndId
=
(
resourceName
:
string
)
=>
{
const
[
resourceType
,
resourceId
]
=
resourceName
.
split
(
"/"
);
return
{
resourceType
,
resourceId
};
};
const
ReferencedContent
=
({
resourceName
,
params
}:
Props
)
=>
{
const
{
resourceType
,
resourceId
}
=
extractResourceTypeAndId
(
resourceName
);
if
(
resourceType
===
"memos"
)
{
return
<
ReferencedMemo
resourceId=
{
resourceId
}
params=
{
params
}
/>;
}
return
<
Error
message=
{
`Unknown resource: ${resourceName}`
}
/>;
};
export
default
ReferencedContent
;
web/src/components/MemoContent/Renderer.tsx
View file @
fdb1779a
...
...
@@ -18,6 +18,7 @@ import {
NodeType
,
OrderedListNode
,
ParagraphNode
,
ReferencedContentNode
,
StrikethroughNode
,
SubscriptNode
,
SuperscriptNode
,
...
...
@@ -44,6 +45,7 @@ import Link from "./Link";
import
Math
from
"./Math"
;
import
OrderedList
from
"./OrderedList"
;
import
Paragraph
from
"./Paragraph"
;
import
ReferencedContent
from
"./ReferencedContent"
;
import
Strikethrough
from
"./Strikethrough"
;
import
Subscript
from
"./Subscript"
;
import
Superscript
from
"./Superscript"
;
...
...
@@ -114,6 +116,8 @@ const Renderer: React.FC<Props> = ({ index, node }: Props) => {
return
<
Subscript
{
...
(
node
.
subscriptNode
as
SubscriptNode
)}
/>;
case
NodeType
.
SUPERSCRIPT
:
return
<
Superscript
{
...
(
node
.
superscriptNode
as
SuperscriptNode
)}
/>;
case
NodeType
.
REFERENCED_CONTENT
:
return
<
ReferencedContent
{
...
(
node
.
referencedContentNode
as
ReferencedContentNode
)}
/>;
default
:
return
null
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment