highmark-markdown 0.0.201 → 0.0.204

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/example.js +232 -96
  2. package/lib/attributeNames.js +4 -4
  3. package/lib/elementMap.js +188 -0
  4. package/lib/example/view.js +2 -2
  5. package/lib/index.js +5 -5
  6. package/lib/markdown/bnf.js +2 -2
  7. package/lib/node/markdown/blockText.js +2 -2
  8. package/lib/node/markdown/bullet.js +120 -0
  9. package/lib/node/markdown/emphasisedText.js +2 -2
  10. package/lib/node/markdown/footnote.js +2 -2
  11. package/lib/node/markdown/inlineText.js +2 -2
  12. package/lib/node/markdown/line.js +2 -2
  13. package/lib/node/markdown/marker.js +5 -5
  14. package/lib/node/markdown/orderedList.js +2 -20
  15. package/lib/node/markdown/orderedListItem.js +20 -5
  16. package/lib/node/markdown/strongText.js +2 -2
  17. package/lib/node/markdown/stronglyEmphasisedText.js +4 -4
  18. package/lib/node/markdown.js +4 -4
  19. package/lib/nodeMap.js +3 -2
  20. package/lib/ruleNames.js +6 -1
  21. package/package.json +1 -1
  22. package/src/attributeNames.js +1 -1
  23. package/src/{ruleNameMap.js → elementMap.js} +7 -2
  24. package/src/example/view.js +2 -5
  25. package/src/index.js +1 -1
  26. package/src/markdown/bnf.js +4 -1
  27. package/src/node/markdown/blockText.js +1 -1
  28. package/src/node/markdown/bullet.js +7 -0
  29. package/src/node/markdown/emphasisedText.js +1 -1
  30. package/src/node/markdown/footnote.js +1 -2
  31. package/src/node/markdown/inlineText.js +1 -1
  32. package/src/node/markdown/line.js +1 -2
  33. package/src/node/markdown/marker.js +3 -3
  34. package/src/node/markdown/orderedList.js +0 -22
  35. package/src/node/markdown/orderedListItem.js +18 -4
  36. package/src/node/markdown/strongText.js +1 -1
  37. package/src/node/markdown/stronglyEmphasisedText.js +3 -3
  38. package/src/node/markdown.js +3 -3
  39. package/src/nodeMap.js +3 -0
  40. package/src/ruleNames.js +2 -0
  41. package/lib/ruleNameMap.js +0 -185
@@ -7,6 +7,7 @@ import { LINK_RULE_NAME,
7
7
  ERROR_RULE_NAME,
8
8
  ANCHOR_RULE_NAME,
9
9
  MARKER_RULE_NAME,
10
+ BULLET_RULE_NAME,
10
11
  IMPORT_RULE_NAME,
11
12
  IMPORTS_RULE_NAME,
12
13
  CONTENTS_RULE_NAME,
@@ -53,7 +54,7 @@ import { LINK_RULE_NAME,
53
54
  UNORDERED_LIST_ITEM_RULE_NAME,
54
55
  STRONGLY_EMPHASISED_TEXT_RULE_NAME } from "./ruleNames";
55
56
 
56
- const ruleNameMap = {
57
+ const elementMap = {
57
58
  [LINK_RULE_NAME]: {
58
59
  tagName: "a",
59
60
  className: "link"
@@ -82,6 +83,10 @@ const ruleNameMap = {
82
83
  tagName: null,
83
84
  className: null
84
85
  },
86
+ [BULLET_RULE_NAME]: {
87
+ tagName: null,
88
+ className: null
89
+ },
85
90
  [IMPORT_RULE_NAME]: {
86
91
  tagName: null,
87
92
  className: null
@@ -264,4 +269,4 @@ const ruleNameMap = {
264
269
  }
265
270
  };
266
271
 
267
- export default ruleNameMap;
272
+ export default elementMap;
@@ -129,11 +129,8 @@ class View extends Element {
129
129
  this.update();
130
130
  }
131
131
 
132
- static initialMarkdown = `# Primary Heading
133
-
134
- @contents
135
-
136
- # Another primary heading
132
+ static initialMarkdown = `1. First item.
133
+ 3. Third item.
137
134
  `;
138
135
 
139
136
  static tagName = "div";
package/src/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  export { default as nodeMap } from "./nodeMap";
4
4
  export { default as ruleNames } from "./ruleNames";
5
5
  export { default as tokenTypes } from "./tokenTypes";
6
- export { default as ruleNameMap } from "./ruleNameMap";
6
+ export { default as elementMap } from "./elementMap";
7
7
  export { default as MarkdownNode } from "./node/markdown";
8
8
  export { default as MarkdownLexer } from "./markdown/lexer";
9
9
  export { default as MarkdownParser } from "./markdown/parser";
@@ -98,7 +98,7 @@ const bnf = `
98
98
  orderedListItem ::= marker line ;
99
99
 
100
100
 
101
- unorderedListItem ::= ( [single-dash] | [single-asterisk] ) line ;
101
+ unorderedListItem ::= bullet line ;
102
102
 
103
103
 
104
104
  blockListingStart ::= [backticks] className? endOfLine ;
@@ -237,6 +237,9 @@ const bnf = `
237
237
  marker. ::= [number]<NO_WHITESPACE>"." ;
238
238
 
239
239
 
240
+ bullet. ::= [single-dash] | [single-asterisk] ;
241
+
242
+
240
243
  className ::= <NO_WHITESPACE>[identifier] ;
241
244
 
242
245
  `;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../markdown";
3
+ import MarkdownNode from "../../node/markdown";
4
4
  import contentMixins from "../../mixins/content";
5
5
 
6
6
  class BlockTextMarkdownNode extends MarkdownNode {
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ import MarkdownNode from "../../node/markdown";
4
+
5
+ export default class BulletMarkdownNode extends MarkdownNode {
6
+ static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(BulletMarkdownNode, ruleName, childNodes, opacity); }
7
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../markdown";
3
+ import MarkdownNode from "../../node/markdown";
4
4
  import contentMixins from "../../mixins/content";
5
5
 
6
6
  class EmphasisedTextMarkdownNode extends MarkdownNode {
@@ -11,8 +11,7 @@ export default class FootnoteMarkdownNode extends MarkdownNode {
11
11
  const childNodes = this.getChildNodes(),
12
12
  firstChildNode = first(childNodes),
13
13
  referenceMarkdownNode = firstChildNode, ///
14
- referenceMarkdownNodeIdentifier = referenceMarkdownNode.identifier(context),
15
- identifier = referenceMarkdownNodeIdentifier; ///
14
+ identifier = referenceMarkdownNode.identifier(context);
16
15
 
17
16
  return identifier;
18
17
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../markdown";
3
+ import MarkdownNode from "../../node/markdown";
4
4
  import contentMixins from "../../mixins/content";
5
5
 
6
6
  class InlineTextMarkdownNode extends MarkdownNode {
@@ -12,8 +12,7 @@ export default class LineMarkdownNode extends MarkdownNode {
12
12
  childNodes = this.getChildNodes(),
13
13
  firstChildNode = first(childNodes),
14
14
  markedTextChildNode = firstChildNode, ///
15
- markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context, leftTrimmed),
16
- childNodesHTML = markedTextChildNodeChildNodesHTML; ///
15
+ childNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context, leftTrimmed);
17
16
 
18
17
  return childNodesHTML;
19
18
  }
@@ -7,14 +7,14 @@ import MarkdownNode from "../../node/markdown";
7
7
  const { first } = arrayUtilities;
8
8
 
9
9
  export default class MarkerMarkdownNode extends MarkdownNode {
10
- number(context) {
10
+ value(context) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  firstChildNode = first(childNodes),
13
13
  numberTerminalNode = firstChildNode, ///
14
14
  numberTerminalNodeContent = numberTerminalNode.getContent(),
15
- number = numberTerminalNodeContent; ///
15
+ value = numberTerminalNodeContent; ///
16
16
 
17
- return number;
17
+ return value;
18
18
  }
19
19
 
20
20
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(MarkerMarkdownNode, ruleName, childNodes, opacity); }
@@ -1,29 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
4
-
5
3
  import MarkdownNode from "../../node/markdown";
6
4
 
7
- import { START_ATTRIBUTE_NAME } from "../../attributeNames";
8
-
9
- const { first } = arrayUtilities;
10
-
11
5
  export default class OrderedListMarkdownNode extends MarkdownNode {
12
- attributeName(context) {
13
- const attributeName = START_ATTRIBUTE_NAME;
14
-
15
- return attributeName;
16
- }
17
-
18
- attributeValue(context) {
19
- const childNodes = this.getChildNodes(),
20
- firstChildNode = first(childNodes),
21
- firstOrderedListItemMarkdownNode = firstChildNode, ///
22
- number = firstOrderedListItemMarkdownNode.number(context),
23
- attributeValue = number; ///
24
-
25
- return attributeValue;
26
- }
27
-
28
6
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(OrderedListMarkdownNode, ruleName, childNodes, opacity); }
29
7
  }
@@ -4,17 +4,31 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import MarkdownNode from "../../node/markdown";
6
6
 
7
+ import { VALUE_ATTRIBUTE_NAME } from "../../attributeNames";
8
+
7
9
  const { first } = arrayUtilities;
8
10
 
9
11
  export default class OrderedListItemMarkdownNode extends MarkdownNode {
10
- number(context) {
12
+ value(context) {
11
13
  const childNodes = this.getChildNodes(),
12
14
  firstChildNode = first(childNodes),
13
15
  markerMarkdownNode = firstChildNode, ///
14
- markerMarkdownNodeNumber = markerMarkdownNode.number(context),
15
- number = markerMarkdownNodeNumber; ///
16
+ value = markerMarkdownNode.value(context);
17
+
18
+ return value;
19
+ }
20
+
21
+ attributeName(context) {
22
+ const attributeName = VALUE_ATTRIBUTE_NAME;
23
+
24
+ return attributeName;
25
+ }
26
+
27
+ attributeValue(context) {
28
+ const value = this.value(context),
29
+ attributeValue = value; ///
16
30
 
17
- return number;
31
+ return attributeValue;
18
32
  }
19
33
 
20
34
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(OrderedListItemMarkdownNode, ruleName, childNodes, opacity); }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MarkdownNode from "../markdown";
3
+ import MarkdownNode from "../../node/markdown";
4
4
  import contentMixins from "../../mixins/content";
5
5
 
6
6
  class StrongTextMarkdownNode extends MarkdownNode {
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import ruleNameMap from "../../ruleNameMap";
4
- import MarkdownNode from "../markdown";
3
+ import elementMap from "../../elementMap";
4
+ import MarkdownNode from "../../node/markdown";
5
5
  import contentMixins from "../../mixins/content";
6
6
 
7
7
  import { STRONG_TEXT_RULE_NAME } from "../../ruleNames";
8
8
 
9
- const { tagName } = ruleNameMap[STRONG_TEXT_RULE_NAME];
9
+ const { tagName } = elementMap[STRONG_TEXT_RULE_NAME];
10
10
 
11
11
  class StronglyEmphasisedTextMarkdownNode extends MarkdownNode {
12
12
  asHTML(indent, context) {
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { NonTerminalNode } from "occam-parsers";
4
4
 
5
+ import elementMap from "../elementMap";
5
6
  import nodeMixins from "../mixins/node";
6
- import ruleNameMap from "../ruleNameMap";
7
7
  import elementMixins from "../mixins/element";
8
8
 
9
9
  import { EMPTY_STRING } from "../constants";
@@ -24,13 +24,13 @@ class MarkdownNode extends NonTerminalNode {
24
24
  }
25
25
 
26
26
  tagName(context) {
27
- const { tagName } = ruleNameMap[this.ruleName];
27
+ const { tagName } = elementMap[this.ruleName];
28
28
 
29
29
  return tagName;
30
30
  }
31
31
 
32
32
  className(context) {
33
- const { className } = ruleNameMap[this.ruleName];
33
+ const { className } = elementMap[this.ruleName];
34
34
 
35
35
  return className;
36
36
  }
package/src/nodeMap.js CHANGED
@@ -7,6 +7,7 @@ import TableMarkdownNode from "./node/markdown/table";
7
7
  import ErrorMarkdownNode from "./node/markdown/error";
8
8
  import AnchorMarkdownNode from "./node/markdown/anchor";
9
9
  import MarkerMarkdownNode from "./node/markdown/marker";
10
+ import BulletMarkdownNode from "./node/markdown/bullet";
10
11
  import ImportMarkdownNode from "./node/markdown/import";
11
12
  import ImportsMarkdownNode from "./node/markdown/imports";
12
13
  import ContentsMarkdownNode from "./node/markdown/contents";
@@ -58,6 +59,7 @@ import { LINK_RULE_NAME,
58
59
  ERROR_RULE_NAME,
59
60
  ANCHOR_RULE_NAME,
60
61
  MARKER_RULE_NAME,
62
+ BULLET_RULE_NAME,
61
63
  IMPORT_RULE_NAME,
62
64
  IMPORTS_RULE_NAME,
63
65
  CONTENTS_RULE_NAME,
@@ -110,6 +112,7 @@ const nodeMap = {
110
112
  [ERROR_RULE_NAME]: ErrorMarkdownNode,
111
113
  [ANCHOR_RULE_NAME]: AnchorMarkdownNode,
112
114
  [MARKER_RULE_NAME]: MarkerMarkdownNode,
115
+ [BULLET_RULE_NAME]: BulletMarkdownNode,
113
116
  [IMPORT_RULE_NAME]: ImportMarkdownNode,
114
117
  [IMPORTS_RULE_NAME]: ImportsMarkdownNode,
115
118
  [CONTENTS_RULE_NAME]: ContentsMarkdownNode,
package/src/ruleNames.js CHANGED
@@ -7,6 +7,7 @@ export const TABLE_RULE_NAME = "table";
7
7
  export const ERROR_RULE_NAME = "error";
8
8
  export const ANCHOR_RULE_NAME = "anchor";
9
9
  export const MARKER_RULE_NAME = "marker";
10
+ export const BULLET_RULE_NAME = "bullet";
10
11
  export const IMPORT_RULE_NAME = "import";
11
12
  export const IMPORTS_RULE_NAME = "imports";
12
13
  export const CONTENTS_RULE_NAME = "contents";
@@ -62,6 +63,7 @@ const ruleNames = {
62
63
  ERROR_RULE_NAME,
63
64
  ANCHOR_RULE_NAME,
64
65
  MARKER_RULE_NAME,
66
+ BULLET_RULE_NAME,
65
67
  IMPORT_RULE_NAME,
66
68
  IMPORTS_RULE_NAME,
67
69
  CONTENTS_RULE_NAME,
@@ -1,185 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- var _ruleNames = require("./ruleNames");
12
- function _define_property(obj, key, value) {
13
- if (key in obj) {
14
- Object.defineProperty(obj, key, {
15
- value: value,
16
- enumerable: true,
17
- configurable: true,
18
- writable: true
19
- });
20
- } else {
21
- obj[key] = value;
22
- }
23
- return obj;
24
- }
25
- var _obj;
26
- var ruleNameMap = (_obj = {}, _define_property(_obj, _ruleNames.LINK_RULE_NAME, {
27
- tagName: "a",
28
- className: "link"
29
- }), _define_property(_obj, _ruleNames.LINE_RULE_NAME, {
30
- tagName: "span",
31
- className: "line"
32
- }), _define_property(_obj, _ruleNames.IMAGE_RULE_NAME, {
33
- tagName: "img",
34
- className: null
35
- }), _define_property(_obj, _ruleNames.TABLE_RULE_NAME, {
36
- tagName: "table",
37
- className: null
38
- }), _define_property(_obj, _ruleNames.ERROR_RULE_NAME, {
39
- tagName: "span",
40
- className: "error"
41
- }), _define_property(_obj, _ruleNames.ANCHOR_RULE_NAME, {
42
- tagName: "a",
43
- className: "anchor"
44
- }), _define_property(_obj, _ruleNames.MARKER_RULE_NAME, {
45
- tagName: null,
46
- className: null
47
- }), _define_property(_obj, _ruleNames.IMPORT_RULE_NAME, {
48
- tagName: null,
49
- className: null
50
- }), _define_property(_obj, _ruleNames.IMPORTS_RULE_NAME, {
51
- tagName: null,
52
- className: null
53
- }), _define_property(_obj, _ruleNames.CONTENTS_RULE_NAME, {
54
- tagName: null,
55
- className: null
56
- }), _define_property(_obj, _ruleNames.FOOTNOTE_RULE_NAME, {
57
- tagName: null,
58
- className: null
59
- }), _define_property(_obj, _ruleNames.DIVISION_RULE_NAME, {
60
- tagName: "div",
61
- className: null
62
- }), _define_property(_obj, _ruleNames.REFERENCE_RULE_NAME, {
63
- tagName: null,
64
- className: null
65
- }), _define_property(_obj, _ruleNames.PARAGRAPH_RULE_NAME, {
66
- tagName: "p",
67
- className: null
68
- }), _define_property(_obj, _ruleNames.HYPERLINK_RULE_NAME, {
69
- tagName: "a",
70
- className: "hyperlink"
71
- }), _define_property(_obj, _ruleNames.LINE_BREAK_RULE_NAME, {
72
- tagName: "br",
73
- className: null
74
- }), _define_property(_obj, _ruleNames.TABLE_CELL_RULE_NAME, {
75
- tagName: null,
76
- className: null
77
- }), _define_property(_obj, _ruleNames.TABLE_HEAD_RULE_NAME, {
78
- tagName: "thead",
79
- className: null
80
- }), _define_property(_obj, _ruleNames.TABLE_BODY_RULE_NAME, {
81
- tagName: "tbody",
82
- className: null
83
- }), _define_property(_obj, _ruleNames.BLOCK_TEXT_RULE_NAME, {
84
- tagName: null,
85
- className: null
86
- }), _define_property(_obj, _ruleNames.CLASS_NAME_RULE_NAME, {
87
- tagName: null,
88
- className: null
89
- }), _define_property(_obj, _ruleNames.PLAIN_TEXT_RULE_NAME, {
90
- tagName: null,
91
- className: null
92
- }), _define_property(_obj, _ruleNames.EMAIL_LINK_RULE_NAME, {
93
- tagName: "a",
94
- className: "email-link"
95
- }), _define_property(_obj, _ruleNames.END_OF_LINE_RULE_NAME, {
96
- tagName: null,
97
- className: null
98
- }), _define_property(_obj, _ruleNames.MARKED_TEXT_RULE_NAME, {
99
- tagName: null,
100
- className: null
101
- }), _define_property(_obj, _ruleNames.INLINE_TEXT_RULE_NAME, {
102
- tagName: null,
103
- className: null
104
- }), _define_property(_obj, _ruleNames.STRONG_TEXT_RULE_NAME, {
105
- tagName: "strong",
106
- className: null
107
- }), _define_property(_obj, _ruleNames.SUB_DIVISION_RULE_NAME, {
108
- tagName: null,
109
- className: null
110
- }), _define_property(_obj, _ruleNames.ORDERED_LIST_RULE_NAME, {
111
- tagName: "ol",
112
- className: null
113
- }), _define_property(_obj, _ruleNames.BLOCK_LISTING_RULE_NAME, {
114
- tagName: "pre",
115
- className: "block"
116
- }), _define_property(_obj, _ruleNames.CONTENTS_LINK_RULE_NAME, {
117
- tagName: "a",
118
- className: "contents"
119
- }), _define_property(_obj, _ruleNames.CONTENTS_ITEM_RULE_NAME, {
120
- tagName: "li",
121
- className: "contents"
122
- }), _define_property(_obj, _ruleNames.CONTENTS_LIST_RULE_NAME, {
123
- tagName: "ul",
124
- className: "contents"
125
- }), _define_property(_obj, _ruleNames.FOOTNOTE_ITEM_RULE_NAME, {
126
- tagName: "li",
127
- className: "footnote"
128
- }), _define_property(_obj, _ruleNames.TABLE_HEAD_ROW_RULE_NAME, {
129
- tagName: "tr",
130
- className: null
131
- }), _define_property(_obj, _ruleNames.TABLE_BODY_ROW_RULE_NAME, {
132
- tagName: "tr",
133
- className: null
134
- }), _define_property(_obj, _ruleNames.INLINE_LISTING_RULE_NAME, {
135
- tagName: "pre",
136
- className: "inline"
137
- }), _define_property(_obj, _ruleNames.UNORDERED_LIST_RULE_NAME, {
138
- tagName: "ul",
139
- className: null
140
- }), _define_property(_obj, _ruleNames.FOOTNOTES_LIST_RULE_NAME, {
141
- tagName: "ol",
142
- className: "footnotes"
143
- }), _define_property(_obj, _ruleNames.TABLE_HEAD_CELL_RULE_NAME, {
144
- tagName: "th",
145
- className: null
146
- }), _define_property(_obj, _ruleNames.TABLE_BODY_CELL_RULE_NAME, {
147
- tagName: "td",
148
- className: null
149
- }), _define_property(_obj, _ruleNames.TABLE_SEPARATOR_RULE_NAME, {
150
- tagName: null,
151
- className: null
152
- }), _define_property(_obj, _ruleNames.EMPHASISED_TEXT_RULE_NAME, {
153
- tagName: "em",
154
- className: null
155
- }), _define_property(_obj, _ruleNames.PRIMARY_HEADING_RULE_NAME, {
156
- tagName: "h1",
157
- className: null
158
- }), _define_property(_obj, _ruleNames.TERTIARY_HEADING_RULE_NAME, {
159
- tagName: "h3",
160
- className: null
161
- }), _define_property(_obj, _ruleNames.ORDERED_LIST_ITEM_RULE_NAME, {
162
- tagName: "li",
163
- className: null
164
- }), _define_property(_obj, _ruleNames.BLOCK_LISTING_END_RULE_NAME, {
165
- tagName: null,
166
- className: null
167
- }), _define_property(_obj, _ruleNames.SECONDARY_HEADING_RULE_NAME, {
168
- tagName: "h2",
169
- className: null
170
- }), _define_property(_obj, _ruleNames.QUATERNARY_HEADING_RULE_NAME, {
171
- tagName: "h4",
172
- className: null
173
- }), _define_property(_obj, _ruleNames.BLOCK_LISTING_START_RULE_NAME, {
174
- tagName: null,
175
- className: null
176
- }), _define_property(_obj, _ruleNames.UNORDERED_LIST_ITEM_RULE_NAME, {
177
- tagName: "li",
178
- className: null
179
- }), _define_property(_obj, _ruleNames.STRONGLY_EMPHASISED_TEXT_RULE_NAME, {
180
- tagName: "em",
181
- className: null
182
- }), _obj);
183
- var _default = ruleNameMap;
184
-
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ydWxlTmFtZU1hcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTElOS19SVUxFX05BTUUsXG4gICAgICAgICBMSU5FX1JVTEVfTkFNRSxcbiAgICAgICAgIElNQUdFX1JVTEVfTkFNRSxcbiAgICAgICAgIFRBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIEVSUk9SX1JVTEVfTkFNRSxcbiAgICAgICAgIEFOQ0hPUl9SVUxFX05BTUUsXG4gICAgICAgICBNQVJLRVJfUlVMRV9OQU1FLFxuICAgICAgICAgSU1QT1JUX1JVTEVfTkFNRSxcbiAgICAgICAgIElNUE9SVFNfUlVMRV9OQU1FLFxuICAgICAgICAgQ09OVEVOVFNfUlVMRV9OQU1FLFxuICAgICAgICAgRk9PVE5PVEVfUlVMRV9OQU1FLFxuICAgICAgICAgRElWSVNJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFBBUkFHUkFQSF9SVUxFX05BTUUsXG4gICAgICAgICBIWVBFUkxJTktfUlVMRV9OQU1FLFxuICAgICAgICAgTElORV9CUkVBS19SVUxFX05BTUUsXG4gICAgICAgICBUQUJMRV9DRUxMX1JVTEVfTkFNRSxcbiAgICAgICAgIFRBQkxFX0hFQURfUlVMRV9OQU1FLFxuICAgICAgICAgVEFCTEVfQk9EWV9SVUxFX05BTUUsXG4gICAgICAgICBCTE9DS19URVhUX1JVTEVfTkFNRSxcbiAgICAgICAgIENMQVNTX05BTUVfUlVMRV9OQU1FLFxuICAgICAgICAgUExBSU5fVEVYVF9SVUxFX05BTUUsXG4gICAgICAgICBFTUFJTF9MSU5LX1JVTEVfTkFNRSxcbiAgICAgICAgIEVORF9PRl9MSU5FX1JVTEVfTkFNRSxcbiAgICAgICAgIE1BUktFRF9URVhUX1JVTEVfTkFNRSxcbiAgICAgICAgIElOTElORV9URVhUX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUUk9OR19URVhUX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQl9ESVZJU0lPTl9SVUxFX05BTUUsXG4gICAgICAgICBPUkRFUkVEX0xJU1RfUlVMRV9OQU1FLFxuICAgICAgICAgQkxPQ0tfTElTVElOR19SVUxFX05BTUUsXG4gICAgICAgICBDT05URU5UU19MSU5LX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTlRFTlRTX0lURU1fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OVEVOVFNfTElTVF9SVUxFX05BTUUsXG4gICAgICAgICBGT09UTk9URV9JVEVNX1JVTEVfTkFNRSxcbiAgICAgICAgIFRBQkxFX0hFQURfUk9XX1JVTEVfTkFNRSxcbiAgICAgICAgIFRBQkxFX0JPRFlfUk9XX1JVTEVfTkFNRSxcbiAgICAgICAgIElOTElORV9MSVNUSU5HX1JVTEVfTkFNRSxcbiAgICAgICAgIFVOT1JERVJFRF9MSVNUX1JVTEVfTkFNRSxcbiAgICAgICAgIEZPT1ROT1RFU19MSVNUX1JVTEVfTkFNRSxcbiAgICAgICAgIFRBQkxFX0hFQURfQ0VMTF9SVUxFX05BTUUsXG4gICAgICAgICBUQUJMRV9CT0RZX0NFTExfUlVMRV9OQU1FLFxuICAgICAgICAgVEFCTEVfU0VQQVJBVE9SX1JVTEVfTkFNRSxcbiAgICAgICAgIEVNUEhBU0lTRURfVEVYVF9SVUxFX05BTUUsXG4gICAgICAgICBQUklNQVJZX0hFQURJTkdfUlVMRV9OQU1FLFxuICAgICAgICAgVEVSVElBUllfSEVBRElOR19SVUxFX05BTUUsXG4gICAgICAgICBPUkRFUkVEX0xJU1RfSVRFTV9SVUxFX05BTUUsXG4gICAgICAgICBCTE9DS19MSVNUSU5HX0VORF9SVUxFX05BTUUsXG4gICAgICAgICBTRUNPTkRBUllfSEVBRElOR19SVUxFX05BTUUsXG4gICAgICAgICBRVUFURVJOQVJZX0hFQURJTkdfUlVMRV9OQU1FLFxuICAgICAgICAgQkxPQ0tfTElTVElOR19TVEFSVF9SVUxFX05BTUUsXG4gICAgICAgICBVTk9SREVSRURfTElTVF9JVEVNX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUUk9OR0xZX0VNUEhBU0lTRURfVEVYVF9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgcnVsZU5hbWVNYXAgPSB7XG4gIFtMSU5LX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImFcIixcbiAgICBjbGFzc05hbWU6IFwibGlua1wiXG4gIH0sXG4gIFtMSU5FX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcInNwYW5cIixcbiAgICBjbGFzc05hbWU6IFwibGluZVwiXG4gIH0sXG4gIFtJTUFHRV9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJpbWdcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW1RBQkxFX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcInRhYmxlXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtFUlJPUl9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJzcGFuXCIsXG4gICAgY2xhc3NOYW1lOiBcImVycm9yXCJcbiAgfSxcbiAgW0FOQ0hPUl9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJhXCIsXG4gICAgY2xhc3NOYW1lOiBcImFuY2hvclwiXG4gIH0sXG4gIFtNQVJLRVJfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtJTVBPUlRfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtJTVBPUlRTX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBudWxsLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbQ09OVEVOVFNfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtGT09UTk9URV9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0RJVklTSU9OX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImRpdlwiLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbUkVGRVJFTkNFX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBudWxsLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbUEFSQUdSQVBIX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcInBcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0hZUEVSTElOS19SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJhXCIsXG4gICAgY2xhc3NOYW1lOiBcImh5cGVybGlua1wiXG4gIH0sXG4gIFtMSU5FX0JSRUFLX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImJyXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtUQUJMRV9DRUxMX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBudWxsLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbVEFCTEVfSEVBRF9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJ0aGVhZFwiLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbVEFCTEVfQk9EWV9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJ0Ym9keVwiLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbQkxPQ0tfVEVYVF9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0NMQVNTX05BTUVfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtQTEFJTl9URVhUX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBudWxsLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbRU1BSUxfTElOS19SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJhXCIsXG4gICAgY2xhc3NOYW1lOiBcImVtYWlsLWxpbmtcIlxuICB9LFxuICBbRU5EX09GX0xJTkVfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtNQVJLRURfVEVYVF9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0lOTElORV9URVhUX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBudWxsLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbU1RST05HX1RFWFRfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwic3Ryb25nXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtTVUJfRElWSVNJT05fUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtPUkRFUkVEX0xJU1RfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwib2xcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0JMT0NLX0xJU1RJTkdfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwicHJlXCIsXG4gICAgY2xhc3NOYW1lOiBcImJsb2NrXCJcbiAgfSxcbiAgW0NPTlRFTlRTX0xJTktfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwiYVwiLFxuICAgIGNsYXNzTmFtZTogXCJjb250ZW50c1wiXG4gIH0sXG4gIFtDT05URU5UU19JVEVNX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImxpXCIsXG4gICAgY2xhc3NOYW1lOiBcImNvbnRlbnRzXCJcbiAgfSxcbiAgW0NPTlRFTlRTX0xJU1RfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwidWxcIixcbiAgICBjbGFzc05hbWU6IFwiY29udGVudHNcIlxuICB9LFxuICBbRk9PVE5PVEVfSVRFTV9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJsaVwiLFxuICAgIGNsYXNzTmFtZTogXCJmb290bm90ZVwiXG4gIH0sXG4gIFtUQUJMRV9IRUFEX1JPV19SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJ0clwiLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbVEFCTEVfQk9EWV9ST1dfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwidHJcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0lOTElORV9MSVNUSU5HX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcInByZVwiLFxuICAgIGNsYXNzTmFtZTogXCJpbmxpbmVcIlxuICB9LFxuICBbVU5PUkRFUkVEX0xJU1RfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwidWxcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0ZPT1ROT1RFU19MSVNUX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcIm9sXCIsXG4gICAgY2xhc3NOYW1lOiBcImZvb3Rub3Rlc1wiXG4gIH0sXG4gIFtUQUJMRV9IRUFEX0NFTExfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwidGhcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW1RBQkxFX0JPRFlfQ0VMTF9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogXCJ0ZFwiLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbVEFCTEVfU0VQQVJBVE9SX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBudWxsLFxuICAgIGNsYXNzTmFtZTogbnVsbFxuICB9LFxuICBbRU1QSEFTSVNFRF9URVhUX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImVtXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtQUklNQVJZX0hFQURJTkdfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwiaDFcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW1RFUlRJQVJZX0hFQURJTkdfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwiaDNcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW09SREVSRURfTElTVF9JVEVNX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImxpXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtCTE9DS19MSVNUSU5HX0VORF9SVUxFX05BTUVdOiB7XG4gICAgdGFnTmFtZTogbnVsbCxcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW1NFQ09OREFSWV9IRUFESU5HX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImgyXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtRVUFURVJOQVJZX0hFQURJTkdfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwiaDRcIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfSxcbiAgW0JMT0NLX0xJU1RJTkdfU1RBUlRfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IG51bGwsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtVTk9SREVSRURfTElTVF9JVEVNX1JVTEVfTkFNRV06IHtcbiAgICB0YWdOYW1lOiBcImxpXCIsXG4gICAgY2xhc3NOYW1lOiBudWxsXG4gIH0sXG4gIFtTVFJPTkdMWV9FTVBIQVNJU0VEX1RFWFRfUlVMRV9OQU1FXToge1xuICAgIHRhZ05hbWU6IFwiZW1cIixcbiAgICBjbGFzc05hbWU6IG51bGxcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgcnVsZU5hbWVNYXA7XG4iXSwibmFtZXMiOlsicnVsZU5hbWVNYXAiLCJMSU5LX1JVTEVfTkFNRSIsInRhZ05hbWUiLCJjbGFzc05hbWUiLCJMSU5FX1JVTEVfTkFNRSIsIklNQUdFX1JVTEVfTkFNRSIsIlRBQkxFX1JVTEVfTkFNRSIsIkVSUk9SX1JVTEVfTkFNRSIsIkFOQ0hPUl9SVUxFX05BTUUiLCJNQVJLRVJfUlVMRV9OQU1FIiwiSU1QT1JUX1JVTEVfTkFNRSIsIklNUE9SVFNfUlVMRV9OQU1FIiwiQ09OVEVOVFNfUlVMRV9OQU1FIiwiRk9PVE5PVEVfUlVMRV9OQU1FIiwiRElWSVNJT05fUlVMRV9OQU1FIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsIlBBUkFHUkFQSF9SVUxFX05BTUUiLCJIWVBFUkxJTktfUlVMRV9OQU1FIiwiTElORV9CUkVBS19SVUxFX05BTUUiLCJUQUJMRV9DRUxMX1JVTEVfTkFNRSIsIlRBQkxFX0hFQURfUlVMRV9OQU1FIiwiVEFCTEVfQk9EWV9SVUxFX05BTUUiLCJCTE9DS19URVhUX1JVTEVfTkFNRSIsIkNMQVNTX05BTUVfUlVMRV9OQU1FIiwiUExBSU5fVEVYVF9SVUxFX05BTUUiLCJFTUFJTF9MSU5LX1JVTEVfTkFNRSIsIkVORF9PRl9MSU5FX1JVTEVfTkFNRSIsIk1BUktFRF9URVhUX1JVTEVfTkFNRSIsIklOTElORV9URVhUX1JVTEVfTkFNRSIsIlNUUk9OR19URVhUX1JVTEVfTkFNRSIsIlNVQl9ESVZJU0lPTl9SVUxFX05BTUUiLCJPUkRFUkVEX0xJU1RfUlVMRV9OQU1FIiwiQkxPQ0tfTElTVElOR19SVUxFX05BTUUiLCJDT05URU5UU19MSU5LX1JVTEVfTkFNRSIsIkNPTlRFTlRTX0lURU1fUlVMRV9OQU1FIiwiQ09OVEVOVFNfTElTVF9SVUxFX05BTUUiLCJGT09UTk9URV9JVEVNX1JVTEVfTkFNRSIsIlRBQkxFX0hFQURfUk9XX1JVTEVfTkFNRSIsIlRBQkxFX0JPRFlfUk9XX1JVTEVfTkFNRSIsIklOTElORV9MSVNUSU5HX1JVTEVfTkFNRSIsIlVOT1JERVJFRF9MSVNUX1JVTEVfTkFNRSIsIkZPT1ROT1RFU19MSVNUX1JVTEVfTkFNRSIsIlRBQkxFX0hFQURfQ0VMTF9SVUxFX05BTUUiLCJUQUJMRV9CT0RZX0NFTExfUlVMRV9OQU1FIiwiVEFCTEVfU0VQQVJBVE9SX1JVTEVfTkFNRSIsIkVNUEhBU0lTRURfVEVYVF9SVUxFX05BTUUiLCJQUklNQVJZX0hFQURJTkdfUlVMRV9OQU1FIiwiVEVSVElBUllfSEVBRElOR19SVUxFX05BTUUiLCJPUkRFUkVEX0xJU1RfSVRFTV9SVUxFX05BTUUiLCJCTE9DS19MSVNUSU5HX0VORF9SVUxFX05BTUUiLCJTRUNPTkRBUllfSEVBRElOR19SVUxFX05BTUUiLCJRVUFURVJOQVJZX0hFQURJTkdfUlVMRV9OQU1FIiwiQkxPQ0tfTElTVElOR19TVEFSVF9SVUxFX05BTUUiLCJVTk9SREVSRURfTElTVF9JVEVNX1JVTEVfTkFNRSIsIlNUUk9OR0xZX0VNUEhBU0lTRURfVEVYVF9SVUxFX05BTUUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBOzs7OytCQTBRQTs7O2VBQUE7Ozt5QkFyTm1EOzs7Ozs7Ozs7Ozs7OztJQUUvQjtBQUFwQixJQUFNQSxlQUFjLFdBQ2xCLGlCQURrQixNQUNqQkMseUJBQWMsRUFBRztJQUNoQkMsU0FBUztJQUNUQyxXQUFXO0FBQ2IsSUFDQSxpQkFMa0IsTUFLakJDLHlCQUFjLEVBQUc7SUFDaEJGLFNBQVM7SUFDVEMsV0FBVztBQUNiLElBQ0EsaUJBVGtCLE1BU2pCRSwwQkFBZSxFQUFHO0lBQ2pCSCxTQUFTO0lBQ1RDLFdBQVc7QUFDYixJQUNBLGlCQWJrQixNQWFqQkcsMEJBQWUsRUFBRztJQUNqQkosU0FBUztJQUNUQyxXQUFXO0FBQ2IsSUFDQSxpQkFqQmtCLE1BaUJqQkksMEJBQWUsRUFBRztJQUNqQkwsU0FBUztJQUNUQyxXQUFXO0FBQ2IsSUFDQSxpQkFyQmtCLE1BcUJqQkssMkJBQWdCLEVBQUc7SUFDbEJOLFNBQVM7SUFDVEMsV0FBVztBQUNiLElBQ0EsaUJB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