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
f374169a
Commit
f374169a
authored
Jul 13, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: implement html element renderer
parent
4ff3b89a
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
356 additions
and
210 deletions
+356
-210
apidocs.swagger.yaml
docs/apidocs.swagger.yaml
+12
-0
go.mod
go.mod
+1
-1
go.sum
go.sum
+2
-2
markdown_service.proto
proto/api/v1/markdown_service.proto
+7
-0
markdown_service.pb.go
proto/gen/api/v1/markdown_service.pb.go
+314
-207
markdown_service.go
server/router/api/v1/markdown_service.go
+4
-0
HTMLElement.tsx
web/src/components/MemoContent/HTMLElement.tsx
+12
-0
Renderer.tsx
web/src/components/MemoContent/Renderer.tsx
+4
-0
No files found.
docs/apidocs.swagger.yaml
View file @
f374169a
...
@@ -2447,6 +2447,15 @@ definitions:
...
@@ -2447,6 +2447,15 @@ definitions:
description
:
|-
description
:
|-
stats is the stats of memo creating/updating activities.
stats is the stats of memo creating/updating activities.
key is the year-month-day string. e.g. "2020-01-01".
key is the year-month-day string. e.g. "2020-01-01".
v1HTMLElementNode
:
type
:
object
properties
:
tagName
:
type
:
string
attributes
:
type
:
object
additionalProperties
:
type
:
string
v1HeadingNode
:
v1HeadingNode
:
type
:
object
type
:
object
properties
:
properties
:
...
@@ -2836,6 +2845,8 @@ definitions:
...
@@ -2836,6 +2845,8 @@ definitions:
$ref
:
'
#/definitions/v1ReferencedContentNode'
$ref
:
'
#/definitions/v1ReferencedContentNode'
spoilerNode
:
spoilerNode
:
$ref
:
'
#/definitions/v1SpoilerNode'
$ref
:
'
#/definitions/v1SpoilerNode'
htmlElementNode
:
$ref
:
'
#/definitions/v1HTMLElementNode'
v1NodeType
:
v1NodeType
:
type
:
string
type
:
string
enum
:
enum
:
...
@@ -2869,6 +2880,7 @@ definitions:
...
@@ -2869,6 +2880,7 @@ definitions:
-
SUPERSCRIPT
-
SUPERSCRIPT
-
REFERENCED_CONTENT
-
REFERENCED_CONTENT
-
SPOILER
-
SPOILER
-
HTML_ELEMENT
default
:
NODE_UNSPECIFIED
default
:
NODE_UNSPECIFIED
v1OrderedListNode
:
v1OrderedListNode
:
type
:
object
type
:
object
...
...
go.mod
View file @
f374169a
...
@@ -25,7 +25,7 @@ require (
...
@@ -25,7 +25,7 @@ require (
github.com/spf13/cobra v1.8.1
github.com/spf13/cobra v1.8.1
github.com/spf13/viper v1.19.0
github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.9.0
github.com/stretchr/testify v1.9.0
github.com/usememos/gomark v0.0.0-2024071
2135956-99d0ab9b9aa1
github.com/usememos/gomark v0.0.0-2024071
3015837-e5b687d3d637
golang.org/x/crypto v0.25.0
golang.org/x/crypto v0.25.0
golang.org/x/mod v0.19.0
golang.org/x/mod v0.19.0
golang.org/x/net v0.27.0
golang.org/x/net v0.27.0
...
...
go.sum
View file @
f374169a
...
@@ -441,8 +441,8 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM
...
@@ -441,8 +441,8 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
github.com/usememos/gomark v0.0.0-2024071
2135956-99d0ab9b9aa1 h1:4LuNOC1zgAk9K8kZjTBZ/yNJR9vgQTNAQFyWxLxJp5A
=
github.com/usememos/gomark v0.0.0-2024071
3015837-e5b687d3d637 h1:DTSf/z7oXyAJXk9bYaTHnRiLlHynWJ/ate9VKJn2awc
=
github.com/usememos/gomark v0.0.0-2024071
2135956-99d0ab9b9aa1
/go.mod h1:7CZRoYFQyyljzplOTeyODFR26O+wr0BbnpTWVLGfKJA=
github.com/usememos/gomark v0.0.0-2024071
3015837-e5b687d3d637
/go.mod h1:7CZRoYFQyyljzplOTeyODFR26O+wr0BbnpTWVLGfKJA=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
...
...
proto/api/v1/markdown_service.proto
View file @
f374169a
...
@@ -84,6 +84,7 @@ enum NodeType {
...
@@ -84,6 +84,7 @@ enum NodeType {
SUPERSCRIPT
=
27
;
SUPERSCRIPT
=
27
;
REFERENCED_CONTENT
=
28
;
REFERENCED_CONTENT
=
28
;
SPOILER
=
29
;
SPOILER
=
29
;
HTML_ELEMENT
=
30
;
}
}
message
Node
{
message
Node
{
...
@@ -118,6 +119,7 @@ message Node {
...
@@ -118,6 +119,7 @@ message Node {
SuperscriptNode
superscript_node
=
28
;
SuperscriptNode
superscript_node
=
28
;
ReferencedContentNode
referenced_content_node
=
29
;
ReferencedContentNode
referenced_content_node
=
29
;
SpoilerNode
spoiler_node
=
30
;
SpoilerNode
spoiler_node
=
30
;
HTMLElementNode
html_element_node
=
31
;
}
}
}
}
...
@@ -257,3 +259,8 @@ message ReferencedContentNode {
...
@@ -257,3 +259,8 @@ message ReferencedContentNode {
message
SpoilerNode
{
message
SpoilerNode
{
string
content
=
1
;
string
content
=
1
;
}
}
message
HTMLElementNode
{
string
tag_name
=
1
;
map
<
string
,
string
>
attributes
=
2
;
}
proto/gen/api/v1/markdown_service.pb.go
View file @
f374169a
...
@@ -54,6 +54,7 @@ const (
...
@@ -54,6 +54,7 @@ const (
NodeType_SUPERSCRIPT
NodeType
=
27
NodeType_SUPERSCRIPT
NodeType
=
27
NodeType_REFERENCED_CONTENT
NodeType
=
28
NodeType_REFERENCED_CONTENT
NodeType
=
28
NodeType_SPOILER
NodeType
=
29
NodeType_SPOILER
NodeType
=
29
NodeType_HTML_ELEMENT
NodeType
=
30
)
)
// Enum value maps for NodeType.
// Enum value maps for NodeType.
...
@@ -89,6 +90,7 @@ var (
...
@@ -89,6 +90,7 @@ var (
27
:
"SUPERSCRIPT"
,
27
:
"SUPERSCRIPT"
,
28
:
"REFERENCED_CONTENT"
,
28
:
"REFERENCED_CONTENT"
,
29
:
"SPOILER"
,
29
:
"SPOILER"
,
30
:
"HTML_ELEMENT"
,
}
}
NodeType_value
=
map
[
string
]
int32
{
NodeType_value
=
map
[
string
]
int32
{
"NODE_UNSPECIFIED"
:
0
,
"NODE_UNSPECIFIED"
:
0
,
...
@@ -121,6 +123,7 @@ var (
...
@@ -121,6 +123,7 @@ var (
"SUPERSCRIPT"
:
27
,
"SUPERSCRIPT"
:
27
,
"REFERENCED_CONTENT"
:
28
,
"REFERENCED_CONTENT"
:
28
,
"SPOILER"
:
29
,
"SPOILER"
:
29
,
"HTML_ELEMENT"
:
30
,
}
}
)
)
...
@@ -486,6 +489,7 @@ type Node struct {
...
@@ -486,6 +489,7 @@ type Node struct {
// *Node_SuperscriptNode
// *Node_SuperscriptNode
// *Node_ReferencedContentNode
// *Node_ReferencedContentNode
// *Node_SpoilerNode
// *Node_SpoilerNode
// *Node_HtmlElementNode
Node
isNode_Node
`protobuf_oneof:"node"`
Node
isNode_Node
`protobuf_oneof:"node"`
}
}
...
@@ -738,6 +742,13 @@ func (x *Node) GetSpoilerNode() *SpoilerNode {
...
@@ -738,6 +742,13 @@ func (x *Node) GetSpoilerNode() *SpoilerNode {
return
nil
return
nil
}
}
func
(
x
*
Node
)
GetHtmlElementNode
()
*
HTMLElementNode
{
if
x
,
ok
:=
x
.
GetNode
()
.
(
*
Node_HtmlElementNode
);
ok
{
return
x
.
HtmlElementNode
}
return
nil
}
type
isNode_Node
interface
{
type
isNode_Node
interface
{
isNode_Node
()
isNode_Node
()
}
}
...
@@ -858,6 +869,10 @@ type Node_SpoilerNode struct {
...
@@ -858,6 +869,10 @@ type Node_SpoilerNode struct {
SpoilerNode
*
SpoilerNode
`protobuf:"bytes,30,opt,name=spoiler_node,json=spoilerNode,proto3,oneof"`
SpoilerNode
*
SpoilerNode
`protobuf:"bytes,30,opt,name=spoiler_node,json=spoilerNode,proto3,oneof"`
}
}
type
Node_HtmlElementNode
struct
{
HtmlElementNode
*
HTMLElementNode
`protobuf:"bytes,31,opt,name=html_element_node,json=htmlElementNode,proto3,oneof"`
}
func
(
*
Node_LineBreakNode
)
isNode_Node
()
{}
func
(
*
Node_LineBreakNode
)
isNode_Node
()
{}
func
(
*
Node_ParagraphNode
)
isNode_Node
()
{}
func
(
*
Node_ParagraphNode
)
isNode_Node
()
{}
...
@@ -916,6 +931,8 @@ func (*Node_ReferencedContentNode) isNode_Node() {}
...
@@ -916,6 +931,8 @@ func (*Node_ReferencedContentNode) isNode_Node() {}
func
(
*
Node_SpoilerNode
)
isNode_Node
()
{}
func
(
*
Node_SpoilerNode
)
isNode_Node
()
{}
func
(
*
Node_HtmlElementNode
)
isNode_Node
()
{}
type
LineBreakNode
struct
{
type
LineBreakNode
struct
{
state
protoimpl
.
MessageState
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
sizeCache
protoimpl
.
SizeCache
...
@@ -2422,6 +2439,61 @@ func (x *SpoilerNode) GetContent() string {
...
@@ -2422,6 +2439,61 @@ func (x *SpoilerNode) GetContent() string {
return
""
return
""
}
}
type
HTMLElementNode
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
TagName
string
`protobuf:"bytes,1,opt,name=tag_name,json=tagName,proto3" json:"tag_name,omitempty"`
Attributes
map
[
string
]
string
`protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func
(
x
*
HTMLElementNode
)
Reset
()
{
*
x
=
HTMLElementNode
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v1_markdown_service_proto_msgTypes
[
36
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
HTMLElementNode
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
HTMLElementNode
)
ProtoMessage
()
{}
func
(
x
*
HTMLElementNode
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v1_markdown_service_proto_msgTypes
[
36
]
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 HTMLElementNode.ProtoReflect.Descriptor instead.
func
(
*
HTMLElementNode
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_api_v1_markdown_service_proto_rawDescGZIP
(),
[]
int
{
36
}
}
func
(
x
*
HTMLElementNode
)
GetTagName
()
string
{
if
x
!=
nil
{
return
x
.
TagName
}
return
""
}
func
(
x
*
HTMLElementNode
)
GetAttributes
()
map
[
string
]
string
{
if
x
!=
nil
{
return
x
.
Attributes
}
return
nil
}
type
TableNode_Row
struct
{
type
TableNode_Row
struct
{
state
protoimpl
.
MessageState
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
sizeCache
protoimpl
.
SizeCache
...
@@ -2433,7 +2505,7 @@ type TableNode_Row struct {
...
@@ -2433,7 +2505,7 @@ type TableNode_Row struct {
func
(
x
*
TableNode_Row
)
Reset
()
{
func
(
x
*
TableNode_Row
)
Reset
()
{
*
x
=
TableNode_Row
{}
*
x
=
TableNode_Row
{}
if
protoimpl
.
UnsafeEnabled
{
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_api_v1_markdown_service_proto_msgTypes
[
3
6
]
mi
:=
&
file_api_v1_markdown_service_proto_msgTypes
[
3
7
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
ms
.
StoreMessageInfo
(
mi
)
}
}
...
@@ -2446,7 +2518,7 @@ func (x *TableNode_Row) String() string {
...
@@ -2446,7 +2518,7 @@ func (x *TableNode_Row) String() string {
func
(
*
TableNode_Row
)
ProtoMessage
()
{}
func
(
*
TableNode_Row
)
ProtoMessage
()
{}
func
(
x
*
TableNode_Row
)
ProtoReflect
()
protoreflect
.
Message
{
func
(
x
*
TableNode_Row
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_api_v1_markdown_service_proto_msgTypes
[
3
6
]
mi
:=
&
file_api_v1_markdown_service_proto_msgTypes
[
3
7
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
if
ms
.
LoadMessageInfo
()
==
nil
{
...
@@ -2500,7 +2572,7 @@ var file_api_v1_markdown_service_proto_rawDesc = []byte{
...
@@ -2500,7 +2572,7 @@ var file_api_v1_markdown_service_proto_rawDesc = []byte{
0x65
,
0x12
,
0x20
,
0x0a
,
0x0b
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x65
,
0x12
,
0x20
,
0x0a
,
0x0b
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0b
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0b
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x69
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x69
,
0x6f
,
0x6e
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x69
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x05
,
0x69
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x22
,
0x
9f
,
0x10
,
0x0a
,
0x04
,
0x4e
,
0x6f
,
0x28
,
0x09
,
0x52
,
0x05
,
0x69
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x22
,
0x
ec
,
0x10
,
0x0a
,
0x04
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0e
,
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
,
0x31
,
0x2e
,
0x32
,
0x16
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x52
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x12
,
0x45
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x52
,
0x04
,
0x74
,
0x79
,
0x70
,
0x65
,
0x12
,
0x45
,
...
@@ -2630,194 +2702,212 @@ var file_api_v1_markdown_service_proto_rawDesc = []byte{
...
@@ -2630,194 +2702,212 @@ var file_api_v1_markdown_service_proto_rawDesc = []byte{
0x6f
,
0x64
,
0x65
,
0x18
,
0x1e
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x19
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x6f
,
0x64
,
0x65
,
0x18
,
0x1e
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x19
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x53
,
0x70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x53
,
0x70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x73
,
0x70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x4e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x73
,
0x70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x42
,
0x06
,
0x0a
,
0x04
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x0f
,
0x0a
,
0x0d
,
0x4c
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x4b
,
0x0a
,
0x11
,
0x68
,
0x74
,
0x6d
,
0x6c
,
0x5f
,
0x65
,
0x6c
,
0x65
,
0x6d
,
0x69
,
0x6e
,
0x65
,
0x42
,
0x72
,
0x65
,
0x61
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x3f
,
0x0a
,
0x0d
,
0x65
,
0x6e
,
0x74
,
0x5f
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x18
,
0x1f
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x50
,
0x61
,
0x72
,
0x61
,
0x67
,
0x72
,
0x61
,
0x70
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x48
,
0x54
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x48
,
0x00
,
0x52
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x0f
,
0x68
,
0x74
,
0x6d
,
0x6c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x45
,
0x0a
,
0x42
,
0x06
,
0x0a
,
0x04
,
0x6e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x0f
,
0x0a
,
0x0d
,
0x4c
,
0x69
,
0x6e
,
0x65
,
0x0d
,
0x43
,
0x6f
,
0x64
,
0x65
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x1a
,
0x42
,
0x72
,
0x65
,
0x61
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x22
,
0x3f
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x0a
,
0x08
,
0x6c
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x61
,
0x67
,
0x72
,
0x61
,
0x70
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x52
,
0x08
,
0x6c
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x53
,
0x0a
,
0x0b
,
0x48
,
0x65
,
0x61
,
0x64
,
0x69
,
0x6e
,
0x67
,
0x4e
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x45
,
0x0a
,
0x0d
,
0x43
,
0x6f
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x64
,
0x65
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x6c
,
0x28
,
0x05
,
0x52
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x08
,
0x6c
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x61
,
0x6e
,
0x67
,
0x75
,
0x61
,
0x67
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x2c
,
0x0a
,
0x12
,
0x48
,
0x6f
,
0x72
,
0x74
,
0x22
,
0x53
,
0x0a
,
0x0b
,
0x48
,
0x65
,
0x61
,
0x64
,
0x69
,
0x6e
,
0x67
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x69
,
0x7a
,
0x6f
,
0x6e
,
0x74
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x05
,
0x6c
,
0x65
,
0x76
,
0x65
,
0x6c
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x22
,
0x40
,
0x0a
,
0x0e
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x65
,
0x6e
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x71
,
0x75
,
0x6f
,
0x74
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
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
,
0x31
,
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
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x71
,
0x0a
,
0x0f
,
0x4f
,
0x72
,
0x64
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x73
,
0x0a
,
0x11
,
0x55
,
0x6e
,
0x6f
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x72
,
0x64
,
0x65
,
0x72
,
0x65
,
0x64
,
0x4c
,
0x69
,
0x73
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x6e
,
0x75
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x6e
,
0x75
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x6d
,
0x62
,
0x65
,
0x72
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x2e
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x0a
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
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
,
0x31
,
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
,
0x31
,
0x2e
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x29
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x52
,
0x08
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x22
,
0x8a
,
0x0a
,
0x0d
,
0x4d
,
0x61
,
0x74
,
0x68
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x01
,
0x0a
,
0x0c
,
0x54
,
0x61
,
0x73
,
0x6b
,
0x4c
,
0x69
,
0x73
,
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
,
0xb7
,
0x01
,
0x0a
,
0x09
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
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
,
0x31
,
0x2e
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x52
,
0x6f
,
0x77
,
0x52
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x1a
,
0x2f
,
0x0a
,
0x03
,
0x52
,
0x6f
,
0x77
,
0x12
,
0x28
,
0x0a
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
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
,
0x31
,
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
,
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
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x6e
,
0x74
,
0x12
,
0x74
,
0x22
,
0x42
,
0x0a
,
0x0e
,
0x42
,
0x6f
,
0x6c
,
0x64
,
0x49
,
0x74
,
0x61
,
0x6c
,
0x69
,
0x63
,
0x4e
,
0x1a
,
0x0a
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x18
,
0x01
,
0x20
,
0x08
,
0x52
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x70
,
0x6c
,
0x65
,
0x74
,
0x65
,
0x12
,
0x2e
,
0x0a
,
0x08
,
0x63
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x73
,
0x79
,
0x6d
,
0x62
,
0x6f
,
0x6c
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x68
,
0x69
,
0x6c
,
0x64
,
0x72
,
0x65
,
0x6e
,
0x18
,
0x04
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x24
,
0x0a
,
0x08
,
0x43
,
0x6f
,
0x64
,
0x65
,
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
,
0xb7
,
0x01
,
0x0a
,
0x09
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x2a
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x61
,
0x64
,
0x65
,
0x72
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
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
,
0x31
,
0x2e
,
0x54
,
0x61
,
0x62
,
0x6c
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x52
,
0x6f
,
0x77
,
0x52
,
0x04
,
0x72
,
0x6f
,
0x77
,
0x73
,
0x1a
,
0x2f
,
0x0a
,
0x03
,
0x52
,
0x6f
,
0x77
,
0x12
,
0x28
,
0x0a
,
0x05
,
0x63
,
0x65
,
0x6c
,
0x6c
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x12
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4e
,
0x6f
,
0x64
,
0x65
,
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
,
0x31
,
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
,
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
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2d
,
0x0a
,
0x11
,
0x53
,
0x6d
,
0x61
,
0x67
,
0x65
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x61
,
0x6c
,
0x74
,
0x5f
,
0x74
,
0x72
,
0x69
,
0x6b
,
0x65
,
0x74
,
0x68
,
0x72
,
0x6f
,
0x75
,
0x67
,
0x68
,
0x4e
,
0x6f
,
0x64
,
0x65
,
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
,
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
,
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
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2f
,
0x0a
,
0x15
,
0x45
,
0x73
,
0x70
,
0x65
,
0x72
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
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
,
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
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x2b
,
0x0a
,
0x0f
,
0x53
,
0x75
,
0x70
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x12
,
0x23
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x54
,
0x0a
,
0x15
,
0x52
,
0x65
,
0x66
,
0x65
,
0x72
,
0x65
,
0x6e
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x65
,
0x64
,
0x43
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x23
,
0x0a
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x27
,
0x0a
,
0x0d
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x5f
,
0x6e
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x0b
,
0x53
,
0x70
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0c
,
0x72
,
0x65
,
0x73
,
0x6f
,
0x75
,
0x72
,
0x63
,
0x65
,
0x4e
,
0x61
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6d
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x18
,
0x02
,
0x20
,
0x01
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x2a
,
0xd8
,
0x03
,
0x0a
,
0x08
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x28
,
0x09
,
0x52
,
0x06
,
0x70
,
0x61
,
0x72
,
0x61
,
0x6d
,
0x73
,
0x22
,
0x27
,
0x0a
,
0x0b
,
0x53
,
0x70
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x4e
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x6f
,
0x69
,
0x6c
,
0x65
,
0x72
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x45
,
0x44
,
0x10
,
0x00
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4c
,
0x49
,
0x4e
,
0x74
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x63
,
0x6f
,
0x6e
,
0x74
,
0x45
,
0x5f
,
0x42
,
0x52
,
0x45
,
0x41
,
0x4b
,
0x10
,
0x01
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x50
,
0x41
,
0x52
,
0x65
,
0x6e
,
0x74
,
0x22
,
0xba
,
0x01
,
0x0a
,
0x0f
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x41
,
0x47
,
0x52
,
0x41
,
0x50
,
0x48
,
0x10
,
0x02
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x65
,
0x6e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x12
,
0x19
,
0x0a
,
0x08
,
0x74
,
0x61
,
0x67
,
0x5f
,
0x6e
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x03
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x48
,
0x45
,
0x41
,
0x44
,
0x61
,
0x6d
,
0x65
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x74
,
0x61
,
0x67
,
0x4e
,
0x61
,
0x49
,
0x4e
,
0x47
,
0x10
,
0x04
,
0x12
,
0x13
,
0x0a
,
0x0f
,
0x48
,
0x4f
,
0x52
,
0x49
,
0x5a
,
0x4f
,
0x4e
,
0x6d
,
0x65
,
0x12
,
0x4d
,
0x0a
,
0x0a
,
0x61
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x54
,
0x41
,
0x4c
,
0x5f
,
0x52
,
0x55
,
0x4c
,
0x45
,
0x10
,
0x05
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x42
,
0x4c
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x2d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x4f
,
0x43
,
0x4b
,
0x51
,
0x55
,
0x4f
,
0x54
,
0x45
,
0x10
,
0x06
,
0x12
,
0x10
,
0x0a
,
0x0c
,
0x4f
,
0x52
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x45
,
0x6c
,
0x65
,
0x6d
,
0x65
,
0x6e
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x07
,
0x12
,
0x12
,
0x0a
,
0x0e
,
0x74
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x2e
,
0x41
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x08
,
0x45
,
0x6e
,
0x74
,
0x72
,
0x79
,
0x52
,
0x0a
,
0x61
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x54
,
0x41
,
0x53
,
0x4b
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x09
,
0x12
,
0x73
,
0x1a
,
0x3d
,
0x0a
,
0x0f
,
0x41
,
0x74
,
0x74
,
0x72
,
0x69
,
0x62
,
0x75
,
0x74
,
0x65
,
0x73
,
0x45
,
0x0e
,
0x0a
,
0x0a
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x0a
,
0x12
,
0x6e
,
0x74
,
0x72
,
0x79
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x6b
,
0x65
,
0x79
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x0a
,
0x05
,
0x54
,
0x41
,
0x42
,
0x4c
,
0x45
,
0x10
,
0x0b
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x45
,
0x4d
,
0x09
,
0x52
,
0x03
,
0x6b
,
0x65
,
0x79
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x18
,
0x42
,
0x45
,
0x44
,
0x44
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x0c
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x3a
,
0x02
,
0x38
,
0x01
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x54
,
0x45
,
0x58
,
0x54
,
0x10
,
0x0d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x42
,
0x4f
,
0x2a
,
0xea
,
0x03
,
0x0a
,
0x08
,
0x4e
,
0x6f
,
0x64
,
0x65
,
0x54
,
0x79
,
0x70
,
0x65
,
0x12
,
0x14
,
0x0a
,
0x4c
,
0x44
,
0x10
,
0x0e
,
0x12
,
0x0a
,
0x0a
,
0x06
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x0f
,
0x10
,
0x4e
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x55
,
0x4e
,
0x53
,
0x50
,
0x45
,
0x43
,
0x49
,
0x46
,
0x49
,
0x45
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x5f
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x44
,
0x10
,
0x00
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4c
,
0x49
,
0x4e
,
0x45
,
0x5f
,
0x42
,
0x52
,
0x45
,
0x41
,
0x10
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x10
,
0x11
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x49
,
0x4b
,
0x10
,
0x01
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x50
,
0x41
,
0x52
,
0x41
,
0x47
,
0x52
,
0x41
,
0x50
,
0x48
,
0x4d
,
0x41
,
0x47
,
0x45
,
0x10
,
0x12
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x13
,
0x10
,
0x02
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x43
,
0x4f
,
0x44
,
0x45
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x41
,
0x55
,
0x54
,
0x4f
,
0x5f
,
0x4c
,
0x49
,
0x4e
,
0x4b
,
0x10
,
0x14
,
0x12
,
0x10
,
0x03
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x48
,
0x45
,
0x41
,
0x44
,
0x49
,
0x4e
,
0x47
,
0x10
,
0x04
,
0x12
,
0x07
,
0x0a
,
0x03
,
0x54
,
0x41
,
0x47
,
0x10
,
0x15
,
0x12
,
0x11
,
0x0a
,
0x0d
,
0x53
,
0x54
,
0x52
,
0x49
,
0x13
,
0x0a
,
0x0f
,
0x48
,
0x4f
,
0x52
,
0x49
,
0x5a
,
0x4f
,
0x4e
,
0x54
,
0x41
,
0x4c
,
0x5f
,
0x52
,
0x55
,
0x4b
,
0x45
,
0x54
,
0x48
,
0x52
,
0x4f
,
0x55
,
0x47
,
0x48
,
0x10
,
0x16
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x45
,
0x4c
,
0x45
,
0x10
,
0x05
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x51
,
0x55
,
0x4f
,
0x53
,
0x43
,
0x41
,
0x50
,
0x49
,
0x4e
,
0x47
,
0x5f
,
0x43
,
0x48
,
0x41
,
0x52
,
0x41
,
0x43
,
0x54
,
0x45
,
0x54
,
0x45
,
0x10
,
0x06
,
0x12
,
0x10
,
0x0a
,
0x0c
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x52
,
0x10
,
0x17
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x4d
,
0x41
,
0x54
,
0x48
,
0x10
,
0x18
,
0x12
,
0x0d
,
0x0a
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x07
,
0x12
,
0x12
,
0x0a
,
0x0e
,
0x55
,
0x4e
,
0x4f
,
0x52
,
0x44
,
0x45
,
0x09
,
0x48
,
0x49
,
0x47
,
0x48
,
0x4c
,
0x49
,
0x47
,
0x48
,
0x54
,
0x10
,
0x19
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x52
,
0x45
,
0x44
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x08
,
0x12
,
0x0d
,
0x0a
,
0x09
,
0x54
,
0x41
,
0x53
,
0x55
,
0x42
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x1a
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x53
,
0x53
,
0x4b
,
0x5f
,
0x4c
,
0x49
,
0x53
,
0x54
,
0x10
,
0x09
,
0x12
,
0x0e
,
0x0a
,
0x0a
,
0x4d
,
0x41
,
0x54
,
0x55
,
0x50
,
0x45
,
0x52
,
0x53
,
0x43
,
0x52
,
0x49
,
0x50
,
0x54
,
0x10
,
0x1b
,
0x12
,
0x16
,
0x0a
,
0x12
,
0x48
,
0x5f
,
0x42
,
0x4c
,
0x4f
,
0x43
,
0x4b
,
0x10
,
0x0a
,
0x12
,
0x09
,
0x0a
,
0x05
,
0x54
,
0x41
,
0x42
,
0x52
,
0x45
,
0x46
,
0x45
,
0x52
,
0x45
,
0x4e
,
0x43
,
0x45
,
0x44
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4c
,
0x45
,
0x10
,
0x0b
,
0x12
,
0x14
,
0x0a
,
0x10
,
0x45
,
0x4d
,
0x42
,
0x45
,
0x44
,
0x44
,
0x45
,
0x44
,
0x4e
,
0x54
,
0x10
,
0x1c
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x53
,
0x50
,
0x4f
,
0x49
,
0x4c
,
0x45
,
0x52
,
0x10
,
0x5f
,
0x43
,
0x4f
,
0x4e
,
0x54
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x0c
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x54
,
0x45
,
0x1d
,
0x32
,
0x91
,
0x03
,
0x0a
,
0x0f
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x58
,
0x54
,
0x10
,
0x0d
,
0x12
,
0x08
,
0x0a
,
0x04
,
0x42
,
0x4f
,
0x4c
,
0x44
,
0x10
,
0x0e
,
0x12
,
0x0a
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x7b
,
0x0a
,
0x0d
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x0a
,
0x06
,
0x49
,
0x54
,
0x41
,
0x4c
,
0x49
,
0x43
,
0x10
,
0x0f
,
0x12
,
0x0f
,
0x0a
,
0x0b
,
0x42
,
0x4f
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x22
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
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
,
0x12
,
0x0b
,
0x0a
,
0x07
,
0x53
,
0x50
,
0x4f
,
0x49
,
0x4c
,
0x45
,
0x52
,
0x10
,
0x1d
,
0x12
,
0x10
,
0x0a
,
0x0c
,
0x48
,
0x54
,
0x4d
,
0x4c
,
0x5f
,
0x45
,
0x4c
,
0x45
,
0x4d
,
0x45
,
0x4e
,
0x54
,
0x10
,
0x1e
,
0x32
,
0x91
,
0x03
,
0x0a
,
0x0f
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x12
,
0x7b
,
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
,
0x31
,
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
,
0x31
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
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
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x21
,
0x82
,
0xd3
,
0xe4
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x50
,
0x61
,
0x72
,
0x73
,
0x65
,
0x4d
,
0x93
,
0x02
,
0x1b
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x16
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x70
,
0x61
,
0x72
,
0x73
,
0x65
,
0x12
,
0x83
,
0x01
,
0x0a
,
0x0f
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x24
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x25
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x21
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x1b
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x16
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x23
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x1d
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x18
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x70
,
0x61
,
0x72
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x3a
,
0x72
,
0x65
,
0x73
,
0x73
,
0x65
,
0x12
,
0x83
,
0x01
,
0x0a
,
0x0f
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x12
,
0x7b
,
0x0a
,
0x0f
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x12
,
0x24
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x12
,
0x24
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x25
,
0x2e
,
0x6d
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x74
,
0x1a
,
0x1a
,
0x2e
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x52
,
0x65
,
0x73
,
0x74
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x4c
,
0x69
,
0x6e
,
0x6f
,
0x72
,
0x65
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x52
,
0x65
,
0x73
,
0x70
,
0x6f
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x22
,
0x26
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x6e
,
0x73
,
0x65
,
0x22
,
0x23
,
0x82
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x1d
,
0x3a
,
0x01
,
0x2a
,
0x22
,
0x18
,
0x20
,
0x12
,
0x1e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6c
,
0x69
,
0x6e
,
0x6b
,
0x3a
,
0x6d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x3a
,
0x72
,
0x65
,
0x73
,
0x74
,
0x6f
,
0x72
,
0x65
,
0x12
,
0x7b
,
0x0a
,
0x0f
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x61
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x12
,
0x24
,
0x2e
,
0x6d
,
0x65
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x42
,
0x14
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x2e
,
0x47
,
0x65
,
0x74
,
0x4c
,
0x69
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x52
,
0x65
,
0x71
,
0x75
,
0x65
,
0x73
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x73
,
0x65
,
0x6d
,
0x65
,
0x74
,
0x1a
,
0x1a
,
0x2e
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2f
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x2f
,
0x2e
,
0x4c
,
0x69
,
0x6e
,
0x6b
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x22
,
0x26
,
0x82
,
0x67
,
0x65
,
0x6e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x3b
,
0x61
,
0x70
,
0x69
,
0x76
,
0x31
,
0xd3
,
0xe4
,
0x93
,
0x02
,
0x20
,
0x12
,
0x1e
,
0x2f
,
0x61
,
0x70
,
0x69
,
0x2f
,
0x76
,
0x31
,
0x2f
,
0x6d
,
0xa2
,
0x02
,
0x03
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x61
,
0x72
,
0x6b
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x2f
,
0x6c
,
0x69
,
0x6e
,
0x6b
,
0x3a
,
0x6d
,
0x65
,
0x74
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x31
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0x42
,
0xac
,
0x01
,
0x0a
,
0x10
,
0x63
,
0x6f
,
0x6d
,
0x2e
,
0x6d
,
0x65
,
0x69
,
0x5c
,
0x56
,
0x31
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x61
,
0x70
,
0x69
,
0x2e
,
0x76
,
0x31
,
0x42
,
0x14
,
0x4d
,
0x61
,
0x72
,
0x6b
,
0x5c
,
0x56
,
0x31
,
0x5c
,
0x47
,
0x50
,
0x42
,
0x4d
,
0x65
,
0x74
,
0x61
,
0x64
,
0x61
,
0x74
,
0x61
,
0xea
,
0x64
,
0x6f
,
0x77
,
0x6e
,
0x53
,
0x65
,
0x72
,
0x76
,
0x69
,
0x63
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x02
,
0x0e
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x3a
,
0x3a
,
0x41
,
0x70
,
0x69
,
0x3a
,
0x3a
,
0x56
,
0x31
,
0x50
,
0x01
,
0x5a
,
0x30
,
0x67
,
0x69
,
0x74
,
0x68
,
0x75
,
0x62
,
0x2e
,
0x63
,
0x6f
,
0x6d
,
0x2f
,
0x75
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
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
,
0x31
,
0x3b
,
0x61
,
0x70
,
0x69
,
0x76
,
0x31
,
0xa2
,
0x02
,
0x03
,
0x4d
,
0x41
,
0x58
,
0xaa
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x2e
,
0x41
,
0x70
,
0x69
,
0x2e
,
0x56
,
0x31
,
0xca
,
0x02
,
0x0c
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
0xe2
,
0x02
,
0x18
,
0x4d
,
0x65
,
0x6d
,
0x6f
,
0x73
,
0x5c
,
0x41
,
0x70
,
0x69
,
0x5c
,
0x56
,
0x31
,
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
,
0x31
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
}
}
var
(
var
(
...
@@ -2833,7 +2923,7 @@ func file_api_v1_markdown_service_proto_rawDescGZIP() []byte {
...
@@ -2833,7 +2923,7 @@ func file_api_v1_markdown_service_proto_rawDescGZIP() []byte {
}
}
var
file_api_v1_markdown_service_proto_enumTypes
=
make
([]
protoimpl
.
EnumInfo
,
1
)
var
file_api_v1_markdown_service_proto_enumTypes
=
make
([]
protoimpl
.
EnumInfo
,
1
)
var
file_api_v1_markdown_service_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
3
7
)
var
file_api_v1_markdown_service_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
3
9
)
var
file_api_v1_markdown_service_proto_goTypes
=
[]
any
{
var
file_api_v1_markdown_service_proto_goTypes
=
[]
any
{
(
NodeType
)(
0
),
// 0: memos.api.v1.NodeType
(
NodeType
)(
0
),
// 0: memos.api.v1.NodeType
(
*
ParseMarkdownRequest
)(
nil
),
// 1: memos.api.v1.ParseMarkdownRequest
(
*
ParseMarkdownRequest
)(
nil
),
// 1: memos.api.v1.ParseMarkdownRequest
...
@@ -2872,7 +2962,9 @@ var file_api_v1_markdown_service_proto_goTypes = []any{
...
@@ -2872,7 +2962,9 @@ var file_api_v1_markdown_service_proto_goTypes = []any{
(
*
SuperscriptNode
)(
nil
),
// 34: memos.api.v1.SuperscriptNode
(
*
SuperscriptNode
)(
nil
),
// 34: memos.api.v1.SuperscriptNode
(
*
ReferencedContentNode
)(
nil
),
// 35: memos.api.v1.ReferencedContentNode
(
*
ReferencedContentNode
)(
nil
),
// 35: memos.api.v1.ReferencedContentNode
(
*
SpoilerNode
)(
nil
),
// 36: memos.api.v1.SpoilerNode
(
*
SpoilerNode
)(
nil
),
// 36: memos.api.v1.SpoilerNode
(
*
TableNode_Row
)(
nil
),
// 37: memos.api.v1.TableNode.Row
(
*
HTMLElementNode
)(
nil
),
// 37: memos.api.v1.HTMLElementNode
(
*
TableNode_Row
)(
nil
),
// 38: memos.api.v1.TableNode.Row
nil
,
// 39: memos.api.v1.HTMLElementNode.AttributesEntry
}
}
var
file_api_v1_markdown_service_proto_depIdxs
=
[]
int32
{
var
file_api_v1_markdown_service_proto_depIdxs
=
[]
int32
{
7
,
// 0: memos.api.v1.ParseMarkdownResponse.nodes:type_name -> memos.api.v1.Node
7
,
// 0: memos.api.v1.ParseMarkdownResponse.nodes:type_name -> memos.api.v1.Node
...
@@ -2907,27 +2999,29 @@ var file_api_v1_markdown_service_proto_depIdxs = []int32{
...
@@ -2907,27 +2999,29 @@ var file_api_v1_markdown_service_proto_depIdxs = []int32{
34
,
// 29: memos.api.v1.Node.superscript_node:type_name -> memos.api.v1.SuperscriptNode
34
,
// 29: memos.api.v1.Node.superscript_node:type_name -> memos.api.v1.SuperscriptNode
35
,
// 30: memos.api.v1.Node.referenced_content_node:type_name -> memos.api.v1.ReferencedContentNode
35
,
// 30: memos.api.v1.Node.referenced_content_node:type_name -> memos.api.v1.ReferencedContentNode
36
,
// 31: memos.api.v1.Node.spoiler_node:type_name -> memos.api.v1.SpoilerNode
36
,
// 31: memos.api.v1.Node.spoiler_node:type_name -> memos.api.v1.SpoilerNode
7
,
// 32: memos.api.v1.ParagraphNode.children:type_name -> memos.api.v1.Node
37
,
// 32: memos.api.v1.Node.html_element_node:type_name -> memos.api.v1.HTMLElementNode
7
,
// 33: memos.api.v1.HeadingNode.children:type_name -> memos.api.v1.Node
7
,
// 33: memos.api.v1.ParagraphNode.children:type_name -> memos.api.v1.Node
7
,
// 34: memos.api.v1.BlockquoteNode.children:type_name -> memos.api.v1.Node
7
,
// 34: memos.api.v1.HeadingNode.children:type_name -> memos.api.v1.Node
7
,
// 35: memos.api.v1.OrderedListNode.children:type_name -> memos.api.v1.Node
7
,
// 35: memos.api.v1.BlockquoteNode.children:type_name -> memos.api.v1.Node
7
,
// 36: memos.api.v1.UnorderedListNode.children:type_name -> memos.api.v1.Node
7
,
// 36: memos.api.v1.OrderedListNode.children:type_name -> memos.api.v1.Node
7
,
// 37: memos.api.v1.TaskListNode.children:type_name -> memos.api.v1.Node
7
,
// 37: memos.api.v1.UnorderedListNode.children:type_name -> memos.api.v1.Node
7
,
// 38: memos.api.v1.TableNode.header:type_name -> memos.api.v1.Node
7
,
// 38: memos.api.v1.TaskListNode.children:type_name -> memos.api.v1.Node
37
,
// 39: memos.api.v1.TableNode.rows:type_name -> memos.api.v1.TableNode.Row
7
,
// 39: memos.api.v1.TableNode.header:type_name -> memos.api.v1.Node
7
,
// 40: memos.api.v1.BoldNode.children:type_name -> memos.api.v1.Node
38
,
// 40: memos.api.v1.TableNode.rows:type_name -> memos.api.v1.TableNode.Row
7
,
// 41: memos.api.v1.TableNode.Row.cells:type_name -> memos.api.v1.Node
7
,
// 41: memos.api.v1.BoldNode.children:type_name -> memos.api.v1.Node
1
,
// 42: memos.api.v1.MarkdownService.ParseMarkdown:input_type -> memos.api.v1.ParseMarkdownRequest
39
,
// 42: memos.api.v1.HTMLElementNode.attributes:type_name -> memos.api.v1.HTMLElementNode.AttributesEntry
3
,
// 43: memos.api.v1.MarkdownService.RestoreMarkdown:input_type -> memos.api.v1.RestoreMarkdownRequest
7
,
// 43: memos.api.v1.TableNode.Row.cells:type_name -> memos.api.v1.Node
5
,
// 44: memos.api.v1.MarkdownService.GetLinkMetadata:input_type -> memos.api.v1.GetLinkMetadataRequest
1
,
// 44: memos.api.v1.MarkdownService.ParseMarkdown:input_type -> memos.api.v1.ParseMarkdownRequest
2
,
// 45: memos.api.v1.MarkdownService.ParseMarkdown:output_type -> memos.api.v1.ParseMarkdownResponse
3
,
// 45: memos.api.v1.MarkdownService.RestoreMarkdown:input_type -> memos.api.v1.RestoreMarkdownRequest
4
,
// 46: memos.api.v1.MarkdownService.RestoreMarkdown:output_type -> memos.api.v1.RestoreMarkdownResponse
5
,
// 46: memos.api.v1.MarkdownService.GetLinkMetadata:input_type -> memos.api.v1.GetLinkMetadataRequest
6
,
// 47: memos.api.v1.MarkdownService.GetLinkMetadata:output_type -> memos.api.v1.LinkMetadata
2
,
// 47: memos.api.v1.MarkdownService.ParseMarkdown:output_type -> memos.api.v1.ParseMarkdownResponse
45
,
// [45:48] is the sub-list for method output_type
4
,
// 48: memos.api.v1.MarkdownService.RestoreMarkdown:output_type -> memos.api.v1.RestoreMarkdownResponse
42
,
// [42:45] is the sub-list for method input_type
6
,
// 49: memos.api.v1.MarkdownService.GetLinkMetadata:output_type -> memos.api.v1.LinkMetadata
42
,
// [42:42] is the sub-list for extension type_name
47
,
// [47:50] is the sub-list for method output_type
42
,
// [42:42] is the sub-list for extension extendee
44
,
// [44:47] is the sub-list for method input_type
0
,
// [0:42] is the sub-list for field type_name
44
,
// [44:44] is the sub-list for extension type_name
44
,
// [44:44] is the sub-list for extension extendee
0
,
// [0:44] is the sub-list for field type_name
}
}
func
init
()
{
file_api_v1_markdown_service_proto_init
()
}
func
init
()
{
file_api_v1_markdown_service_proto_init
()
}
...
@@ -3369,6 +3463,18 @@ func file_api_v1_markdown_service_proto_init() {
...
@@ -3369,6 +3463,18 @@ func file_api_v1_markdown_service_proto_init() {
}
}
}
}
file_api_v1_markdown_service_proto_msgTypes
[
36
]
.
Exporter
=
func
(
v
any
,
i
int
)
any
{
file_api_v1_markdown_service_proto_msgTypes
[
36
]
.
Exporter
=
func
(
v
any
,
i
int
)
any
{
switch
v
:=
v
.
(
*
HTMLElementNode
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_api_v1_markdown_service_proto_msgTypes
[
37
]
.
Exporter
=
func
(
v
any
,
i
int
)
any
{
switch
v
:=
v
.
(
*
TableNode_Row
);
i
{
switch
v
:=
v
.
(
*
TableNode_Row
);
i
{
case
0
:
case
0
:
return
&
v
.
state
return
&
v
.
state
...
@@ -3411,6 +3517,7 @@ func file_api_v1_markdown_service_proto_init() {
...
@@ -3411,6 +3517,7 @@ func file_api_v1_markdown_service_proto_init() {
(
*
Node_SuperscriptNode
)(
nil
),
(
*
Node_SuperscriptNode
)(
nil
),
(
*
Node_ReferencedContentNode
)(
nil
),
(
*
Node_ReferencedContentNode
)(
nil
),
(
*
Node_SpoilerNode
)(
nil
),
(
*
Node_SpoilerNode
)(
nil
),
(
*
Node_HtmlElementNode
)(
nil
),
}
}
type
x
struct
{}
type
x
struct
{}
out
:=
protoimpl
.
TypeBuilder
{
out
:=
protoimpl
.
TypeBuilder
{
...
@@ -3418,7 +3525,7 @@ func file_api_v1_markdown_service_proto_init() {
...
@@ -3418,7 +3525,7 @@ func file_api_v1_markdown_service_proto_init() {
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
RawDescriptor
:
file_api_v1_markdown_service_proto_rawDesc
,
RawDescriptor
:
file_api_v1_markdown_service_proto_rawDesc
,
NumEnums
:
1
,
NumEnums
:
1
,
NumMessages
:
3
7
,
NumMessages
:
3
9
,
NumExtensions
:
0
,
NumExtensions
:
0
,
NumServices
:
1
,
NumServices
:
1
,
},
},
...
...
server/router/api/v1/markdown_service.go
View file @
f374169a
...
@@ -116,6 +116,8 @@ func convertFromASTNode(rawNode ast.Node) *v1pb.Node {
...
@@ -116,6 +116,8 @@ func convertFromASTNode(rawNode ast.Node) *v1pb.Node {
node
.
Node
=
&
v1pb
.
Node_ReferencedContentNode
{
ReferencedContentNode
:
&
v1pb
.
ReferencedContentNode
{
ResourceName
:
n
.
ResourceName
,
Params
:
n
.
Params
}}
node
.
Node
=
&
v1pb
.
Node_ReferencedContentNode
{
ReferencedContentNode
:
&
v1pb
.
ReferencedContentNode
{
ResourceName
:
n
.
ResourceName
,
Params
:
n
.
Params
}}
case
*
ast
.
Spoiler
:
case
*
ast
.
Spoiler
:
node
.
Node
=
&
v1pb
.
Node_SpoilerNode
{
SpoilerNode
:
&
v1pb
.
SpoilerNode
{
Content
:
n
.
Content
}}
node
.
Node
=
&
v1pb
.
Node_SpoilerNode
{
SpoilerNode
:
&
v1pb
.
SpoilerNode
{
Content
:
n
.
Content
}}
case
*
ast
.
HTMLElement
:
node
.
Node
=
&
v1pb
.
Node_HtmlElementNode
{
HtmlElementNode
:
&
v1pb
.
HTMLElementNode
{
TagName
:
n
.
TagName
,
Attributes
:
n
.
Attributes
}}
default
:
default
:
node
.
Node
=
&
v1pb
.
Node_TextNode
{
TextNode
:
&
v1pb
.
TextNode
{}}
node
.
Node
=
&
v1pb
.
Node_TextNode
{
TextNode
:
&
v1pb
.
TextNode
{}}
}
}
...
@@ -209,6 +211,8 @@ func convertToASTNode(node *v1pb.Node) ast.Node {
...
@@ -209,6 +211,8 @@ func convertToASTNode(node *v1pb.Node) ast.Node {
return
&
ast
.
ReferencedContent
{
ResourceName
:
n
.
ReferencedContentNode
.
ResourceName
,
Params
:
n
.
ReferencedContentNode
.
Params
}
return
&
ast
.
ReferencedContent
{
ResourceName
:
n
.
ReferencedContentNode
.
ResourceName
,
Params
:
n
.
ReferencedContentNode
.
Params
}
case
*
v1pb
.
Node_SpoilerNode
:
case
*
v1pb
.
Node_SpoilerNode
:
return
&
ast
.
Spoiler
{
Content
:
n
.
SpoilerNode
.
Content
}
return
&
ast
.
Spoiler
{
Content
:
n
.
SpoilerNode
.
Content
}
case
*
v1pb
.
Node_HtmlElementNode
:
return
&
ast
.
HTMLElement
{
TagName
:
n
.
HtmlElementNode
.
TagName
,
Attributes
:
n
.
HtmlElementNode
.
Attributes
}
default
:
default
:
return
&
ast
.
Text
{}
return
&
ast
.
Text
{}
}
}
...
...
web/src/components/MemoContent/HTMLElement.tsx
0 → 100644
View file @
f374169a
import
{
createElement
}
from
"react"
;
interface
Props
{
tagName
:
string
;
attributes
:
{
[
key
:
string
]:
string
};
}
const
HTMLElement
:
React
.
FC
<
Props
>
=
({
tagName
,
attributes
}:
Props
)
=>
{
return
createElement
(
tagName
,
attributes
);
};
export
default
HTMLElement
;
web/src/components/MemoContent/Renderer.tsx
View file @
f374169a
...
@@ -10,6 +10,7 @@ import {
...
@@ -10,6 +10,7 @@ import {
HeadingNode
,
HeadingNode
,
HighlightNode
,
HighlightNode
,
HorizontalRuleNode
,
HorizontalRuleNode
,
HTMLElementNode
,
ImageNode
,
ImageNode
,
ItalicNode
,
ItalicNode
,
LinkNode
,
LinkNode
,
...
@@ -37,6 +38,7 @@ import Code from "./Code";
...
@@ -37,6 +38,7 @@ import Code from "./Code";
import
CodeBlock
from
"./CodeBlock"
;
import
CodeBlock
from
"./CodeBlock"
;
import
EmbeddedContent
from
"./EmbeddedContent"
;
import
EmbeddedContent
from
"./EmbeddedContent"
;
import
EscapingCharacter
from
"./EscapingCharacter"
;
import
EscapingCharacter
from
"./EscapingCharacter"
;
import
HTMLElement
from
"./HTMLElement"
;
import
Heading
from
"./Heading"
;
import
Heading
from
"./Heading"
;
import
Highlight
from
"./Highlight"
;
import
Highlight
from
"./Highlight"
;
import
HorizontalRule
from
"./HorizontalRule"
;
import
HorizontalRule
from
"./HorizontalRule"
;
...
@@ -123,6 +125,8 @@ const Renderer: React.FC<Props> = ({ index, node }: Props) => {
...
@@ -123,6 +125,8 @@ const Renderer: React.FC<Props> = ({ index, node }: Props) => {
return
<
ReferencedContent
{
...
(
node
.
referencedContentNode
as
ReferencedContentNode
)}
/>;
return
<
ReferencedContent
{
...
(
node
.
referencedContentNode
as
ReferencedContentNode
)}
/>;
case
NodeType
.
SPOILER
:
case
NodeType
.
SPOILER
:
return
<
Spoiler
{
...
(
node
.
spoilerNode
as
SpoilerNode
)}
/>;
return
<
Spoiler
{
...
(
node
.
spoilerNode
as
SpoilerNode
)}
/>;
case
NodeType
.
HTML_ELEMENT
:
return
<
HTMLElement
{
...
(
node
.
htmlElementNode
as
HTMLElementNode
)}
/>;
default
:
default
:
return
null
;
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