@sanity/document-internationalization 0.3.1 → 0.3.2
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.
- package/lib/actions/index.js +1 -1
- package/lib/actions/index.js.map +1 -1
- package/lib/constants/index.js +1 -1
- package/lib/constants/index.js.map +1 -1
- package/lib/language-select/components/SingleFlag/SingleFlag.d.ts +0 -1
- package/lib/language-select/index.js +3941 -205
- package/lib/language-select/index.js.map +1 -1
- package/lib/structure/index.js +1 -1
- package/lib/structure/index.js.map +1 -1
- package/package.json +5 -3
|
@@ -5,12 +5,12 @@ var DocumentPaneContext = require('@sanity/desk-tool/lib/panes/document/Document
|
|
|
5
5
|
var languageFilterImplementations = require('all:part:@sanity/desk-tool/language-select-component');
|
|
6
6
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
7
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
8
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
8
|
+
var _slicedToArray$1 = require('@babel/runtime/helpers/slicedToArray');
|
|
9
9
|
var ui = require('@sanity/ui');
|
|
10
10
|
var icons = require('@sanity/icons');
|
|
11
11
|
var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
|
|
12
|
-
var styled = require('styled-components');
|
|
13
12
|
var customFlagComponents = require('part:@sanity/document-internationalization/ui/flags?');
|
|
13
|
+
var styled = require('styled-components');
|
|
14
14
|
var config = require('config:@sanity/document-internationalization');
|
|
15
15
|
var schemas = require('part:@sanity/base/schema');
|
|
16
16
|
var client = require('part:@sanity/base/client');
|
|
@@ -30,183 +30,3903 @@ var RouterContext = require('@sanity/state-router/lib/RouterContext');
|
|
|
30
30
|
|
|
31
31
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
32
32
|
|
|
33
|
-
function _interopNamespace(e) {
|
|
34
|
-
if (e && e.__esModule) return e;
|
|
35
|
-
var n = Object.create(null);
|
|
36
|
-
if (e) {
|
|
37
|
-
Object.keys(e).forEach(function (k) {
|
|
38
|
-
if (k !== 'default') {
|
|
39
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
40
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
get: function () { return e[k]; }
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
n["default"] = e;
|
|
48
|
-
return Object.freeze(n);
|
|
33
|
+
function _interopNamespace(e) {
|
|
34
|
+
if (e && e.__esModule) return e;
|
|
35
|
+
var n = Object.create(null);
|
|
36
|
+
if (e) {
|
|
37
|
+
Object.keys(e).forEach(function (k) {
|
|
38
|
+
if (k !== 'default') {
|
|
39
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
40
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
41
|
+
enumerable: true,
|
|
42
|
+
get: function () { return e[k]; }
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
n["default"] = e;
|
|
48
|
+
return Object.freeze(n);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
52
|
+
var languageFilterImplementations__default = /*#__PURE__*/_interopDefaultLegacy(languageFilterImplementations);
|
|
53
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
54
|
+
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
55
|
+
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray$1);
|
|
56
|
+
var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
|
|
57
|
+
var customFlagComponents__namespace = /*#__PURE__*/_interopNamespace(customFlagComponents);
|
|
58
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
59
|
+
var config__default = /*#__PURE__*/_interopDefaultLegacy(config);
|
|
60
|
+
var schemas__default = /*#__PURE__*/_interopDefaultLegacy(schemas);
|
|
61
|
+
var client__default = /*#__PURE__*/_interopDefaultLegacy(client);
|
|
62
|
+
var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
|
|
63
|
+
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
|
|
64
|
+
var languagesLoaderFn__default = /*#__PURE__*/_interopDefaultLegacy(languagesLoaderFn);
|
|
65
|
+
var shouldReloadFn__default = /*#__PURE__*/_interopDefaultLegacy(shouldReloadFn);
|
|
66
|
+
var documentStore__default = /*#__PURE__*/_interopDefaultLegacy(documentStore);
|
|
67
|
+
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
68
|
+
|
|
69
|
+
var objectSafeGet = get;
|
|
70
|
+
|
|
71
|
+
/*
|
|
72
|
+
const obj = {a: {aa: {aaa: 2}}, b: 4};
|
|
73
|
+
|
|
74
|
+
get(obj, 'a.aa.aaa'); // 2
|
|
75
|
+
get(obj, ['a', 'aa', 'aaa']); // 2
|
|
76
|
+
|
|
77
|
+
get(obj, 'b.bb.bbb'); // undefined
|
|
78
|
+
get(obj, ['b', 'bb', 'bbb']); // undefined
|
|
79
|
+
|
|
80
|
+
get(obj.a, 'aa.aaa'); // 2
|
|
81
|
+
get(obj.a, ['aa', 'aaa']); // 2
|
|
82
|
+
|
|
83
|
+
get(obj.b, 'bb.bbb'); // undefined
|
|
84
|
+
get(obj.b, ['bb', 'bbb']); // undefined
|
|
85
|
+
|
|
86
|
+
get(obj.b, 'bb.bbb', 42); // 42
|
|
87
|
+
get(obj.b, ['bb', 'bbb'], 42); // 42
|
|
88
|
+
|
|
89
|
+
get(null, 'a'); // undefined
|
|
90
|
+
get(undefined, ['a']); // undefined
|
|
91
|
+
|
|
92
|
+
get(null, 'a', 42); // 42
|
|
93
|
+
get(undefined, ['a'], 42); // 42
|
|
94
|
+
|
|
95
|
+
const obj = {a: {}};
|
|
96
|
+
const sym = Symbol();
|
|
97
|
+
obj.a[sym] = 4;
|
|
98
|
+
get(obj.a, sym); // 4
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
function get(obj, propsArg, defaultValue) {
|
|
102
|
+
if (!obj) {
|
|
103
|
+
return defaultValue;
|
|
104
|
+
}
|
|
105
|
+
var props, prop;
|
|
106
|
+
if (Array.isArray(propsArg)) {
|
|
107
|
+
props = propsArg.slice(0);
|
|
108
|
+
}
|
|
109
|
+
if (typeof propsArg == 'string') {
|
|
110
|
+
props = propsArg.split('.');
|
|
111
|
+
}
|
|
112
|
+
if (typeof propsArg == 'symbol') {
|
|
113
|
+
props = [propsArg];
|
|
114
|
+
}
|
|
115
|
+
if (!Array.isArray(props)) {
|
|
116
|
+
throw new Error('props arg must be an array, a string or a symbol');
|
|
117
|
+
}
|
|
118
|
+
while (props.length) {
|
|
119
|
+
prop = props.shift();
|
|
120
|
+
if (!obj) {
|
|
121
|
+
return defaultValue;
|
|
122
|
+
}
|
|
123
|
+
obj = obj[prop];
|
|
124
|
+
if (obj === undefined) {
|
|
125
|
+
return defaultValue;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return obj;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
|
|
132
|
+
var twemoji=function(){var twemoji={base:"https://twemoji.maxcdn.com/v/14.0.2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this);}},parse:parse,replace:replace,test:test},escaper={"&":"&","<":"<",">":">","'":"'",'"':"""},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return "".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode);}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText);}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true));}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname]);}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img);}if(!img)fragment.appendChild(createText(rawText,false));img=null;}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true));}subnode.parentNode.replaceChild(fragment,subnode);}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"');}}ret=ret.concat("/>");}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how};}return (typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0;}else if(55296<=c&&c<=56319){p=c;}else {r.push(c.toString(16));}}return r.join(sep||"-")}}();
|
|
133
|
+
|
|
134
|
+
// An attribute in which the DOM/SVG standard name is the same as the React prop name (e.g., 'accept').
|
|
135
|
+
var SAME$1 = 0;
|
|
136
|
+
var SAME_1 = SAME$1;
|
|
137
|
+
|
|
138
|
+
// An attribute in which the React prop name is the camelcased version of the DOM/SVG standard name (e.g., 'acceptCharset').
|
|
139
|
+
var CAMELCASE$1 = 1;
|
|
140
|
+
var CAMELCASE_1 = CAMELCASE$1;
|
|
141
|
+
|
|
142
|
+
var possibleStandardNames$1 = {
|
|
143
|
+
accept: 0,
|
|
144
|
+
acceptCharset: 1,
|
|
145
|
+
'accept-charset': 'acceptCharset',
|
|
146
|
+
accessKey: 1,
|
|
147
|
+
action: 0,
|
|
148
|
+
allowFullScreen: 1,
|
|
149
|
+
alt: 0,
|
|
150
|
+
as: 0,
|
|
151
|
+
async: 0,
|
|
152
|
+
autoCapitalize: 1,
|
|
153
|
+
autoComplete: 1,
|
|
154
|
+
autoCorrect: 1,
|
|
155
|
+
autoFocus: 1,
|
|
156
|
+
autoPlay: 1,
|
|
157
|
+
autoSave: 1,
|
|
158
|
+
capture: 0,
|
|
159
|
+
cellPadding: 1,
|
|
160
|
+
cellSpacing: 1,
|
|
161
|
+
challenge: 0,
|
|
162
|
+
charSet: 1,
|
|
163
|
+
checked: 0,
|
|
164
|
+
children: 0,
|
|
165
|
+
cite: 0,
|
|
166
|
+
class: 'className',
|
|
167
|
+
classID: 1,
|
|
168
|
+
className: 1,
|
|
169
|
+
cols: 0,
|
|
170
|
+
colSpan: 1,
|
|
171
|
+
content: 0,
|
|
172
|
+
contentEditable: 1,
|
|
173
|
+
contextMenu: 1,
|
|
174
|
+
controls: 0,
|
|
175
|
+
controlsList: 1,
|
|
176
|
+
coords: 0,
|
|
177
|
+
crossOrigin: 1,
|
|
178
|
+
dangerouslySetInnerHTML: 1,
|
|
179
|
+
data: 0,
|
|
180
|
+
dateTime: 1,
|
|
181
|
+
default: 0,
|
|
182
|
+
defaultChecked: 1,
|
|
183
|
+
defaultValue: 1,
|
|
184
|
+
defer: 0,
|
|
185
|
+
dir: 0,
|
|
186
|
+
disabled: 0,
|
|
187
|
+
disablePictureInPicture: 1,
|
|
188
|
+
disableRemotePlayback: 1,
|
|
189
|
+
download: 0,
|
|
190
|
+
draggable: 0,
|
|
191
|
+
encType: 1,
|
|
192
|
+
enterKeyHint: 1,
|
|
193
|
+
for: 'htmlFor',
|
|
194
|
+
form: 0,
|
|
195
|
+
formMethod: 1,
|
|
196
|
+
formAction: 1,
|
|
197
|
+
formEncType: 1,
|
|
198
|
+
formNoValidate: 1,
|
|
199
|
+
formTarget: 1,
|
|
200
|
+
frameBorder: 1,
|
|
201
|
+
headers: 0,
|
|
202
|
+
height: 0,
|
|
203
|
+
hidden: 0,
|
|
204
|
+
high: 0,
|
|
205
|
+
href: 0,
|
|
206
|
+
hrefLang: 1,
|
|
207
|
+
htmlFor: 1,
|
|
208
|
+
httpEquiv: 1,
|
|
209
|
+
'http-equiv': 'httpEquiv',
|
|
210
|
+
icon: 0,
|
|
211
|
+
id: 0,
|
|
212
|
+
innerHTML: 1,
|
|
213
|
+
inputMode: 1,
|
|
214
|
+
integrity: 0,
|
|
215
|
+
is: 0,
|
|
216
|
+
itemID: 1,
|
|
217
|
+
itemProp: 1,
|
|
218
|
+
itemRef: 1,
|
|
219
|
+
itemScope: 1,
|
|
220
|
+
itemType: 1,
|
|
221
|
+
keyParams: 1,
|
|
222
|
+
keyType: 1,
|
|
223
|
+
kind: 0,
|
|
224
|
+
label: 0,
|
|
225
|
+
lang: 0,
|
|
226
|
+
list: 0,
|
|
227
|
+
loop: 0,
|
|
228
|
+
low: 0,
|
|
229
|
+
manifest: 0,
|
|
230
|
+
marginWidth: 1,
|
|
231
|
+
marginHeight: 1,
|
|
232
|
+
max: 0,
|
|
233
|
+
maxLength: 1,
|
|
234
|
+
media: 0,
|
|
235
|
+
mediaGroup: 1,
|
|
236
|
+
method: 0,
|
|
237
|
+
min: 0,
|
|
238
|
+
minLength: 1,
|
|
239
|
+
multiple: 0,
|
|
240
|
+
muted: 0,
|
|
241
|
+
name: 0,
|
|
242
|
+
noModule: 1,
|
|
243
|
+
nonce: 0,
|
|
244
|
+
noValidate: 1,
|
|
245
|
+
open: 0,
|
|
246
|
+
optimum: 0,
|
|
247
|
+
pattern: 0,
|
|
248
|
+
placeholder: 0,
|
|
249
|
+
playsInline: 1,
|
|
250
|
+
poster: 0,
|
|
251
|
+
preload: 0,
|
|
252
|
+
profile: 0,
|
|
253
|
+
radioGroup: 1,
|
|
254
|
+
readOnly: 1,
|
|
255
|
+
referrerPolicy: 1,
|
|
256
|
+
rel: 0,
|
|
257
|
+
required: 0,
|
|
258
|
+
reversed: 0,
|
|
259
|
+
role: 0,
|
|
260
|
+
rows: 0,
|
|
261
|
+
rowSpan: 1,
|
|
262
|
+
sandbox: 0,
|
|
263
|
+
scope: 0,
|
|
264
|
+
scoped: 0,
|
|
265
|
+
scrolling: 0,
|
|
266
|
+
seamless: 0,
|
|
267
|
+
selected: 0,
|
|
268
|
+
shape: 0,
|
|
269
|
+
size: 0,
|
|
270
|
+
sizes: 0,
|
|
271
|
+
span: 0,
|
|
272
|
+
spellCheck: 1,
|
|
273
|
+
src: 0,
|
|
274
|
+
srcDoc: 1,
|
|
275
|
+
srcLang: 1,
|
|
276
|
+
srcSet: 1,
|
|
277
|
+
start: 0,
|
|
278
|
+
step: 0,
|
|
279
|
+
style: 0,
|
|
280
|
+
summary: 0,
|
|
281
|
+
tabIndex: 1,
|
|
282
|
+
target: 0,
|
|
283
|
+
title: 0,
|
|
284
|
+
type: 0,
|
|
285
|
+
useMap: 1,
|
|
286
|
+
value: 0,
|
|
287
|
+
width: 0,
|
|
288
|
+
wmode: 0,
|
|
289
|
+
wrap: 0,
|
|
290
|
+
about: 0,
|
|
291
|
+
accentHeight: 1,
|
|
292
|
+
'accent-height': 'accentHeight',
|
|
293
|
+
accumulate: 0,
|
|
294
|
+
additive: 0,
|
|
295
|
+
alignmentBaseline: 1,
|
|
296
|
+
'alignment-baseline': 'alignmentBaseline',
|
|
297
|
+
allowReorder: 1,
|
|
298
|
+
alphabetic: 0,
|
|
299
|
+
amplitude: 0,
|
|
300
|
+
arabicForm: 1,
|
|
301
|
+
'arabic-form': 'arabicForm',
|
|
302
|
+
ascent: 0,
|
|
303
|
+
attributeName: 1,
|
|
304
|
+
attributeType: 1,
|
|
305
|
+
autoReverse: 1,
|
|
306
|
+
azimuth: 0,
|
|
307
|
+
baseFrequency: 1,
|
|
308
|
+
baselineShift: 1,
|
|
309
|
+
'baseline-shift': 'baselineShift',
|
|
310
|
+
baseProfile: 1,
|
|
311
|
+
bbox: 0,
|
|
312
|
+
begin: 0,
|
|
313
|
+
bias: 0,
|
|
314
|
+
by: 0,
|
|
315
|
+
calcMode: 1,
|
|
316
|
+
capHeight: 1,
|
|
317
|
+
'cap-height': 'capHeight',
|
|
318
|
+
clip: 0,
|
|
319
|
+
clipPath: 1,
|
|
320
|
+
'clip-path': 'clipPath',
|
|
321
|
+
clipPathUnits: 1,
|
|
322
|
+
clipRule: 1,
|
|
323
|
+
'clip-rule': 'clipRule',
|
|
324
|
+
color: 0,
|
|
325
|
+
colorInterpolation: 1,
|
|
326
|
+
'color-interpolation': 'colorInterpolation',
|
|
327
|
+
colorInterpolationFilters: 1,
|
|
328
|
+
'color-interpolation-filters': 'colorInterpolationFilters',
|
|
329
|
+
colorProfile: 1,
|
|
330
|
+
'color-profile': 'colorProfile',
|
|
331
|
+
colorRendering: 1,
|
|
332
|
+
'color-rendering': 'colorRendering',
|
|
333
|
+
contentScriptType: 1,
|
|
334
|
+
contentStyleType: 1,
|
|
335
|
+
cursor: 0,
|
|
336
|
+
cx: 0,
|
|
337
|
+
cy: 0,
|
|
338
|
+
d: 0,
|
|
339
|
+
datatype: 0,
|
|
340
|
+
decelerate: 0,
|
|
341
|
+
descent: 0,
|
|
342
|
+
diffuseConstant: 1,
|
|
343
|
+
direction: 0,
|
|
344
|
+
display: 0,
|
|
345
|
+
divisor: 0,
|
|
346
|
+
dominantBaseline: 1,
|
|
347
|
+
'dominant-baseline': 'dominantBaseline',
|
|
348
|
+
dur: 0,
|
|
349
|
+
dx: 0,
|
|
350
|
+
dy: 0,
|
|
351
|
+
edgeMode: 1,
|
|
352
|
+
elevation: 0,
|
|
353
|
+
enableBackground: 1,
|
|
354
|
+
'enable-background': 'enableBackground',
|
|
355
|
+
end: 0,
|
|
356
|
+
exponent: 0,
|
|
357
|
+
externalResourcesRequired: 1,
|
|
358
|
+
fill: 0,
|
|
359
|
+
fillOpacity: 1,
|
|
360
|
+
'fill-opacity': 'fillOpacity',
|
|
361
|
+
fillRule: 1,
|
|
362
|
+
'fill-rule': 'fillRule',
|
|
363
|
+
filter: 0,
|
|
364
|
+
filterRes: 1,
|
|
365
|
+
filterUnits: 1,
|
|
366
|
+
floodOpacity: 1,
|
|
367
|
+
'flood-opacity': 'floodOpacity',
|
|
368
|
+
floodColor: 1,
|
|
369
|
+
'flood-color': 'floodColor',
|
|
370
|
+
focusable: 0,
|
|
371
|
+
fontFamily: 1,
|
|
372
|
+
'font-family': 'fontFamily',
|
|
373
|
+
fontSize: 1,
|
|
374
|
+
'font-size': 'fontSize',
|
|
375
|
+
fontSizeAdjust: 1,
|
|
376
|
+
'font-size-adjust': 'fontSizeAdjust',
|
|
377
|
+
fontStretch: 1,
|
|
378
|
+
'font-stretch': 'fontStretch',
|
|
379
|
+
fontStyle: 1,
|
|
380
|
+
'font-style': 'fontStyle',
|
|
381
|
+
fontVariant: 1,
|
|
382
|
+
'font-variant': 'fontVariant',
|
|
383
|
+
fontWeight: 1,
|
|
384
|
+
'font-weight': 'fontWeight',
|
|
385
|
+
format: 0,
|
|
386
|
+
from: 0,
|
|
387
|
+
fx: 0,
|
|
388
|
+
fy: 0,
|
|
389
|
+
g1: 0,
|
|
390
|
+
g2: 0,
|
|
391
|
+
glyphName: 1,
|
|
392
|
+
'glyph-name': 'glyphName',
|
|
393
|
+
glyphOrientationHorizontal: 1,
|
|
394
|
+
'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
|
|
395
|
+
glyphOrientationVertical: 1,
|
|
396
|
+
'glyph-orientation-vertical': 'glyphOrientationVertical',
|
|
397
|
+
glyphRef: 1,
|
|
398
|
+
gradientTransform: 1,
|
|
399
|
+
gradientUnits: 1,
|
|
400
|
+
hanging: 0,
|
|
401
|
+
horizAdvX: 1,
|
|
402
|
+
'horiz-adv-x': 'horizAdvX',
|
|
403
|
+
horizOriginX: 1,
|
|
404
|
+
'horiz-origin-x': 'horizOriginX',
|
|
405
|
+
ideographic: 0,
|
|
406
|
+
imageRendering: 1,
|
|
407
|
+
'image-rendering': 'imageRendering',
|
|
408
|
+
in2: 0,
|
|
409
|
+
in: 0,
|
|
410
|
+
inlist: 0,
|
|
411
|
+
intercept: 0,
|
|
412
|
+
k1: 0,
|
|
413
|
+
k2: 0,
|
|
414
|
+
k3: 0,
|
|
415
|
+
k4: 0,
|
|
416
|
+
k: 0,
|
|
417
|
+
kernelMatrix: 1,
|
|
418
|
+
kernelUnitLength: 1,
|
|
419
|
+
kerning: 0,
|
|
420
|
+
keyPoints: 1,
|
|
421
|
+
keySplines: 1,
|
|
422
|
+
keyTimes: 1,
|
|
423
|
+
lengthAdjust: 1,
|
|
424
|
+
letterSpacing: 1,
|
|
425
|
+
'letter-spacing': 'letterSpacing',
|
|
426
|
+
lightingColor: 1,
|
|
427
|
+
'lighting-color': 'lightingColor',
|
|
428
|
+
limitingConeAngle: 1,
|
|
429
|
+
local: 0,
|
|
430
|
+
markerEnd: 1,
|
|
431
|
+
'marker-end': 'markerEnd',
|
|
432
|
+
markerHeight: 1,
|
|
433
|
+
markerMid: 1,
|
|
434
|
+
'marker-mid': 'markerMid',
|
|
435
|
+
markerStart: 1,
|
|
436
|
+
'marker-start': 'markerStart',
|
|
437
|
+
markerUnits: 1,
|
|
438
|
+
markerWidth: 1,
|
|
439
|
+
mask: 0,
|
|
440
|
+
maskContentUnits: 1,
|
|
441
|
+
maskUnits: 1,
|
|
442
|
+
mathematical: 0,
|
|
443
|
+
mode: 0,
|
|
444
|
+
numOctaves: 1,
|
|
445
|
+
offset: 0,
|
|
446
|
+
opacity: 0,
|
|
447
|
+
operator: 0,
|
|
448
|
+
order: 0,
|
|
449
|
+
orient: 0,
|
|
450
|
+
orientation: 0,
|
|
451
|
+
origin: 0,
|
|
452
|
+
overflow: 0,
|
|
453
|
+
overlinePosition: 1,
|
|
454
|
+
'overline-position': 'overlinePosition',
|
|
455
|
+
overlineThickness: 1,
|
|
456
|
+
'overline-thickness': 'overlineThickness',
|
|
457
|
+
paintOrder: 1,
|
|
458
|
+
'paint-order': 'paintOrder',
|
|
459
|
+
panose1: 0,
|
|
460
|
+
'panose-1': 'panose1',
|
|
461
|
+
pathLength: 1,
|
|
462
|
+
patternContentUnits: 1,
|
|
463
|
+
patternTransform: 1,
|
|
464
|
+
patternUnits: 1,
|
|
465
|
+
pointerEvents: 1,
|
|
466
|
+
'pointer-events': 'pointerEvents',
|
|
467
|
+
points: 0,
|
|
468
|
+
pointsAtX: 1,
|
|
469
|
+
pointsAtY: 1,
|
|
470
|
+
pointsAtZ: 1,
|
|
471
|
+
prefix: 0,
|
|
472
|
+
preserveAlpha: 1,
|
|
473
|
+
preserveAspectRatio: 1,
|
|
474
|
+
primitiveUnits: 1,
|
|
475
|
+
property: 0,
|
|
476
|
+
r: 0,
|
|
477
|
+
radius: 0,
|
|
478
|
+
refX: 1,
|
|
479
|
+
refY: 1,
|
|
480
|
+
renderingIntent: 1,
|
|
481
|
+
'rendering-intent': 'renderingIntent',
|
|
482
|
+
repeatCount: 1,
|
|
483
|
+
repeatDur: 1,
|
|
484
|
+
requiredExtensions: 1,
|
|
485
|
+
requiredFeatures: 1,
|
|
486
|
+
resource: 0,
|
|
487
|
+
restart: 0,
|
|
488
|
+
result: 0,
|
|
489
|
+
results: 0,
|
|
490
|
+
rotate: 0,
|
|
491
|
+
rx: 0,
|
|
492
|
+
ry: 0,
|
|
493
|
+
scale: 0,
|
|
494
|
+
security: 0,
|
|
495
|
+
seed: 0,
|
|
496
|
+
shapeRendering: 1,
|
|
497
|
+
'shape-rendering': 'shapeRendering',
|
|
498
|
+
slope: 0,
|
|
499
|
+
spacing: 0,
|
|
500
|
+
specularConstant: 1,
|
|
501
|
+
specularExponent: 1,
|
|
502
|
+
speed: 0,
|
|
503
|
+
spreadMethod: 1,
|
|
504
|
+
startOffset: 1,
|
|
505
|
+
stdDeviation: 1,
|
|
506
|
+
stemh: 0,
|
|
507
|
+
stemv: 0,
|
|
508
|
+
stitchTiles: 1,
|
|
509
|
+
stopColor: 1,
|
|
510
|
+
'stop-color': 'stopColor',
|
|
511
|
+
stopOpacity: 1,
|
|
512
|
+
'stop-opacity': 'stopOpacity',
|
|
513
|
+
strikethroughPosition: 1,
|
|
514
|
+
'strikethrough-position': 'strikethroughPosition',
|
|
515
|
+
strikethroughThickness: 1,
|
|
516
|
+
'strikethrough-thickness': 'strikethroughThickness',
|
|
517
|
+
string: 0,
|
|
518
|
+
stroke: 0,
|
|
519
|
+
strokeDasharray: 1,
|
|
520
|
+
'stroke-dasharray': 'strokeDasharray',
|
|
521
|
+
strokeDashoffset: 1,
|
|
522
|
+
'stroke-dashoffset': 'strokeDashoffset',
|
|
523
|
+
strokeLinecap: 1,
|
|
524
|
+
'stroke-linecap': 'strokeLinecap',
|
|
525
|
+
strokeLinejoin: 1,
|
|
526
|
+
'stroke-linejoin': 'strokeLinejoin',
|
|
527
|
+
strokeMiterlimit: 1,
|
|
528
|
+
'stroke-miterlimit': 'strokeMiterlimit',
|
|
529
|
+
strokeWidth: 1,
|
|
530
|
+
'stroke-width': 'strokeWidth',
|
|
531
|
+
strokeOpacity: 1,
|
|
532
|
+
'stroke-opacity': 'strokeOpacity',
|
|
533
|
+
suppressContentEditableWarning: 1,
|
|
534
|
+
suppressHydrationWarning: 1,
|
|
535
|
+
surfaceScale: 1,
|
|
536
|
+
systemLanguage: 1,
|
|
537
|
+
tableValues: 1,
|
|
538
|
+
targetX: 1,
|
|
539
|
+
targetY: 1,
|
|
540
|
+
textAnchor: 1,
|
|
541
|
+
'text-anchor': 'textAnchor',
|
|
542
|
+
textDecoration: 1,
|
|
543
|
+
'text-decoration': 'textDecoration',
|
|
544
|
+
textLength: 1,
|
|
545
|
+
textRendering: 1,
|
|
546
|
+
'text-rendering': 'textRendering',
|
|
547
|
+
to: 0,
|
|
548
|
+
transform: 0,
|
|
549
|
+
typeof: 0,
|
|
550
|
+
u1: 0,
|
|
551
|
+
u2: 0,
|
|
552
|
+
underlinePosition: 1,
|
|
553
|
+
'underline-position': 'underlinePosition',
|
|
554
|
+
underlineThickness: 1,
|
|
555
|
+
'underline-thickness': 'underlineThickness',
|
|
556
|
+
unicode: 0,
|
|
557
|
+
unicodeBidi: 1,
|
|
558
|
+
'unicode-bidi': 'unicodeBidi',
|
|
559
|
+
unicodeRange: 1,
|
|
560
|
+
'unicode-range': 'unicodeRange',
|
|
561
|
+
unitsPerEm: 1,
|
|
562
|
+
'units-per-em': 'unitsPerEm',
|
|
563
|
+
unselectable: 0,
|
|
564
|
+
vAlphabetic: 1,
|
|
565
|
+
'v-alphabetic': 'vAlphabetic',
|
|
566
|
+
values: 0,
|
|
567
|
+
vectorEffect: 1,
|
|
568
|
+
'vector-effect': 'vectorEffect',
|
|
569
|
+
version: 0,
|
|
570
|
+
vertAdvY: 1,
|
|
571
|
+
'vert-adv-y': 'vertAdvY',
|
|
572
|
+
vertOriginX: 1,
|
|
573
|
+
'vert-origin-x': 'vertOriginX',
|
|
574
|
+
vertOriginY: 1,
|
|
575
|
+
'vert-origin-y': 'vertOriginY',
|
|
576
|
+
vHanging: 1,
|
|
577
|
+
'v-hanging': 'vHanging',
|
|
578
|
+
vIdeographic: 1,
|
|
579
|
+
'v-ideographic': 'vIdeographic',
|
|
580
|
+
viewBox: 1,
|
|
581
|
+
viewTarget: 1,
|
|
582
|
+
visibility: 0,
|
|
583
|
+
vMathematical: 1,
|
|
584
|
+
'v-mathematical': 'vMathematical',
|
|
585
|
+
vocab: 0,
|
|
586
|
+
widths: 0,
|
|
587
|
+
wordSpacing: 1,
|
|
588
|
+
'word-spacing': 'wordSpacing',
|
|
589
|
+
writingMode: 1,
|
|
590
|
+
'writing-mode': 'writingMode',
|
|
591
|
+
x1: 0,
|
|
592
|
+
x2: 0,
|
|
593
|
+
x: 0,
|
|
594
|
+
xChannelSelector: 1,
|
|
595
|
+
xHeight: 1,
|
|
596
|
+
'x-height': 'xHeight',
|
|
597
|
+
xlinkActuate: 1,
|
|
598
|
+
'xlink:actuate': 'xlinkActuate',
|
|
599
|
+
xlinkArcrole: 1,
|
|
600
|
+
'xlink:arcrole': 'xlinkArcrole',
|
|
601
|
+
xlinkHref: 1,
|
|
602
|
+
'xlink:href': 'xlinkHref',
|
|
603
|
+
xlinkRole: 1,
|
|
604
|
+
'xlink:role': 'xlinkRole',
|
|
605
|
+
xlinkShow: 1,
|
|
606
|
+
'xlink:show': 'xlinkShow',
|
|
607
|
+
xlinkTitle: 1,
|
|
608
|
+
'xlink:title': 'xlinkTitle',
|
|
609
|
+
xlinkType: 1,
|
|
610
|
+
'xlink:type': 'xlinkType',
|
|
611
|
+
xmlBase: 1,
|
|
612
|
+
'xml:base': 'xmlBase',
|
|
613
|
+
xmlLang: 1,
|
|
614
|
+
'xml:lang': 'xmlLang',
|
|
615
|
+
xmlns: 0,
|
|
616
|
+
'xml:space': 'xmlSpace',
|
|
617
|
+
xmlnsXlink: 1,
|
|
618
|
+
'xmlns:xlink': 'xmlnsXlink',
|
|
619
|
+
xmlSpace: 1,
|
|
620
|
+
y1: 0,
|
|
621
|
+
y2: 0,
|
|
622
|
+
y: 0,
|
|
623
|
+
yChannelSelector: 1,
|
|
624
|
+
z: 0,
|
|
625
|
+
zoomAndPan: 1
|
|
626
|
+
};
|
|
627
|
+
|
|
628
|
+
var possibleStandardNamesOptimized$1 = {
|
|
629
|
+
SAME: SAME_1,
|
|
630
|
+
CAMELCASE: CAMELCASE_1,
|
|
631
|
+
possibleStandardNames: possibleStandardNames$1
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
function _slicedToArray(arr, i) {
|
|
635
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
function _arrayWithHoles(arr) {
|
|
639
|
+
if (Array.isArray(arr)) return arr;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
function _iterableToArrayLimit(arr, i) {
|
|
643
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
644
|
+
|
|
645
|
+
if (_i == null) return;
|
|
646
|
+
var _arr = [];
|
|
647
|
+
var _n = true;
|
|
648
|
+
var _d = false;
|
|
649
|
+
|
|
650
|
+
var _s, _e;
|
|
651
|
+
|
|
652
|
+
try {
|
|
653
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
654
|
+
_arr.push(_s.value);
|
|
655
|
+
|
|
656
|
+
if (i && _arr.length === i) break;
|
|
657
|
+
}
|
|
658
|
+
} catch (err) {
|
|
659
|
+
_d = true;
|
|
660
|
+
_e = err;
|
|
661
|
+
} finally {
|
|
662
|
+
try {
|
|
663
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
664
|
+
} finally {
|
|
665
|
+
if (_d) throw _e;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
return _arr;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
673
|
+
if (!o) return;
|
|
674
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
675
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
676
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
677
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
678
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
function _arrayLikeToArray(arr, len) {
|
|
682
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
683
|
+
|
|
684
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
685
|
+
|
|
686
|
+
return arr2;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
function _nonIterableRest() {
|
|
690
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
// A reserved attribute.
|
|
694
|
+
// It is handled by React separately and shouldn't be written to the DOM.
|
|
695
|
+
var RESERVED = 0; // A simple string attribute.
|
|
696
|
+
// Attributes that aren't in the filter are presumed to have this type.
|
|
697
|
+
|
|
698
|
+
var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called
|
|
699
|
+
// "enumerated" attributes with "true" and "false" as possible values.
|
|
700
|
+
// When true, it should be set to a "true" string.
|
|
701
|
+
// When false, it should be set to a "false" string.
|
|
702
|
+
|
|
703
|
+
var BOOLEANISH_STRING = 2; // A real boolean attribute.
|
|
704
|
+
// When true, it should be present (set either to an empty string or its name).
|
|
705
|
+
// When false, it should be omitted.
|
|
706
|
+
|
|
707
|
+
var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.
|
|
708
|
+
// When true, it should be present (set either to an empty string or its name).
|
|
709
|
+
// When false, it should be omitted.
|
|
710
|
+
// For any other value, should be present with that value.
|
|
711
|
+
|
|
712
|
+
var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.
|
|
713
|
+
// When falsy, it should be removed.
|
|
714
|
+
|
|
715
|
+
var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.
|
|
716
|
+
// When falsy, it should be removed.
|
|
717
|
+
|
|
718
|
+
var POSITIVE_NUMERIC = 6;
|
|
719
|
+
function getPropertyInfo(name) {
|
|
720
|
+
return properties.hasOwnProperty(name) ? properties[name] : null;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {
|
|
724
|
+
this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;
|
|
725
|
+
this.attributeName = attributeName;
|
|
726
|
+
this.attributeNamespace = attributeNamespace;
|
|
727
|
+
this.mustUseProperty = mustUseProperty;
|
|
728
|
+
this.propertyName = name;
|
|
729
|
+
this.type = type;
|
|
730
|
+
this.sanitizeURL = sanitizeURL;
|
|
731
|
+
this.removeEmptyString = removeEmptyString;
|
|
732
|
+
} // When adding attributes to this list, be sure to also add them to
|
|
733
|
+
// the `possibleStandardNames` module to ensure casing and incorrect
|
|
734
|
+
// name warnings.
|
|
735
|
+
|
|
736
|
+
|
|
737
|
+
var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.
|
|
738
|
+
|
|
739
|
+
var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular
|
|
740
|
+
// elements (not just inputs). Now that ReactDOMInput assigns to the
|
|
741
|
+
// defaultValue property -- do we need this?
|
|
742
|
+
'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];
|
|
743
|
+
reservedProps.forEach(function (name) {
|
|
744
|
+
properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty
|
|
745
|
+
name, // attributeName
|
|
746
|
+
null, // attributeNamespace
|
|
747
|
+
false, // sanitizeURL
|
|
748
|
+
false);
|
|
749
|
+
}); // A few React string attributes have a different name.
|
|
750
|
+
// This is a mapping from React prop names to the attribute names.
|
|
751
|
+
|
|
752
|
+
[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {
|
|
753
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
754
|
+
name = _ref2[0],
|
|
755
|
+
attributeName = _ref2[1];
|
|
756
|
+
|
|
757
|
+
properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
|
|
758
|
+
attributeName, // attributeName
|
|
759
|
+
null, // attributeNamespace
|
|
760
|
+
false, // sanitizeURL
|
|
761
|
+
false);
|
|
762
|
+
}); // These are "enumerated" HTML attributes that accept "true" and "false".
|
|
763
|
+
// In React, we let users pass `true` and `false` even though technically
|
|
764
|
+
// these aren't boolean attributes (they are coerced to strings).
|
|
765
|
+
|
|
766
|
+
['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {
|
|
767
|
+
properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
|
|
768
|
+
name.toLowerCase(), // attributeName
|
|
769
|
+
null, // attributeNamespace
|
|
770
|
+
false, // sanitizeURL
|
|
771
|
+
false);
|
|
772
|
+
}); // These are "enumerated" SVG attributes that accept "true" and "false".
|
|
773
|
+
// In React, we let users pass `true` and `false` even though technically
|
|
774
|
+
// these aren't boolean attributes (they are coerced to strings).
|
|
775
|
+
// Since these are SVG attributes, their attribute names are case-sensitive.
|
|
776
|
+
|
|
777
|
+
['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {
|
|
778
|
+
properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
|
|
779
|
+
name, // attributeName
|
|
780
|
+
null, // attributeNamespace
|
|
781
|
+
false, // sanitizeURL
|
|
782
|
+
false);
|
|
783
|
+
}); // These are HTML boolean attributes.
|
|
784
|
+
|
|
785
|
+
['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM
|
|
786
|
+
// on the client side because the browsers are inconsistent. Instead we call focus().
|
|
787
|
+
'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata
|
|
788
|
+
'itemScope'].forEach(function (name) {
|
|
789
|
+
properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty
|
|
790
|
+
name.toLowerCase(), // attributeName
|
|
791
|
+
null, // attributeNamespace
|
|
792
|
+
false, // sanitizeURL
|
|
793
|
+
false);
|
|
794
|
+
}); // These are the few React props that we set as DOM properties
|
|
795
|
+
// rather than attributes. These are all booleans.
|
|
796
|
+
|
|
797
|
+
['checked', // Note: `option.selected` is not updated if `select.multiple` is
|
|
798
|
+
// disabled with `removeAttribute`. We have special logic for handling this.
|
|
799
|
+
'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,
|
|
800
|
+
// you'll need to set attributeName to name.toLowerCase()
|
|
801
|
+
// instead in the assignment below.
|
|
802
|
+
].forEach(function (name) {
|
|
803
|
+
properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty
|
|
804
|
+
name, // attributeName
|
|
805
|
+
null, // attributeNamespace
|
|
806
|
+
false, // sanitizeURL
|
|
807
|
+
false);
|
|
808
|
+
}); // These are HTML attributes that are "overloaded booleans": they behave like
|
|
809
|
+
// booleans, but can also accept a string value.
|
|
810
|
+
|
|
811
|
+
['capture', 'download' // NOTE: if you add a camelCased prop to this list,
|
|
812
|
+
// you'll need to set attributeName to name.toLowerCase()
|
|
813
|
+
// instead in the assignment below.
|
|
814
|
+
].forEach(function (name) {
|
|
815
|
+
properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty
|
|
816
|
+
name, // attributeName
|
|
817
|
+
null, // attributeNamespace
|
|
818
|
+
false, // sanitizeURL
|
|
819
|
+
false);
|
|
820
|
+
}); // These are HTML attributes that must be positive numbers.
|
|
821
|
+
|
|
822
|
+
['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,
|
|
823
|
+
// you'll need to set attributeName to name.toLowerCase()
|
|
824
|
+
// instead in the assignment below.
|
|
825
|
+
].forEach(function (name) {
|
|
826
|
+
properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty
|
|
827
|
+
name, // attributeName
|
|
828
|
+
null, // attributeNamespace
|
|
829
|
+
false, // sanitizeURL
|
|
830
|
+
false);
|
|
831
|
+
}); // These are HTML attributes that must be numbers.
|
|
832
|
+
|
|
833
|
+
['rowSpan', 'start'].forEach(function (name) {
|
|
834
|
+
properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty
|
|
835
|
+
name.toLowerCase(), // attributeName
|
|
836
|
+
null, // attributeNamespace
|
|
837
|
+
false, // sanitizeURL
|
|
838
|
+
false);
|
|
839
|
+
});
|
|
840
|
+
var CAMELIZE = /[\-\:]([a-z])/g;
|
|
841
|
+
|
|
842
|
+
var capitalize = function capitalize(token) {
|
|
843
|
+
return token[1].toUpperCase();
|
|
844
|
+
}; // This is a list of all SVG attributes that need special casing, namespacing,
|
|
845
|
+
// or boolean value assignment. Regular attributes that just accept strings
|
|
846
|
+
// and have the same names are omitted, just like in the HTML attribute filter.
|
|
847
|
+
// Some of these attributes can be hard to find. This list was created by
|
|
848
|
+
// scraping the MDN documentation.
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,
|
|
852
|
+
// you'll need to set attributeName to name.toLowerCase()
|
|
853
|
+
// instead in the assignment below.
|
|
854
|
+
].forEach(function (attributeName) {
|
|
855
|
+
var name = attributeName.replace(CAMELIZE, capitalize);
|
|
856
|
+
properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
|
|
857
|
+
attributeName, null, // attributeNamespace
|
|
858
|
+
false, // sanitizeURL
|
|
859
|
+
false);
|
|
860
|
+
}); // String SVG attributes with the xlink namespace.
|
|
861
|
+
|
|
862
|
+
['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,
|
|
863
|
+
// you'll need to set attributeName to name.toLowerCase()
|
|
864
|
+
// instead in the assignment below.
|
|
865
|
+
].forEach(function (attributeName) {
|
|
866
|
+
var name = attributeName.replace(CAMELIZE, capitalize);
|
|
867
|
+
properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
|
|
868
|
+
attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL
|
|
869
|
+
false);
|
|
870
|
+
}); // String SVG attributes with the xml namespace.
|
|
871
|
+
|
|
872
|
+
['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,
|
|
873
|
+
// you'll need to set attributeName to name.toLowerCase()
|
|
874
|
+
// instead in the assignment below.
|
|
875
|
+
].forEach(function (attributeName) {
|
|
876
|
+
var name = attributeName.replace(CAMELIZE, capitalize);
|
|
877
|
+
properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
|
|
878
|
+
attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL
|
|
879
|
+
false);
|
|
880
|
+
}); // These attribute exists both in HTML and SVG.
|
|
881
|
+
// The attribute name is case-sensitive in SVG so we can't just use
|
|
882
|
+
// the React name like we do for attributes that exist only in HTML.
|
|
883
|
+
|
|
884
|
+
['tabIndex', 'crossOrigin'].forEach(function (attributeName) {
|
|
885
|
+
properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
|
|
886
|
+
attributeName.toLowerCase(), // attributeName
|
|
887
|
+
null, // attributeNamespace
|
|
888
|
+
false, // sanitizeURL
|
|
889
|
+
false);
|
|
890
|
+
}); // These attributes accept URLs. These must not allow javascript: URLS.
|
|
891
|
+
// These will also need to accept Trusted Types object in the future.
|
|
892
|
+
|
|
893
|
+
var xlinkHref = 'xlinkHref';
|
|
894
|
+
properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty
|
|
895
|
+
'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL
|
|
896
|
+
false);
|
|
897
|
+
['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {
|
|
898
|
+
properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
|
|
899
|
+
attributeName.toLowerCase(), // attributeName
|
|
900
|
+
null, // attributeNamespace
|
|
901
|
+
true, // sanitizeURL
|
|
902
|
+
true);
|
|
903
|
+
});
|
|
904
|
+
|
|
905
|
+
var CAMELCASE = possibleStandardNamesOptimized$1.CAMELCASE,
|
|
906
|
+
SAME = possibleStandardNamesOptimized$1.SAME,
|
|
907
|
+
possibleStandardNamesOptimized = possibleStandardNamesOptimized$1.possibleStandardNames;
|
|
908
|
+
|
|
909
|
+
var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
|
|
910
|
+
var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
|
|
911
|
+
/**
|
|
912
|
+
* Checks whether a property name is a custom attribute.
|
|
913
|
+
*
|
|
914
|
+
* @see {@link https://github.com/facebook/react/blob/15-stable/src/renderers/dom/shared/HTMLDOMPropertyConfig.js#L23-L25}
|
|
915
|
+
*
|
|
916
|
+
* @param {string}
|
|
917
|
+
* @return {boolean}
|
|
918
|
+
*/
|
|
919
|
+
|
|
920
|
+
var isCustomAttribute = RegExp.prototype.test.bind( // eslint-disable-next-line no-misleading-character-class
|
|
921
|
+
new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));
|
|
922
|
+
var possibleStandardNames = Object.keys(possibleStandardNamesOptimized).reduce(function (accumulator, standardName) {
|
|
923
|
+
var propName = possibleStandardNamesOptimized[standardName];
|
|
924
|
+
|
|
925
|
+
if (propName === SAME) {
|
|
926
|
+
accumulator[standardName] = standardName;
|
|
927
|
+
} else if (propName === CAMELCASE) {
|
|
928
|
+
accumulator[standardName.toLowerCase()] = standardName;
|
|
929
|
+
} else {
|
|
930
|
+
accumulator[standardName] = propName;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
return accumulator;
|
|
934
|
+
}, {});
|
|
935
|
+
|
|
936
|
+
var BOOLEAN_1 = BOOLEAN;
|
|
937
|
+
var BOOLEANISH_STRING_1 = BOOLEANISH_STRING;
|
|
938
|
+
var NUMERIC_1 = NUMERIC;
|
|
939
|
+
var OVERLOADED_BOOLEAN_1 = OVERLOADED_BOOLEAN;
|
|
940
|
+
var POSITIVE_NUMERIC_1 = POSITIVE_NUMERIC;
|
|
941
|
+
var RESERVED_1 = RESERVED;
|
|
942
|
+
var STRING_1 = STRING;
|
|
943
|
+
var getPropertyInfo_1 = getPropertyInfo;
|
|
944
|
+
var isCustomAttribute_1 = isCustomAttribute;
|
|
945
|
+
var possibleStandardNames_1 = possibleStandardNames;
|
|
946
|
+
|
|
947
|
+
var lib$2 = /*#__PURE__*/Object.defineProperty({
|
|
948
|
+
BOOLEAN: BOOLEAN_1,
|
|
949
|
+
BOOLEANISH_STRING: BOOLEANISH_STRING_1,
|
|
950
|
+
NUMERIC: NUMERIC_1,
|
|
951
|
+
OVERLOADED_BOOLEAN: OVERLOADED_BOOLEAN_1,
|
|
952
|
+
POSITIVE_NUMERIC: POSITIVE_NUMERIC_1,
|
|
953
|
+
RESERVED: RESERVED_1,
|
|
954
|
+
STRING: STRING_1,
|
|
955
|
+
getPropertyInfo: getPropertyInfo_1,
|
|
956
|
+
isCustomAttribute: isCustomAttribute_1,
|
|
957
|
+
possibleStandardNames: possibleStandardNames_1
|
|
958
|
+
}, '__esModule', {value: true});
|
|
959
|
+
|
|
960
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
961
|
+
|
|
962
|
+
function createCommonjsModule(fn) {
|
|
963
|
+
var module = { exports: {} };
|
|
964
|
+
return fn(module, module.exports), module.exports;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
// http://www.w3.org/TR/CSS21/grammar.html
|
|
968
|
+
// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
|
|
969
|
+
var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
|
|
970
|
+
|
|
971
|
+
var NEWLINE_REGEX = /\n/g;
|
|
972
|
+
var WHITESPACE_REGEX = /^\s*/;
|
|
973
|
+
|
|
974
|
+
// declaration
|
|
975
|
+
var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/;
|
|
976
|
+
var COLON_REGEX = /^:\s*/;
|
|
977
|
+
var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/;
|
|
978
|
+
var SEMICOLON_REGEX = /^[;\s]*/;
|
|
979
|
+
|
|
980
|
+
// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill
|
|
981
|
+
var TRIM_REGEX = /^\s+|\s+$/g;
|
|
982
|
+
|
|
983
|
+
// strings
|
|
984
|
+
var NEWLINE = '\n';
|
|
985
|
+
var FORWARD_SLASH = '/';
|
|
986
|
+
var ASTERISK = '*';
|
|
987
|
+
var EMPTY_STRING = '';
|
|
988
|
+
|
|
989
|
+
// types
|
|
990
|
+
var TYPE_COMMENT = 'comment';
|
|
991
|
+
var TYPE_DECLARATION = 'declaration';
|
|
992
|
+
|
|
993
|
+
/**
|
|
994
|
+
* @param {String} style
|
|
995
|
+
* @param {Object} [options]
|
|
996
|
+
* @return {Object[]}
|
|
997
|
+
* @throws {TypeError}
|
|
998
|
+
* @throws {Error}
|
|
999
|
+
*/
|
|
1000
|
+
var inlineStyleParser = function(style, options) {
|
|
1001
|
+
if (typeof style !== 'string') {
|
|
1002
|
+
throw new TypeError('First argument must be a string');
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
if (!style) return [];
|
|
1006
|
+
|
|
1007
|
+
options = options || {};
|
|
1008
|
+
|
|
1009
|
+
/**
|
|
1010
|
+
* Positional.
|
|
1011
|
+
*/
|
|
1012
|
+
var lineno = 1;
|
|
1013
|
+
var column = 1;
|
|
1014
|
+
|
|
1015
|
+
/**
|
|
1016
|
+
* Update lineno and column based on `str`.
|
|
1017
|
+
*
|
|
1018
|
+
* @param {String} str
|
|
1019
|
+
*/
|
|
1020
|
+
function updatePosition(str) {
|
|
1021
|
+
var lines = str.match(NEWLINE_REGEX);
|
|
1022
|
+
if (lines) lineno += lines.length;
|
|
1023
|
+
var i = str.lastIndexOf(NEWLINE);
|
|
1024
|
+
column = ~i ? str.length - i : column + str.length;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
/**
|
|
1028
|
+
* Mark position and patch `node.position`.
|
|
1029
|
+
*
|
|
1030
|
+
* @return {Function}
|
|
1031
|
+
*/
|
|
1032
|
+
function position() {
|
|
1033
|
+
var start = { line: lineno, column: column };
|
|
1034
|
+
return function(node) {
|
|
1035
|
+
node.position = new Position(start);
|
|
1036
|
+
whitespace();
|
|
1037
|
+
return node;
|
|
1038
|
+
};
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
/**
|
|
1042
|
+
* Store position information for a node.
|
|
1043
|
+
*
|
|
1044
|
+
* @constructor
|
|
1045
|
+
* @property {Object} start
|
|
1046
|
+
* @property {Object} end
|
|
1047
|
+
* @property {undefined|String} source
|
|
1048
|
+
*/
|
|
1049
|
+
function Position(start) {
|
|
1050
|
+
this.start = start;
|
|
1051
|
+
this.end = { line: lineno, column: column };
|
|
1052
|
+
this.source = options.source;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* Non-enumerable source string.
|
|
1057
|
+
*/
|
|
1058
|
+
Position.prototype.content = style;
|
|
1059
|
+
|
|
1060
|
+
/**
|
|
1061
|
+
* Error `msg`.
|
|
1062
|
+
*
|
|
1063
|
+
* @param {String} msg
|
|
1064
|
+
* @throws {Error}
|
|
1065
|
+
*/
|
|
1066
|
+
function error(msg) {
|
|
1067
|
+
var err = new Error(
|
|
1068
|
+
options.source + ':' + lineno + ':' + column + ': ' + msg
|
|
1069
|
+
);
|
|
1070
|
+
err.reason = msg;
|
|
1071
|
+
err.filename = options.source;
|
|
1072
|
+
err.line = lineno;
|
|
1073
|
+
err.column = column;
|
|
1074
|
+
err.source = style;
|
|
1075
|
+
|
|
1076
|
+
if (options.silent) ; else {
|
|
1077
|
+
throw err;
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/**
|
|
1082
|
+
* Match `re` and return captures.
|
|
1083
|
+
*
|
|
1084
|
+
* @param {RegExp} re
|
|
1085
|
+
* @return {undefined|Array}
|
|
1086
|
+
*/
|
|
1087
|
+
function match(re) {
|
|
1088
|
+
var m = re.exec(style);
|
|
1089
|
+
if (!m) return;
|
|
1090
|
+
var str = m[0];
|
|
1091
|
+
updatePosition(str);
|
|
1092
|
+
style = style.slice(str.length);
|
|
1093
|
+
return m;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
/**
|
|
1097
|
+
* Parse whitespace.
|
|
1098
|
+
*/
|
|
1099
|
+
function whitespace() {
|
|
1100
|
+
match(WHITESPACE_REGEX);
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
/**
|
|
1104
|
+
* Parse comments.
|
|
1105
|
+
*
|
|
1106
|
+
* @param {Object[]} [rules]
|
|
1107
|
+
* @return {Object[]}
|
|
1108
|
+
*/
|
|
1109
|
+
function comments(rules) {
|
|
1110
|
+
var c;
|
|
1111
|
+
rules = rules || [];
|
|
1112
|
+
while ((c = comment())) {
|
|
1113
|
+
if (c !== false) {
|
|
1114
|
+
rules.push(c);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
return rules;
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
/**
|
|
1121
|
+
* Parse comment.
|
|
1122
|
+
*
|
|
1123
|
+
* @return {Object}
|
|
1124
|
+
* @throws {Error}
|
|
1125
|
+
*/
|
|
1126
|
+
function comment() {
|
|
1127
|
+
var pos = position();
|
|
1128
|
+
if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;
|
|
1129
|
+
|
|
1130
|
+
var i = 2;
|
|
1131
|
+
while (
|
|
1132
|
+
EMPTY_STRING != style.charAt(i) &&
|
|
1133
|
+
(ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))
|
|
1134
|
+
) {
|
|
1135
|
+
++i;
|
|
1136
|
+
}
|
|
1137
|
+
i += 2;
|
|
1138
|
+
|
|
1139
|
+
if (EMPTY_STRING === style.charAt(i - 1)) {
|
|
1140
|
+
return error('End of comment missing');
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
var str = style.slice(2, i - 2);
|
|
1144
|
+
column += 2;
|
|
1145
|
+
updatePosition(str);
|
|
1146
|
+
style = style.slice(i);
|
|
1147
|
+
column += 2;
|
|
1148
|
+
|
|
1149
|
+
return pos({
|
|
1150
|
+
type: TYPE_COMMENT,
|
|
1151
|
+
comment: str
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
|
|
1155
|
+
/**
|
|
1156
|
+
* Parse declaration.
|
|
1157
|
+
*
|
|
1158
|
+
* @return {Object}
|
|
1159
|
+
* @throws {Error}
|
|
1160
|
+
*/
|
|
1161
|
+
function declaration() {
|
|
1162
|
+
var pos = position();
|
|
1163
|
+
|
|
1164
|
+
// prop
|
|
1165
|
+
var prop = match(PROPERTY_REGEX);
|
|
1166
|
+
if (!prop) return;
|
|
1167
|
+
comment();
|
|
1168
|
+
|
|
1169
|
+
// :
|
|
1170
|
+
if (!match(COLON_REGEX)) return error("property missing ':'");
|
|
1171
|
+
|
|
1172
|
+
// val
|
|
1173
|
+
var val = match(VALUE_REGEX);
|
|
1174
|
+
|
|
1175
|
+
var ret = pos({
|
|
1176
|
+
type: TYPE_DECLARATION,
|
|
1177
|
+
property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),
|
|
1178
|
+
value: val
|
|
1179
|
+
? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))
|
|
1180
|
+
: EMPTY_STRING
|
|
1181
|
+
});
|
|
1182
|
+
|
|
1183
|
+
// ;
|
|
1184
|
+
match(SEMICOLON_REGEX);
|
|
1185
|
+
|
|
1186
|
+
return ret;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
/**
|
|
1190
|
+
* Parse declarations.
|
|
1191
|
+
*
|
|
1192
|
+
* @return {Object[]}
|
|
1193
|
+
*/
|
|
1194
|
+
function declarations() {
|
|
1195
|
+
var decls = [];
|
|
1196
|
+
|
|
1197
|
+
comments(decls);
|
|
1198
|
+
|
|
1199
|
+
// declarations
|
|
1200
|
+
var decl;
|
|
1201
|
+
while ((decl = declaration())) {
|
|
1202
|
+
if (decl !== false) {
|
|
1203
|
+
decls.push(decl);
|
|
1204
|
+
comments(decls);
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
return decls;
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
whitespace();
|
|
1212
|
+
return declarations();
|
|
1213
|
+
};
|
|
1214
|
+
|
|
1215
|
+
/**
|
|
1216
|
+
* Trim `str`.
|
|
1217
|
+
*
|
|
1218
|
+
* @param {String} str
|
|
1219
|
+
* @return {String}
|
|
1220
|
+
*/
|
|
1221
|
+
function trim(str) {
|
|
1222
|
+
return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
/**
|
|
1226
|
+
* Parses inline style to object.
|
|
1227
|
+
*
|
|
1228
|
+
* @example
|
|
1229
|
+
* // returns { 'line-height': '42' }
|
|
1230
|
+
* StyleToObject('line-height: 42;');
|
|
1231
|
+
*
|
|
1232
|
+
* @param {String} style - The inline style.
|
|
1233
|
+
* @param {Function} [iterator] - The iterator function.
|
|
1234
|
+
* @return {null|Object}
|
|
1235
|
+
*/
|
|
1236
|
+
function StyleToObject(style, iterator) {
|
|
1237
|
+
var output = null;
|
|
1238
|
+
if (!style || typeof style !== 'string') {
|
|
1239
|
+
return output;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
var declaration;
|
|
1243
|
+
var declarations = inlineStyleParser(style);
|
|
1244
|
+
var hasIterator = typeof iterator === 'function';
|
|
1245
|
+
var property;
|
|
1246
|
+
var value;
|
|
1247
|
+
|
|
1248
|
+
for (var i = 0, len = declarations.length; i < len; i++) {
|
|
1249
|
+
declaration = declarations[i];
|
|
1250
|
+
property = declaration.property;
|
|
1251
|
+
value = declaration.value;
|
|
1252
|
+
|
|
1253
|
+
if (hasIterator) {
|
|
1254
|
+
iterator(property, value, declaration);
|
|
1255
|
+
} else if (value) {
|
|
1256
|
+
output || (output = {});
|
|
1257
|
+
output[property] = value;
|
|
1258
|
+
}
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
return output;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
var styleToObject = StyleToObject;
|
|
1265
|
+
|
|
1266
|
+
var utilities$2 = createCommonjsModule(function (module, exports) {
|
|
1267
|
+
exports.__esModule = true;
|
|
1268
|
+
exports.camelCase = void 0;
|
|
1269
|
+
var CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;
|
|
1270
|
+
var HYPHEN_REGEX = /-([a-z])/g;
|
|
1271
|
+
var NO_HYPHEN_REGEX = /^[^-]+$/;
|
|
1272
|
+
var VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;
|
|
1273
|
+
var skipCamelCase = function (property) {
|
|
1274
|
+
return !property ||
|
|
1275
|
+
NO_HYPHEN_REGEX.test(property) ||
|
|
1276
|
+
CUSTOM_PROPERTY_REGEX.test(property);
|
|
1277
|
+
};
|
|
1278
|
+
var capitalize = function (match, character) {
|
|
1279
|
+
return character.toUpperCase();
|
|
1280
|
+
};
|
|
1281
|
+
var trimHyphen = function (match, prefix) { return prefix + "-"; };
|
|
1282
|
+
var camelCase = function (property, options) {
|
|
1283
|
+
if (options === void 0) { options = {}; }
|
|
1284
|
+
if (skipCamelCase(property)) {
|
|
1285
|
+
return property;
|
|
1286
|
+
}
|
|
1287
|
+
property = property.toLowerCase();
|
|
1288
|
+
if (!options.reactCompat) {
|
|
1289
|
+
property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);
|
|
1290
|
+
}
|
|
1291
|
+
return property.replace(HYPHEN_REGEX, capitalize);
|
|
1292
|
+
};
|
|
1293
|
+
exports.camelCase = camelCase;
|
|
1294
|
+
});
|
|
1295
|
+
|
|
1296
|
+
var cjs = createCommonjsModule(function (module, exports) {
|
|
1297
|
+
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
1298
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1299
|
+
};
|
|
1300
|
+
exports.__esModule = true;
|
|
1301
|
+
var style_to_object_1 = __importDefault(styleToObject);
|
|
1302
|
+
|
|
1303
|
+
function StyleToJS(style, options) {
|
|
1304
|
+
var output = {};
|
|
1305
|
+
if (!style || typeof style !== 'string') {
|
|
1306
|
+
return output;
|
|
1307
|
+
}
|
|
1308
|
+
style_to_object_1["default"](style, function (property, value) {
|
|
1309
|
+
if (property && value) {
|
|
1310
|
+
output[utilities$2.camelCase(property, options)] = value;
|
|
1311
|
+
}
|
|
1312
|
+
});
|
|
1313
|
+
return output;
|
|
1314
|
+
}
|
|
1315
|
+
exports["default"] = StyleToJS;
|
|
1316
|
+
});
|
|
1317
|
+
|
|
1318
|
+
var styleToJS = cjs.default;
|
|
1319
|
+
|
|
1320
|
+
/**
|
|
1321
|
+
* Swap key with value in an object.
|
|
1322
|
+
*
|
|
1323
|
+
* @param {Object} obj - The object.
|
|
1324
|
+
* @param {Function} [override] - The override method.
|
|
1325
|
+
* @return {Object} - The inverted object.
|
|
1326
|
+
*/
|
|
1327
|
+
function invertObject(obj, override) {
|
|
1328
|
+
if (!obj || typeof obj !== 'object') {
|
|
1329
|
+
throw new TypeError('First argument must be an object');
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
var key;
|
|
1333
|
+
var value;
|
|
1334
|
+
var isOverridePresent = typeof override === 'function';
|
|
1335
|
+
var overrides = {};
|
|
1336
|
+
var result = {};
|
|
1337
|
+
|
|
1338
|
+
for (key in obj) {
|
|
1339
|
+
value = obj[key];
|
|
1340
|
+
|
|
1341
|
+
if (isOverridePresent) {
|
|
1342
|
+
overrides = override(key, value);
|
|
1343
|
+
if (overrides && overrides.length === 2) {
|
|
1344
|
+
result[overrides[0]] = overrides[1];
|
|
1345
|
+
continue;
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
if (typeof value === 'string') {
|
|
1350
|
+
result[value] = key;
|
|
1351
|
+
}
|
|
1352
|
+
}
|
|
1353
|
+
|
|
1354
|
+
return result;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
/**
|
|
1358
|
+
* Check if a given tag is a custom component.
|
|
1359
|
+
*
|
|
1360
|
+
* @see {@link https://github.com/facebook/react/blob/v16.6.3/packages/react-dom/src/shared/isCustomComponent.js}
|
|
1361
|
+
*
|
|
1362
|
+
* @param {string} tagName - The name of the html tag.
|
|
1363
|
+
* @param {Object} props - The props being passed to the element.
|
|
1364
|
+
* @return {boolean}
|
|
1365
|
+
*/
|
|
1366
|
+
function isCustomComponent(tagName, props) {
|
|
1367
|
+
if (tagName.indexOf('-') === -1) {
|
|
1368
|
+
return props && typeof props.is === 'string';
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1371
|
+
switch (tagName) {
|
|
1372
|
+
// These are reserved SVG and MathML elements.
|
|
1373
|
+
// We don't mind this whitelist too much because we expect it to never grow.
|
|
1374
|
+
// The alternative is to track the namespace in a few places which is convoluted.
|
|
1375
|
+
// https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
|
|
1376
|
+
case 'annotation-xml':
|
|
1377
|
+
case 'color-profile':
|
|
1378
|
+
case 'font-face':
|
|
1379
|
+
case 'font-face-src':
|
|
1380
|
+
case 'font-face-uri':
|
|
1381
|
+
case 'font-face-format':
|
|
1382
|
+
case 'font-face-name':
|
|
1383
|
+
case 'missing-glyph':
|
|
1384
|
+
return false;
|
|
1385
|
+
default:
|
|
1386
|
+
return true;
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
var styleToJSOptions = { reactCompat: true };
|
|
1391
|
+
|
|
1392
|
+
/**
|
|
1393
|
+
* Sets style prop.
|
|
1394
|
+
*
|
|
1395
|
+
* @param {null|undefined|string} style
|
|
1396
|
+
* @param {object} props
|
|
1397
|
+
*/
|
|
1398
|
+
function setStyleProp$1(style, props) {
|
|
1399
|
+
if (style === null || style === undefined) {
|
|
1400
|
+
return;
|
|
1401
|
+
}
|
|
1402
|
+
try {
|
|
1403
|
+
props.style = styleToJS(style, styleToJSOptions);
|
|
1404
|
+
} catch (err) {
|
|
1405
|
+
props.style = {};
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
|
|
1409
|
+
/**
|
|
1410
|
+
* @constant {boolean}
|
|
1411
|
+
* @see {@link https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html}
|
|
1412
|
+
*/
|
|
1413
|
+
var PRESERVE_CUSTOM_ATTRIBUTES = React__default["default"].version.split('.')[0] >= 16;
|
|
1414
|
+
|
|
1415
|
+
// Taken from
|
|
1416
|
+
// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-dom/src/client/validateDOMNesting.js#L213
|
|
1417
|
+
var elementsWithNoTextChildren = new Set([
|
|
1418
|
+
'tr',
|
|
1419
|
+
'tbody',
|
|
1420
|
+
'thead',
|
|
1421
|
+
'tfoot',
|
|
1422
|
+
'colgroup',
|
|
1423
|
+
'table',
|
|
1424
|
+
'head',
|
|
1425
|
+
'html',
|
|
1426
|
+
'frameset'
|
|
1427
|
+
]);
|
|
1428
|
+
|
|
1429
|
+
/**
|
|
1430
|
+
* Checks if the given node can contain text nodes
|
|
1431
|
+
*
|
|
1432
|
+
* @param {DomElement} node
|
|
1433
|
+
* @returns {boolean}
|
|
1434
|
+
*/
|
|
1435
|
+
function canTextBeChildOfNode$1(node) {
|
|
1436
|
+
return !elementsWithNoTextChildren.has(node.name);
|
|
1437
|
+
}
|
|
1438
|
+
|
|
1439
|
+
var utilities$1 = {
|
|
1440
|
+
PRESERVE_CUSTOM_ATTRIBUTES: PRESERVE_CUSTOM_ATTRIBUTES,
|
|
1441
|
+
invertObject: invertObject,
|
|
1442
|
+
isCustomComponent: isCustomComponent,
|
|
1443
|
+
setStyleProp: setStyleProp$1,
|
|
1444
|
+
canTextBeChildOfNode: canTextBeChildOfNode$1,
|
|
1445
|
+
elementsWithNoTextChildren: elementsWithNoTextChildren
|
|
1446
|
+
};
|
|
1447
|
+
|
|
1448
|
+
/**
|
|
1449
|
+
* Converts HTML/SVG DOM attributes to React props.
|
|
1450
|
+
*
|
|
1451
|
+
* @param {object} [attributes={}] - HTML/SVG DOM attributes.
|
|
1452
|
+
* @return {object} - React props.
|
|
1453
|
+
*/
|
|
1454
|
+
var attributesToProps = function attributesToProps(attributes) {
|
|
1455
|
+
attributes = attributes || {};
|
|
1456
|
+
|
|
1457
|
+
var valueOnlyInputs = {
|
|
1458
|
+
reset: true,
|
|
1459
|
+
submit: true
|
|
1460
|
+
};
|
|
1461
|
+
|
|
1462
|
+
var attributeName;
|
|
1463
|
+
var attributeNameLowerCased;
|
|
1464
|
+
var attributeValue;
|
|
1465
|
+
var propName;
|
|
1466
|
+
var propertyInfo;
|
|
1467
|
+
var props = {};
|
|
1468
|
+
var inputIsValueOnly = attributes.type && valueOnlyInputs[attributes.type];
|
|
1469
|
+
|
|
1470
|
+
for (attributeName in attributes) {
|
|
1471
|
+
attributeValue = attributes[attributeName];
|
|
1472
|
+
|
|
1473
|
+
// ARIA (aria-*) or custom data (data-*) attribute
|
|
1474
|
+
if (lib$2.isCustomAttribute(attributeName)) {
|
|
1475
|
+
props[attributeName] = attributeValue;
|
|
1476
|
+
continue;
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
// convert HTML/SVG attribute to React prop
|
|
1480
|
+
attributeNameLowerCased = attributeName.toLowerCase();
|
|
1481
|
+
propName = getPropName(attributeNameLowerCased);
|
|
1482
|
+
|
|
1483
|
+
if (propName) {
|
|
1484
|
+
propertyInfo = lib$2.getPropertyInfo(propName);
|
|
1485
|
+
|
|
1486
|
+
// convert attribute to uncontrolled component prop (e.g., `value` to `defaultValue`)
|
|
1487
|
+
// https://reactjs.org/docs/uncontrolled-components.html
|
|
1488
|
+
if (
|
|
1489
|
+
(propName === 'checked' || propName === 'value') &&
|
|
1490
|
+
!inputIsValueOnly
|
|
1491
|
+
) {
|
|
1492
|
+
propName = getPropName('default' + attributeNameLowerCased);
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
props[propName] = attributeValue;
|
|
1496
|
+
|
|
1497
|
+
switch (propertyInfo && propertyInfo.type) {
|
|
1498
|
+
case lib$2.BOOLEAN:
|
|
1499
|
+
props[propName] = true;
|
|
1500
|
+
break;
|
|
1501
|
+
case lib$2.OVERLOADED_BOOLEAN:
|
|
1502
|
+
if (attributeValue === '') {
|
|
1503
|
+
props[propName] = true;
|
|
1504
|
+
}
|
|
1505
|
+
break;
|
|
1506
|
+
}
|
|
1507
|
+
continue;
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
// preserve custom attribute if React >=16
|
|
1511
|
+
if (utilities$1.PRESERVE_CUSTOM_ATTRIBUTES) {
|
|
1512
|
+
props[attributeName] = attributeValue;
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
// transform inline style to object
|
|
1517
|
+
utilities$1.setStyleProp(attributes.style, props);
|
|
1518
|
+
|
|
1519
|
+
return props;
|
|
1520
|
+
};
|
|
1521
|
+
|
|
1522
|
+
/**
|
|
1523
|
+
* Gets prop name from lowercased attribute name.
|
|
1524
|
+
*
|
|
1525
|
+
* @param {string} attributeName - Lowercased attribute name.
|
|
1526
|
+
* @return {string}
|
|
1527
|
+
*/
|
|
1528
|
+
function getPropName(attributeName) {
|
|
1529
|
+
return lib$2.possibleStandardNames[attributeName];
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
var setStyleProp = utilities$1.setStyleProp;
|
|
1533
|
+
var canTextBeChildOfNode = utilities$1.canTextBeChildOfNode;
|
|
1534
|
+
|
|
1535
|
+
/**
|
|
1536
|
+
* Converts DOM nodes to JSX element(s).
|
|
1537
|
+
*
|
|
1538
|
+
* @param {DomElement[]} nodes - DOM nodes.
|
|
1539
|
+
* @param {object} [options={}] - Options.
|
|
1540
|
+
* @param {Function} [options.replace] - Replacer.
|
|
1541
|
+
* @param {object} [options.library] - Library (React/Preact/etc.).
|
|
1542
|
+
* @return {string|JSX.Element|JSX.Element[]}
|
|
1543
|
+
*/
|
|
1544
|
+
function domToReact(nodes, options) {
|
|
1545
|
+
options = options || {};
|
|
1546
|
+
|
|
1547
|
+
var library = options.library || React__default["default"];
|
|
1548
|
+
var cloneElement = library.cloneElement;
|
|
1549
|
+
var createElement = library.createElement;
|
|
1550
|
+
var isValidElement = library.isValidElement;
|
|
1551
|
+
|
|
1552
|
+
var result = [];
|
|
1553
|
+
var node;
|
|
1554
|
+
var isWhitespace;
|
|
1555
|
+
var hasReplace = typeof options.replace === 'function';
|
|
1556
|
+
var replaceElement;
|
|
1557
|
+
var props;
|
|
1558
|
+
var children;
|
|
1559
|
+
var trim = options.trim;
|
|
1560
|
+
|
|
1561
|
+
for (var i = 0, len = nodes.length; i < len; i++) {
|
|
1562
|
+
node = nodes[i];
|
|
1563
|
+
|
|
1564
|
+
// replace with custom React element (if present)
|
|
1565
|
+
if (hasReplace) {
|
|
1566
|
+
replaceElement = options.replace(node);
|
|
1567
|
+
|
|
1568
|
+
if (isValidElement(replaceElement)) {
|
|
1569
|
+
// set "key" prop for sibling elements
|
|
1570
|
+
// https://fb.me/react-warning-keys
|
|
1571
|
+
if (len > 1) {
|
|
1572
|
+
replaceElement = cloneElement(replaceElement, {
|
|
1573
|
+
key: replaceElement.key || i
|
|
1574
|
+
});
|
|
1575
|
+
}
|
|
1576
|
+
result.push(replaceElement);
|
|
1577
|
+
continue;
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
if (node.type === 'text') {
|
|
1582
|
+
isWhitespace = !node.data.trim().length;
|
|
1583
|
+
|
|
1584
|
+
if (isWhitespace && node.parent && !canTextBeChildOfNode(node.parent)) {
|
|
1585
|
+
// We have a whitespace node that can't be nested in its parent
|
|
1586
|
+
// so skip it
|
|
1587
|
+
continue;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1590
|
+
if (trim && isWhitespace) {
|
|
1591
|
+
// Trim is enabled and we have a whitespace node
|
|
1592
|
+
// so skip it
|
|
1593
|
+
continue;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
// We have a text node that's not whitespace and it can be nested
|
|
1597
|
+
// in its parent so add it to the results
|
|
1598
|
+
result.push(node.data);
|
|
1599
|
+
continue;
|
|
1600
|
+
}
|
|
1601
|
+
|
|
1602
|
+
props = node.attribs;
|
|
1603
|
+
if (skipAttributesToProps(node)) {
|
|
1604
|
+
setStyleProp(props.style, props);
|
|
1605
|
+
} else if (props) {
|
|
1606
|
+
props = attributesToProps(props);
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
children = null;
|
|
1610
|
+
|
|
1611
|
+
switch (node.type) {
|
|
1612
|
+
case 'script':
|
|
1613
|
+
case 'style':
|
|
1614
|
+
// prevent text in <script> or <style> from being escaped
|
|
1615
|
+
// https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml
|
|
1616
|
+
if (node.children[0]) {
|
|
1617
|
+
props.dangerouslySetInnerHTML = {
|
|
1618
|
+
__html: node.children[0].data
|
|
1619
|
+
};
|
|
1620
|
+
}
|
|
1621
|
+
break;
|
|
1622
|
+
|
|
1623
|
+
case 'tag':
|
|
1624
|
+
// setting textarea value in children is an antipattern in React
|
|
1625
|
+
// https://reactjs.org/docs/forms.html#the-textarea-tag
|
|
1626
|
+
if (node.name === 'textarea' && node.children[0]) {
|
|
1627
|
+
props.defaultValue = node.children[0].data;
|
|
1628
|
+
} else if (node.children && node.children.length) {
|
|
1629
|
+
// continue recursion of creating React elements (if applicable)
|
|
1630
|
+
children = domToReact(node.children, options);
|
|
1631
|
+
}
|
|
1632
|
+
break;
|
|
1633
|
+
|
|
1634
|
+
// skip all other cases (e.g., comment)
|
|
1635
|
+
default:
|
|
1636
|
+
continue;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
// set "key" prop for sibling elements
|
|
1640
|
+
// https://fb.me/react-warning-keys
|
|
1641
|
+
if (len > 1) {
|
|
1642
|
+
props.key = i;
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1645
|
+
result.push(createElement(node.name, props, children));
|
|
1646
|
+
}
|
|
1647
|
+
|
|
1648
|
+
return result.length === 1 ? result[0] : result;
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
/**
|
|
1652
|
+
* Determines whether DOM element attributes should be transformed to props.
|
|
1653
|
+
* Web Components should not have their attributes transformed except for `style`.
|
|
1654
|
+
*
|
|
1655
|
+
* @param {DomElement} node
|
|
1656
|
+
* @return {boolean}
|
|
1657
|
+
*/
|
|
1658
|
+
function skipAttributesToProps(node) {
|
|
1659
|
+
return (
|
|
1660
|
+
utilities$1.PRESERVE_CUSTOM_ATTRIBUTES &&
|
|
1661
|
+
node.type === 'tag' &&
|
|
1662
|
+
utilities$1.isCustomComponent(node.name, node.attribs)
|
|
1663
|
+
);
|
|
1664
|
+
}
|
|
1665
|
+
|
|
1666
|
+
var domToReact_1 = domToReact;
|
|
1667
|
+
|
|
1668
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
1669
|
+
|
|
1670
|
+
var decodeMap = new Map([
|
|
1671
|
+
[0, 65533],
|
|
1672
|
+
[128, 8364],
|
|
1673
|
+
[130, 8218],
|
|
1674
|
+
[131, 402],
|
|
1675
|
+
[132, 8222],
|
|
1676
|
+
[133, 8230],
|
|
1677
|
+
[134, 8224],
|
|
1678
|
+
[135, 8225],
|
|
1679
|
+
[136, 710],
|
|
1680
|
+
[137, 8240],
|
|
1681
|
+
[138, 352],
|
|
1682
|
+
[139, 8249],
|
|
1683
|
+
[140, 338],
|
|
1684
|
+
[142, 381],
|
|
1685
|
+
[145, 8216],
|
|
1686
|
+
[146, 8217],
|
|
1687
|
+
[147, 8220],
|
|
1688
|
+
[148, 8221],
|
|
1689
|
+
[149, 8226],
|
|
1690
|
+
[150, 8211],
|
|
1691
|
+
[151, 8212],
|
|
1692
|
+
[152, 732],
|
|
1693
|
+
[153, 8482],
|
|
1694
|
+
[154, 353],
|
|
1695
|
+
[155, 8250],
|
|
1696
|
+
[156, 339],
|
|
1697
|
+
[158, 382],
|
|
1698
|
+
[159, 376],
|
|
1699
|
+
]);
|
|
1700
|
+
var fromCodePoint =
|
|
1701
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
1702
|
+
String.fromCodePoint ||
|
|
1703
|
+
function (codePoint) {
|
|
1704
|
+
var output = "";
|
|
1705
|
+
if (codePoint > 0xffff) {
|
|
1706
|
+
codePoint -= 0x10000;
|
|
1707
|
+
output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
|
|
1708
|
+
codePoint = 0xdc00 | (codePoint & 0x3ff);
|
|
1709
|
+
}
|
|
1710
|
+
output += String.fromCharCode(codePoint);
|
|
1711
|
+
return output;
|
|
1712
|
+
};
|
|
1713
|
+
function decodeCodePoint(codePoint) {
|
|
1714
|
+
var _a;
|
|
1715
|
+
if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
1716
|
+
return "\uFFFD";
|
|
1717
|
+
}
|
|
1718
|
+
return fromCodePoint((_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint);
|
|
1719
|
+
}
|
|
1720
|
+
var _default$4 = decodeCodePoint;
|
|
1721
|
+
|
|
1722
|
+
var decode_codepoint = /*#__PURE__*/Object.defineProperty({
|
|
1723
|
+
default: _default$4
|
|
1724
|
+
}, '__esModule', {value: true});
|
|
1725
|
+
|
|
1726
|
+
// Generated using scripts/write-decode-map.ts
|
|
1727
|
+
// prettier-ignore
|
|
1728
|
+
var _default$3 = new Uint16Array([14866, 60, 237, 340, 721, 1312, 1562, 1654, 1838, 1957, 2183, 2239, 2301, 2958, 3037, 3893, 4123, 4298, 4330, 4801, 5191, 5395, 5752, 5903, 5943, 5972, 6050, 0, 0, 0, 0, 0, 0, 6135, 6565, 7422, 8183, 8738, 9242, 9503, 9938, 10189, 10573, 10637, 10715, 11950, 12246, 13539, 13950, 14445, 14533, 15364, 16514, 16980, 17390, 17763, 17849, 18036, 18125, 4096, 69, 77, 97, 98, 99, 102, 103, 108, 109, 110, 111, 112, 114, 115, 116, 117, 92, 100, 106, 115, 122, 137, 142, 151, 157, 163, 167, 182, 196, 204, 220, 229, 108, 105, 103, 33024, 198, 59, 32768, 198, 80, 33024, 38, 59, 32768, 38, 99, 117, 116, 101, 33024, 193, 59, 32768, 193, 114, 101, 118, 101, 59, 32768, 258, 512, 105, 121, 127, 134, 114, 99, 33024, 194, 59, 32768, 194, 59, 32768, 1040, 114, 59, 32896, 55349, 56580, 114, 97, 118, 101, 33024, 192, 59, 32768, 192, 112, 104, 97, 59, 32768, 913, 97, 99, 114, 59, 32768, 256, 100, 59, 32768, 10835, 512, 103, 112, 172, 177, 111, 110, 59, 32768, 260, 102, 59, 32896, 55349, 56632, 112, 108, 121, 70, 117, 110, 99, 116, 105, 111, 110, 59, 32768, 8289, 105, 110, 103, 33024, 197, 59, 32768, 197, 512, 99, 115, 209, 214, 114, 59, 32896, 55349, 56476, 105, 103, 110, 59, 32768, 8788, 105, 108, 100, 101, 33024, 195, 59, 32768, 195, 109, 108, 33024, 196, 59, 32768, 196, 2048, 97, 99, 101, 102, 111, 114, 115, 117, 253, 278, 282, 310, 315, 321, 327, 332, 512, 99, 114, 258, 267, 107, 115, 108, 97, 115, 104, 59, 32768, 8726, 583, 271, 274, 59, 32768, 10983, 101, 100, 59, 32768, 8966, 121, 59, 32768, 1041, 768, 99, 114, 116, 289, 296, 306, 97, 117, 115, 101, 59, 32768, 8757, 110, 111, 117, 108, 108, 105, 115, 59, 32768, 8492, 97, 59, 32768, 914, 114, 59, 32896, 55349, 56581, 112, 102, 59, 32896, 55349, 56633, 101, 118, 101, 59, 32768, 728, 99, 114, 59, 32768, 8492, 109, 112, 101, 113, 59, 32768, 8782, 3584, 72, 79, 97, 99, 100, 101, 102, 104, 105, 108, 111, 114, 115, 117, 368, 373, 380, 426, 461, 466, 487, 491, 495, 533, 593, 695, 701, 707, 99, 121, 59, 32768, 1063, 80, 89, 33024, 169, 59, 32768, 169, 768, 99, 112, 121, 387, 393, 419, 117, 116, 101, 59, 32768, 262, 512, 59, 105, 398, 400, 32768, 8914, 116, 97, 108, 68, 105, 102, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8517, 108, 101, 121, 115, 59, 32768, 8493, 1024, 97, 101, 105, 111, 435, 441, 449, 454, 114, 111, 110, 59, 32768, 268, 100, 105, 108, 33024, 199, 59, 32768, 199, 114, 99, 59, 32768, 264, 110, 105, 110, 116, 59, 32768, 8752, 111, 116, 59, 32768, 266, 512, 100, 110, 471, 478, 105, 108, 108, 97, 59, 32768, 184, 116, 101, 114, 68, 111, 116, 59, 32768, 183, 114, 59, 32768, 8493, 105, 59, 32768, 935, 114, 99, 108, 101, 1024, 68, 77, 80, 84, 508, 513, 520, 526, 111, 116, 59, 32768, 8857, 105, 110, 117, 115, 59, 32768, 8854, 108, 117, 115, 59, 32768, 8853, 105, 109, 101, 115, 59, 32768, 8855, 111, 512, 99, 115, 539, 562, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8754, 101, 67, 117, 114, 108, 121, 512, 68, 81, 573, 586, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8221, 117, 111, 116, 101, 59, 32768, 8217, 1024, 108, 110, 112, 117, 602, 614, 648, 664, 111, 110, 512, 59, 101, 609, 611, 32768, 8759, 59, 32768, 10868, 768, 103, 105, 116, 621, 629, 634, 114, 117, 101, 110, 116, 59, 32768, 8801, 110, 116, 59, 32768, 8751, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8750, 512, 102, 114, 653, 656, 59, 32768, 8450, 111, 100, 117, 99, 116, 59, 32768, 8720, 110, 116, 101, 114, 67, 108, 111, 99, 107, 119, 105, 115, 101, 67, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8755, 111, 115, 115, 59, 32768, 10799, 99, 114, 59, 32896, 55349, 56478, 112, 512, 59, 67, 713, 715, 32768, 8915, 97, 112, 59, 32768, 8781, 2816, 68, 74, 83, 90, 97, 99, 101, 102, 105, 111, 115, 743, 758, 763, 768, 773, 795, 809, 821, 826, 910, 1295, 512, 59, 111, 748, 750, 32768, 8517, 116, 114, 97, 104, 100, 59, 32768, 10513, 99, 121, 59, 32768, 1026, 99, 121, 59, 32768, 1029, 99, 121, 59, 32768, 1039, 768, 103, 114, 115, 780, 786, 790, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8609, 104, 118, 59, 32768, 10980, 512, 97, 121, 800, 806, 114, 111, 110, 59, 32768, 270, 59, 32768, 1044, 108, 512, 59, 116, 815, 817, 32768, 8711, 97, 59, 32768, 916, 114, 59, 32896, 55349, 56583, 512, 97, 102, 831, 897, 512, 99, 109, 836, 891, 114, 105, 116, 105, 99, 97, 108, 1024, 65, 68, 71, 84, 852, 859, 877, 884, 99, 117, 116, 101, 59, 32768, 180, 111, 581, 864, 867, 59, 32768, 729, 98, 108, 101, 65, 99, 117, 116, 101, 59, 32768, 733, 114, 97, 118, 101, 59, 32768, 96, 105, 108, 100, 101, 59, 32768, 732, 111, 110, 100, 59, 32768, 8900, 102, 101, 114, 101, 110, 116, 105, 97, 108, 68, 59, 32768, 8518, 2113, 920, 0, 0, 0, 925, 946, 0, 1139, 102, 59, 32896, 55349, 56635, 768, 59, 68, 69, 931, 933, 938, 32768, 168, 111, 116, 59, 32768, 8412, 113, 117, 97, 108, 59, 32768, 8784, 98, 108, 101, 1536, 67, 68, 76, 82, 85, 86, 961, 978, 996, 1080, 1101, 1125, 111, 110, 116, 111, 117, 114, 73, 110, 116, 101, 103, 114, 97, 108, 59, 32768, 8751, 111, 1093, 985, 0, 0, 988, 59, 32768, 168, 110, 65, 114, 114, 111, 119, 59, 32768, 8659, 512, 101, 111, 1001, 1034, 102, 116, 768, 65, 82, 84, 1010, 1017, 1029, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8660, 101, 101, 59, 32768, 10980, 110, 103, 512, 76, 82, 1041, 1068, 101, 102, 116, 512, 65, 82, 1049, 1056, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10233, 105, 103, 104, 116, 512, 65, 84, 1089, 1096, 114, 114, 111, 119, 59, 32768, 8658, 101, 101, 59, 32768, 8872, 112, 1042, 1108, 0, 0, 1115, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8741, 110, 1536, 65, 66, 76, 82, 84, 97, 1152, 1179, 1186, 1236, 1272, 1288, 114, 114, 111, 119, 768, 59, 66, 85, 1163, 1165, 1170, 32768, 8595, 97, 114, 59, 32768, 10515, 112, 65, 114, 114, 111, 119, 59, 32768, 8693, 114, 101, 118, 101, 59, 32768, 785, 101, 102, 116, 1315, 1196, 0, 1209, 0, 1220, 105, 103, 104, 116, 86, 101, 99, 116, 111, 114, 59, 32768, 10576, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10590, 101, 99, 116, 111, 114, 512, 59, 66, 1229, 1231, 32768, 8637, 97, 114, 59, 32768, 10582, 105, 103, 104, 116, 805, 1245, 0, 1256, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10591, 101, 99, 116, 111, 114, 512, 59, 66, 1265, 1267, 32768, 8641, 97, 114, 59, 32768, 10583, 101, 101, 512, 59, 65, 1279, 1281, 32768, 8868, 114, 114, 111, 119, 59, 32768, 8615, 114, 114, 111, 119, 59, 32768, 8659, 512, 99, 116, 1300, 1305, 114, 59, 32896, 55349, 56479, 114, 111, 107, 59, 32768, 272, 4096, 78, 84, 97, 99, 100, 102, 103, 108, 109, 111, 112, 113, 115, 116, 117, 120, 1344, 1348, 1354, 1363, 1386, 1391, 1396, 1405, 1413, 1460, 1475, 1483, 1514, 1527, 1531, 1538, 71, 59, 32768, 330, 72, 33024, 208, 59, 32768, 208, 99, 117, 116, 101, 33024, 201, 59, 32768, 201, 768, 97, 105, 121, 1370, 1376, 1383, 114, 111, 110, 59, 32768, 282, 114, 99, 33024, 202, 59, 32768, 202, 59, 32768, 1069, 111, 116, 59, 32768, 278, 114, 59, 32896, 55349, 56584, 114, 97, 118, 101, 33024, 200, 59, 32768, 200, 101, 109, 101, 110, 116, 59, 32768, 8712, 512, 97, 112, 1418, 1423, 99, 114, 59, 32768, 274, 116, 121, 1060, 1431, 0, 0, 1444, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9723, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9643, 512, 103, 112, 1465, 1470, 111, 110, 59, 32768, 280, 102, 59, 32896, 55349, 56636, 115, 105, 108, 111, 110, 59, 32768, 917, 117, 512, 97, 105, 1489, 1504, 108, 512, 59, 84, 1495, 1497, 32768, 10869, 105, 108, 100, 101, 59, 32768, 8770, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8652, 512, 99, 105, 1519, 1523, 114, 59, 32768, 8496, 109, 59, 32768, 10867, 97, 59, 32768, 919, 109, 108, 33024, 203, 59, 32768, 203, 512, 105, 112, 1543, 1549, 115, 116, 115, 59, 32768, 8707, 111, 110, 101, 110, 116, 105, 97, 108, 69, 59, 32768, 8519, 1280, 99, 102, 105, 111, 115, 1572, 1576, 1581, 1620, 1648, 121, 59, 32768, 1060, 114, 59, 32896, 55349, 56585, 108, 108, 101, 100, 1060, 1591, 0, 0, 1604, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9724, 101, 114, 121, 83, 109, 97, 108, 108, 83, 113, 117, 97, 114, 101, 59, 32768, 9642, 1601, 1628, 0, 1633, 0, 0, 1639, 102, 59, 32896, 55349, 56637, 65, 108, 108, 59, 32768, 8704, 114, 105, 101, 114, 116, 114, 102, 59, 32768, 8497, 99, 114, 59, 32768, 8497, 3072, 74, 84, 97, 98, 99, 100, 102, 103, 111, 114, 115, 116, 1678, 1683, 1688, 1701, 1708, 1729, 1734, 1739, 1742, 1748, 1828, 1834, 99, 121, 59, 32768, 1027, 33024, 62, 59, 32768, 62, 109, 109, 97, 512, 59, 100, 1696, 1698, 32768, 915, 59, 32768, 988, 114, 101, 118, 101, 59, 32768, 286, 768, 101, 105, 121, 1715, 1721, 1726, 100, 105, 108, 59, 32768, 290, 114, 99, 59, 32768, 284, 59, 32768, 1043, 111, 116, 59, 32768, 288, 114, 59, 32896, 55349, 56586, 59, 32768, 8921, 112, 102, 59, 32896, 55349, 56638, 101, 97, 116, 101, 114, 1536, 69, 70, 71, 76, 83, 84, 1766, 1783, 1794, 1803, 1809, 1821, 113, 117, 97, 108, 512, 59, 76, 1775, 1777, 32768, 8805, 101, 115, 115, 59, 32768, 8923, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8807, 114, 101, 97, 116, 101, 114, 59, 32768, 10914, 101, 115, 115, 59, 32768, 8823, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10878, 105, 108, 100, 101, 59, 32768, 8819, 99, 114, 59, 32896, 55349, 56482, 59, 32768, 8811, 2048, 65, 97, 99, 102, 105, 111, 115, 117, 1854, 1861, 1874, 1880, 1884, 1897, 1919, 1934, 82, 68, 99, 121, 59, 32768, 1066, 512, 99, 116, 1866, 1871, 101, 107, 59, 32768, 711, 59, 32768, 94, 105, 114, 99, 59, 32768, 292, 114, 59, 32768, 8460, 108, 98, 101, 114, 116, 83, 112, 97, 99, 101, 59, 32768, 8459, 833, 1902, 0, 1906, 102, 59, 32768, 8461, 105, 122, 111, 110, 116, 97, 108, 76, 105, 110, 101, 59, 32768, 9472, 512, 99, 116, 1924, 1928, 114, 59, 32768, 8459, 114, 111, 107, 59, 32768, 294, 109, 112, 533, 1940, 1950, 111, 119, 110, 72, 117, 109, 112, 59, 32768, 8782, 113, 117, 97, 108, 59, 32768, 8783, 3584, 69, 74, 79, 97, 99, 100, 102, 103, 109, 110, 111, 115, 116, 117, 1985, 1990, 1996, 2001, 2010, 2025, 2030, 2034, 2043, 2077, 2134, 2155, 2160, 2167, 99, 121, 59, 32768, 1045, 108, 105, 103, 59, 32768, 306, 99, 121, 59, 32768, 1025, 99, 117, 116, 101, 33024, 205, 59, 32768, 205, 512, 105, 121, 2015, 2022, 114, 99, 33024, 206, 59, 32768, 206, 59, 32768, 1048, 111, 116, 59, 32768, 304, 114, 59, 32768, 8465, 114, 97, 118, 101, 33024, 204, 59, 32768, 204, 768, 59, 97, 112, 2050, 2052, 2070, 32768, 8465, 512, 99, 103, 2057, 2061, 114, 59, 32768, 298, 105, 110, 97, 114, 121, 73, 59, 32768, 8520, 108, 105, 101, 115, 59, 32768, 8658, 837, 2082, 0, 2110, 512, 59, 101, 2086, 2088, 32768, 8748, 512, 103, 114, 2093, 2099, 114, 97, 108, 59, 32768, 8747, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8898, 105, 115, 105, 98, 108, 101, 512, 67, 84, 2120, 2127, 111, 109, 109, 97, 59, 32768, 8291, 105, 109, 101, 115, 59, 32768, 8290, 768, 103, 112, 116, 2141, 2146, 2151, 111, 110, 59, 32768, 302, 102, 59, 32896, 55349, 56640, 97, 59, 32768, 921, 99, 114, 59, 32768, 8464, 105, 108, 100, 101, 59, 32768, 296, 828, 2172, 0, 2177, 99, 121, 59, 32768, 1030, 108, 33024, 207, 59, 32768, 207, 1280, 99, 102, 111, 115, 117, 2193, 2206, 2211, 2217, 2232, 512, 105, 121, 2198, 2203, 114, 99, 59, 32768, 308, 59, 32768, 1049, 114, 59, 32896, 55349, 56589, 112, 102, 59, 32896, 55349, 56641, 820, 2222, 0, 2227, 114, 59, 32896, 55349, 56485, 114, 99, 121, 59, 32768, 1032, 107, 99, 121, 59, 32768, 1028, 1792, 72, 74, 97, 99, 102, 111, 115, 2253, 2258, 2263, 2269, 2283, 2288, 2294, 99, 121, 59, 32768, 1061, 99, 121, 59, 32768, 1036, 112, 112, 97, 59, 32768, 922, 512, 101, 121, 2274, 2280, 100, 105, 108, 59, 32768, 310, 59, 32768, 1050, 114, 59, 32896, 55349, 56590, 112, 102, 59, 32896, 55349, 56642, 99, 114, 59, 32896, 55349, 56486, 2816, 74, 84, 97, 99, 101, 102, 108, 109, 111, 115, 116, 2323, 2328, 2333, 2374, 2396, 2775, 2780, 2797, 2804, 2934, 2954, 99, 121, 59, 32768, 1033, 33024, 60, 59, 32768, 60, 1280, 99, 109, 110, 112, 114, 2344, 2350, 2356, 2360, 2370, 117, 116, 101, 59, 32768, 313, 98, 100, 97, 59, 32768, 923, 103, 59, 32768, 10218, 108, 97, 99, 101, 116, 114, 102, 59, 32768, 8466, 114, 59, 32768, 8606, 768, 97, 101, 121, 2381, 2387, 2393, 114, 111, 110, 59, 32768, 317, 100, 105, 108, 59, 32768, 315, 59, 32768, 1051, 512, 102, 115, 2401, 2702, 116, 2560, 65, 67, 68, 70, 82, 84, 85, 86, 97, 114, 2423, 2470, 2479, 2530, 2537, 2561, 2618, 2666, 2683, 2690, 512, 110, 114, 2428, 2441, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10216, 114, 111, 119, 768, 59, 66, 82, 2451, 2453, 2458, 32768, 8592, 97, 114, 59, 32768, 8676, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8646, 101, 105, 108, 105, 110, 103, 59, 32768, 8968, 111, 838, 2485, 0, 2498, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10214, 110, 805, 2503, 0, 2514, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10593, 101, 99, 116, 111, 114, 512, 59, 66, 2523, 2525, 32768, 8643, 97, 114, 59, 32768, 10585, 108, 111, 111, 114, 59, 32768, 8970, 105, 103, 104, 116, 512, 65, 86, 2546, 2553, 114, 114, 111, 119, 59, 32768, 8596, 101, 99, 116, 111, 114, 59, 32768, 10574, 512, 101, 114, 2566, 2591, 101, 768, 59, 65, 86, 2574, 2576, 2583, 32768, 8867, 114, 114, 111, 119, 59, 32768, 8612, 101, 99, 116, 111, 114, 59, 32768, 10586, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 2604, 2606, 2611, 32768, 8882, 97, 114, 59, 32768, 10703, 113, 117, 97, 108, 59, 32768, 8884, 112, 768, 68, 84, 86, 2626, 2638, 2649, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10577, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10592, 101, 99, 116, 111, 114, 512, 59, 66, 2659, 2661, 32768, 8639, 97, 114, 59, 32768, 10584, 101, 99, 116, 111, 114, 512, 59, 66, 2676, 2678, 32768, 8636, 97, 114, 59, 32768, 10578, 114, 114, 111, 119, 59, 32768, 8656, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8660, 115, 1536, 69, 70, 71, 76, 83, 84, 2716, 2730, 2741, 2750, 2756, 2768, 113, 117, 97, 108, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8922, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8806, 114, 101, 97, 116, 101, 114, 59, 32768, 8822, 101, 115, 115, 59, 32768, 10913, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 10877, 105, 108, 100, 101, 59, 32768, 8818, 114, 59, 32896, 55349, 56591, 512, 59, 101, 2785, 2787, 32768, 8920, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8666, 105, 100, 111, 116, 59, 32768, 319, 768, 110, 112, 119, 2811, 2899, 2904, 103, 1024, 76, 82, 108, 114, 2821, 2848, 2860, 2887, 101, 102, 116, 512, 65, 82, 2829, 2836, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10231, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 10230, 101, 102, 116, 512, 97, 114, 2868, 2875, 114, 114, 111, 119, 59, 32768, 10232, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10234, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10233, 102, 59, 32896, 55349, 56643, 101, 114, 512, 76, 82, 2911, 2922, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8601, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8600, 768, 99, 104, 116, 2941, 2945, 2948, 114, 59, 32768, 8466, 59, 32768, 8624, 114, 111, 107, 59, 32768, 321, 59, 32768, 8810, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 2974, 2978, 2982, 3007, 3012, 3022, 3028, 3033, 112, 59, 32768, 10501, 121, 59, 32768, 1052, 512, 100, 108, 2987, 2998, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8287, 108, 105, 110, 116, 114, 102, 59, 32768, 8499, 114, 59, 32896, 55349, 56592, 110, 117, 115, 80, 108, 117, 115, 59, 32768, 8723, 112, 102, 59, 32896, 55349, 56644, 99, 114, 59, 32768, 8499, 59, 32768, 924, 2304, 74, 97, 99, 101, 102, 111, 115, 116, 117, 3055, 3060, 3067, 3089, 3201, 3206, 3874, 3880, 3889, 99, 121, 59, 32768, 1034, 99, 117, 116, 101, 59, 32768, 323, 768, 97, 101, 121, 3074, 3080, 3086, 114, 111, 110, 59, 32768, 327, 100, 105, 108, 59, 32768, 325, 59, 32768, 1053, 768, 103, 115, 119, 3096, 3160, 3194, 97, 116, 105, 118, 101, 768, 77, 84, 86, 3108, 3121, 3145, 101, 100, 105, 117, 109, 83, 112, 97, 99, 101, 59, 32768, 8203, 104, 105, 512, 99, 110, 3128, 3137, 107, 83, 112, 97, 99, 101, 59, 32768, 8203, 83, 112, 97, 99, 101, 59, 32768, 8203, 101, 114, 121, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8203, 116, 101, 100, 512, 71, 76, 3168, 3184, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32768, 8811, 101, 115, 115, 76, 101, 115, 115, 59, 32768, 8810, 76, 105, 110, 101, 59, 32768, 10, 114, 59, 32896, 55349, 56593, 1024, 66, 110, 112, 116, 3215, 3222, 3238, 3242, 114, 101, 97, 107, 59, 32768, 8288, 66, 114, 101, 97, 107, 105, 110, 103, 83, 112, 97, 99, 101, 59, 32768, 160, 102, 59, 32768, 8469, 3328, 59, 67, 68, 69, 71, 72, 76, 78, 80, 82, 83, 84, 86, 3269, 3271, 3293, 3312, 3352, 3430, 3455, 3551, 3589, 3625, 3678, 3821, 3861, 32768, 10988, 512, 111, 117, 3276, 3286, 110, 103, 114, 117, 101, 110, 116, 59, 32768, 8802, 112, 67, 97, 112, 59, 32768, 8813, 111, 117, 98, 108, 101, 86, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8742, 768, 108, 113, 120, 3319, 3327, 3345, 101, 109, 101, 110, 116, 59, 32768, 8713, 117, 97, 108, 512, 59, 84, 3335, 3337, 32768, 8800, 105, 108, 100, 101, 59, 32896, 8770, 824, 105, 115, 116, 115, 59, 32768, 8708, 114, 101, 97, 116, 101, 114, 1792, 59, 69, 70, 71, 76, 83, 84, 3373, 3375, 3382, 3394, 3404, 3410, 3423, 32768, 8815, 113, 117, 97, 108, 59, 32768, 8817, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32896, 8807, 824, 114, 101, 97, 116, 101, 114, 59, 32896, 8811, 824, 101, 115, 115, 59, 32768, 8825, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10878, 824, 105, 108, 100, 101, 59, 32768, 8821, 117, 109, 112, 533, 3437, 3448, 111, 119, 110, 72, 117, 109, 112, 59, 32896, 8782, 824, 113, 117, 97, 108, 59, 32896, 8783, 824, 101, 512, 102, 115, 3461, 3492, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3477, 3479, 3485, 32768, 8938, 97, 114, 59, 32896, 10703, 824, 113, 117, 97, 108, 59, 32768, 8940, 115, 1536, 59, 69, 71, 76, 83, 84, 3506, 3508, 3515, 3524, 3531, 3544, 32768, 8814, 113, 117, 97, 108, 59, 32768, 8816, 114, 101, 97, 116, 101, 114, 59, 32768, 8824, 101, 115, 115, 59, 32896, 8810, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32896, 10877, 824, 105, 108, 100, 101, 59, 32768, 8820, 101, 115, 116, 101, 100, 512, 71, 76, 3561, 3578, 114, 101, 97, 116, 101, 114, 71, 114, 101, 97, 116, 101, 114, 59, 32896, 10914, 824, 101, 115, 115, 76, 101, 115, 115, 59, 32896, 10913, 824, 114, 101, 99, 101, 100, 101, 115, 768, 59, 69, 83, 3603, 3605, 3613, 32768, 8832, 113, 117, 97, 108, 59, 32896, 10927, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8928, 512, 101, 105, 3630, 3645, 118, 101, 114, 115, 101, 69, 108, 101, 109, 101, 110, 116, 59, 32768, 8716, 103, 104, 116, 84, 114, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 3663, 3665, 3671, 32768, 8939, 97, 114, 59, 32896, 10704, 824, 113, 117, 97, 108, 59, 32768, 8941, 512, 113, 117, 3683, 3732, 117, 97, 114, 101, 83, 117, 512, 98, 112, 3694, 3712, 115, 101, 116, 512, 59, 69, 3702, 3705, 32896, 8847, 824, 113, 117, 97, 108, 59, 32768, 8930, 101, 114, 115, 101, 116, 512, 59, 69, 3722, 3725, 32896, 8848, 824, 113, 117, 97, 108, 59, 32768, 8931, 768, 98, 99, 112, 3739, 3757, 3801, 115, 101, 116, 512, 59, 69, 3747, 3750, 32896, 8834, 8402, 113, 117, 97, 108, 59, 32768, 8840, 99, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 3771, 3773, 3781, 3793, 32768, 8833, 113, 117, 97, 108, 59, 32896, 10928, 824, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8929, 105, 108, 100, 101, 59, 32896, 8831, 824, 101, 114, 115, 101, 116, 512, 59, 69, 3811, 3814, 32896, 8835, 8402, 113, 117, 97, 108, 59, 32768, 8841, 105, 108, 100, 101, 1024, 59, 69, 70, 84, 3834, 3836, 3843, 3854, 32768, 8769, 113, 117, 97, 108, 59, 32768, 8772, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8775, 105, 108, 100, 101, 59, 32768, 8777, 101, 114, 116, 105, 99, 97, 108, 66, 97, 114, 59, 32768, 8740, 99, 114, 59, 32896, 55349, 56489, 105, 108, 100, 101, 33024, 209, 59, 32768, 209, 59, 32768, 925, 3584, 69, 97, 99, 100, 102, 103, 109, 111, 112, 114, 115, 116, 117, 118, 3921, 3927, 3936, 3951, 3958, 3963, 3972, 3996, 4002, 4034, 4037, 4055, 4071, 4078, 108, 105, 103, 59, 32768, 338, 99, 117, 116, 101, 33024, 211, 59, 32768, 211, 512, 105, 121, 3941, 3948, 114, 99, 33024, 212, 59, 32768, 212, 59, 32768, 1054, 98, 108, 97, 99, 59, 32768, 336, 114, 59, 32896, 55349, 56594, 114, 97, 118, 101, 33024, 210, 59, 32768, 210, 768, 97, 101, 105, 3979, 3984, 3989, 99, 114, 59, 32768, 332, 103, 97, 59, 32768, 937, 99, 114, 111, 110, 59, 32768, 927, 112, 102, 59, 32896, 55349, 56646, 101, 110, 67, 117, 114, 108, 121, 512, 68, 81, 4014, 4027, 111, 117, 98, 108, 101, 81, 117, 111, 116, 101, 59, 32768, 8220, 117, 111, 116, 101, 59, 32768, 8216, 59, 32768, 10836, 512, 99, 108, 4042, 4047, 114, 59, 32896, 55349, 56490, 97, 115, 104, 33024, 216, 59, 32768, 216, 105, 573, 4060, 4067, 100, 101, 33024, 213, 59, 32768, 213, 101, 115, 59, 32768, 10807, 109, 108, 33024, 214, 59, 32768, 214, 101, 114, 512, 66, 80, 4085, 4109, 512, 97, 114, 4090, 4094, 114, 59, 32768, 8254, 97, 99, 512, 101, 107, 4101, 4104, 59, 32768, 9182, 101, 116, 59, 32768, 9140, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9180, 2304, 97, 99, 102, 104, 105, 108, 111, 114, 115, 4141, 4150, 4154, 4159, 4163, 4166, 4176, 4198, 4284, 114, 116, 105, 97, 108, 68, 59, 32768, 8706, 121, 59, 32768, 1055, 114, 59, 32896, 55349, 56595, 105, 59, 32768, 934, 59, 32768, 928, 117, 115, 77, 105, 110, 117, 115, 59, 32768, 177, 512, 105, 112, 4181, 4194, 110, 99, 97, 114, 101, 112, 108, 97, 110, 101, 59, 32768, 8460, 102, 59, 32768, 8473, 1024, 59, 101, 105, 111, 4207, 4209, 4251, 4256, 32768, 10939, 99, 101, 100, 101, 115, 1024, 59, 69, 83, 84, 4223, 4225, 4232, 4244, 32768, 8826, 113, 117, 97, 108, 59, 32768, 10927, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8828, 105, 108, 100, 101, 59, 32768, 8830, 109, 101, 59, 32768, 8243, 512, 100, 112, 4261, 4267, 117, 99, 116, 59, 32768, 8719, 111, 114, 116, 105, 111, 110, 512, 59, 97, 4278, 4280, 32768, 8759, 108, 59, 32768, 8733, 512, 99, 105, 4289, 4294, 114, 59, 32896, 55349, 56491, 59, 32768, 936, 1024, 85, 102, 111, 115, 4306, 4313, 4318, 4323, 79, 84, 33024, 34, 59, 32768, 34, 114, 59, 32896, 55349, 56596, 112, 102, 59, 32768, 8474, 99, 114, 59, 32896, 55349, 56492, 3072, 66, 69, 97, 99, 101, 102, 104, 105, 111, 114, 115, 117, 4354, 4360, 4366, 4395, 4417, 4473, 4477, 4481, 4743, 4764, 4776, 4788, 97, 114, 114, 59, 32768, 10512, 71, 33024, 174, 59, 32768, 174, 768, 99, 110, 114, 4373, 4379, 4383, 117, 116, 101, 59, 32768, 340, 103, 59, 32768, 10219, 114, 512, 59, 116, 4389, 4391, 32768, 8608, 108, 59, 32768, 10518, 768, 97, 101, 121, 4402, 4408, 4414, 114, 111, 110, 59, 32768, 344, 100, 105, 108, 59, 32768, 342, 59, 32768, 1056, 512, 59, 118, 4422, 4424, 32768, 8476, 101, 114, 115, 101, 512, 69, 85, 4433, 4458, 512, 108, 113, 4438, 4446, 101, 109, 101, 110, 116, 59, 32768, 8715, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 8651, 112, 69, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10607, 114, 59, 32768, 8476, 111, 59, 32768, 929, 103, 104, 116, 2048, 65, 67, 68, 70, 84, 85, 86, 97, 4501, 4547, 4556, 4607, 4614, 4671, 4719, 4736, 512, 110, 114, 4506, 4519, 103, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10217, 114, 111, 119, 768, 59, 66, 76, 4529, 4531, 4536, 32768, 8594, 97, 114, 59, 32768, 8677, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8644, 101, 105, 108, 105, 110, 103, 59, 32768, 8969, 111, 838, 4562, 0, 4575, 98, 108, 101, 66, 114, 97, 99, 107, 101, 116, 59, 32768, 10215, 110, 805, 4580, 0, 4591, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10589, 101, 99, 116, 111, 114, 512, 59, 66, 4600, 4602, 32768, 8642, 97, 114, 59, 32768, 10581, 108, 111, 111, 114, 59, 32768, 8971, 512, 101, 114, 4619, 4644, 101, 768, 59, 65, 86, 4627, 4629, 4636, 32768, 8866, 114, 114, 111, 119, 59, 32768, 8614, 101, 99, 116, 111, 114, 59, 32768, 10587, 105, 97, 110, 103, 108, 101, 768, 59, 66, 69, 4657, 4659, 4664, 32768, 8883, 97, 114, 59, 32768, 10704, 113, 117, 97, 108, 59, 32768, 8885, 112, 768, 68, 84, 86, 4679, 4691, 4702, 111, 119, 110, 86, 101, 99, 116, 111, 114, 59, 32768, 10575, 101, 101, 86, 101, 99, 116, 111, 114, 59, 32768, 10588, 101, 99, 116, 111, 114, 512, 59, 66, 4712, 4714, 32768, 8638, 97, 114, 59, 32768, 10580, 101, 99, 116, 111, 114, 512, 59, 66, 4729, 4731, 32768, 8640, 97, 114, 59, 32768, 10579, 114, 114, 111, 119, 59, 32768, 8658, 512, 112, 117, 4748, 4752, 102, 59, 32768, 8477, 110, 100, 73, 109, 112, 108, 105, 101, 115, 59, 32768, 10608, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8667, 512, 99, 104, 4781, 4785, 114, 59, 32768, 8475, 59, 32768, 8625, 108, 101, 68, 101, 108, 97, 121, 101, 100, 59, 32768, 10740, 3328, 72, 79, 97, 99, 102, 104, 105, 109, 111, 113, 115, 116, 117, 4827, 4842, 4849, 4856, 4889, 4894, 4949, 4955, 4967, 4973, 5059, 5065, 5070, 512, 67, 99, 4832, 4838, 72, 99, 121, 59, 32768, 1065, 121, 59, 32768, 1064, 70, 84, 99, 121, 59, 32768, 1068, 99, 117, 116, 101, 59, 32768, 346, 1280, 59, 97, 101, 105, 121, 4867, 4869, 4875, 4881, 4886, 32768, 10940, 114, 111, 110, 59, 32768, 352, 100, 105, 108, 59, 32768, 350, 114, 99, 59, 32768, 348, 59, 32768, 1057, 114, 59, 32896, 55349, 56598, 111, 114, 116, 1024, 68, 76, 82, 85, 4906, 4917, 4928, 4940, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8595, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8592, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8594, 112, 65, 114, 114, 111, 119, 59, 32768, 8593, 103, 109, 97, 59, 32768, 931, 97, 108, 108, 67, 105, 114, 99, 108, 101, 59, 32768, 8728, 112, 102, 59, 32896, 55349, 56650, 1091, 4979, 0, 0, 4983, 116, 59, 32768, 8730, 97, 114, 101, 1024, 59, 73, 83, 85, 4994, 4996, 5010, 5052, 32768, 9633, 110, 116, 101, 114, 115, 101, 99, 116, 105, 111, 110, 59, 32768, 8851, 117, 512, 98, 112, 5016, 5033, 115, 101, 116, 512, 59, 69, 5024, 5026, 32768, 8847, 113, 117, 97, 108, 59, 32768, 8849, 101, 114, 115, 101, 116, 512, 59, 69, 5043, 5045, 32768, 8848, 113, 117, 97, 108, 59, 32768, 8850, 110, 105, 111, 110, 59, 32768, 8852, 99, 114, 59, 32896, 55349, 56494, 97, 114, 59, 32768, 8902, 1024, 98, 99, 109, 112, 5079, 5102, 5155, 5158, 512, 59, 115, 5084, 5086, 32768, 8912, 101, 116, 512, 59, 69, 5093, 5095, 32768, 8912, 113, 117, 97, 108, 59, 32768, 8838, 512, 99, 104, 5107, 5148, 101, 101, 100, 115, 1024, 59, 69, 83, 84, 5120, 5122, 5129, 5141, 32768, 8827, 113, 117, 97, 108, 59, 32768, 10928, 108, 97, 110, 116, 69, 113, 117, 97, 108, 59, 32768, 8829, 105, 108, 100, 101, 59, 32768, 8831, 84, 104, 97, 116, 59, 32768, 8715, 59, 32768, 8721, 768, 59, 101, 115, 5165, 5167, 5185, 32768, 8913, 114, 115, 101, 116, 512, 59, 69, 5176, 5178, 32768, 8835, 113, 117, 97, 108, 59, 32768, 8839, 101, 116, 59, 32768, 8913, 2816, 72, 82, 83, 97, 99, 102, 104, 105, 111, 114, 115, 5213, 5221, 5227, 5241, 5252, 5274, 5279, 5323, 5362, 5368, 5378, 79, 82, 78, 33024, 222, 59, 32768, 222, 65, 68, 69, 59, 32768, 8482, 512, 72, 99, 5232, 5237, 99, 121, 59, 32768, 1035, 121, 59, 32768, 1062, 512, 98, 117, 5246, 5249, 59, 32768, 9, 59, 32768, 932, 768, 97, 101, 121, 5259, 5265, 5271, 114, 111, 110, 59, 32768, 356, 100, 105, 108, 59, 32768, 354, 59, 32768, 1058, 114, 59, 32896, 55349, 56599, 512, 101, 105, 5284, 5300, 835, 5289, 0, 5297, 101, 102, 111, 114, 101, 59, 32768, 8756, 97, 59, 32768, 920, 512, 99, 110, 5305, 5315, 107, 83, 112, 97, 99, 101, 59, 32896, 8287, 8202, 83, 112, 97, 99, 101, 59, 32768, 8201, 108, 100, 101, 1024, 59, 69, 70, 84, 5335, 5337, 5344, 5355, 32768, 8764, 113, 117, 97, 108, 59, 32768, 8771, 117, 108, 108, 69, 113, 117, 97, 108, 59, 32768, 8773, 105, 108, 100, 101, 59, 32768, 8776, 112, 102, 59, 32896, 55349, 56651, 105, 112, 108, 101, 68, 111, 116, 59, 32768, 8411, 512, 99, 116, 5383, 5388, 114, 59, 32896, 55349, 56495, 114, 111, 107, 59, 32768, 358, 5426, 5417, 5444, 5458, 5473, 0, 5480, 5485, 0, 0, 0, 0, 0, 5494, 5500, 5564, 5579, 0, 5726, 5732, 5738, 5745, 512, 99, 114, 5421, 5429, 117, 116, 101, 33024, 218, 59, 32768, 218, 114, 512, 59, 111, 5435, 5437, 32768, 8607, 99, 105, 114, 59, 32768, 10569, 114, 820, 5449, 0, 5453, 121, 59, 32768, 1038, 118, 101, 59, 32768, 364, 512, 105, 121, 5462, 5469, 114, 99, 33024, 219, 59, 32768, 219, 59, 32768, 1059, 98, 108, 97, 99, 59, 32768, 368, 114, 59, 32896, 55349, 56600, 114, 97, 118, 101, 33024, 217, 59, 32768, 217, 97, 99, 114, 59, 32768, 362, 512, 100, 105, 5504, 5548, 101, 114, 512, 66, 80, 5511, 5535, 512, 97, 114, 5516, 5520, 114, 59, 32768, 95, 97, 99, 512, 101, 107, 5527, 5530, 59, 32768, 9183, 101, 116, 59, 32768, 9141, 97, 114, 101, 110, 116, 104, 101, 115, 105, 115, 59, 32768, 9181, 111, 110, 512, 59, 80, 5555, 5557, 32768, 8899, 108, 117, 115, 59, 32768, 8846, 512, 103, 112, 5568, 5573, 111, 110, 59, 32768, 370, 102, 59, 32896, 55349, 56652, 2048, 65, 68, 69, 84, 97, 100, 112, 115, 5595, 5624, 5635, 5648, 5664, 5671, 5682, 5712, 114, 114, 111, 119, 768, 59, 66, 68, 5606, 5608, 5613, 32768, 8593, 97, 114, 59, 32768, 10514, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8645, 111, 119, 110, 65, 114, 114, 111, 119, 59, 32768, 8597, 113, 117, 105, 108, 105, 98, 114, 105, 117, 109, 59, 32768, 10606, 101, 101, 512, 59, 65, 5655, 5657, 32768, 8869, 114, 114, 111, 119, 59, 32768, 8613, 114, 114, 111, 119, 59, 32768, 8657, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8661, 101, 114, 512, 76, 82, 5689, 5700, 101, 102, 116, 65, 114, 114, 111, 119, 59, 32768, 8598, 105, 103, 104, 116, 65, 114, 114, 111, 119, 59, 32768, 8599, 105, 512, 59, 108, 5718, 5720, 32768, 978, 111, 110, 59, 32768, 933, 105, 110, 103, 59, 32768, 366, 99, 114, 59, 32896, 55349, 56496, 105, 108, 100, 101, 59, 32768, 360, 109, 108, 33024, 220, 59, 32768, 220, 2304, 68, 98, 99, 100, 101, 102, 111, 115, 118, 5770, 5776, 5781, 5785, 5798, 5878, 5883, 5889, 5895, 97, 115, 104, 59, 32768, 8875, 97, 114, 59, 32768, 10987, 121, 59, 32768, 1042, 97, 115, 104, 512, 59, 108, 5793, 5795, 32768, 8873, 59, 32768, 10982, 512, 101, 114, 5803, 5806, 59, 32768, 8897, 768, 98, 116, 121, 5813, 5818, 5866, 97, 114, 59, 32768, 8214, 512, 59, 105, 5823, 5825, 32768, 8214, 99, 97, 108, 1024, 66, 76, 83, 84, 5837, 5842, 5848, 5859, 97, 114, 59, 32768, 8739, 105, 110, 101, 59, 32768, 124, 101, 112, 97, 114, 97, 116, 111, 114, 59, 32768, 10072, 105, 108, 100, 101, 59, 32768, 8768, 84, 104, 105, 110, 83, 112, 97, 99, 101, 59, 32768, 8202, 114, 59, 32896, 55349, 56601, 112, 102, 59, 32896, 55349, 56653, 99, 114, 59, 32896, 55349, 56497, 100, 97, 115, 104, 59, 32768, 8874, 1280, 99, 101, 102, 111, 115, 5913, 5919, 5925, 5930, 5936, 105, 114, 99, 59, 32768, 372, 100, 103, 101, 59, 32768, 8896, 114, 59, 32896, 55349, 56602, 112, 102, 59, 32896, 55349, 56654, 99, 114, 59, 32896, 55349, 56498, 1024, 102, 105, 111, 115, 5951, 5956, 5959, 5965, 114, 59, 32896, 55349, 56603, 59, 32768, 926, 112, 102, 59, 32896, 55349, 56655, 99, 114, 59, 32896, 55349, 56499, 2304, 65, 73, 85, 97, 99, 102, 111, 115, 117, 5990, 5995, 6000, 6005, 6014, 6027, 6032, 6038, 6044, 99, 121, 59, 32768, 1071, 99, 121, 59, 32768, 1031, 99, 121, 59, 32768, 1070, 99, 117, 116, 101, 33024, 221, 59, 32768, 221, 512, 105, 121, 6019, 6024, 114, 99, 59, 32768, 374, 59, 32768, 1067, 114, 59, 32896, 55349, 56604, 112, 102, 59, 32896, 55349, 56656, 99, 114, 59, 32896, 55349, 56500, 109, 108, 59, 32768, 376, 2048, 72, 97, 99, 100, 101, 102, 111, 115, 6066, 6071, 6078, 6092, 6097, 6119, 6123, 6128, 99, 121, 59, 32768, 1046, 99, 117, 116, 101, 59, 32768, 377, 512, 97, 121, 6083, 6089, 114, 111, 110, 59, 32768, 381, 59, 32768, 1047, 111, 116, 59, 32768, 379, 835, 6102, 0, 6116, 111, 87, 105, 100, 116, 104, 83, 112, 97, 99, 101, 59, 32768, 8203, 97, 59, 32768, 918, 114, 59, 32768, 8488, 112, 102, 59, 32768, 8484, 99, 114, 59, 32896, 55349, 56501, 5938, 6159, 6168, 6175, 0, 6214, 6222, 6233, 0, 0, 0, 0, 6242, 6267, 6290, 6429, 6444, 0, 6495, 6503, 6531, 6540, 0, 6547, 99, 117, 116, 101, 33024, 225, 59, 32768, 225, 114, 101, 118, 101, 59, 32768, 259, 1536, 59, 69, 100, 105, 117, 121, 6187, 6189, 6193, 6196, 6203, 6210, 32768, 8766, 59, 32896, 8766, 819, 59, 32768, 8767, 114, 99, 33024, 226, 59, 32768, 226, 116, 101, 33024, 180, 59, 32768, 180, 59, 32768, 1072, 108, 105, 103, 33024, 230, 59, 32768, 230, 512, 59, 114, 6226, 6228, 32768, 8289, 59, 32896, 55349, 56606, 114, 97, 118, 101, 33024, 224, 59, 32768, 224, 512, 101, 112, 6246, 6261, 512, 102, 112, 6251, 6257, 115, 121, 109, 59, 32768, 8501, 104, 59, 32768, 8501, 104, 97, 59, 32768, 945, 512, 97, 112, 6271, 6284, 512, 99, 108, 6276, 6280, 114, 59, 32768, 257, 103, 59, 32768, 10815, 33024, 38, 59, 32768, 38, 1077, 6295, 0, 0, 6326, 1280, 59, 97, 100, 115, 118, 6305, 6307, 6312, 6315, 6322, 32768, 8743, 110, 100, 59, 32768, 10837, 59, 32768, 10844, 108, 111, 112, 101, 59, 32768, 10840, 59, 32768, 10842, 1792, 59, 101, 108, 109, 114, 115, 122, 6340, 6342, 6345, 6349, 6391, 6410, 6422, 32768, 8736, 59, 32768, 10660, 101, 59, 32768, 8736, 115, 100, 512, 59, 97, 6356, 6358, 32768, 8737, 2098, 6368, 6371, 6374, 6377, 6380, 6383, 6386, 6389, 59, 32768, 10664, 59, 32768, 10665, 59, 32768, 10666, 59, 32768, 10667, 59, 32768, 10668, 59, 32768, 10669, 59, 32768, 10670, 59, 32768, 10671, 116, 512, 59, 118, 6397, 6399, 32768, 8735, 98, 512, 59, 100, 6405, 6407, 32768, 8894, 59, 32768, 10653, 512, 112, 116, 6415, 6419, 104, 59, 32768, 8738, 59, 32768, 197, 97, 114, 114, 59, 32768, 9084, 512, 103, 112, 6433, 6438, 111, 110, 59, 32768, 261, 102, 59, 32896, 55349, 56658, 1792, 59, 69, 97, 101, 105, 111, 112, 6458, 6460, 6463, 6469, 6472, 6476, 6480, 32768, 8776, 59, 32768, 10864, 99, 105, 114, 59, 32768, 10863, 59, 32768, 8778, 100, 59, 32768, 8779, 115, 59, 32768, 39, 114, 111, 120, 512, 59, 101, 6488, 6490, 32768, 8776, 113, 59, 32768, 8778, 105, 110, 103, 33024, 229, 59, 32768, 229, 768, 99, 116, 121, 6509, 6514, 6517, 114, 59, 32896, 55349, 56502, 59, 32768, 42, 109, 112, 512, 59, 101, 6524, 6526, 32768, 8776, 113, 59, 32768, 8781, 105, 108, 100, 101, 33024, 227, 59, 32768, 227, 109, 108, 33024, 228, 59, 32768, 228, 512, 99, 105, 6551, 6559, 111, 110, 105, 110, 116, 59, 32768, 8755, 110, 116, 59, 32768, 10769, 4096, 78, 97, 98, 99, 100, 101, 102, 105, 107, 108, 110, 111, 112, 114, 115, 117, 6597, 6602, 6673, 6688, 6701, 6707, 6768, 6773, 6891, 6898, 6999, 7023, 7309, 7316, 7334, 7383, 111, 116, 59, 32768, 10989, 512, 99, 114, 6607, 6652, 107, 1024, 99, 101, 112, 115, 6617, 6623, 6632, 6639, 111, 110, 103, 59, 32768, 8780, 112, 115, 105, 108, 111, 110, 59, 32768, 1014, 114, 105, 109, 101, 59, 32768, 8245, 105, 109, 512, 59, 101, 6646, 6648, 32768, 8765, 113, 59, 32768, 8909, 583, 6656, 6661, 101, 101, 59, 32768, 8893, 101, 100, 512, 59, 103, 6667, 6669, 32768, 8965, 101, 59, 32768, 8965, 114, 107, 512, 59, 116, 6680, 6682, 32768, 9141, 98, 114, 107, 59, 32768, 9142, 512, 111, 121, 6693, 6698, 110, 103, 59, 32768, 8780, 59, 32768, 1073, 113, 117, 111, 59, 32768, 8222, 1280, 99, 109, 112, 114, 116, 6718, 6731, 6738, 6743, 6749, 97, 117, 115, 512, 59, 101, 6726, 6728, 32768, 8757, 59, 32768, 8757, 112, 116, 121, 118, 59, 32768, 10672, 115, 105, 59, 32768, 1014, 110, 111, 117, 59, 32768, 8492, 768, 97, 104, 119, 6756, 6759, 6762, 59, 32768, 946, 59, 32768, 8502, 101, 101, 110, 59, 32768, 8812, 114, 59, 32896, 55349, 56607, 103, 1792, 99, 111, 115, 116, 117, 118, 119, 6789, 6809, 6834, 6850, 6872, 6879, 6884, 768, 97, 105, 117, 6796, 6800, 6805, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 768, 100, 112, 116, 6816, 6821, 6827, 111, 116, 59, 32768, 10752, 108, 117, 115, 59, 32768, 10753, 105, 109, 101, 115, 59, 32768, 10754, 1090, 6840, 0, 0, 6846, 99, 117, 112, 59, 32768, 10758, 97, 114, 59, 32768, 9733, 114, 105, 97, 110, 103, 108, 101, 512, 100, 117, 6862, 6868, 111, 119, 110, 59, 32768, 9661, 112, 59, 32768, 9651, 112, 108, 117, 115, 59, 32768, 10756, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 97, 114, 111, 119, 59, 32768, 10509, 768, 97, 107, 111, 6905, 6976, 6994, 512, 99, 110, 6910, 6972, 107, 768, 108, 115, 116, 6918, 6927, 6935, 111, 122, 101, 110, 103, 101, 59, 32768, 10731, 113, 117, 97, 114, 101, 59, 32768, 9642, 114, 105, 97, 110, 103, 108, 101, 1024, 59, 100, 108, 114, 6951, 6953, 6959, 6965, 32768, 9652, 111, 119, 110, 59, 32768, 9662, 101, 102, 116, 59, 32768, 9666, 105, 103, 104, 116, 59, 32768, 9656, 107, 59, 32768, 9251, 770, 6981, 0, 6991, 771, 6985, 0, 6988, 59, 32768, 9618, 59, 32768, 9617, 52, 59, 32768, 9619, 99, 107, 59, 32768, 9608, 512, 101, 111, 7004, 7019, 512, 59, 113, 7009, 7012, 32896, 61, 8421, 117, 105, 118, 59, 32896, 8801, 8421, 116, 59, 32768, 8976, 1024, 112, 116, 119, 120, 7032, 7037, 7049, 7055, 102, 59, 32896, 55349, 56659, 512, 59, 116, 7042, 7044, 32768, 8869, 111, 109, 59, 32768, 8869, 116, 105, 101, 59, 32768, 8904, 3072, 68, 72, 85, 86, 98, 100, 104, 109, 112, 116, 117, 118, 7080, 7101, 7126, 7147, 7182, 7187, 7208, 7233, 7240, 7246, 7253, 7274, 1024, 76, 82, 108, 114, 7089, 7092, 7095, 7098, 59, 32768, 9559, 59, 32768, 9556, 59, 32768, 9558, 59, 32768, 9555, 1280, 59, 68, 85, 100, 117, 7112, 7114, 7117, 7120, 7123, 32768, 9552, 59, 32768, 9574, 59, 32768, 9577, 59, 32768, 9572, 59, 32768, 9575, 1024, 76, 82, 108, 114, 7135, 7138, 7141, 7144, 59, 32768, 9565, 59, 32768, 9562, 59, 32768, 9564, 59, 32768, 9561, 1792, 59, 72, 76, 82, 104, 108, 114, 7162, 7164, 7167, 7170, 7173, 7176, 7179, 32768, 9553, 59, 32768, 9580, 59, 32768, 9571, 59, 32768, 9568, 59, 32768, 9579, 59, 32768, 9570, 59, 32768, 9567, 111, 120, 59, 32768, 10697, 1024, 76, 82, 108, 114, 7196, 7199, 7202, 7205, 59, 32768, 9557, 59, 32768, 9554, 59, 32768, 9488, 59, 32768, 9484, 1280, 59, 68, 85, 100, 117, 7219, 7221, 7224, 7227, 7230, 32768, 9472, 59, 32768, 9573, 59, 32768, 9576, 59, 32768, 9516, 59, 32768, 9524, 105, 110, 117, 115, 59, 32768, 8863, 108, 117, 115, 59, 32768, 8862, 105, 109, 101, 115, 59, 32768, 8864, 1024, 76, 82, 108, 114, 7262, 7265, 7268, 7271, 59, 32768, 9563, 59, 32768, 9560, 59, 32768, 9496, 59, 32768, 9492, 1792, 59, 72, 76, 82, 104, 108, 114, 7289, 7291, 7294, 7297, 7300, 7303, 7306, 32768, 9474, 59, 32768, 9578, 59, 32768, 9569, 59, 32768, 9566, 59, 32768, 9532, 59, 32768, 9508, 59, 32768, 9500, 114, 105, 109, 101, 59, 32768, 8245, 512, 101, 118, 7321, 7326, 118, 101, 59, 32768, 728, 98, 97, 114, 33024, 166, 59, 32768, 166, 1024, 99, 101, 105, 111, 7343, 7348, 7353, 7364, 114, 59, 32896, 55349, 56503, 109, 105, 59, 32768, 8271, 109, 512, 59, 101, 7359, 7361, 32768, 8765, 59, 32768, 8909, 108, 768, 59, 98, 104, 7372, 7374, 7377, 32768, 92, 59, 32768, 10693, 115, 117, 98, 59, 32768, 10184, 573, 7387, 7399, 108, 512, 59, 101, 7392, 7394, 32768, 8226, 116, 59, 32768, 8226, 112, 768, 59, 69, 101, 7406, 7408, 7411, 32768, 8782, 59, 32768, 10926, 512, 59, 113, 7416, 7418, 32768, 8783, 59, 32768, 8783, 6450, 7448, 0, 7523, 7571, 7576, 7613, 0, 7618, 7647, 0, 0, 7764, 0, 0, 7779, 0, 0, 7899, 7914, 7949, 7955, 0, 8158, 0, 8176, 768, 99, 112, 114, 7454, 7460, 7509, 117, 116, 101, 59, 32768, 263, 1536, 59, 97, 98, 99, 100, 115, 7473, 7475, 7480, 7487, 7500, 7505, 32768, 8745, 110, 100, 59, 32768, 10820, 114, 99, 117, 112, 59, 32768, 10825, 512, 97, 117, 7492, 7496, 112, 59, 32768, 10827, 112, 59, 32768, 10823, 111, 116, 59, 32768, 10816, 59, 32896, 8745, 65024, 512, 101, 111, 7514, 7518, 116, 59, 32768, 8257, 110, 59, 32768, 711, 1024, 97, 101, 105, 117, 7531, 7544, 7552, 7557, 833, 7536, 0, 7540, 115, 59, 32768, 10829, 111, 110, 59, 32768, 269, 100, 105, 108, 33024, 231, 59, 32768, 231, 114, 99, 59, 32768, 265, 112, 115, 512, 59, 115, 7564, 7566, 32768, 10828, 109, 59, 32768, 10832, 111, 116, 59, 32768, 267, 768, 100, 109, 110, 7582, 7589, 7596, 105, 108, 33024, 184, 59, 32768, 184, 112, 116, 121, 118, 59, 32768, 10674, 116, 33280, 162, 59, 101, 7603, 7605, 32768, 162, 114, 100, 111, 116, 59, 32768, 183, 114, 59, 32896, 55349, 56608, 768, 99, 101, 105, 7624, 7628, 7643, 121, 59, 32768, 1095, 99, 107, 512, 59, 109, 7635, 7637, 32768, 10003, 97, 114, 107, 59, 32768, 10003, 59, 32768, 967, 114, 1792, 59, 69, 99, 101, 102, 109, 115, 7662, 7664, 7667, 7742, 7745, 7752, 7757, 32768, 9675, 59, 32768, 10691, 768, 59, 101, 108, 7674, 7676, 7680, 32768, 710, 113, 59, 32768, 8791, 101, 1074, 7687, 0, 0, 7709, 114, 114, 111, 119, 512, 108, 114, 7695, 7701, 101, 102, 116, 59, 32768, 8634, 105, 103, 104, 116, 59, 32768, 8635, 1280, 82, 83, 97, 99, 100, 7719, 7722, 7725, 7730, 7736, 59, 32768, 174, 59, 32768, 9416, 115, 116, 59, 32768, 8859, 105, 114, 99, 59, 32768, 8858, 97, 115, 104, 59, 32768, 8861, 59, 32768, 8791, 110, 105, 110, 116, 59, 32768, 10768, 105, 100, 59, 32768, 10991, 99, 105, 114, 59, 32768, 10690, 117, 98, 115, 512, 59, 117, 7771, 7773, 32768, 9827, 105, 116, 59, 32768, 9827, 1341, 7785, 7804, 7850, 0, 7871, 111, 110, 512, 59, 101, 7791, 7793, 32768, 58, 512, 59, 113, 7798, 7800, 32768, 8788, 59, 32768, 8788, 1086, 7809, 0, 0, 7820, 97, 512, 59, 116, 7814, 7816, 32768, 44, 59, 32768, 64, 768, 59, 102, 108, 7826, 7828, 7832, 32768, 8705, 110, 59, 32768, 8728, 101, 512, 109, 120, 7838, 7844, 101, 110, 116, 59, 32768, 8705, 101, 115, 59, 32768, 8450, 824, 7854, 0, 7866, 512, 59, 100, 7858, 7860, 32768, 8773, 111, 116, 59, 32768, 10861, 110, 116, 59, 32768, 8750, 768, 102, 114, 121, 7877, 7881, 7886, 59, 32896, 55349, 56660, 111, 100, 59, 32768, 8720, 33280, 169, 59, 115, 7892, 7894, 32768, 169, 114, 59, 32768, 8471, 512, 97, 111, 7903, 7908, 114, 114, 59, 32768, 8629, 115, 115, 59, 32768, 10007, 512, 99, 117, 7918, 7923, 114, 59, 32896, 55349, 56504, 512, 98, 112, 7928, 7938, 512, 59, 101, 7933, 7935, 32768, 10959, 59, 32768, 10961, 512, 59, 101, 7943, 7945, 32768, 10960, 59, 32768, 10962, 100, 111, 116, 59, 32768, 8943, 1792, 100, 101, 108, 112, 114, 118, 119, 7969, 7983, 7996, 8009, 8057, 8147, 8152, 97, 114, 114, 512, 108, 114, 7977, 7980, 59, 32768, 10552, 59, 32768, 10549, 1089, 7989, 0, 0, 7993, 114, 59, 32768, 8926, 99, 59, 32768, 8927, 97, 114, 114, 512, 59, 112, 8004, 8006, 32768, 8630, 59, 32768, 10557, 1536, 59, 98, 99, 100, 111, 115, 8022, 8024, 8031, 8044, 8049, 8053, 32768, 8746, 114, 99, 97, 112, 59, 32768, 10824, 512, 97, 117, 8036, 8040, 112, 59, 32768, 10822, 112, 59, 32768, 10826, 111, 116, 59, 32768, 8845, 114, 59, 32768, 10821, 59, 32896, 8746, 65024, 1024, 97, 108, 114, 118, 8066, 8078, 8116, 8123, 114, 114, 512, 59, 109, 8073, 8075, 32768, 8631, 59, 32768, 10556, 121, 768, 101, 118, 119, 8086, 8104, 8109, 113, 1089, 8093, 0, 0, 8099, 114, 101, 99, 59, 32768, 8926, 117, 99, 99, 59, 32768, 8927, 101, 101, 59, 32768, 8910, 101, 100, 103, 101, 59, 32768, 8911, 101, 110, 33024, 164, 59, 32768, 164, 101, 97, 114, 114, 111, 119, 512, 108, 114, 8134, 8140, 101, 102, 116, 59, 32768, 8630, 105, 103, 104, 116, 59, 32768, 8631, 101, 101, 59, 32768, 8910, 101, 100, 59, 32768, 8911, 512, 99, 105, 8162, 8170, 111, 110, 105, 110, 116, 59, 32768, 8754, 110, 116, 59, 32768, 8753, 108, 99, 116, 121, 59, 32768, 9005, 4864, 65, 72, 97, 98, 99, 100, 101, 102, 104, 105, 106, 108, 111, 114, 115, 116, 117, 119, 122, 8221, 8226, 8231, 8267, 8282, 8296, 8327, 8351, 8366, 8379, 8466, 8471, 8487, 8621, 8647, 8676, 8697, 8712, 8720, 114, 114, 59, 32768, 8659, 97, 114, 59, 32768, 10597, 1024, 103, 108, 114, 115, 8240, 8246, 8252, 8256, 103, 101, 114, 59, 32768, 8224, 101, 116, 104, 59, 32768, 8504, 114, 59, 32768, 8595, 104, 512, 59, 118, 8262, 8264, 32768, 8208, 59, 32768, 8867, 572, 8271, 8278, 97, 114, 111, 119, 59, 32768, 10511, 97, 99, 59, 32768, 733, 512, 97, 121, 8287, 8293, 114, 111, 110, 59, 32768, 271, 59, 32768, 1076, 768, 59, 97, 111, 8303, 8305, 8320, 32768, 8518, 512, 103, 114, 8310, 8316, 103, 101, 114, 59, 32768, 8225, 114, 59, 32768, 8650, 116, 115, 101, 113, 59, 32768, 10871, 768, 103, 108, 109, 8334, 8339, 8344, 33024, 176, 59, 32768, 176, 116, 97, 59, 32768, 948, 112, 116, 121, 118, 59, 32768, 10673, 512, 105, 114, 8356, 8362, 115, 104, 116, 59, 32768, 10623, 59, 32896, 55349, 56609, 97, 114, 512, 108, 114, 8373, 8376, 59, 32768, 8643, 59, 32768, 8642, 1280, 97, 101, 103, 115, 118, 8390, 8418, 8421, 8428, 8433, 109, 768, 59, 111, 115, 8398, 8400, 8415, 32768, 8900, 110, 100, 512, 59, 115, 8407, 8409, 32768, 8900, 117, 105, 116, 59, 32768, 9830, 59, 32768, 9830, 59, 32768, 168, 97, 109, 109, 97, 59, 32768, 989, 105, 110, 59, 32768, 8946, 768, 59, 105, 111, 8440, 8442, 8461, 32768, 247, 100, 101, 33280, 247, 59, 111, 8450, 8452, 32768, 247, 110, 116, 105, 109, 101, 115, 59, 32768, 8903, 110, 120, 59, 32768, 8903, 99, 121, 59, 32768, 1106, 99, 1088, 8478, 0, 0, 8483, 114, 110, 59, 32768, 8990, 111, 112, 59, 32768, 8973, 1280, 108, 112, 116, 117, 119, 8498, 8504, 8509, 8556, 8570, 108, 97, 114, 59, 32768, 36, 102, 59, 32896, 55349, 56661, 1280, 59, 101, 109, 112, 115, 8520, 8522, 8535, 8542, 8548, 32768, 729, 113, 512, 59, 100, 8528, 8530, 32768, 8784, 111, 116, 59, 32768, 8785, 105, 110, 117, 115, 59, 32768, 8760, 108, 117, 115, 59, 32768, 8724, 113, 117, 97, 114, 101, 59, 32768, 8865, 98, 108, 101, 98, 97, 114, 119, 101, 100, 103, 101, 59, 32768, 8966, 110, 768, 97, 100, 104, 8578, 8585, 8597, 114, 114, 111, 119, 59, 32768, 8595, 111, 119, 110, 97, 114, 114, 111, 119, 115, 59, 32768, 8650, 97, 114, 112, 111, 111, 110, 512, 108, 114, 8608, 8614, 101, 102, 116, 59, 32768, 8643, 105, 103, 104, 116, 59, 32768, 8642, 563, 8625, 8633, 107, 97, 114, 111, 119, 59, 32768, 10512, 1088, 8638, 0, 0, 8643, 114, 110, 59, 32768, 8991, 111, 112, 59, 32768, 8972, 768, 99, 111, 116, 8654, 8666, 8670, 512, 114, 121, 8659, 8663, 59, 32896, 55349, 56505, 59, 32768, 1109, 108, 59, 32768, 10742, 114, 111, 107, 59, 32768, 273, 512, 100, 114, 8681, 8686, 111, 116, 59, 32768, 8945, 105, 512, 59, 102, 8692, 8694, 32768, 9663, 59, 32768, 9662, 512, 97, 104, 8702, 8707, 114, 114, 59, 32768, 8693, 97, 114, 59, 32768, 10607, 97, 110, 103, 108, 101, 59, 32768, 10662, 512, 99, 105, 8725, 8729, 121, 59, 32768, 1119, 103, 114, 97, 114, 114, 59, 32768, 10239, 4608, 68, 97, 99, 100, 101, 102, 103, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 120, 8774, 8788, 8807, 8844, 8849, 8852, 8866, 8895, 8929, 8977, 8989, 9004, 9046, 9136, 9151, 9171, 9184, 9199, 512, 68, 111, 8779, 8784, 111, 116, 59, 32768, 10871, 116, 59, 32768, 8785, 512, 99, 115, 8793, 8801, 117, 116, 101, 33024, 233, 59, 32768, 233, 116, 101, 114, 59, 32768, 10862, 1024, 97, 105, 111, 121, 8816, 8822, 8835, 8841, 114, 111, 110, 59, 32768, 283, 114, 512, 59, 99, 8828, 8830, 32768, 8790, 33024, 234, 59, 32768, 234, 108, 111, 110, 59, 32768, 8789, 59, 32768, 1101, 111, 116, 59, 32768, 279, 59, 32768, 8519, 512, 68, 114, 8857, 8862, 111, 116, 59, 32768, 8786, 59, 32896, 55349, 56610, 768, 59, 114, 115, 8873, 8875, 8883, 32768, 10906, 97, 118, 101, 33024, 232, 59, 32768, 232, 512, 59, 100, 8888, 8890, 32768, 10902, 111, 116, 59, 32768, 10904, 1024, 59, 105, 108, 115, 8904, 8906, 8914, 8917, 32768, 10905, 110, 116, 101, 114, 115, 59, 32768, 9191, 59, 32768, 8467, 512, 59, 100, 8922, 8924, 32768, 10901, 111, 116, 59, 32768, 10903, 768, 97, 112, 115, 8936, 8941, 8960, 99, 114, 59, 32768, 275, 116, 121, 768, 59, 115, 118, 8950, 8952, 8957, 32768, 8709, 101, 116, 59, 32768, 8709, 59, 32768, 8709, 112, 512, 49, 59, 8966, 8975, 516, 8970, 8973, 59, 32768, 8196, 59, 32768, 8197, 32768, 8195, 512, 103, 115, 8982, 8985, 59, 32768, 331, 112, 59, 32768, 8194, 512, 103, 112, 8994, 8999, 111, 110, 59, 32768, 281, 102, 59, 32896, 55349, 56662, 768, 97, 108, 115, 9011, 9023, 9028, 114, 512, 59, 115, 9017, 9019, 32768, 8917, 108, 59, 32768, 10723, 117, 115, 59, 32768, 10865, 105, 768, 59, 108, 118, 9036, 9038, 9043, 32768, 949, 111, 110, 59, 32768, 949, 59, 32768, 1013, 1024, 99, 115, 117, 118, 9055, 9071, 9099, 9128, 512, 105, 111, 9060, 9065, 114, 99, 59, 32768, 8790, 108, 111, 110, 59, 32768, 8789, 1082, 9077, 0, 0, 9081, 109, 59, 32768, 8770, 97, 110, 116, 512, 103, 108, 9088, 9093, 116, 114, 59, 32768, 10902, 101, 115, 115, 59, 32768, 10901, 768, 97, 101, 105, 9106, 9111, 9116, 108, 115, 59, 32768, 61, 115, 116, 59, 32768, 8799, 118, 512, 59, 68, 9122, 9124, 32768, 8801, 68, 59, 32768, 10872, 112, 97, 114, 115, 108, 59, 32768, 10725, 512, 68, 97, 9141, 9146, 111, 116, 59, 32768, 8787, 114, 114, 59, 32768, 10609, 768, 99, 100, 105, 9158, 9162, 9167, 114, 59, 32768, 8495, 111, 116, 59, 32768, 8784, 109, 59, 32768, 8770, 512, 97, 104, 9176, 9179, 59, 32768, 951, 33024, 240, 59, 32768, 240, 512, 109, 114, 9189, 9195, 108, 33024, 235, 59, 32768, 235, 111, 59, 32768, 8364, 768, 99, 105, 112, 9206, 9210, 9215, 108, 59, 32768, 33, 115, 116, 59, 32768, 8707, 512, 101, 111, 9220, 9230, 99, 116, 97, 116, 105, 111, 110, 59, 32768, 8496, 110, 101, 110, 116, 105, 97, 108, 101, 59, 32768, 8519, 4914, 9262, 0, 9276, 0, 9280, 9287, 0, 0, 9318, 9324, 0, 9331, 0, 9352, 9357, 9386, 0, 9395, 9497, 108, 108, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8786, 121, 59, 32768, 1092, 109, 97, 108, 101, 59, 32768, 9792, 768, 105, 108, 114, 9293, 9299, 9313, 108, 105, 103, 59, 32768, 64259, 1082, 9305, 0, 0, 9309, 103, 59, 32768, 64256, 105, 103, 59, 32768, 64260, 59, 32896, 55349, 56611, 108, 105, 103, 59, 32768, 64257, 108, 105, 103, 59, 32896, 102, 106, 768, 97, 108, 116, 9337, 9341, 9346, 116, 59, 32768, 9837, 105, 103, 59, 32768, 64258, 110, 115, 59, 32768, 9649, 111, 102, 59, 32768, 402, 833, 9361, 0, 9366, 102, 59, 32896, 55349, 56663, 512, 97, 107, 9370, 9375, 108, 108, 59, 32768, 8704, 512, 59, 118, 9380, 9382, 32768, 8916, 59, 32768, 10969, 97, 114, 116, 105, 110, 116, 59, 32768, 10765, 512, 97, 111, 9399, 9491, 512, 99, 115, 9404, 9487, 1794, 9413, 9443, 9453, 9470, 9474, 0, 9484, 1795, 9421, 9426, 9429, 9434, 9437, 0, 9440, 33024, 189, 59, 32768, 189, 59, 32768, 8531, 33024, 188, 59, 32768, 188, 59, 32768, 8533, 59, 32768, 8537, 59, 32768, 8539, 772, 9447, 0, 9450, 59, 32768, 8532, 59, 32768, 8534, 1285, 9459, 9464, 0, 0, 9467, 33024, 190, 59, 32768, 190, 59, 32768, 8535, 59, 32768, 8540, 53, 59, 32768, 8536, 775, 9478, 0, 9481, 59, 32768, 8538, 59, 32768, 8541, 56, 59, 32768, 8542, 108, 59, 32768, 8260, 119, 110, 59, 32768, 8994, 99, 114, 59, 32896, 55349, 56507, 4352, 69, 97, 98, 99, 100, 101, 102, 103, 105, 106, 108, 110, 111, 114, 115, 116, 118, 9537, 9547, 9575, 9582, 9595, 9600, 9679, 9684, 9694, 9700, 9705, 9725, 9773, 9779, 9785, 9810, 9917, 512, 59, 108, 9542, 9544, 32768, 8807, 59, 32768, 10892, 768, 99, 109, 112, 9554, 9560, 9572, 117, 116, 101, 59, 32768, 501, 109, 97, 512, 59, 100, 9567, 9569, 32768, 947, 59, 32768, 989, 59, 32768, 10886, 114, 101, 118, 101, 59, 32768, 287, 512, 105, 121, 9587, 9592, 114, 99, 59, 32768, 285, 59, 32768, 1075, 111, 116, 59, 32768, 289, 1024, 59, 108, 113, 115, 9609, 9611, 9614, 9633, 32768, 8805, 59, 32768, 8923, 768, 59, 113, 115, 9621, 9623, 9626, 32768, 8805, 59, 32768, 8807, 108, 97, 110, 116, 59, 32768, 10878, 1024, 59, 99, 100, 108, 9642, 9644, 9648, 9667, 32768, 10878, 99, 59, 32768, 10921, 111, 116, 512, 59, 111, 9655, 9657, 32768, 10880, 512, 59, 108, 9662, 9664, 32768, 10882, 59, 32768, 10884, 512, 59, 101, 9672, 9675, 32896, 8923, 65024, 115, 59, 32768, 10900, 114, 59, 32896, 55349, 56612, 512, 59, 103, 9689, 9691, 32768, 8811, 59, 32768, 8921, 109, 101, 108, 59, 32768, 8503, 99, 121, 59, 32768, 1107, 1024, 59, 69, 97, 106, 9714, 9716, 9719, 9722, 32768, 8823, 59, 32768, 10898, 59, 32768, 10917, 59, 32768, 10916, 1024, 69, 97, 101, 115, 9734, 9737, 9751, 9768, 59, 32768, 8809, 112, 512, 59, 112, 9743, 9745, 32768, 10890, 114, 111, 120, 59, 32768, 10890, 512, 59, 113, 9756, 9758, 32768, 10888, 512, 59, 113, 9763, 9765, 32768, 10888, 59, 32768, 8809, 105, 109, 59, 32768, 8935, 112, 102, 59, 32896, 55349, 56664, 97, 118, 101, 59, 32768, 96, 512, 99, 105, 9790, 9794, 114, 59, 32768, 8458, 109, 768, 59, 101, 108, 9802, 9804, 9807, 32768, 8819, 59, 32768, 10894, 59, 32768, 10896, 34304, 62, 59, 99, 100, 108, 113, 114, 9824, 9826, 9838, 9843, 9849, 9856, 32768, 62, 512, 99, 105, 9831, 9834, 59, 32768, 10919, 114, 59, 32768, 10874, 111, 116, 59, 32768, 8919, 80, 97, 114, 59, 32768, 10645, 117, 101, 115, 116, 59, 32768, 10876, 1280, 97, 100, 101, 108, 115, 9867, 9882, 9887, 9906, 9912, 833, 9872, 0, 9879, 112, 114, 111, 120, 59, 32768, 10886, 114, 59, 32768, 10616, 111, 116, 59, 32768, 8919, 113, 512, 108, 113, 9893, 9899, 101, 115, 115, 59, 32768, 8923, 108, 101, 115, 115, 59, 32768, 10892, 101, 115, 115, 59, 32768, 8823, 105, 109, 59, 32768, 8819, 512, 101, 110, 9922, 9932, 114, 116, 110, 101, 113, 113, 59, 32896, 8809, 65024, 69, 59, 32896, 8809, 65024, 2560, 65, 97, 98, 99, 101, 102, 107, 111, 115, 121, 9958, 9963, 10015, 10020, 10026, 10060, 10065, 10085, 10147, 10171, 114, 114, 59, 32768, 8660, 1024, 105, 108, 109, 114, 9972, 9978, 9982, 9988, 114, 115, 112, 59, 32768, 8202, 102, 59, 32768, 189, 105, 108, 116, 59, 32768, 8459, 512, 100, 114, 9993, 9998, 99, 121, 59, 32768, 1098, 768, 59, 99, 119, 10005, 10007, 10012, 32768, 8596, 105, 114, 59, 32768, 10568, 59, 32768, 8621, 97, 114, 59, 32768, 8463, 105, 114, 99, 59, 32768, 293, 768, 97, 108, 114, 10033, 10048, 10054, 114, 116, 115, 512, 59, 117, 10041, 10043, 32768, 9829, 105, 116, 59, 32768, 9829, 108, 105, 112, 59, 32768, 8230, 99, 111, 110, 59, 32768, 8889, 114, 59, 32896, 55349, 56613, 115, 512, 101, 119, 10071, 10078, 97, 114, 111, 119, 59, 32768, 10533, 97, 114, 111, 119, 59, 32768, 10534, 1280, 97, 109, 111, 112, 114, 10096, 10101, 10107, 10136, 10141, 114, 114, 59, 32768, 8703, 116, 104, 116, 59, 32768, 8763, 107, 512, 108, 114, 10113, 10124, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8617, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8618, 102, 59, 32896, 55349, 56665, 98, 97, 114, 59, 32768, 8213, 768, 99, 108, 116, 10154, 10159, 10165, 114, 59, 32896, 55349, 56509, 97, 115, 104, 59, 32768, 8463, 114, 111, 107, 59, 32768, 295, 512, 98, 112, 10176, 10182, 117, 108, 108, 59, 32768, 8259, 104, 101, 110, 59, 32768, 8208, 5426, 10211, 0, 10220, 0, 10239, 10255, 10267, 0, 10276, 10312, 0, 0, 10318, 10371, 10458, 10485, 10491, 0, 10500, 10545, 10558, 99, 117, 116, 101, 33024, 237, 59, 32768, 237, 768, 59, 105, 121, 10226, 10228, 10235, 32768, 8291, 114, 99, 33024, 238, 59, 32768, 238, 59, 32768, 1080, 512, 99, 120, 10243, 10247, 121, 59, 32768, 1077, 99, 108, 33024, 161, 59, 32768, 161, 512, 102, 114, 10259, 10262, 59, 32768, 8660, 59, 32896, 55349, 56614, 114, 97, 118, 101, 33024, 236, 59, 32768, 236, 1024, 59, 105, 110, 111, 10284, 10286, 10300, 10306, 32768, 8520, 512, 105, 110, 10291, 10296, 110, 116, 59, 32768, 10764, 116, 59, 32768, 8749, 102, 105, 110, 59, 32768, 10716, 116, 97, 59, 32768, 8489, 108, 105, 103, 59, 32768, 307, 768, 97, 111, 112, 10324, 10361, 10365, 768, 99, 103, 116, 10331, 10335, 10357, 114, 59, 32768, 299, 768, 101, 108, 112, 10342, 10345, 10351, 59, 32768, 8465, 105, 110, 101, 59, 32768, 8464, 97, 114, 116, 59, 32768, 8465, 104, 59, 32768, 305, 102, 59, 32768, 8887, 101, 100, 59, 32768, 437, 1280, 59, 99, 102, 111, 116, 10381, 10383, 10389, 10403, 10409, 32768, 8712, 97, 114, 101, 59, 32768, 8453, 105, 110, 512, 59, 116, 10396, 10398, 32768, 8734, 105, 101, 59, 32768, 10717, 100, 111, 116, 59, 32768, 305, 1280, 59, 99, 101, 108, 112, 10420, 10422, 10427, 10444, 10451, 32768, 8747, 97, 108, 59, 32768, 8890, 512, 103, 114, 10432, 10438, 101, 114, 115, 59, 32768, 8484, 99, 97, 108, 59, 32768, 8890, 97, 114, 104, 107, 59, 32768, 10775, 114, 111, 100, 59, 32768, 10812, 1024, 99, 103, 112, 116, 10466, 10470, 10475, 10480, 121, 59, 32768, 1105, 111, 110, 59, 32768, 303, 102, 59, 32896, 55349, 56666, 97, 59, 32768, 953, 114, 111, 100, 59, 32768, 10812, 117, 101, 115, 116, 33024, 191, 59, 32768, 191, 512, 99, 105, 10504, 10509, 114, 59, 32896, 55349, 56510, 110, 1280, 59, 69, 100, 115, 118, 10521, 10523, 10526, 10531, 10541, 32768, 8712, 59, 32768, 8953, 111, 116, 59, 32768, 8949, 512, 59, 118, 10536, 10538, 32768, 8948, 59, 32768, 8947, 59, 32768, 8712, 512, 59, 105, 10549, 10551, 32768, 8290, 108, 100, 101, 59, 32768, 297, 828, 10562, 0, 10567, 99, 121, 59, 32768, 1110, 108, 33024, 239, 59, 32768, 239, 1536, 99, 102, 109, 111, 115, 117, 10585, 10598, 10603, 10609, 10615, 10630, 512, 105, 121, 10590, 10595, 114, 99, 59, 32768, 309, 59, 32768, 1081, 114, 59, 32896, 55349, 56615, 97, 116, 104, 59, 32768, 567, 112, 102, 59, 32896, 55349, 56667, 820, 10620, 0, 10625, 114, 59, 32896, 55349, 56511, 114, 99, 121, 59, 32768, 1112, 107, 99, 121, 59, 32768, 1108, 2048, 97, 99, 102, 103, 104, 106, 111, 115, 10653, 10666, 10680, 10685, 10692, 10697, 10702, 10708, 112, 112, 97, 512, 59, 118, 10661, 10663, 32768, 954, 59, 32768, 1008, 512, 101, 121, 10671, 10677, 100, 105, 108, 59, 32768, 311, 59, 32768, 1082, 114, 59, 32896, 55349, 56616, 114, 101, 101, 110, 59, 32768, 312, 99, 121, 59, 32768, 1093, 99, 121, 59, 32768, 1116, 112, 102, 59, 32896, 55349, 56668, 99, 114, 59, 32896, 55349, 56512, 5888, 65, 66, 69, 72, 97, 98, 99, 100, 101, 102, 103, 104, 106, 108, 109, 110, 111, 112, 114, 115, 116, 117, 118, 10761, 10783, 10789, 10799, 10804, 10957, 11011, 11047, 11094, 11349, 11372, 11382, 11409, 11414, 11451, 11478, 11526, 11698, 11711, 11755, 11823, 11910, 11929, 768, 97, 114, 116, 10768, 10773, 10777, 114, 114, 59, 32768, 8666, 114, 59, 32768, 8656, 97, 105, 108, 59, 32768, 10523, 97, 114, 114, 59, 32768, 10510, 512, 59, 103, 10794, 10796, 32768, 8806, 59, 32768, 10891, 97, 114, 59, 32768, 10594, 4660, 10824, 0, 10830, 0, 10838, 0, 0, 0, 0, 0, 10844, 10850, 0, 10867, 10870, 10877, 0, 10933, 117, 116, 101, 59, 32768, 314, 109, 112, 116, 121, 118, 59, 32768, 10676, 114, 97, 110, 59, 32768, 8466, 98, 100, 97, 59, 32768, 955, 103, 768, 59, 100, 108, 10857, 10859, 10862, 32768, 10216, 59, 32768, 10641, 101, 59, 32768, 10216, 59, 32768, 10885, 117, 111, 33024, 171, 59, 32768, 171, 114, 2048, 59, 98, 102, 104, 108, 112, 115, 116, 10894, 10896, 10907, 10911, 10915, 10919, 10923, 10928, 32768, 8592, 512, 59, 102, 10901, 10903, 32768, 8676, 115, 59, 32768, 10527, 115, 59, 32768, 10525, 107, 59, 32768, 8617, 112, 59, 32768, 8619, 108, 59, 32768, 10553, 105, 109, 59, 32768, 10611, 108, 59, 32768, 8610, 768, 59, 97, 101, 10939, 10941, 10946, 32768, 10923, 105, 108, 59, 32768, 10521, 512, 59, 115, 10951, 10953, 32768, 10925, 59, 32896, 10925, 65024, 768, 97, 98, 114, 10964, 10969, 10974, 114, 114, 59, 32768, 10508, 114, 107, 59, 32768, 10098, 512, 97, 107, 10979, 10991, 99, 512, 101, 107, 10985, 10988, 59, 32768, 123, 59, 32768, 91, 512, 101, 115, 10996, 10999, 59, 32768, 10635, 108, 512, 100, 117, 11005, 11008, 59, 32768, 10639, 59, 32768, 10637, 1024, 97, 101, 117, 121, 11020, 11026, 11040, 11044, 114, 111, 110, 59, 32768, 318, 512, 100, 105, 11031, 11036, 105, 108, 59, 32768, 316, 108, 59, 32768, 8968, 98, 59, 32768, 123, 59, 32768, 1083, 1024, 99, 113, 114, 115, 11056, 11060, 11072, 11090, 97, 59, 32768, 10550, 117, 111, 512, 59, 114, 11067, 11069, 32768, 8220, 59, 32768, 8222, 512, 100, 117, 11077, 11083, 104, 97, 114, 59, 32768, 10599, 115, 104, 97, 114, 59, 32768, 10571, 104, 59, 32768, 8626, 1280, 59, 102, 103, 113, 115, 11105, 11107, 11228, 11231, 11250, 32768, 8804, 116, 1280, 97, 104, 108, 114, 116, 11119, 11136, 11157, 11169, 11216, 114, 114, 111, 119, 512, 59, 116, 11128, 11130, 32768, 8592, 97, 105, 108, 59, 32768, 8610, 97, 114, 112, 111, 111, 110, 512, 100, 117, 11147, 11153, 111, 119, 110, 59, 32768, 8637, 112, 59, 32768, 8636, 101, 102, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8647, 105, 103, 104, 116, 768, 97, 104, 115, 11180, 11194, 11204, 114, 114, 111, 119, 512, 59, 115, 11189, 11191, 32768, 8596, 59, 32768, 8646, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8651, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8621, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8907, 59, 32768, 8922, 768, 59, 113, 115, 11238, 11240, 11243, 32768, 8804, 59, 32768, 8806, 108, 97, 110, 116, 59, 32768, 10877, 1280, 59, 99, 100, 103, 115, 11261, 11263, 11267, 11286, 11298, 32768, 10877, 99, 59, 32768, 10920, 111, 116, 512, 59, 111, 11274, 11276, 32768, 10879, 512, 59, 114, 11281, 11283, 32768, 10881, 59, 32768, 10883, 512, 59, 101, 11291, 11294, 32896, 8922, 65024, 115, 59, 32768, 10899, 1280, 97, 100, 101, 103, 115, 11309, 11317, 11322, 11339, 11344, 112, 112, 114, 111, 120, 59, 32768, 10885, 111, 116, 59, 32768, 8918, 113, 512, 103, 113, 11328, 11333, 116, 114, 59, 32768, 8922, 103, 116, 114, 59, 32768, 10891, 116, 114, 59, 32768, 8822, 105, 109, 59, 32768, 8818, 768, 105, 108, 114, 11356, 11362, 11368, 115, 104, 116, 59, 32768, 10620, 111, 111, 114, 59, 32768, 8970, 59, 32896, 55349, 56617, 512, 59, 69, 11377, 11379, 32768, 8822, 59, 32768, 10897, 562, 11386, 11405, 114, 512, 100, 117, 11391, 11394, 59, 32768, 8637, 512, 59, 108, 11399, 11401, 32768, 8636, 59, 32768, 10602, 108, 107, 59, 32768, 9604, 99, 121, 59, 32768, 1113, 1280, 59, 97, 99, 104, 116, 11425, 11427, 11432, 11440, 11446, 32768, 8810, 114, 114, 59, 32768, 8647, 111, 114, 110, 101, 114, 59, 32768, 8990, 97, 114, 100, 59, 32768, 10603, 114, 105, 59, 32768, 9722, 512, 105, 111, 11456, 11462, 100, 111, 116, 59, 32768, 320, 117, 115, 116, 512, 59, 97, 11470, 11472, 32768, 9136, 99, 104, 101, 59, 32768, 9136, 1024, 69, 97, 101, 115, 11487, 11490, 11504, 11521, 59, 32768, 8808, 112, 512, 59, 112, 11496, 11498, 32768, 10889, 114, 111, 120, 59, 32768, 10889, 512, 59, 113, 11509, 11511, 32768, 10887, 512, 59, 113, 11516, 11518, 32768, 10887, 59, 32768, 8808, 105, 109, 59, 32768, 8934, 2048, 97, 98, 110, 111, 112, 116, 119, 122, 11543, 11556, 11561, 11616, 11640, 11660, 11667, 11680, 512, 110, 114, 11548, 11552, 103, 59, 32768, 10220, 114, 59, 32768, 8701, 114, 107, 59, 32768, 10214, 103, 768, 108, 109, 114, 11569, 11596, 11604, 101, 102, 116, 512, 97, 114, 11577, 11584, 114, 114, 111, 119, 59, 32768, 10229, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10231, 97, 112, 115, 116, 111, 59, 32768, 10236, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 10230, 112, 97, 114, 114, 111, 119, 512, 108, 114, 11627, 11633, 101, 102, 116, 59, 32768, 8619, 105, 103, 104, 116, 59, 32768, 8620, 768, 97, 102, 108, 11647, 11651, 11655, 114, 59, 32768, 10629, 59, 32896, 55349, 56669, 117, 115, 59, 32768, 10797, 105, 109, 101, 115, 59, 32768, 10804, 562, 11671, 11676, 115, 116, 59, 32768, 8727, 97, 114, 59, 32768, 95, 768, 59, 101, 102, 11687, 11689, 11695, 32768, 9674, 110, 103, 101, 59, 32768, 9674, 59, 32768, 10731, 97, 114, 512, 59, 108, 11705, 11707, 32768, 40, 116, 59, 32768, 10643, 1280, 97, 99, 104, 109, 116, 11722, 11727, 11735, 11747, 11750, 114, 114, 59, 32768, 8646, 111, 114, 110, 101, 114, 59, 32768, 8991, 97, 114, 512, 59, 100, 11742, 11744, 32768, 8651, 59, 32768, 10605, 59, 32768, 8206, 114, 105, 59, 32768, 8895, 1536, 97, 99, 104, 105, 113, 116, 11768, 11774, 11779, 11782, 11798, 11817, 113, 117, 111, 59, 32768, 8249, 114, 59, 32896, 55349, 56513, 59, 32768, 8624, 109, 768, 59, 101, 103, 11790, 11792, 11795, 32768, 8818, 59, 32768, 10893, 59, 32768, 10895, 512, 98, 117, 11803, 11806, 59, 32768, 91, 111, 512, 59, 114, 11812, 11814, 32768, 8216, 59, 32768, 8218, 114, 111, 107, 59, 32768, 322, 34816, 60, 59, 99, 100, 104, 105, 108, 113, 114, 11841, 11843, 11855, 11860, 11866, 11872, 11878, 11885, 32768, 60, 512, 99, 105, 11848, 11851, 59, 32768, 10918, 114, 59, 32768, 10873, 111, 116, 59, 32768, 8918, 114, 101, 101, 59, 32768, 8907, 109, 101, 115, 59, 32768, 8905, 97, 114, 114, 59, 32768, 10614, 117, 101, 115, 116, 59, 32768, 10875, 512, 80, 105, 11890, 11895, 97, 114, 59, 32768, 10646, 768, 59, 101, 102, 11902, 11904, 11907, 32768, 9667, 59, 32768, 8884, 59, 32768, 9666, 114, 512, 100, 117, 11916, 11923, 115, 104, 97, 114, 59, 32768, 10570, 104, 97, 114, 59, 32768, 10598, 512, 101, 110, 11934, 11944, 114, 116, 110, 101, 113, 113, 59, 32896, 8808, 65024, 69, 59, 32896, 8808, 65024, 3584, 68, 97, 99, 100, 101, 102, 104, 105, 108, 110, 111, 112, 115, 117, 11978, 11984, 12061, 12075, 12081, 12095, 12100, 12104, 12170, 12181, 12188, 12204, 12207, 12223, 68, 111, 116, 59, 32768, 8762, 1024, 99, 108, 112, 114, 11993, 11999, 12019, 12055, 114, 33024, 175, 59, 32768, 175, 512, 101, 116, 12004, 12007, 59, 32768, 9794, 512, 59, 101, 12012, 12014, 32768, 10016, 115, 101, 59, 32768, 10016, 512, 59, 115, 12024, 12026, 32768, 8614, 116, 111, 1024, 59, 100, 108, 117, 12037, 12039, 12045, 12051, 32768, 8614, 111, 119, 110, 59, 32768, 8615, 101, 102, 116, 59, 32768, 8612, 112, 59, 32768, 8613, 107, 101, 114, 59, 32768, 9646, 512, 111, 121, 12066, 12072, 109, 109, 97, 59, 32768, 10793, 59, 32768, 1084, 97, 115, 104, 59, 32768, 8212, 97, 115, 117, 114, 101, 100, 97, 110, 103, 108, 101, 59, 32768, 8737, 114, 59, 32896, 55349, 56618, 111, 59, 32768, 8487, 768, 99, 100, 110, 12111, 12118, 12146, 114, 111, 33024, 181, 59, 32768, 181, 1024, 59, 97, 99, 100, 12127, 12129, 12134, 12139, 32768, 8739, 115, 116, 59, 32768, 42, 105, 114, 59, 32768, 10992, 111, 116, 33024, 183, 59, 32768, 183, 117, 115, 768, 59, 98, 100, 12155, 12157, 12160, 32768, 8722, 59, 32768, 8863, 512, 59, 117, 12165, 12167, 32768, 8760, 59, 32768, 10794, 564, 12174, 12178, 112, 59, 32768, 10971, 114, 59, 32768, 8230, 112, 108, 117, 115, 59, 32768, 8723, 512, 100, 112, 12193, 12199, 101, 108, 115, 59, 32768, 8871, 102, 59, 32896, 55349, 56670, 59, 32768, 8723, 512, 99, 116, 12212, 12217, 114, 59, 32896, 55349, 56514, 112, 111, 115, 59, 32768, 8766, 768, 59, 108, 109, 12230, 12232, 12240, 32768, 956, 116, 105, 109, 97, 112, 59, 32768, 8888, 97, 112, 59, 32768, 8888, 6144, 71, 76, 82, 86, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 111, 112, 114, 115, 116, 117, 118, 119, 12294, 12315, 12364, 12376, 12393, 12472, 12496, 12547, 12553, 12636, 12641, 12703, 12725, 12747, 12752, 12876, 12881, 12957, 13033, 13089, 13294, 13359, 13384, 13499, 512, 103, 116, 12299, 12303, 59, 32896, 8921, 824, 512, 59, 118, 12308, 12311, 32896, 8811, 8402, 59, 32896, 8811, 824, 768, 101, 108, 116, 12322, 12348, 12352, 102, 116, 512, 97, 114, 12329, 12336, 114, 114, 111, 119, 59, 32768, 8653, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8654, 59, 32896, 8920, 824, 512, 59, 118, 12357, 12360, 32896, 8810, 8402, 59, 32896, 8810, 824, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8655, 512, 68, 100, 12381, 12387, 97, 115, 104, 59, 32768, 8879, 97, 115, 104, 59, 32768, 8878, 1280, 98, 99, 110, 112, 116, 12404, 12409, 12415, 12420, 12452, 108, 97, 59, 32768, 8711, 117, 116, 101, 59, 32768, 324, 103, 59, 32896, 8736, 8402, 1280, 59, 69, 105, 111, 112, 12431, 12433, 12437, 12442, 12446, 32768, 8777, 59, 32896, 10864, 824, 100, 59, 32896, 8779, 824, 115, 59, 32768, 329, 114, 111, 120, 59, 32768, 8777, 117, 114, 512, 59, 97, 12459, 12461, 32768, 9838, 108, 512, 59, 115, 12467, 12469, 32768, 9838, 59, 32768, 8469, 836, 12477, 0, 12483, 112, 33024, 160, 59, 32768, 160, 109, 112, 512, 59, 101, 12489, 12492, 32896, 8782, 824, 59, 32896, 8783, 824, 1280, 97, 101, 111, 117, 121, 12507, 12519, 12525, 12540, 12544, 833, 12512, 0, 12515, 59, 32768, 10819, 111, 110, 59, 32768, 328, 100, 105, 108, 59, 32768, 326, 110, 103, 512, 59, 100, 12532, 12534, 32768, 8775, 111, 116, 59, 32896, 10861, 824, 112, 59, 32768, 10818, 59, 32768, 1085, 97, 115, 104, 59, 32768, 8211, 1792, 59, 65, 97, 100, 113, 115, 120, 12568, 12570, 12575, 12596, 12602, 12608, 12623, 32768, 8800, 114, 114, 59, 32768, 8663, 114, 512, 104, 114, 12581, 12585, 107, 59, 32768, 10532, 512, 59, 111, 12590, 12592, 32768, 8599, 119, 59, 32768, 8599, 111, 116, 59, 32896, 8784, 824, 117, 105, 118, 59, 32768, 8802, 512, 101, 105, 12613, 12618, 97, 114, 59, 32768, 10536, 109, 59, 32896, 8770, 824, 105, 115, 116, 512, 59, 115, 12631, 12633, 32768, 8708, 59, 32768, 8708, 114, 59, 32896, 55349, 56619, 1024, 69, 101, 115, 116, 12650, 12654, 12688, 12693, 59, 32896, 8807, 824, 768, 59, 113, 115, 12661, 12663, 12684, 32768, 8817, 768, 59, 113, 115, 12670, 12672, 12676, 32768, 8817, 59, 32896, 8807, 824, 108, 97, 110, 116, 59, 32896, 10878, 824, 59, 32896, 10878, 824, 105, 109, 59, 32768, 8821, 512, 59, 114, 12698, 12700, 32768, 8815, 59, 32768, 8815, 768, 65, 97, 112, 12710, 12715, 12720, 114, 114, 59, 32768, 8654, 114, 114, 59, 32768, 8622, 97, 114, 59, 32768, 10994, 768, 59, 115, 118, 12732, 12734, 12744, 32768, 8715, 512, 59, 100, 12739, 12741, 32768, 8956, 59, 32768, 8954, 59, 32768, 8715, 99, 121, 59, 32768, 1114, 1792, 65, 69, 97, 100, 101, 115, 116, 12767, 12772, 12776, 12781, 12785, 12853, 12858, 114, 114, 59, 32768, 8653, 59, 32896, 8806, 824, 114, 114, 59, 32768, 8602, 114, 59, 32768, 8229, 1024, 59, 102, 113, 115, 12794, 12796, 12821, 12842, 32768, 8816, 116, 512, 97, 114, 12802, 12809, 114, 114, 111, 119, 59, 32768, 8602, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8622, 768, 59, 113, 115, 12828, 12830, 12834, 32768, 8816, 59, 32896, 8806, 824, 108, 97, 110, 116, 59, 32896, 10877, 824, 512, 59, 115, 12847, 12850, 32896, 10877, 824, 59, 32768, 8814, 105, 109, 59, 32768, 8820, 512, 59, 114, 12863, 12865, 32768, 8814, 105, 512, 59, 101, 12871, 12873, 32768, 8938, 59, 32768, 8940, 105, 100, 59, 32768, 8740, 512, 112, 116, 12886, 12891, 102, 59, 32896, 55349, 56671, 33536, 172, 59, 105, 110, 12899, 12901, 12936, 32768, 172, 110, 1024, 59, 69, 100, 118, 12911, 12913, 12917, 12923, 32768, 8713, 59, 32896, 8953, 824, 111, 116, 59, 32896, 8949, 824, 818, 12928, 12931, 12934, 59, 32768, 8713, 59, 32768, 8951, 59, 32768, 8950, 105, 512, 59, 118, 12942, 12944, 32768, 8716, 818, 12949, 12952, 12955, 59, 32768, 8716, 59, 32768, 8958, 59, 32768, 8957, 768, 97, 111, 114, 12964, 12992, 12999, 114, 1024, 59, 97, 115, 116, 12974, 12976, 12983, 12988, 32768, 8742, 108, 108, 101, 108, 59, 32768, 8742, 108, 59, 32896, 11005, 8421, 59, 32896, 8706, 824, 108, 105, 110, 116, 59, 32768, 10772, 768, 59, 99, 101, 13006, 13008, 13013, 32768, 8832, 117, 101, 59, 32768, 8928, 512, 59, 99, 13018, 13021, 32896, 10927, 824, 512, 59, 101, 13026, 13028, 32768, 8832, 113, 59, 32896, 10927, 824, 1024, 65, 97, 105, 116, 13042, 13047, 13066, 13077, 114, 114, 59, 32768, 8655, 114, 114, 768, 59, 99, 119, 13056, 13058, 13062, 32768, 8603, 59, 32896, 10547, 824, 59, 32896, 8605, 824, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8603, 114, 105, 512, 59, 101, 13084, 13086, 32768, 8939, 59, 32768, 8941, 1792, 99, 104, 105, 109, 112, 113, 117, 13104, 13128, 13151, 13169, 13174, 13179, 13194, 1024, 59, 99, 101, 114, 13113, 13115, 13120, 13124, 32768, 8833, 117, 101, 59, 32768, 8929, 59, 32896, 10928, 824, 59, 32896, 55349, 56515, 111, 114, 116, 1086, 13137, 0, 0, 13142, 105, 100, 59, 32768, 8740, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8742, 109, 512, 59, 101, 13157, 13159, 32768, 8769, 512, 59, 113, 13164, 13166, 32768, 8772, 59, 32768, 8772, 105, 100, 59, 32768, 8740, 97, 114, 59, 32768, 8742, 115, 117, 512, 98, 112, 13186, 13190, 101, 59, 32768, 8930, 101, 59, 32768, 8931, 768, 98, 99, 112, 13201, 13241, 13254, 1024, 59, 69, 101, 115, 13210, 13212, 13216, 13219, 32768, 8836, 59, 32896, 10949, 824, 59, 32768, 8840, 101, 116, 512, 59, 101, 13226, 13229, 32896, 8834, 8402, 113, 512, 59, 113, 13235, 13237, 32768, 8840, 59, 32896, 10949, 824, 99, 512, 59, 101, 13247, 13249, 32768, 8833, 113, 59, 32896, 10928, 824, 1024, 59, 69, 101, 115, 13263, 13265, 13269, 13272, 32768, 8837, 59, 32896, 10950, 824, 59, 32768, 8841, 101, 116, 512, 59, 101, 13279, 13282, 32896, 8835, 8402, 113, 512, 59, 113, 13288, 13290, 32768, 8841, 59, 32896, 10950, 824, 1024, 103, 105, 108, 114, 13303, 13307, 13315, 13319, 108, 59, 32768, 8825, 108, 100, 101, 33024, 241, 59, 32768, 241, 103, 59, 32768, 8824, 105, 97, 110, 103, 108, 101, 512, 108, 114, 13330, 13344, 101, 102, 116, 512, 59, 101, 13338, 13340, 32768, 8938, 113, 59, 32768, 8940, 105, 103, 104, 116, 512, 59, 101, 13353, 13355, 32768, 8939, 113, 59, 32768, 8941, 512, 59, 109, 13364, 13366, 32768, 957, 768, 59, 101, 115, 13373, 13375, 13380, 32768, 35, 114, 111, 59, 32768, 8470, 112, 59, 32768, 8199, 2304, 68, 72, 97, 100, 103, 105, 108, 114, 115, 13403, 13409, 13415, 13420, 13426, 13439, 13446, 13476, 13493, 97, 115, 104, 59, 32768, 8877, 97, 114, 114, 59, 32768, 10500, 112, 59, 32896, 8781, 8402, 97, 115, 104, 59, 32768, 8876, 512, 101, 116, 13431, 13435, 59, 32896, 8805, 8402, 59, 32896, 62, 8402, 110, 102, 105, 110, 59, 32768, 10718, 768, 65, 101, 116, 13453, 13458, 13462, 114, 114, 59, 32768, 10498, 59, 32896, 8804, 8402, 512, 59, 114, 13467, 13470, 32896, 60, 8402, 105, 101, 59, 32896, 8884, 8402, 512, 65, 116, 13481, 13486, 114, 114, 59, 32768, 10499, 114, 105, 101, 59, 32896, 8885, 8402, 105, 109, 59, 32896, 8764, 8402, 768, 65, 97, 110, 13506, 13511, 13532, 114, 114, 59, 32768, 8662, 114, 512, 104, 114, 13517, 13521, 107, 59, 32768, 10531, 512, 59, 111, 13526, 13528, 32768, 8598, 119, 59, 32768, 8598, 101, 97, 114, 59, 32768, 10535, 9252, 13576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13579, 0, 13596, 13617, 13653, 13659, 13673, 13695, 13708, 0, 0, 13713, 13750, 0, 13788, 13794, 0, 13815, 13890, 13913, 13937, 13944, 59, 32768, 9416, 512, 99, 115, 13583, 13591, 117, 116, 101, 33024, 243, 59, 32768, 243, 116, 59, 32768, 8859, 512, 105, 121, 13600, 13613, 114, 512, 59, 99, 13606, 13608, 32768, 8858, 33024, 244, 59, 32768, 244, 59, 32768, 1086, 1280, 97, 98, 105, 111, 115, 13627, 13632, 13638, 13642, 13646, 115, 104, 59, 32768, 8861, 108, 97, 99, 59, 32768, 337, 118, 59, 32768, 10808, 116, 59, 32768, 8857, 111, 108, 100, 59, 32768, 10684, 108, 105, 103, 59, 32768, 339, 512, 99, 114, 13663, 13668, 105, 114, 59, 32768, 10687, 59, 32896, 55349, 56620, 1600, 13680, 0, 0, 13684, 0, 13692, 110, 59, 32768, 731, 97, 118, 101, 33024, 242, 59, 32768, 242, 59, 32768, 10689, 512, 98, 109, 13699, 13704, 97, 114, 59, 32768, 10677, 59, 32768, 937, 110, 116, 59, 32768, 8750, 1024, 97, 99, 105, 116, 13721, 13726, 13741, 13746, 114, 114, 59, 32768, 8634, 512, 105, 114, 13731, 13735, 114, 59, 32768, 10686, 111, 115, 115, 59, 32768, 10683, 110, 101, 59, 32768, 8254, 59, 32768, 10688, 768, 97, 101, 105, 13756, 13761, 13766, 99, 114, 59, 32768, 333, 103, 97, 59, 32768, 969, 768, 99, 100, 110, 13773, 13779, 13782, 114, 111, 110, 59, 32768, 959, 59, 32768, 10678, 117, 115, 59, 32768, 8854, 112, 102, 59, 32896, 55349, 56672, 768, 97, 101, 108, 13800, 13804, 13809, 114, 59, 32768, 10679, 114, 112, 59, 32768, 10681, 117, 115, 59, 32768, 8853, 1792, 59, 97, 100, 105, 111, 115, 118, 13829, 13831, 13836, 13869, 13875, 13879, 13886, 32768, 8744, 114, 114, 59, 32768, 8635, 1024, 59, 101, 102, 109, 13845, 13847, 13859, 13864, 32768, 10845, 114, 512, 59, 111, 13853, 13855, 32768, 8500, 102, 59, 32768, 8500, 33024, 170, 59, 32768, 170, 33024, 186, 59, 32768, 186, 103, 111, 102, 59, 32768, 8886, 114, 59, 32768, 10838, 108, 111, 112, 101, 59, 32768, 10839, 59, 32768, 10843, 768, 99, 108, 111, 13896, 13900, 13908, 114, 59, 32768, 8500, 97, 115, 104, 33024, 248, 59, 32768, 248, 108, 59, 32768, 8856, 105, 573, 13917, 13924, 100, 101, 33024, 245, 59, 32768, 245, 101, 115, 512, 59, 97, 13930, 13932, 32768, 8855, 115, 59, 32768, 10806, 109, 108, 33024, 246, 59, 32768, 246, 98, 97, 114, 59, 32768, 9021, 5426, 13972, 0, 14013, 0, 14017, 14053, 0, 14058, 14086, 0, 0, 14107, 14199, 0, 14202, 0, 0, 14229, 14425, 0, 14438, 114, 1024, 59, 97, 115, 116, 13981, 13983, 13997, 14009, 32768, 8741, 33280, 182, 59, 108, 13989, 13991, 32768, 182, 108, 101, 108, 59, 32768, 8741, 1082, 14003, 0, 0, 14007, 109, 59, 32768, 10995, 59, 32768, 11005, 59, 32768, 8706, 121, 59, 32768, 1087, 114, 1280, 99, 105, 109, 112, 116, 14028, 14033, 14038, 14043, 14046, 110, 116, 59, 32768, 37, 111, 100, 59, 32768, 46, 105, 108, 59, 32768, 8240, 59, 32768, 8869, 101, 110, 107, 59, 32768, 8241, 114, 59, 32896, 55349, 56621, 768, 105, 109, 111, 14064, 14074, 14080, 512, 59, 118, 14069, 14071, 32768, 966, 59, 32768, 981, 109, 97, 116, 59, 32768, 8499, 110, 101, 59, 32768, 9742, 768, 59, 116, 118, 14092, 14094, 14103, 32768, 960, 99, 104, 102, 111, 114, 107, 59, 32768, 8916, 59, 32768, 982, 512, 97, 117, 14111, 14132, 110, 512, 99, 107, 14117, 14128, 107, 512, 59, 104, 14123, 14125, 32768, 8463, 59, 32768, 8462, 118, 59, 32768, 8463, 115, 2304, 59, 97, 98, 99, 100, 101, 109, 115, 116, 14152, 14154, 14160, 14163, 14168, 14179, 14182, 14188, 14193, 32768, 43, 99, 105, 114, 59, 32768, 10787, 59, 32768, 8862, 105, 114, 59, 32768, 10786, 512, 111, 117, 14173, 14176, 59, 32768, 8724, 59, 32768, 10789, 59, 32768, 10866, 110, 33024, 177, 59, 32768, 177, 105, 109, 59, 32768, 10790, 119, 111, 59, 32768, 10791, 59, 32768, 177, 768, 105, 112, 117, 14208, 14216, 14221, 110, 116, 105, 110, 116, 59, 32768, 10773, 102, 59, 32896, 55349, 56673, 110, 100, 33024, 163, 59, 32768, 163, 2560, 59, 69, 97, 99, 101, 105, 110, 111, 115, 117, 14249, 14251, 14254, 14258, 14263, 14336, 14348, 14367, 14413, 14418, 32768, 8826, 59, 32768, 10931, 112, 59, 32768, 10935, 117, 101, 59, 32768, 8828, 512, 59, 99, 14268, 14270, 32768, 10927, 1536, 59, 97, 99, 101, 110, 115, 14283, 14285, 14293, 14302, 14306, 14331, 32768, 8826, 112, 112, 114, 111, 120, 59, 32768, 10935, 117, 114, 108, 121, 101, 113, 59, 32768, 8828, 113, 59, 32768, 10927, 768, 97, 101, 115, 14313, 14321, 14326, 112, 112, 114, 111, 120, 59, 32768, 10937, 113, 113, 59, 32768, 10933, 105, 109, 59, 32768, 8936, 105, 109, 59, 32768, 8830, 109, 101, 512, 59, 115, 14343, 14345, 32768, 8242, 59, 32768, 8473, 768, 69, 97, 115, 14355, 14358, 14362, 59, 32768, 10933, 112, 59, 32768, 10937, 105, 109, 59, 32768, 8936, 768, 100, 102, 112, 14374, 14377, 14402, 59, 32768, 8719, 768, 97, 108, 115, 14384, 14390, 14396, 108, 97, 114, 59, 32768, 9006, 105, 110, 101, 59, 32768, 8978, 117, 114, 102, 59, 32768, 8979, 512, 59, 116, 14407, 14409, 32768, 8733, 111, 59, 32768, 8733, 105, 109, 59, 32768, 8830, 114, 101, 108, 59, 32768, 8880, 512, 99, 105, 14429, 14434, 114, 59, 32896, 55349, 56517, 59, 32768, 968, 110, 99, 115, 112, 59, 32768, 8200, 1536, 102, 105, 111, 112, 115, 117, 14457, 14462, 14467, 14473, 14480, 14486, 114, 59, 32896, 55349, 56622, 110, 116, 59, 32768, 10764, 112, 102, 59, 32896, 55349, 56674, 114, 105, 109, 101, 59, 32768, 8279, 99, 114, 59, 32896, 55349, 56518, 768, 97, 101, 111, 14493, 14513, 14526, 116, 512, 101, 105, 14499, 14508, 114, 110, 105, 111, 110, 115, 59, 32768, 8461, 110, 116, 59, 32768, 10774, 115, 116, 512, 59, 101, 14520, 14522, 32768, 63, 113, 59, 32768, 8799, 116, 33024, 34, 59, 32768, 34, 5376, 65, 66, 72, 97, 98, 99, 100, 101, 102, 104, 105, 108, 109, 110, 111, 112, 114, 115, 116, 117, 120, 14575, 14597, 14603, 14608, 14775, 14829, 14865, 14901, 14943, 14966, 15000, 15139, 15159, 15176, 15182, 15236, 15261, 15267, 15309, 15352, 15360, 768, 97, 114, 116, 14582, 14587, 14591, 114, 114, 59, 32768, 8667, 114, 59, 32768, 8658, 97, 105, 108, 59, 32768, 10524, 97, 114, 114, 59, 32768, 10511, 97, 114, 59, 32768, 10596, 1792, 99, 100, 101, 110, 113, 114, 116, 14623, 14637, 14642, 14650, 14672, 14679, 14751, 512, 101, 117, 14628, 14632, 59, 32896, 8765, 817, 116, 101, 59, 32768, 341, 105, 99, 59, 32768, 8730, 109, 112, 116, 121, 118, 59, 32768, 10675, 103, 1024, 59, 100, 101, 108, 14660, 14662, 14665, 14668, 32768, 10217, 59, 32768, 10642, 59, 32768, 10661, 101, 59, 32768, 10217, 117, 111, 33024, 187, 59, 32768, 187, 114, 2816, 59, 97, 98, 99, 102, 104, 108, 112, 115, 116, 119, 14703, 14705, 14709, 14720, 14723, 14727, 14731, 14735, 14739, 14744, 14748, 32768, 8594, 112, 59, 32768, 10613, 512, 59, 102, 14714, 14716, 32768, 8677, 115, 59, 32768, 10528, 59, 32768, 10547, 115, 59, 32768, 10526, 107, 59, 32768, 8618, 112, 59, 32768, 8620, 108, 59, 32768, 10565, 105, 109, 59, 32768, 10612, 108, 59, 32768, 8611, 59, 32768, 8605, 512, 97, 105, 14756, 14761, 105, 108, 59, 32768, 10522, 111, 512, 59, 110, 14767, 14769, 32768, 8758, 97, 108, 115, 59, 32768, 8474, 768, 97, 98, 114, 14782, 14787, 14792, 114, 114, 59, 32768, 10509, 114, 107, 59, 32768, 10099, 512, 97, 107, 14797, 14809, 99, 512, 101, 107, 14803, 14806, 59, 32768, 125, 59, 32768, 93, 512, 101, 115, 14814, 14817, 59, 32768, 10636, 108, 512, 100, 117, 14823, 14826, 59, 32768, 10638, 59, 32768, 10640, 1024, 97, 101, 117, 121, 14838, 14844, 14858, 14862, 114, 111, 110, 59, 32768, 345, 512, 100, 105, 14849, 14854, 105, 108, 59, 32768, 343, 108, 59, 32768, 8969, 98, 59, 32768, 125, 59, 32768, 1088, 1024, 99, 108, 113, 115, 14874, 14878, 14885, 14897, 97, 59, 32768, 10551, 100, 104, 97, 114, 59, 32768, 10601, 117, 111, 512, 59, 114, 14892, 14894, 32768, 8221, 59, 32768, 8221, 104, 59, 32768, 8627, 768, 97, 99, 103, 14908, 14934, 14938, 108, 1024, 59, 105, 112, 115, 14918, 14920, 14925, 14931, 32768, 8476, 110, 101, 59, 32768, 8475, 97, 114, 116, 59, 32768, 8476, 59, 32768, 8477, 116, 59, 32768, 9645, 33024, 174, 59, 32768, 174, 768, 105, 108, 114, 14950, 14956, 14962, 115, 104, 116, 59, 32768, 10621, 111, 111, 114, 59, 32768, 8971, 59, 32896, 55349, 56623, 512, 97, 111, 14971, 14990, 114, 512, 100, 117, 14977, 14980, 59, 32768, 8641, 512, 59, 108, 14985, 14987, 32768, 8640, 59, 32768, 10604, 512, 59, 118, 14995, 14997, 32768, 961, 59, 32768, 1009, 768, 103, 110, 115, 15007, 15123, 15127, 104, 116, 1536, 97, 104, 108, 114, 115, 116, 15022, 15039, 15060, 15086, 15099, 15111, 114, 114, 111, 119, 512, 59, 116, 15031, 15033, 32768, 8594, 97, 105, 108, 59, 32768, 8611, 97, 114, 112, 111, 111, 110, 512, 100, 117, 15050, 15056, 111, 119, 110, 59, 32768, 8641, 112, 59, 32768, 8640, 101, 102, 116, 512, 97, 104, 15068, 15076, 114, 114, 111, 119, 115, 59, 32768, 8644, 97, 114, 112, 111, 111, 110, 115, 59, 32768, 8652, 105, 103, 104, 116, 97, 114, 114, 111, 119, 115, 59, 32768, 8649, 113, 117, 105, 103, 97, 114, 114, 111, 119, 59, 32768, 8605, 104, 114, 101, 101, 116, 105, 109, 101, 115, 59, 32768, 8908, 103, 59, 32768, 730, 105, 110, 103, 100, 111, 116, 115, 101, 113, 59, 32768, 8787, 768, 97, 104, 109, 15146, 15151, 15156, 114, 114, 59, 32768, 8644, 97, 114, 59, 32768, 8652, 59, 32768, 8207, 111, 117, 115, 116, 512, 59, 97, 15168, 15170, 32768, 9137, 99, 104, 101, 59, 32768, 9137, 109, 105, 100, 59, 32768, 10990, 1024, 97, 98, 112, 116, 15191, 15204, 15209, 15229, 512, 110, 114, 15196, 15200, 103, 59, 32768, 10221, 114, 59, 32768, 8702, 114, 107, 59, 32768, 10215, 768, 97, 102, 108, 15216, 15220, 15224, 114, 59, 32768, 10630, 59, 32896, 55349, 56675, 117, 115, 59, 32768, 10798, 105, 109, 101, 115, 59, 32768, 10805, 512, 97, 112, 15241, 15253, 114, 512, 59, 103, 15247, 15249, 32768, 41, 116, 59, 32768, 10644, 111, 108, 105, 110, 116, 59, 32768, 10770, 97, 114, 114, 59, 32768, 8649, 1024, 97, 99, 104, 113, 15276, 15282, 15287, 15290, 113, 117, 111, 59, 32768, 8250, 114, 59, 32896, 55349, 56519, 59, 32768, 8625, 512, 98, 117, 15295, 15298, 59, 32768, 93, 111, 512, 59, 114, 15304, 15306, 32768, 8217, 59, 32768, 8217, 768, 104, 105, 114, 15316, 15322, 15328, 114, 101, 101, 59, 32768, 8908, 109, 101, 115, 59, 32768, 8906, 105, 1024, 59, 101, 102, 108, 15338, 15340, 15343, 15346, 32768, 9657, 59, 32768, 8885, 59, 32768, 9656, 116, 114, 105, 59, 32768, 10702, 108, 117, 104, 97, 114, 59, 32768, 10600, 59, 32768, 8478, 6706, 15391, 15398, 15404, 15499, 15516, 15592, 0, 15606, 15660, 0, 0, 15752, 15758, 0, 15827, 15863, 15886, 16000, 16006, 16038, 16086, 0, 16467, 0, 0, 16506, 99, 117, 116, 101, 59, 32768, 347, 113, 117, 111, 59, 32768, 8218, 2560, 59, 69, 97, 99, 101, 105, 110, 112, 115, 121, 15424, 15426, 15429, 15441, 15446, 15458, 15463, 15482, 15490, 15495, 32768, 8827, 59, 32768, 10932, 833, 15434, 0, 15437, 59, 32768, 10936, 111, 110, 59, 32768, 353, 117, 101, 59, 32768, 8829, 512, 59, 100, 15451, 15453, 32768, 10928, 105, 108, 59, 32768, 351, 114, 99, 59, 32768, 349, 768, 69, 97, 115, 15470, 15473, 15477, 59, 32768, 10934, 112, 59, 32768, 10938, 105, 109, 59, 32768, 8937, 111, 108, 105, 110, 116, 59, 32768, 10771, 105, 109, 59, 32768, 8831, 59, 32768, 1089, 111, 116, 768, 59, 98, 101, 15507, 15509, 15512, 32768, 8901, 59, 32768, 8865, 59, 32768, 10854, 1792, 65, 97, 99, 109, 115, 116, 120, 15530, 15535, 15556, 15562, 15566, 15572, 15587, 114, 114, 59, 32768, 8664, 114, 512, 104, 114, 15541, 15545, 107, 59, 32768, 10533, 512, 59, 111, 15550, 15552, 32768, 8600, 119, 59, 32768, 8600, 116, 33024, 167, 59, 32768, 167, 105, 59, 32768, 59, 119, 97, 114, 59, 32768, 10537, 109, 512, 105, 110, 15578, 15584, 110, 117, 115, 59, 32768, 8726, 59, 32768, 8726, 116, 59, 32768, 10038, 114, 512, 59, 111, 15597, 15600, 32896, 55349, 56624, 119, 110, 59, 32768, 8994, 1024, 97, 99, 111, 121, 15614, 15619, 15632, 15654, 114, 112, 59, 32768, 9839, 512, 104, 121, 15624, 15629, 99, 121, 59, 32768, 1097, 59, 32768, 1096, 114, 116, 1086, 15640, 0, 0, 15645, 105, 100, 59, 32768, 8739, 97, 114, 97, 108, 108, 101, 108, 59, 32768, 8741, 33024, 173, 59, 32768, 173, 512, 103, 109, 15664, 15681, 109, 97, 768, 59, 102, 118, 15673, 15675, 15678, 32768, 963, 59, 32768, 962, 59, 32768, 962, 2048, 59, 100, 101, 103, 108, 110, 112, 114, 15698, 15700, 15705, 15715, 15725, 15735, 15739, 15745, 32768, 8764, 111, 116, 59, 32768, 10858, 512, 59, 113, 15710, 15712, 32768, 8771, 59, 32768, 8771, 512, 59, 69, 15720, 15722, 32768, 10910, 59, 32768, 10912, 512, 59, 69, 15730, 15732, 32768, 10909, 59, 32768, 10911, 101, 59, 32768, 8774, 108, 117, 115, 59, 32768, 10788, 97, 114, 114, 59, 32768, 10610, 97, 114, 114, 59, 32768, 8592, 1024, 97, 101, 105, 116, 15766, 15788, 15796, 15808, 512, 108, 115, 15771, 15783, 108, 115, 101, 116, 109, 105, 110, 117, 115, 59, 32768, 8726, 104, 112, 59, 32768, 10803, 112, 97, 114, 115, 108, 59, 32768, 10724, 512, 100, 108, 15801, 15804, 59, 32768, 8739, 101, 59, 32768, 8995, 512, 59, 101, 15813, 15815, 32768, 10922, 512, 59, 115, 15820, 15822, 32768, 10924, 59, 32896, 10924, 65024, 768, 102, 108, 112, 15833, 15839, 15857, 116, 99, 121, 59, 32768, 1100, 512, 59, 98, 15844, 15846, 32768, 47, 512, 59, 97, 15851, 15853, 32768, 10692, 114, 59, 32768, 9023, 102, 59, 32896, 55349, 56676, 97, 512, 100, 114, 15868, 15882, 101, 115, 512, 59, 117, 15875, 15877, 32768, 9824, 105, 116, 59, 32768, 9824, 59, 32768, 8741, 768, 99, 115, 117, 15892, 15921, 15977, 512, 97, 117, 15897, 15909, 112, 512, 59, 115, 15903, 15905, 32768, 8851, 59, 32896, 8851, 65024, 112, 512, 59, 115, 15915, 15917, 32768, 8852, 59, 32896, 8852, 65024, 117, 512, 98, 112, 15927, 15952, 768, 59, 101, 115, 15934, 15936, 15939, 32768, 8847, 59, 32768, 8849, 101, 116, 512, 59, 101, 15946, 15948, 32768, 8847, 113, 59, 32768, 8849, 768, 59, 101, 115, 15959, 15961, 15964, 32768, 8848, 59, 32768, 8850, 101, 116, 512, 59, 101, 15971, 15973, 32768, 8848, 113, 59, 32768, 8850, 768, 59, 97, 102, 15984, 15986, 15996, 32768, 9633, 114, 566, 15991, 15994, 59, 32768, 9633, 59, 32768, 9642, 59, 32768, 9642, 97, 114, 114, 59, 32768, 8594, 1024, 99, 101, 109, 116, 16014, 16019, 16025, 16031, 114, 59, 32896, 55349, 56520, 116, 109, 110, 59, 32768, 8726, 105, 108, 101, 59, 32768, 8995, 97, 114, 102, 59, 32768, 8902, 512, 97, 114, 16042, 16053, 114, 512, 59, 102, 16048, 16050, 32768, 9734, 59, 32768, 9733, 512, 97, 110, 16058, 16081, 105, 103, 104, 116, 512, 101, 112, 16067, 16076, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 104, 105, 59, 32768, 981, 115, 59, 32768, 175, 1280, 98, 99, 109, 110, 112, 16096, 16221, 16288, 16291, 16295, 2304, 59, 69, 100, 101, 109, 110, 112, 114, 115, 16115, 16117, 16120, 16125, 16137, 16143, 16154, 16160, 16166, 32768, 8834, 59, 32768, 10949, 111, 116, 59, 32768, 10941, 512, 59, 100, 16130, 16132, 32768, 8838, 111, 116, 59, 32768, 10947, 117, 108, 116, 59, 32768, 10945, 512, 69, 101, 16148, 16151, 59, 32768, 10955, 59, 32768, 8842, 108, 117, 115, 59, 32768, 10943, 97, 114, 114, 59, 32768, 10617, 768, 101, 105, 117, 16173, 16206, 16210, 116, 768, 59, 101, 110, 16181, 16183, 16194, 32768, 8834, 113, 512, 59, 113, 16189, 16191, 32768, 8838, 59, 32768, 10949, 101, 113, 512, 59, 113, 16201, 16203, 32768, 8842, 59, 32768, 10955, 109, 59, 32768, 10951, 512, 98, 112, 16215, 16218, 59, 32768, 10965, 59, 32768, 10963, 99, 1536, 59, 97, 99, 101, 110, 115, 16235, 16237, 16245, 16254, 16258, 16283, 32768, 8827, 112, 112, 114, 111, 120, 59, 32768, 10936, 117, 114, 108, 121, 101, 113, 59, 32768, 8829, 113, 59, 32768, 10928, 768, 97, 101, 115, 16265, 16273, 16278, 112, 112, 114, 111, 120, 59, 32768, 10938, 113, 113, 59, 32768, 10934, 105, 109, 59, 32768, 8937, 105, 109, 59, 32768, 8831, 59, 32768, 8721, 103, 59, 32768, 9834, 3328, 49, 50, 51, 59, 69, 100, 101, 104, 108, 109, 110, 112, 115, 16322, 16327, 16332, 16337, 16339, 16342, 16356, 16368, 16382, 16388, 16394, 16405, 16411, 33024, 185, 59, 32768, 185, 33024, 178, 59, 32768, 178, 33024, 179, 59, 32768, 179, 32768, 8835, 59, 32768, 10950, 512, 111, 115, 16347, 16351, 116, 59, 32768, 10942, 117, 98, 59, 32768, 10968, 512, 59, 100, 16361, 16363, 32768, 8839, 111, 116, 59, 32768, 10948, 115, 512, 111, 117, 16374, 16378, 108, 59, 32768, 10185, 98, 59, 32768, 10967, 97, 114, 114, 59, 32768, 10619, 117, 108, 116, 59, 32768, 10946, 512, 69, 101, 16399, 16402, 59, 32768, 10956, 59, 32768, 8843, 108, 117, 115, 59, 32768, 10944, 768, 101, 105, 117, 16418, 16451, 16455, 116, 768, 59, 101, 110, 16426, 16428, 16439, 32768, 8835, 113, 512, 59, 113, 16434, 16436, 32768, 8839, 59, 32768, 10950, 101, 113, 512, 59, 113, 16446, 16448, 32768, 8843, 59, 32768, 10956, 109, 59, 32768, 10952, 512, 98, 112, 16460, 16463, 59, 32768, 10964, 59, 32768, 10966, 768, 65, 97, 110, 16473, 16478, 16499, 114, 114, 59, 32768, 8665, 114, 512, 104, 114, 16484, 16488, 107, 59, 32768, 10534, 512, 59, 111, 16493, 16495, 32768, 8601, 119, 59, 32768, 8601, 119, 97, 114, 59, 32768, 10538, 108, 105, 103, 33024, 223, 59, 32768, 223, 5938, 16538, 16552, 16557, 16579, 16584, 16591, 0, 16596, 16692, 0, 0, 0, 0, 0, 16731, 16780, 0, 16787, 16908, 0, 0, 0, 16938, 1091, 16543, 0, 0, 16549, 103, 101, 116, 59, 32768, 8982, 59, 32768, 964, 114, 107, 59, 32768, 9140, 768, 97, 101, 121, 16563, 16569, 16575, 114, 111, 110, 59, 32768, 357, 100, 105, 108, 59, 32768, 355, 59, 32768, 1090, 111, 116, 59, 32768, 8411, 108, 114, 101, 99, 59, 32768, 8981, 114, 59, 32896, 55349, 56625, 1024, 101, 105, 107, 111, 16604, 16641, 16670, 16684, 835, 16609, 0, 16624, 101, 512, 52, 102, 16614, 16617, 59, 32768, 8756, 111, 114, 101, 59, 32768, 8756, 97, 768, 59, 115, 118, 16631, 16633, 16638, 32768, 952, 121, 109, 59, 32768, 977, 59, 32768, 977, 512, 99, 110, 16646, 16665, 107, 512, 97, 115, 16652, 16660, 112, 112, 114, 111, 120, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 115, 112, 59, 32768, 8201, 512, 97, 115, 16675, 16679, 112, 59, 32768, 8776, 105, 109, 59, 32768, 8764, 114, 110, 33024, 254, 59, 32768, 254, 829, 16696, 16701, 16727, 100, 101, 59, 32768, 732, 101, 115, 33536, 215, 59, 98, 100, 16710, 16712, 16723, 32768, 215, 512, 59, 97, 16717, 16719, 32768, 8864, 114, 59, 32768, 10801, 59, 32768, 10800, 116, 59, 32768, 8749, 768, 101, 112, 115, 16737, 16741, 16775, 97, 59, 32768, 10536, 1024, 59, 98, 99, 102, 16750, 16752, 16757, 16762, 32768, 8868, 111, 116, 59, 32768, 9014, 105, 114, 59, 32768, 10993, 512, 59, 111, 16767, 16770, 32896, 55349, 56677, 114, 107, 59, 32768, 10970, 97, 59, 32768, 10537, 114, 105, 109, 101, 59, 32768, 8244, 768, 97, 105, 112, 16793, 16798, 16899, 100, 101, 59, 32768, 8482, 1792, 97, 100, 101, 109, 112, 115, 116, 16813, 16868, 16873, 16876, 16883, 16889, 16893, 110, 103, 108, 101, 1280, 59, 100, 108, 113, 114, 16828, 16830, 16836, 16850, 16853, 32768, 9653, 111, 119, 110, 59, 32768, 9663, 101, 102, 116, 512, 59, 101, 16844, 16846, 32768, 9667, 113, 59, 32768, 8884, 59, 32768, 8796, 105, 103, 104, 116, 512, 59, 101, 16862, 16864, 32768, 9657, 113, 59, 32768, 8885, 111, 116, 59, 32768, 9708, 59, 32768, 8796, 105, 110, 117, 115, 59, 32768, 10810, 108, 117, 115, 59, 32768, 10809, 98, 59, 32768, 10701, 105, 109, 101, 59, 32768, 10811, 101, 122, 105, 117, 109, 59, 32768, 9186, 768, 99, 104, 116, 16914, 16926, 16931, 512, 114, 121, 16919, 16923, 59, 32896, 55349, 56521, 59, 32768, 1094, 99, 121, 59, 32768, 1115, 114, 111, 107, 59, 32768, 359, 512, 105, 111, 16942, 16947, 120, 116, 59, 32768, 8812, 104, 101, 97, 100, 512, 108, 114, 16956, 16967, 101, 102, 116, 97, 114, 114, 111, 119, 59, 32768, 8606, 105, 103, 104, 116, 97, 114, 114, 111, 119, 59, 32768, 8608, 4608, 65, 72, 97, 98, 99, 100, 102, 103, 104, 108, 109, 111, 112, 114, 115, 116, 117, 119, 17016, 17021, 17026, 17043, 17057, 17072, 17095, 17110, 17119, 17139, 17172, 17187, 17202, 17290, 17330, 17336, 17365, 17381, 114, 114, 59, 32768, 8657, 97, 114, 59, 32768, 10595, 512, 99, 114, 17031, 17039, 117, 116, 101, 33024, 250, 59, 32768, 250, 114, 59, 32768, 8593, 114, 820, 17049, 0, 17053, 121, 59, 32768, 1118, 118, 101, 59, 32768, 365, 512, 105, 121, 17062, 17069, 114, 99, 33024, 251, 59, 32768, 251, 59, 32768, 1091, 768, 97, 98, 104, 17079, 17084, 17090, 114, 114, 59, 32768, 8645, 108, 97, 99, 59, 32768, 369, 97, 114, 59, 32768, 10606, 512, 105, 114, 17100, 17106, 115, 104, 116, 59, 32768, 10622, 59, 32896, 55349, 56626, 114, 97, 118, 101, 33024, 249, 59, 32768, 249, 562, 17123, 17135, 114, 512, 108, 114, 17128, 17131, 59, 32768, 8639, 59, 32768, 8638, 108, 107, 59, 32768, 9600, 512, 99, 116, 17144, 17167, 1088, 17150, 0, 0, 17163, 114, 110, 512, 59, 101, 17156, 17158, 32768, 8988, 114, 59, 32768, 8988, 111, 112, 59, 32768, 8975, 114, 105, 59, 32768, 9720, 512, 97, 108, 17177, 17182, 99, 114, 59, 32768, 363, 33024, 168, 59, 32768, 168, 512, 103, 112, 17192, 17197, 111, 110, 59, 32768, 371, 102, 59, 32896, 55349, 56678, 1536, 97, 100, 104, 108, 115, 117, 17215, 17222, 17233, 17257, 17262, 17280, 114, 114, 111, 119, 59, 32768, 8593, 111, 119, 110, 97, 114, 114, 111, 119, 59, 32768, 8597, 97, 114, 112, 111, 111, 110, 512, 108, 114, 17244, 17250, 101, 102, 116, 59, 32768, 8639, 105, 103, 104, 116, 59, 32768, 8638, 117, 115, 59, 32768, 8846, 105, 768, 59, 104, 108, 17270, 17272, 17275, 32768, 965, 59, 32768, 978, 111, 110, 59, 32768, 965, 112, 97, 114, 114, 111, 119, 115, 59, 32768, 8648, 768, 99, 105, 116, 17297, 17320, 17325, 1088, 17303, 0, 0, 17316, 114, 110, 512, 59, 101, 17309, 17311, 32768, 8989, 114, 59, 32768, 8989, 111, 112, 59, 32768, 8974, 110, 103, 59, 32768, 367, 114, 105, 59, 32768, 9721, 99, 114, 59, 32896, 55349, 56522, 768, 100, 105, 114, 17343, 17348, 17354, 111, 116, 59, 32768, 8944, 108, 100, 101, 59, 32768, 361, 105, 512, 59, 102, 17360, 17362, 32768, 9653, 59, 32768, 9652, 512, 97, 109, 17370, 17375, 114, 114, 59, 32768, 8648, 108, 33024, 252, 59, 32768, 252, 97, 110, 103, 108, 101, 59, 32768, 10663, 3840, 65, 66, 68, 97, 99, 100, 101, 102, 108, 110, 111, 112, 114, 115, 122, 17420, 17425, 17437, 17443, 17613, 17617, 17623, 17667, 17672, 17678, 17693, 17699, 17705, 17711, 17754, 114, 114, 59, 32768, 8661, 97, 114, 512, 59, 118, 17432, 17434, 32768, 10984, 59, 32768, 10985, 97, 115, 104, 59, 32768, 8872, 512, 110, 114, 17448, 17454, 103, 114, 116, 59, 32768, 10652, 1792, 101, 107, 110, 112, 114, 115, 116, 17469, 17478, 17485, 17494, 17515, 17526, 17578, 112, 115, 105, 108, 111, 110, 59, 32768, 1013, 97, 112, 112, 97, 59, 32768, 1008, 111, 116, 104, 105, 110, 103, 59, 32768, 8709, 768, 104, 105, 114, 17501, 17505, 17508, 105, 59, 32768, 981, 59, 32768, 982, 111, 112, 116, 111, 59, 32768, 8733, 512, 59, 104, 17520, 17522, 32768, 8597, 111, 59, 32768, 1009, 512, 105, 117, 17531, 17537, 103, 109, 97, 59, 32768, 962, 512, 98, 112, 17542, 17560, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17553, 17556, 32896, 8842, 65024, 59, 32896, 10955, 65024, 115, 101, 116, 110, 101, 113, 512, 59, 113, 17571, 17574, 32896, 8843, 65024, 59, 32896, 10956, 65024, 512, 104, 114, 17583, 17589, 101, 116, 97, 59, 32768, 977, 105, 97, 110, 103, 108, 101, 512, 108, 114, 17600, 17606, 101, 102, 116, 59, 32768, 8882, 105, 103, 104, 116, 59, 32768, 8883, 121, 59, 32768, 1074, 97, 115, 104, 59, 32768, 8866, 768, 101, 108, 114, 17630, 17648, 17654, 768, 59, 98, 101, 17637, 17639, 17644, 32768, 8744, 97, 114, 59, 32768, 8891, 113, 59, 32768, 8794, 108, 105, 112, 59, 32768, 8942, 512, 98, 116, 17659, 17664, 97, 114, 59, 32768, 124, 59, 32768, 124, 114, 59, 32896, 55349, 56627, 116, 114, 105, 59, 32768, 8882, 115, 117, 512, 98, 112, 17685, 17689, 59, 32896, 8834, 8402, 59, 32896, 8835, 8402, 112, 102, 59, 32896, 55349, 56679, 114, 111, 112, 59, 32768, 8733, 116, 114, 105, 59, 32768, 8883, 512, 99, 117, 17716, 17721, 114, 59, 32896, 55349, 56523, 512, 98, 112, 17726, 17740, 110, 512, 69, 101, 17732, 17736, 59, 32896, 10955, 65024, 59, 32896, 8842, 65024, 110, 512, 69, 101, 17746, 17750, 59, 32896, 10956, 65024, 59, 32896, 8843, 65024, 105, 103, 122, 97, 103, 59, 32768, 10650, 1792, 99, 101, 102, 111, 112, 114, 115, 17777, 17783, 17815, 17820, 17826, 17829, 17842, 105, 114, 99, 59, 32768, 373, 512, 100, 105, 17788, 17809, 512, 98, 103, 17793, 17798, 97, 114, 59, 32768, 10847, 101, 512, 59, 113, 17804, 17806, 32768, 8743, 59, 32768, 8793, 101, 114, 112, 59, 32768, 8472, 114, 59, 32896, 55349, 56628, 112, 102, 59, 32896, 55349, 56680, 59, 32768, 8472, 512, 59, 101, 17834, 17836, 32768, 8768, 97, 116, 104, 59, 32768, 8768, 99, 114, 59, 32896, 55349, 56524, 5428, 17871, 17891, 0, 17897, 0, 17902, 17917, 0, 0, 17920, 17935, 17940, 17945, 0, 0, 17977, 17992, 0, 18008, 18024, 18029, 768, 97, 105, 117, 17877, 17881, 17886, 112, 59, 32768, 8898, 114, 99, 59, 32768, 9711, 112, 59, 32768, 8899, 116, 114, 105, 59, 32768, 9661, 114, 59, 32896, 55349, 56629, 512, 65, 97, 17906, 17911, 114, 114, 59, 32768, 10234, 114, 114, 59, 32768, 10231, 59, 32768, 958, 512, 65, 97, 17924, 17929, 114, 114, 59, 32768, 10232, 114, 114, 59, 32768, 10229, 97, 112, 59, 32768, 10236, 105, 115, 59, 32768, 8955, 768, 100, 112, 116, 17951, 17956, 17970, 111, 116, 59, 32768, 10752, 512, 102, 108, 17961, 17965, 59, 32896, 55349, 56681, 117, 115, 59, 32768, 10753, 105, 109, 101, 59, 32768, 10754, 512, 65, 97, 17981, 17986, 114, 114, 59, 32768, 10233, 114, 114, 59, 32768, 10230, 512, 99, 113, 17996, 18001, 114, 59, 32896, 55349, 56525, 99, 117, 112, 59, 32768, 10758, 512, 112, 116, 18012, 18018, 108, 117, 115, 59, 32768, 10756, 114, 105, 59, 32768, 9651, 101, 101, 59, 32768, 8897, 101, 100, 103, 101, 59, 32768, 8896, 2048, 97, 99, 101, 102, 105, 111, 115, 117, 18052, 18068, 18081, 18087, 18092, 18097, 18103, 18109, 99, 512, 117, 121, 18058, 18065, 116, 101, 33024, 253, 59, 32768, 253, 59, 32768, 1103, 512, 105, 121, 18073, 18078, 114, 99, 59, 32768, 375, 59, 32768, 1099, 110, 33024, 165, 59, 32768, 165, 114, 59, 32896, 55349, 56630, 99, 121, 59, 32768, 1111, 112, 102, 59, 32896, 55349, 56682, 99, 114, 59, 32896, 55349, 56526, 512, 99, 109, 18114, 18118, 121, 59, 32768, 1102, 108, 33024, 255, 59, 32768, 255, 2560, 97, 99, 100, 101, 102, 104, 105, 111, 115, 119, 18145, 18152, 18166, 18171, 18186, 18191, 18196, 18204, 18210, 18216, 99, 117, 116, 101, 59, 32768, 378, 512, 97, 121, 18157, 18163, 114, 111, 110, 59, 32768, 382, 59, 32768, 1079, 111, 116, 59, 32768, 380, 512, 101, 116, 18176, 18182, 116, 114, 102, 59, 32768, 8488, 97, 59, 32768, 950, 114, 59, 32896, 55349, 56631, 99, 121, 59, 32768, 1078, 103, 114, 97, 114, 114, 59, 32768, 8669, 112, 102, 59, 32896, 55349, 56683, 99, 114, 59, 32896, 55349, 56527, 512, 106, 110, 18221, 18224, 59, 32768, 8205, 106, 59, 32768, 8204]);
|
|
1729
|
+
|
|
1730
|
+
var decodeDataHtml = /*#__PURE__*/Object.defineProperty({
|
|
1731
|
+
default: _default$3
|
|
1732
|
+
}, '__esModule', {value: true});
|
|
1733
|
+
|
|
1734
|
+
// Generated using scripts/write-decode-map.ts
|
|
1735
|
+
// prettier-ignore
|
|
1736
|
+
var _default$2 = new Uint16Array([1024, 97, 103, 108, 113, 9, 23, 27, 31, 1086, 15, 0, 0, 19, 112, 59, 32768, 38, 111, 115, 59, 32768, 39, 116, 59, 32768, 62, 116, 59, 32768, 60, 117, 111, 116, 59, 32768, 34]);
|
|
1737
|
+
|
|
1738
|
+
var decodeDataXml = /*#__PURE__*/Object.defineProperty({
|
|
1739
|
+
default: _default$2
|
|
1740
|
+
}, '__esModule', {value: true});
|
|
1741
|
+
|
|
1742
|
+
var require$$0$3 = decodeDataHtml;
|
|
1743
|
+
|
|
1744
|
+
var require$$1$2 = decodeDataXml;
|
|
1745
|
+
|
|
1746
|
+
var require$$0$2 = decode_codepoint;
|
|
1747
|
+
|
|
1748
|
+
var decode = createCommonjsModule(function (module, exports) {
|
|
1749
|
+
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
1750
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1751
|
+
};
|
|
1752
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1753
|
+
exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTML = exports.determineBranch = exports.JUMP_OFFSET_BASE = exports.BinTrieFlags = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;
|
|
1754
|
+
var decode_data_html_1 = __importDefault(require$$0$3);
|
|
1755
|
+
exports.htmlDecodeTree = decode_data_html_1.default;
|
|
1756
|
+
var decode_data_xml_1 = __importDefault(require$$1$2);
|
|
1757
|
+
exports.xmlDecodeTree = decode_data_xml_1.default;
|
|
1758
|
+
var decode_codepoint_1 = __importDefault(require$$0$2);
|
|
1759
|
+
var BinTrieFlags;
|
|
1760
|
+
(function (BinTrieFlags) {
|
|
1761
|
+
BinTrieFlags[BinTrieFlags["HAS_VALUE"] = 32768] = "HAS_VALUE";
|
|
1762
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 32512] = "BRANCH_LENGTH";
|
|
1763
|
+
BinTrieFlags[BinTrieFlags["MULTI_BYTE"] = 128] = "MULTI_BYTE";
|
|
1764
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
1765
|
+
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
|
|
1766
|
+
exports.JUMP_OFFSET_BASE = 48 /* ZERO */ - 1;
|
|
1767
|
+
function getDecoder(decodeTree) {
|
|
1768
|
+
return function decodeHTMLBinary(str, strict) {
|
|
1769
|
+
var ret = "";
|
|
1770
|
+
var lastIdx = 0;
|
|
1771
|
+
var strIdx = 0;
|
|
1772
|
+
while ((strIdx = str.indexOf("&", strIdx)) >= 0) {
|
|
1773
|
+
ret += str.slice(lastIdx, strIdx);
|
|
1774
|
+
lastIdx = strIdx;
|
|
1775
|
+
// Skip the "&"
|
|
1776
|
+
strIdx += 1;
|
|
1777
|
+
// If we have a numeric entity, handle this separately.
|
|
1778
|
+
if (str.charCodeAt(strIdx) === 35 /* NUM */) {
|
|
1779
|
+
// Skip the leading "&#". For hex entities, also skip the leading "x".
|
|
1780
|
+
var start = strIdx + 1;
|
|
1781
|
+
var base = 10;
|
|
1782
|
+
var cp = str.charCodeAt(start);
|
|
1783
|
+
if ((cp | 32 /* To_LOWER_BIT */) === 120 /* LOWER_X */) {
|
|
1784
|
+
base = 16;
|
|
1785
|
+
strIdx += 1;
|
|
1786
|
+
start += 1;
|
|
1787
|
+
}
|
|
1788
|
+
while (((cp = str.charCodeAt(++strIdx)) >= 48 /* ZERO */ &&
|
|
1789
|
+
cp <= 57 /* NINE */) ||
|
|
1790
|
+
(base === 16 &&
|
|
1791
|
+
(cp | 32 /* To_LOWER_BIT */) >= 97 /* LOWER_A */ &&
|
|
1792
|
+
(cp | 32 /* To_LOWER_BIT */) <= 102 /* LOWER_F */))
|
|
1793
|
+
;
|
|
1794
|
+
if (start !== strIdx) {
|
|
1795
|
+
var entity = str.substring(start, strIdx);
|
|
1796
|
+
var parsed = parseInt(entity, base);
|
|
1797
|
+
if (str.charCodeAt(strIdx) === 59 /* SEMI */) {
|
|
1798
|
+
strIdx += 1;
|
|
1799
|
+
}
|
|
1800
|
+
else if (strict) {
|
|
1801
|
+
continue;
|
|
1802
|
+
}
|
|
1803
|
+
ret += decode_codepoint_1.default(parsed);
|
|
1804
|
+
lastIdx = strIdx;
|
|
1805
|
+
}
|
|
1806
|
+
continue;
|
|
1807
|
+
}
|
|
1808
|
+
var result = null;
|
|
1809
|
+
var excess = 1;
|
|
1810
|
+
var treeIdx = 0;
|
|
1811
|
+
var current = decodeTree[treeIdx];
|
|
1812
|
+
for (; strIdx < str.length; strIdx++, excess++) {
|
|
1813
|
+
treeIdx = determineBranch(decodeTree, current, treeIdx + 1, str.charCodeAt(strIdx));
|
|
1814
|
+
if (treeIdx < 0)
|
|
1815
|
+
break;
|
|
1816
|
+
current = decodeTree[treeIdx];
|
|
1817
|
+
// If the branch is a value, store it and continue
|
|
1818
|
+
if (current & BinTrieFlags.HAS_VALUE) {
|
|
1819
|
+
// If we have a legacy entity while parsing strictly, just skip the number of bytes
|
|
1820
|
+
if (strict && str.charCodeAt(strIdx) !== 59 /* SEMI */) {
|
|
1821
|
+
// No need to consider multi-byte values, as the legacy entity is always a single byte
|
|
1822
|
+
treeIdx += 1;
|
|
1823
|
+
}
|
|
1824
|
+
else {
|
|
1825
|
+
// If this is a surrogate pair, combine the higher bits from the node with the next byte
|
|
1826
|
+
result =
|
|
1827
|
+
current & BinTrieFlags.MULTI_BYTE
|
|
1828
|
+
? String.fromCharCode(decodeTree[++treeIdx], decodeTree[++treeIdx])
|
|
1829
|
+
: String.fromCharCode(decodeTree[++treeIdx]);
|
|
1830
|
+
excess = 0;
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1833
|
+
}
|
|
1834
|
+
if (result != null) {
|
|
1835
|
+
ret += result;
|
|
1836
|
+
lastIdx = strIdx - excess + 1;
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
return ret + str.slice(lastIdx);
|
|
1840
|
+
};
|
|
1841
|
+
}
|
|
1842
|
+
function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
1843
|
+
if (current <= 128) {
|
|
1844
|
+
return char === current ? nodeIdx : -1;
|
|
1845
|
+
}
|
|
1846
|
+
var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 8;
|
|
1847
|
+
if (branchCount === 0) {
|
|
1848
|
+
return -1;
|
|
1849
|
+
}
|
|
1850
|
+
if (branchCount === 1) {
|
|
1851
|
+
return char === decodeTree[nodeIdx] ? nodeIdx + 1 : -1;
|
|
1852
|
+
}
|
|
1853
|
+
var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
1854
|
+
if (jumpOffset) {
|
|
1855
|
+
var value = char - exports.JUMP_OFFSET_BASE - jumpOffset;
|
|
1856
|
+
return value < 0 || value > branchCount
|
|
1857
|
+
? -1
|
|
1858
|
+
: decodeTree[nodeIdx + value] - 1;
|
|
1859
|
+
}
|
|
1860
|
+
// Binary search for the character.
|
|
1861
|
+
var lo = nodeIdx;
|
|
1862
|
+
var hi = lo + branchCount - 1;
|
|
1863
|
+
while (lo <= hi) {
|
|
1864
|
+
var mid = (lo + hi) >>> 1;
|
|
1865
|
+
var midVal = decodeTree[mid];
|
|
1866
|
+
if (midVal < char) {
|
|
1867
|
+
lo = mid + 1;
|
|
1868
|
+
}
|
|
1869
|
+
else if (midVal > char) {
|
|
1870
|
+
hi = mid - 1;
|
|
1871
|
+
}
|
|
1872
|
+
else {
|
|
1873
|
+
return decodeTree[mid + branchCount];
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
return -1;
|
|
1877
|
+
}
|
|
1878
|
+
exports.determineBranch = determineBranch;
|
|
1879
|
+
var htmlDecoder = getDecoder(decode_data_html_1.default);
|
|
1880
|
+
var xmlDecoder = getDecoder(decode_data_xml_1.default);
|
|
1881
|
+
function decodeHTML(str) {
|
|
1882
|
+
return htmlDecoder(str, false);
|
|
1883
|
+
}
|
|
1884
|
+
exports.decodeHTML = decodeHTML;
|
|
1885
|
+
function decodeHTMLStrict(str) {
|
|
1886
|
+
return htmlDecoder(str, true);
|
|
1887
|
+
}
|
|
1888
|
+
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
1889
|
+
function decodeXML(str) {
|
|
1890
|
+
return xmlDecoder(str, true);
|
|
1891
|
+
}
|
|
1892
|
+
exports.decodeXML = decodeXML;
|
|
1893
|
+
});
|
|
1894
|
+
|
|
1895
|
+
var decode_1 = decode;
|
|
1896
|
+
|
|
1897
|
+
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
1898
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
1899
|
+
};
|
|
1900
|
+
|
|
1901
|
+
var decode_codepoint_1 = __importDefault(require$$0$2);
|
|
1902
|
+
|
|
1903
|
+
function isWhitespace(c) {
|
|
1904
|
+
return (c === 32 /* Space */ ||
|
|
1905
|
+
c === 10 /* NewLine */ ||
|
|
1906
|
+
c === 9 /* Tab */ ||
|
|
1907
|
+
c === 12 /* FormFeed */ ||
|
|
1908
|
+
c === 13 /* CarriageReturn */);
|
|
1909
|
+
}
|
|
1910
|
+
function isEndOfTagSection(c) {
|
|
1911
|
+
return c === 47 /* Slash */ || c === 62 /* Gt */ || isWhitespace(c);
|
|
1912
|
+
}
|
|
1913
|
+
function isNumber(c) {
|
|
1914
|
+
return c >= 48 /* Zero */ && c <= 57 /* Nine */;
|
|
1915
|
+
}
|
|
1916
|
+
function isASCIIAlpha(c) {
|
|
1917
|
+
return ((c >= 97 /* LowerA */ && c <= 122 /* LowerZ */) ||
|
|
1918
|
+
(c >= 65 /* UpperA */ && c <= 90 /* UpperZ */));
|
|
1919
|
+
}
|
|
1920
|
+
/**
|
|
1921
|
+
* Sequences used to match longer strings.
|
|
1922
|
+
*
|
|
1923
|
+
* We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
|
|
1924
|
+
* sequences with an increased offset.
|
|
1925
|
+
*/
|
|
1926
|
+
var Sequences = {
|
|
1927
|
+
Cdata: new Uint16Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),
|
|
1928
|
+
CdataEnd: new Uint16Array([0x5d, 0x5d, 0x3e]),
|
|
1929
|
+
CommentEnd: new Uint16Array([0x2d, 0x2d, 0x3e]),
|
|
1930
|
+
ScriptEnd: new Uint16Array([
|
|
1931
|
+
0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
|
|
1932
|
+
]),
|
|
1933
|
+
StyleEnd: new Uint16Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),
|
|
1934
|
+
TitleEnd: new Uint16Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
|
|
1935
|
+
};
|
|
1936
|
+
var Tokenizer = /** @class */ (function () {
|
|
1937
|
+
function Tokenizer(_a, cbs) {
|
|
1938
|
+
var _b = _a.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === void 0 ? true : _c;
|
|
1939
|
+
this.cbs = cbs;
|
|
1940
|
+
/** The current state the tokenizer is in. */
|
|
1941
|
+
this._state = 1 /* Text */;
|
|
1942
|
+
/** The read buffer. */
|
|
1943
|
+
this.buffer = "";
|
|
1944
|
+
/** The beginning of the section that is currently being read. */
|
|
1945
|
+
this.sectionStart = 0;
|
|
1946
|
+
/** The index within the buffer that we are currently looking at. */
|
|
1947
|
+
this._index = 0;
|
|
1948
|
+
/**
|
|
1949
|
+
* Data that has already been processed will be removed from the buffer occasionally.
|
|
1950
|
+
* `_bufferOffset` keeps track of how many characters have been removed, to make sure position information is accurate.
|
|
1951
|
+
*/
|
|
1952
|
+
this.bufferOffset = 0;
|
|
1953
|
+
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
|
|
1954
|
+
this.baseState = 1 /* Text */;
|
|
1955
|
+
/** For special parsing behavior inside of script and style tags. */
|
|
1956
|
+
this.isSpecial = false;
|
|
1957
|
+
/** Indicates whether the tokenizer has been paused. */
|
|
1958
|
+
this.running = true;
|
|
1959
|
+
/** Indicates whether the tokenizer has finished running / `.end` has been called. */
|
|
1960
|
+
this.ended = false;
|
|
1961
|
+
this.sequenceIndex = 0;
|
|
1962
|
+
this.trieIndex = 0;
|
|
1963
|
+
this.trieCurrent = 0;
|
|
1964
|
+
this.trieResult = null;
|
|
1965
|
+
this.entityExcess = 0;
|
|
1966
|
+
this.xmlMode = xmlMode;
|
|
1967
|
+
this.decodeEntities = decodeEntities;
|
|
1968
|
+
this.entityTrie = xmlMode ? decode_1.xmlDecodeTree : decode_1.htmlDecodeTree;
|
|
1969
|
+
}
|
|
1970
|
+
Tokenizer.prototype.reset = function () {
|
|
1971
|
+
this._state = 1 /* Text */;
|
|
1972
|
+
this.buffer = "";
|
|
1973
|
+
this.sectionStart = 0;
|
|
1974
|
+
this._index = 0;
|
|
1975
|
+
this.bufferOffset = 0;
|
|
1976
|
+
this.baseState = 1 /* Text */;
|
|
1977
|
+
this.currentSequence = undefined;
|
|
1978
|
+
this.running = true;
|
|
1979
|
+
this.ended = false;
|
|
1980
|
+
};
|
|
1981
|
+
Tokenizer.prototype.write = function (chunk) {
|
|
1982
|
+
if (this.ended)
|
|
1983
|
+
return this.cbs.onerror(Error(".write() after done!"));
|
|
1984
|
+
this.buffer += chunk;
|
|
1985
|
+
this.parse();
|
|
1986
|
+
};
|
|
1987
|
+
Tokenizer.prototype.end = function (chunk) {
|
|
1988
|
+
if (this.ended)
|
|
1989
|
+
return this.cbs.onerror(Error(".end() after done!"));
|
|
1990
|
+
if (chunk)
|
|
1991
|
+
this.write(chunk);
|
|
1992
|
+
this.ended = true;
|
|
1993
|
+
if (this.running)
|
|
1994
|
+
this.finish();
|
|
1995
|
+
};
|
|
1996
|
+
Tokenizer.prototype.pause = function () {
|
|
1997
|
+
this.running = false;
|
|
1998
|
+
};
|
|
1999
|
+
Tokenizer.prototype.resume = function () {
|
|
2000
|
+
this.running = true;
|
|
2001
|
+
if (this._index < this.buffer.length) {
|
|
2002
|
+
this.parse();
|
|
2003
|
+
}
|
|
2004
|
+
if (this.ended) {
|
|
2005
|
+
this.finish();
|
|
2006
|
+
}
|
|
2007
|
+
};
|
|
2008
|
+
/**
|
|
2009
|
+
* The start of the current section.
|
|
2010
|
+
*/
|
|
2011
|
+
Tokenizer.prototype.getAbsoluteSectionStart = function () {
|
|
2012
|
+
return this.sectionStart + this.bufferOffset;
|
|
2013
|
+
};
|
|
2014
|
+
/**
|
|
2015
|
+
* The current index within all of the written data.
|
|
2016
|
+
*/
|
|
2017
|
+
Tokenizer.prototype.getAbsoluteIndex = function () {
|
|
2018
|
+
return this.bufferOffset + this._index;
|
|
2019
|
+
};
|
|
2020
|
+
Tokenizer.prototype.stateText = function (c) {
|
|
2021
|
+
if (c === 60 /* Lt */ ||
|
|
2022
|
+
(!this.decodeEntities && this.fastForwardTo(60 /* Lt */))) {
|
|
2023
|
+
if (this._index > this.sectionStart) {
|
|
2024
|
+
this.cbs.ontext(this.getSection());
|
|
2025
|
+
}
|
|
2026
|
+
this._state = 2 /* BeforeTagName */;
|
|
2027
|
+
this.sectionStart = this._index;
|
|
2028
|
+
}
|
|
2029
|
+
else if (this.decodeEntities && c === 38 /* Amp */) {
|
|
2030
|
+
this._state = 25 /* BeforeEntity */;
|
|
2031
|
+
}
|
|
2032
|
+
};
|
|
2033
|
+
Tokenizer.prototype.stateSpecialStartSequence = function (c) {
|
|
2034
|
+
var isEnd = this.sequenceIndex === this.currentSequence.length;
|
|
2035
|
+
var isMatch = isEnd
|
|
2036
|
+
? // If we are at the end of the sequence, make sure the tag name has ended
|
|
2037
|
+
isEndOfTagSection(c)
|
|
2038
|
+
: // Otherwise, do a case-insensitive comparison
|
|
2039
|
+
(c | 0x20) === this.currentSequence[this.sequenceIndex];
|
|
2040
|
+
if (!isMatch) {
|
|
2041
|
+
this.isSpecial = false;
|
|
2042
|
+
}
|
|
2043
|
+
else if (!isEnd) {
|
|
2044
|
+
this.sequenceIndex++;
|
|
2045
|
+
return;
|
|
2046
|
+
}
|
|
2047
|
+
this.sequenceIndex = 0;
|
|
2048
|
+
this._state = 3 /* InTagName */;
|
|
2049
|
+
this.stateInTagName(c);
|
|
2050
|
+
};
|
|
2051
|
+
/** Look for an end tag. For <title> tags, also decode entities. */
|
|
2052
|
+
Tokenizer.prototype.stateInSpecialTag = function (c) {
|
|
2053
|
+
if (this.sequenceIndex === this.currentSequence.length) {
|
|
2054
|
+
if (c === 62 /* Gt */ || isWhitespace(c)) {
|
|
2055
|
+
var endOfText = this._index - this.currentSequence.length;
|
|
2056
|
+
if (this.sectionStart < endOfText) {
|
|
2057
|
+
// Spoof the index so that reported locations match up.
|
|
2058
|
+
var actualIndex = this._index;
|
|
2059
|
+
this._index = endOfText;
|
|
2060
|
+
this.cbs.ontext(this.getSection());
|
|
2061
|
+
this._index = actualIndex;
|
|
2062
|
+
}
|
|
2063
|
+
this.isSpecial = false;
|
|
2064
|
+
this.sectionStart = endOfText + 2; // Skip over the `</`
|
|
2065
|
+
this.stateInClosingTagName(c);
|
|
2066
|
+
return; // We are done; skip the rest of the function.
|
|
2067
|
+
}
|
|
2068
|
+
this.sequenceIndex = 0;
|
|
2069
|
+
}
|
|
2070
|
+
if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
|
|
2071
|
+
this.sequenceIndex += 1;
|
|
2072
|
+
}
|
|
2073
|
+
else if (this.sequenceIndex === 0) {
|
|
2074
|
+
if (this.currentSequence === Sequences.TitleEnd) {
|
|
2075
|
+
// We have to parse entities in <title> tags.
|
|
2076
|
+
if (this.decodeEntities && c === 38 /* Amp */) {
|
|
2077
|
+
this._state = 25 /* BeforeEntity */;
|
|
2078
|
+
}
|
|
2079
|
+
}
|
|
2080
|
+
else if (this.fastForwardTo(60 /* Lt */)) {
|
|
2081
|
+
// Outside of <title> tags, we can fast-forward.
|
|
2082
|
+
this.sequenceIndex = 1;
|
|
2083
|
+
}
|
|
2084
|
+
}
|
|
2085
|
+
else {
|
|
2086
|
+
// If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
|
|
2087
|
+
this.sequenceIndex = Number(c === 60 /* Lt */);
|
|
2088
|
+
}
|
|
2089
|
+
};
|
|
2090
|
+
Tokenizer.prototype.stateCDATASequence = function (c) {
|
|
2091
|
+
if (c === Sequences.Cdata[this.sequenceIndex]) {
|
|
2092
|
+
if (++this.sequenceIndex === Sequences.Cdata.length) {
|
|
2093
|
+
this._state = 21 /* InCommentLike */;
|
|
2094
|
+
this.currentSequence = Sequences.CdataEnd;
|
|
2095
|
+
this.sequenceIndex = 0;
|
|
2096
|
+
this.sectionStart = this._index + 1;
|
|
2097
|
+
}
|
|
2098
|
+
}
|
|
2099
|
+
else {
|
|
2100
|
+
this.sequenceIndex = 0;
|
|
2101
|
+
this._state = 16 /* InDeclaration */;
|
|
2102
|
+
this.stateInDeclaration(c); // Reconsume the character
|
|
2103
|
+
}
|
|
2104
|
+
};
|
|
2105
|
+
/**
|
|
2106
|
+
* When we wait for one specific character, we can speed things up
|
|
2107
|
+
* by skipping through the buffer until we find it.
|
|
2108
|
+
*
|
|
2109
|
+
* @returns Whether the character was found.
|
|
2110
|
+
*/
|
|
2111
|
+
Tokenizer.prototype.fastForwardTo = function (c) {
|
|
2112
|
+
while (++this._index < this.buffer.length) {
|
|
2113
|
+
if (this.buffer.charCodeAt(this._index) === c) {
|
|
2114
|
+
return true;
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
/*
|
|
2118
|
+
* We increment the index at the end of the `parse` loop,
|
|
2119
|
+
* so set it to `buffer.length - 1` here.
|
|
2120
|
+
*
|
|
2121
|
+
* TODO: Refactor `parse` to increment index before calling states.
|
|
2122
|
+
*/
|
|
2123
|
+
this._index = this.buffer.length - 1;
|
|
2124
|
+
return false;
|
|
2125
|
+
};
|
|
2126
|
+
/**
|
|
2127
|
+
* Comments and CDATA end with `-->` and `]]>`.
|
|
2128
|
+
*
|
|
2129
|
+
* Their common qualities are:
|
|
2130
|
+
* - Their end sequences have a distinct character they start with.
|
|
2131
|
+
* - That character is then repeated, so we have to check multiple repeats.
|
|
2132
|
+
* - All characters but the start character of the sequence can be skipped.
|
|
2133
|
+
*/
|
|
2134
|
+
Tokenizer.prototype.stateInCommentLike = function (c) {
|
|
2135
|
+
if (c === this.currentSequence[this.sequenceIndex]) {
|
|
2136
|
+
if (++this.sequenceIndex === this.currentSequence.length) {
|
|
2137
|
+
// Remove 2 trailing chars
|
|
2138
|
+
var section = this.buffer.slice(this.sectionStart, this._index - 2);
|
|
2139
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
2140
|
+
this.cbs.oncdata(section);
|
|
2141
|
+
}
|
|
2142
|
+
else {
|
|
2143
|
+
this.cbs.oncomment(section);
|
|
2144
|
+
}
|
|
2145
|
+
this.sequenceIndex = 0;
|
|
2146
|
+
this.sectionStart = this._index + 1;
|
|
2147
|
+
this._state = 1 /* Text */;
|
|
2148
|
+
}
|
|
2149
|
+
}
|
|
2150
|
+
else if (this.sequenceIndex === 0) {
|
|
2151
|
+
// Fast-forward to the first character of the sequence
|
|
2152
|
+
if (this.fastForwardTo(this.currentSequence[0])) {
|
|
2153
|
+
this.sequenceIndex = 1;
|
|
2154
|
+
}
|
|
2155
|
+
}
|
|
2156
|
+
else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
|
|
2157
|
+
// Allow long sequences, eg. --->, ]]]>
|
|
2158
|
+
this.sequenceIndex = 0;
|
|
2159
|
+
}
|
|
2160
|
+
};
|
|
2161
|
+
/**
|
|
2162
|
+
* HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
|
|
2163
|
+
*
|
|
2164
|
+
* XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
|
|
2165
|
+
* We allow anything that wouldn't end the tag.
|
|
2166
|
+
*/
|
|
2167
|
+
Tokenizer.prototype.isTagStartChar = function (c) {
|
|
2168
|
+
return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
|
|
2169
|
+
};
|
|
2170
|
+
Tokenizer.prototype.startSpecial = function (sequence, offset) {
|
|
2171
|
+
this.isSpecial = true;
|
|
2172
|
+
this.currentSequence = sequence;
|
|
2173
|
+
this.sequenceIndex = offset;
|
|
2174
|
+
this._state = 23 /* SpecialStartSequence */;
|
|
2175
|
+
};
|
|
2176
|
+
Tokenizer.prototype.stateBeforeTagName = function (c) {
|
|
2177
|
+
if (c === 33 /* ExclamationMark */) {
|
|
2178
|
+
this._state = 15 /* BeforeDeclaration */;
|
|
2179
|
+
this.sectionStart = this._index + 1;
|
|
2180
|
+
}
|
|
2181
|
+
else if (c === 63 /* Questionmark */) {
|
|
2182
|
+
this._state = 17 /* InProcessingInstruction */;
|
|
2183
|
+
this.sectionStart = this._index + 1;
|
|
2184
|
+
}
|
|
2185
|
+
else if (this.isTagStartChar(c)) {
|
|
2186
|
+
var lower = c | 0x20;
|
|
2187
|
+
this.sectionStart = this._index;
|
|
2188
|
+
if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {
|
|
2189
|
+
this.startSpecial(Sequences.TitleEnd, 3);
|
|
2190
|
+
}
|
|
2191
|
+
else {
|
|
2192
|
+
this._state =
|
|
2193
|
+
!this.xmlMode && lower === Sequences.ScriptEnd[2]
|
|
2194
|
+
? 22 /* BeforeSpecialS */
|
|
2195
|
+
: 3 /* InTagName */;
|
|
2196
|
+
}
|
|
2197
|
+
}
|
|
2198
|
+
else if (c === 47 /* Slash */) {
|
|
2199
|
+
this._state = 5 /* BeforeClosingTagName */;
|
|
2200
|
+
}
|
|
2201
|
+
else {
|
|
2202
|
+
this._state = 1 /* Text */;
|
|
2203
|
+
this.stateText(c);
|
|
2204
|
+
}
|
|
2205
|
+
};
|
|
2206
|
+
Tokenizer.prototype.stateInTagName = function (c) {
|
|
2207
|
+
if (isEndOfTagSection(c)) {
|
|
2208
|
+
this.cbs.onopentagname(this.getSection());
|
|
2209
|
+
this.sectionStart = -1;
|
|
2210
|
+
this._state = 8 /* BeforeAttributeName */;
|
|
2211
|
+
this.stateBeforeAttributeName(c);
|
|
2212
|
+
}
|
|
2213
|
+
};
|
|
2214
|
+
Tokenizer.prototype.stateBeforeClosingTagName = function (c) {
|
|
2215
|
+
if (isWhitespace(c)) ;
|
|
2216
|
+
else if (c === 62 /* Gt */) {
|
|
2217
|
+
this._state = 1 /* Text */;
|
|
2218
|
+
}
|
|
2219
|
+
else {
|
|
2220
|
+
this._state = this.isTagStartChar(c)
|
|
2221
|
+
? 6 /* InClosingTagName */
|
|
2222
|
+
: 20 /* InSpecialComment */;
|
|
2223
|
+
this.sectionStart = this._index;
|
|
2224
|
+
}
|
|
2225
|
+
};
|
|
2226
|
+
Tokenizer.prototype.stateInClosingTagName = function (c) {
|
|
2227
|
+
if (c === 62 /* Gt */ || isWhitespace(c)) {
|
|
2228
|
+
this.cbs.onclosetag(this.getSection());
|
|
2229
|
+
this.sectionStart = -1;
|
|
2230
|
+
this._state = 7 /* AfterClosingTagName */;
|
|
2231
|
+
this.stateAfterClosingTagName(c);
|
|
2232
|
+
}
|
|
2233
|
+
};
|
|
2234
|
+
Tokenizer.prototype.stateAfterClosingTagName = function (c) {
|
|
2235
|
+
// Skip everything until ">"
|
|
2236
|
+
if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
|
|
2237
|
+
this._state = 1 /* Text */;
|
|
2238
|
+
this.sectionStart = this._index + 1;
|
|
2239
|
+
}
|
|
2240
|
+
};
|
|
2241
|
+
Tokenizer.prototype.stateBeforeAttributeName = function (c) {
|
|
2242
|
+
if (c === 62 /* Gt */) {
|
|
2243
|
+
this.cbs.onopentagend();
|
|
2244
|
+
if (this.isSpecial) {
|
|
2245
|
+
this._state = 24 /* InSpecialTag */;
|
|
2246
|
+
this.sequenceIndex = 0;
|
|
2247
|
+
}
|
|
2248
|
+
else {
|
|
2249
|
+
this._state = 1 /* Text */;
|
|
2250
|
+
}
|
|
2251
|
+
this.baseState = this._state;
|
|
2252
|
+
this.sectionStart = this._index + 1;
|
|
2253
|
+
}
|
|
2254
|
+
else if (c === 47 /* Slash */) {
|
|
2255
|
+
this._state = 4 /* InSelfClosingTag */;
|
|
2256
|
+
}
|
|
2257
|
+
else if (!isWhitespace(c)) {
|
|
2258
|
+
this._state = 9 /* InAttributeName */;
|
|
2259
|
+
this.sectionStart = this._index;
|
|
2260
|
+
}
|
|
2261
|
+
};
|
|
2262
|
+
Tokenizer.prototype.stateInSelfClosingTag = function (c) {
|
|
2263
|
+
if (c === 62 /* Gt */) {
|
|
2264
|
+
this.cbs.onselfclosingtag();
|
|
2265
|
+
this._state = 1 /* Text */;
|
|
2266
|
+
this.baseState = 1 /* Text */;
|
|
2267
|
+
this.sectionStart = this._index + 1;
|
|
2268
|
+
this.isSpecial = false; // Reset special state, in case of self-closing special tags
|
|
2269
|
+
}
|
|
2270
|
+
else if (!isWhitespace(c)) {
|
|
2271
|
+
this._state = 8 /* BeforeAttributeName */;
|
|
2272
|
+
this.stateBeforeAttributeName(c);
|
|
2273
|
+
}
|
|
2274
|
+
};
|
|
2275
|
+
Tokenizer.prototype.stateInAttributeName = function (c) {
|
|
2276
|
+
if (c === 61 /* Eq */ || isEndOfTagSection(c)) {
|
|
2277
|
+
this.cbs.onattribname(this.getSection());
|
|
2278
|
+
this.sectionStart = -1;
|
|
2279
|
+
this._state = 10 /* AfterAttributeName */;
|
|
2280
|
+
this.stateAfterAttributeName(c);
|
|
2281
|
+
}
|
|
2282
|
+
};
|
|
2283
|
+
Tokenizer.prototype.stateAfterAttributeName = function (c) {
|
|
2284
|
+
if (c === 61 /* Eq */) {
|
|
2285
|
+
this._state = 11 /* BeforeAttributeValue */;
|
|
2286
|
+
}
|
|
2287
|
+
else if (c === 47 /* Slash */ || c === 62 /* Gt */) {
|
|
2288
|
+
this.cbs.onattribend(undefined);
|
|
2289
|
+
this._state = 8 /* BeforeAttributeName */;
|
|
2290
|
+
this.stateBeforeAttributeName(c);
|
|
2291
|
+
}
|
|
2292
|
+
else if (!isWhitespace(c)) {
|
|
2293
|
+
this.cbs.onattribend(undefined);
|
|
2294
|
+
this._state = 9 /* InAttributeName */;
|
|
2295
|
+
this.sectionStart = this._index;
|
|
2296
|
+
}
|
|
2297
|
+
};
|
|
2298
|
+
Tokenizer.prototype.stateBeforeAttributeValue = function (c) {
|
|
2299
|
+
if (c === 34 /* DoubleQuote */) {
|
|
2300
|
+
this._state = 12 /* InAttributeValueDq */;
|
|
2301
|
+
this.sectionStart = this._index + 1;
|
|
2302
|
+
}
|
|
2303
|
+
else if (c === 39 /* SingleQuote */) {
|
|
2304
|
+
this._state = 13 /* InAttributeValueSq */;
|
|
2305
|
+
this.sectionStart = this._index + 1;
|
|
2306
|
+
}
|
|
2307
|
+
else if (!isWhitespace(c)) {
|
|
2308
|
+
this.sectionStart = this._index;
|
|
2309
|
+
this._state = 14 /* InAttributeValueNq */;
|
|
2310
|
+
this.stateInAttributeValueNoQuotes(c); // Reconsume token
|
|
2311
|
+
}
|
|
2312
|
+
};
|
|
2313
|
+
Tokenizer.prototype.handleInAttributeValue = function (c, quote) {
|
|
2314
|
+
if (c === quote ||
|
|
2315
|
+
(!this.decodeEntities && this.fastForwardTo(quote))) {
|
|
2316
|
+
this.cbs.onattribdata(this.getSection());
|
|
2317
|
+
this.sectionStart = -1;
|
|
2318
|
+
this.cbs.onattribend(String.fromCharCode(quote));
|
|
2319
|
+
this._state = 8 /* BeforeAttributeName */;
|
|
2320
|
+
}
|
|
2321
|
+
else if (this.decodeEntities && c === 38 /* Amp */) {
|
|
2322
|
+
this.baseState = this._state;
|
|
2323
|
+
this._state = 25 /* BeforeEntity */;
|
|
2324
|
+
}
|
|
2325
|
+
};
|
|
2326
|
+
Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) {
|
|
2327
|
+
this.handleInAttributeValue(c, 34 /* DoubleQuote */);
|
|
2328
|
+
};
|
|
2329
|
+
Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) {
|
|
2330
|
+
this.handleInAttributeValue(c, 39 /* SingleQuote */);
|
|
2331
|
+
};
|
|
2332
|
+
Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) {
|
|
2333
|
+
if (isWhitespace(c) || c === 62 /* Gt */) {
|
|
2334
|
+
this.cbs.onattribdata(this.getSection());
|
|
2335
|
+
this.sectionStart = -1;
|
|
2336
|
+
this.cbs.onattribend(null);
|
|
2337
|
+
this._state = 8 /* BeforeAttributeName */;
|
|
2338
|
+
this.stateBeforeAttributeName(c);
|
|
2339
|
+
}
|
|
2340
|
+
else if (this.decodeEntities && c === 38 /* Amp */) {
|
|
2341
|
+
this.baseState = this._state;
|
|
2342
|
+
this._state = 25 /* BeforeEntity */;
|
|
2343
|
+
}
|
|
2344
|
+
};
|
|
2345
|
+
Tokenizer.prototype.stateBeforeDeclaration = function (c) {
|
|
2346
|
+
if (c === 91 /* OpeningSquareBracket */) {
|
|
2347
|
+
this._state = 19 /* CDATASequence */;
|
|
2348
|
+
this.sequenceIndex = 0;
|
|
2349
|
+
}
|
|
2350
|
+
else {
|
|
2351
|
+
this._state =
|
|
2352
|
+
c === 45 /* Dash */
|
|
2353
|
+
? 18 /* BeforeComment */
|
|
2354
|
+
: 16 /* InDeclaration */;
|
|
2355
|
+
}
|
|
2356
|
+
};
|
|
2357
|
+
Tokenizer.prototype.stateInDeclaration = function (c) {
|
|
2358
|
+
if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
|
|
2359
|
+
this.cbs.ondeclaration(this.getSection());
|
|
2360
|
+
this._state = 1 /* Text */;
|
|
2361
|
+
this.sectionStart = this._index + 1;
|
|
2362
|
+
}
|
|
2363
|
+
};
|
|
2364
|
+
Tokenizer.prototype.stateInProcessingInstruction = function (c) {
|
|
2365
|
+
if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
|
|
2366
|
+
this.cbs.onprocessinginstruction(this.getSection());
|
|
2367
|
+
this._state = 1 /* Text */;
|
|
2368
|
+
this.sectionStart = this._index + 1;
|
|
2369
|
+
}
|
|
2370
|
+
};
|
|
2371
|
+
Tokenizer.prototype.stateBeforeComment = function (c) {
|
|
2372
|
+
if (c === 45 /* Dash */) {
|
|
2373
|
+
this._state = 21 /* InCommentLike */;
|
|
2374
|
+
this.currentSequence = Sequences.CommentEnd;
|
|
2375
|
+
// Allow short comments (eg. <!-->)
|
|
2376
|
+
this.sequenceIndex = 2;
|
|
2377
|
+
this.sectionStart = this._index + 1;
|
|
2378
|
+
}
|
|
2379
|
+
else {
|
|
2380
|
+
this._state = 16 /* InDeclaration */;
|
|
2381
|
+
}
|
|
2382
|
+
};
|
|
2383
|
+
Tokenizer.prototype.stateInSpecialComment = function (c) {
|
|
2384
|
+
if (c === 62 /* Gt */ || this.fastForwardTo(62 /* Gt */)) {
|
|
2385
|
+
this.cbs.oncomment(this.getSection());
|
|
2386
|
+
this._state = 1 /* Text */;
|
|
2387
|
+
this.sectionStart = this._index + 1;
|
|
2388
|
+
}
|
|
2389
|
+
};
|
|
2390
|
+
Tokenizer.prototype.stateBeforeSpecialS = function (c) {
|
|
2391
|
+
var lower = c | 0x20;
|
|
2392
|
+
if (lower === Sequences.ScriptEnd[3]) {
|
|
2393
|
+
this.startSpecial(Sequences.ScriptEnd, 4);
|
|
2394
|
+
}
|
|
2395
|
+
else if (lower === Sequences.StyleEnd[3]) {
|
|
2396
|
+
this.startSpecial(Sequences.StyleEnd, 4);
|
|
2397
|
+
}
|
|
2398
|
+
else {
|
|
2399
|
+
this._state = 3 /* InTagName */;
|
|
2400
|
+
this.stateInTagName(c); // Consume the token again
|
|
2401
|
+
}
|
|
2402
|
+
};
|
|
2403
|
+
Tokenizer.prototype.stateBeforeEntity = function (c) {
|
|
2404
|
+
// Start excess with 1 to include the '&'
|
|
2405
|
+
this.entityExcess = 1;
|
|
2406
|
+
if (c === 35 /* Num */) {
|
|
2407
|
+
this._state = 26 /* BeforeNumericEntity */;
|
|
2408
|
+
}
|
|
2409
|
+
else if (c === 38 /* Amp */) ;
|
|
2410
|
+
else {
|
|
2411
|
+
this.trieIndex = 0;
|
|
2412
|
+
this.trieCurrent = this.entityTrie[0];
|
|
2413
|
+
this.trieResult = null;
|
|
2414
|
+
this._state = 27 /* InNamedEntity */;
|
|
2415
|
+
this.stateInNamedEntity(c);
|
|
2416
|
+
}
|
|
2417
|
+
};
|
|
2418
|
+
Tokenizer.prototype.stateInNamedEntity = function (c) {
|
|
2419
|
+
this.entityExcess += 1;
|
|
2420
|
+
this.trieIndex = (0, decode_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);
|
|
2421
|
+
if (this.trieIndex < 0) {
|
|
2422
|
+
this.emitNamedEntity();
|
|
2423
|
+
this._index--;
|
|
2424
|
+
return;
|
|
2425
|
+
}
|
|
2426
|
+
this.trieCurrent = this.entityTrie[this.trieIndex];
|
|
2427
|
+
// If the branch is a value, store it and continue
|
|
2428
|
+
if (this.trieCurrent & decode_1.BinTrieFlags.HAS_VALUE) {
|
|
2429
|
+
// If we have a legacy entity while parsing strictly, just skip the number of bytes
|
|
2430
|
+
if (!this.allowLegacyEntity() && c !== 59 /* Semi */) {
|
|
2431
|
+
// No need to consider multi-byte values, as the legacy entity is always a single byte
|
|
2432
|
+
this.trieIndex += 1;
|
|
2433
|
+
}
|
|
2434
|
+
else {
|
|
2435
|
+
// Add 1 as we have already incremented the excess
|
|
2436
|
+
var entityStart = this._index - this.entityExcess + 1;
|
|
2437
|
+
if (entityStart > this.sectionStart) {
|
|
2438
|
+
this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));
|
|
2439
|
+
}
|
|
2440
|
+
// If this is a surrogate pair, combine the higher bits from the node with the next byte
|
|
2441
|
+
this.trieResult =
|
|
2442
|
+
this.trieCurrent & decode_1.BinTrieFlags.MULTI_BYTE
|
|
2443
|
+
? String.fromCharCode(this.entityTrie[++this.trieIndex], this.entityTrie[++this.trieIndex])
|
|
2444
|
+
: String.fromCharCode(this.entityTrie[++this.trieIndex]);
|
|
2445
|
+
this.entityExcess = 0;
|
|
2446
|
+
this.sectionStart = this._index + 1;
|
|
2447
|
+
}
|
|
2448
|
+
}
|
|
2449
|
+
};
|
|
2450
|
+
Tokenizer.prototype.emitNamedEntity = function () {
|
|
2451
|
+
if (this.trieResult) {
|
|
2452
|
+
this.emitPartial(this.trieResult);
|
|
2453
|
+
}
|
|
2454
|
+
this._state = this.baseState;
|
|
2455
|
+
};
|
|
2456
|
+
Tokenizer.prototype.stateBeforeNumericEntity = function (c) {
|
|
2457
|
+
if ((c | 0x20) === 120 /* LowerX */) {
|
|
2458
|
+
this.entityExcess++;
|
|
2459
|
+
this._state = 29 /* InHexEntity */;
|
|
2460
|
+
}
|
|
2461
|
+
else {
|
|
2462
|
+
this._state = 28 /* InNumericEntity */;
|
|
2463
|
+
this.stateInNumericEntity(c);
|
|
2464
|
+
}
|
|
2465
|
+
};
|
|
2466
|
+
Tokenizer.prototype.decodeNumericEntity = function (base, strict) {
|
|
2467
|
+
var entityStart = this._index - this.entityExcess - 1;
|
|
2468
|
+
var numberStart = entityStart + 2 + (base >> 4);
|
|
2469
|
+
if (numberStart !== this._index) {
|
|
2470
|
+
// Emit leading data if any
|
|
2471
|
+
if (entityStart > this.sectionStart) {
|
|
2472
|
+
this.emitPartial(this.buffer.substring(this.sectionStart, entityStart));
|
|
2473
|
+
}
|
|
2474
|
+
// Parse entity
|
|
2475
|
+
var entity = this.buffer.substring(numberStart, this._index);
|
|
2476
|
+
var parsed = parseInt(entity, base);
|
|
2477
|
+
this.emitPartial((0, decode_codepoint_1.default)(parsed));
|
|
2478
|
+
this.sectionStart = this._index + Number(strict);
|
|
2479
|
+
}
|
|
2480
|
+
this._state = this.baseState;
|
|
2481
|
+
};
|
|
2482
|
+
Tokenizer.prototype.stateInNumericEntity = function (c) {
|
|
2483
|
+
if (c === 59 /* Semi */) {
|
|
2484
|
+
this.decodeNumericEntity(10, true);
|
|
2485
|
+
}
|
|
2486
|
+
else if (!isNumber(c)) {
|
|
2487
|
+
if (this.allowLegacyEntity()) {
|
|
2488
|
+
this.decodeNumericEntity(10, false);
|
|
2489
|
+
}
|
|
2490
|
+
else {
|
|
2491
|
+
this._state = this.baseState;
|
|
2492
|
+
}
|
|
2493
|
+
this._index--;
|
|
2494
|
+
}
|
|
2495
|
+
else {
|
|
2496
|
+
this.entityExcess++;
|
|
2497
|
+
}
|
|
2498
|
+
};
|
|
2499
|
+
Tokenizer.prototype.stateInHexEntity = function (c) {
|
|
2500
|
+
if (c === 59 /* Semi */) {
|
|
2501
|
+
this.decodeNumericEntity(16, true);
|
|
2502
|
+
}
|
|
2503
|
+
else if ((c < 97 /* LowerA */ || c > 102 /* LowerF */) &&
|
|
2504
|
+
(c < 65 /* UpperA */ || c > 70 /* UpperF */) &&
|
|
2505
|
+
!isNumber(c)) {
|
|
2506
|
+
if (this.allowLegacyEntity()) {
|
|
2507
|
+
this.decodeNumericEntity(16, false);
|
|
2508
|
+
}
|
|
2509
|
+
else {
|
|
2510
|
+
this._state = this.baseState;
|
|
2511
|
+
}
|
|
2512
|
+
this._index--;
|
|
2513
|
+
}
|
|
2514
|
+
else {
|
|
2515
|
+
this.entityExcess++;
|
|
2516
|
+
}
|
|
2517
|
+
};
|
|
2518
|
+
Tokenizer.prototype.allowLegacyEntity = function () {
|
|
2519
|
+
return (!this.xmlMode &&
|
|
2520
|
+
(this.baseState === 1 /* Text */ ||
|
|
2521
|
+
this.baseState === 24 /* InSpecialTag */));
|
|
2522
|
+
};
|
|
2523
|
+
/**
|
|
2524
|
+
* Remove data that has already been consumed from the buffer.
|
|
2525
|
+
*/
|
|
2526
|
+
Tokenizer.prototype.cleanup = function () {
|
|
2527
|
+
// If we are inside of text, emit what we already have.
|
|
2528
|
+
if (this.running &&
|
|
2529
|
+
this.sectionStart !== this._index &&
|
|
2530
|
+
(this._state === 1 /* Text */ ||
|
|
2531
|
+
(this._state === 24 /* InSpecialTag */ &&
|
|
2532
|
+
this.sequenceIndex === 0))) {
|
|
2533
|
+
// TODO: We could emit attribute data here as well.
|
|
2534
|
+
this.cbs.ontext(this.buffer.substr(this.sectionStart));
|
|
2535
|
+
this.sectionStart = this._index;
|
|
2536
|
+
}
|
|
2537
|
+
var start = this.sectionStart < 0 ? this._index : this.sectionStart;
|
|
2538
|
+
this.buffer =
|
|
2539
|
+
start === this.buffer.length ? "" : this.buffer.substr(start);
|
|
2540
|
+
this._index -= start;
|
|
2541
|
+
this.bufferOffset += start;
|
|
2542
|
+
if (this.sectionStart > 0) {
|
|
2543
|
+
this.sectionStart = 0;
|
|
2544
|
+
}
|
|
2545
|
+
};
|
|
2546
|
+
Tokenizer.prototype.shouldContinue = function () {
|
|
2547
|
+
return this._index < this.buffer.length && this.running;
|
|
2548
|
+
};
|
|
2549
|
+
/**
|
|
2550
|
+
* Iterates through the buffer, calling the function corresponding to the current state.
|
|
2551
|
+
*
|
|
2552
|
+
* States that are more likely to be hit are higher up, as a performance improvement.
|
|
2553
|
+
*/
|
|
2554
|
+
Tokenizer.prototype.parse = function () {
|
|
2555
|
+
while (this.shouldContinue()) {
|
|
2556
|
+
var c = this.buffer.charCodeAt(this._index);
|
|
2557
|
+
if (this._state === 1 /* Text */) {
|
|
2558
|
+
this.stateText(c);
|
|
2559
|
+
}
|
|
2560
|
+
else if (this._state === 23 /* SpecialStartSequence */) {
|
|
2561
|
+
this.stateSpecialStartSequence(c);
|
|
2562
|
+
}
|
|
2563
|
+
else if (this._state === 24 /* InSpecialTag */) {
|
|
2564
|
+
this.stateInSpecialTag(c);
|
|
2565
|
+
}
|
|
2566
|
+
else if (this._state === 19 /* CDATASequence */) {
|
|
2567
|
+
this.stateCDATASequence(c);
|
|
2568
|
+
}
|
|
2569
|
+
else if (this._state === 12 /* InAttributeValueDq */) {
|
|
2570
|
+
this.stateInAttributeValueDoubleQuotes(c);
|
|
2571
|
+
}
|
|
2572
|
+
else if (this._state === 9 /* InAttributeName */) {
|
|
2573
|
+
this.stateInAttributeName(c);
|
|
2574
|
+
}
|
|
2575
|
+
else if (this._state === 21 /* InCommentLike */) {
|
|
2576
|
+
this.stateInCommentLike(c);
|
|
2577
|
+
}
|
|
2578
|
+
else if (this._state === 20 /* InSpecialComment */) {
|
|
2579
|
+
this.stateInSpecialComment(c);
|
|
2580
|
+
}
|
|
2581
|
+
else if (this._state === 8 /* BeforeAttributeName */) {
|
|
2582
|
+
this.stateBeforeAttributeName(c);
|
|
2583
|
+
}
|
|
2584
|
+
else if (this._state === 3 /* InTagName */) {
|
|
2585
|
+
this.stateInTagName(c);
|
|
2586
|
+
}
|
|
2587
|
+
else if (this._state === 6 /* InClosingTagName */) {
|
|
2588
|
+
this.stateInClosingTagName(c);
|
|
2589
|
+
}
|
|
2590
|
+
else if (this._state === 2 /* BeforeTagName */) {
|
|
2591
|
+
this.stateBeforeTagName(c);
|
|
2592
|
+
}
|
|
2593
|
+
else if (this._state === 10 /* AfterAttributeName */) {
|
|
2594
|
+
this.stateAfterAttributeName(c);
|
|
2595
|
+
}
|
|
2596
|
+
else if (this._state === 13 /* InAttributeValueSq */) {
|
|
2597
|
+
this.stateInAttributeValueSingleQuotes(c);
|
|
2598
|
+
}
|
|
2599
|
+
else if (this._state === 11 /* BeforeAttributeValue */) {
|
|
2600
|
+
this.stateBeforeAttributeValue(c);
|
|
2601
|
+
}
|
|
2602
|
+
else if (this._state === 5 /* BeforeClosingTagName */) {
|
|
2603
|
+
this.stateBeforeClosingTagName(c);
|
|
2604
|
+
}
|
|
2605
|
+
else if (this._state === 7 /* AfterClosingTagName */) {
|
|
2606
|
+
this.stateAfterClosingTagName(c);
|
|
2607
|
+
}
|
|
2608
|
+
else if (this._state === 22 /* BeforeSpecialS */) {
|
|
2609
|
+
this.stateBeforeSpecialS(c);
|
|
2610
|
+
}
|
|
2611
|
+
else if (this._state === 14 /* InAttributeValueNq */) {
|
|
2612
|
+
this.stateInAttributeValueNoQuotes(c);
|
|
2613
|
+
}
|
|
2614
|
+
else if (this._state === 4 /* InSelfClosingTag */) {
|
|
2615
|
+
this.stateInSelfClosingTag(c);
|
|
2616
|
+
}
|
|
2617
|
+
else if (this._state === 16 /* InDeclaration */) {
|
|
2618
|
+
this.stateInDeclaration(c);
|
|
2619
|
+
}
|
|
2620
|
+
else if (this._state === 15 /* BeforeDeclaration */) {
|
|
2621
|
+
this.stateBeforeDeclaration(c);
|
|
2622
|
+
}
|
|
2623
|
+
else if (this._state === 18 /* BeforeComment */) {
|
|
2624
|
+
this.stateBeforeComment(c);
|
|
2625
|
+
}
|
|
2626
|
+
else if (this._state === 17 /* InProcessingInstruction */) {
|
|
2627
|
+
this.stateInProcessingInstruction(c);
|
|
2628
|
+
}
|
|
2629
|
+
else if (this._state === 27 /* InNamedEntity */) {
|
|
2630
|
+
this.stateInNamedEntity(c);
|
|
2631
|
+
}
|
|
2632
|
+
else if (this._state === 25 /* BeforeEntity */) {
|
|
2633
|
+
this.stateBeforeEntity(c);
|
|
2634
|
+
}
|
|
2635
|
+
else if (this._state === 29 /* InHexEntity */) {
|
|
2636
|
+
this.stateInHexEntity(c);
|
|
2637
|
+
}
|
|
2638
|
+
else if (this._state === 28 /* InNumericEntity */) {
|
|
2639
|
+
this.stateInNumericEntity(c);
|
|
2640
|
+
}
|
|
2641
|
+
else {
|
|
2642
|
+
// `this._state === State.BeforeNumericEntity`
|
|
2643
|
+
this.stateBeforeNumericEntity(c);
|
|
2644
|
+
}
|
|
2645
|
+
this._index++;
|
|
2646
|
+
}
|
|
2647
|
+
this.cleanup();
|
|
2648
|
+
};
|
|
2649
|
+
Tokenizer.prototype.finish = function () {
|
|
2650
|
+
if (this._state === 27 /* InNamedEntity */) {
|
|
2651
|
+
this.emitNamedEntity();
|
|
2652
|
+
}
|
|
2653
|
+
// If there is remaining data, emit it in a reasonable way
|
|
2654
|
+
if (this.sectionStart < this._index) {
|
|
2655
|
+
this.handleTrailingData();
|
|
2656
|
+
}
|
|
2657
|
+
this.cbs.onend();
|
|
2658
|
+
};
|
|
2659
|
+
/** Handle any trailing data. */
|
|
2660
|
+
Tokenizer.prototype.handleTrailingData = function () {
|
|
2661
|
+
var data = this.buffer.substr(this.sectionStart);
|
|
2662
|
+
if (this._state === 21 /* InCommentLike */) {
|
|
2663
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
2664
|
+
this.cbs.oncdata(data);
|
|
2665
|
+
}
|
|
2666
|
+
else {
|
|
2667
|
+
this.cbs.oncomment(data);
|
|
2668
|
+
}
|
|
2669
|
+
}
|
|
2670
|
+
else if (this._state === 28 /* InNumericEntity */ &&
|
|
2671
|
+
this.allowLegacyEntity()) {
|
|
2672
|
+
this.decodeNumericEntity(10, false);
|
|
2673
|
+
// All trailing data will have been consumed
|
|
2674
|
+
}
|
|
2675
|
+
else if (this._state === 29 /* InHexEntity */ &&
|
|
2676
|
+
this.allowLegacyEntity()) {
|
|
2677
|
+
this.decodeNumericEntity(16, false);
|
|
2678
|
+
// All trailing data will have been consumed
|
|
2679
|
+
}
|
|
2680
|
+
else if (this._state === 3 /* InTagName */ ||
|
|
2681
|
+
this._state === 8 /* BeforeAttributeName */ ||
|
|
2682
|
+
this._state === 11 /* BeforeAttributeValue */ ||
|
|
2683
|
+
this._state === 10 /* AfterAttributeName */ ||
|
|
2684
|
+
this._state === 9 /* InAttributeName */ ||
|
|
2685
|
+
this._state === 13 /* InAttributeValueSq */ ||
|
|
2686
|
+
this._state === 12 /* InAttributeValueDq */ ||
|
|
2687
|
+
this._state === 14 /* InAttributeValueNq */ ||
|
|
2688
|
+
this._state === 6 /* InClosingTagName */) ;
|
|
2689
|
+
else {
|
|
2690
|
+
this.cbs.ontext(data);
|
|
2691
|
+
}
|
|
2692
|
+
};
|
|
2693
|
+
Tokenizer.prototype.getSection = function () {
|
|
2694
|
+
return this.buffer.substring(this.sectionStart, this._index);
|
|
2695
|
+
};
|
|
2696
|
+
Tokenizer.prototype.emitPartial = function (value) {
|
|
2697
|
+
if (this.baseState !== 1 /* Text */ &&
|
|
2698
|
+
this.baseState !== 24 /* InSpecialTag */) {
|
|
2699
|
+
this.cbs.onattribdata(value);
|
|
2700
|
+
}
|
|
2701
|
+
else {
|
|
2702
|
+
this.cbs.ontext(value);
|
|
2703
|
+
}
|
|
2704
|
+
};
|
|
2705
|
+
return Tokenizer;
|
|
2706
|
+
}());
|
|
2707
|
+
var _default$1 = Tokenizer;
|
|
2708
|
+
|
|
2709
|
+
var Tokenizer_1 = /*#__PURE__*/Object.defineProperty({
|
|
2710
|
+
default: _default$1
|
|
2711
|
+
}, '__esModule', {value: true});
|
|
2712
|
+
|
|
2713
|
+
var require$$0$1 = Tokenizer_1;
|
|
2714
|
+
|
|
2715
|
+
var Parser_1 = createCommonjsModule(function (module, exports) {
|
|
2716
|
+
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
2717
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
2718
|
+
};
|
|
2719
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2720
|
+
exports.Parser = void 0;
|
|
2721
|
+
var Tokenizer_1 = __importDefault(require$$0$1);
|
|
2722
|
+
var formTags = new Set([
|
|
2723
|
+
"input",
|
|
2724
|
+
"option",
|
|
2725
|
+
"optgroup",
|
|
2726
|
+
"select",
|
|
2727
|
+
"button",
|
|
2728
|
+
"datalist",
|
|
2729
|
+
"textarea",
|
|
2730
|
+
]);
|
|
2731
|
+
var pTag = new Set(["p"]);
|
|
2732
|
+
var tableSectionTags = new Set(["thead", "tbody"]);
|
|
2733
|
+
var ddtTags = new Set(["dd", "dt"]);
|
|
2734
|
+
var rtpTags = new Set(["rt", "rp"]);
|
|
2735
|
+
var openImpliesClose = new Map([
|
|
2736
|
+
["tr", new Set(["tr", "th", "td"])],
|
|
2737
|
+
["th", new Set(["th"])],
|
|
2738
|
+
["td", new Set(["thead", "th", "td"])],
|
|
2739
|
+
["body", new Set(["head", "link", "script"])],
|
|
2740
|
+
["li", new Set(["li"])],
|
|
2741
|
+
["p", pTag],
|
|
2742
|
+
["h1", pTag],
|
|
2743
|
+
["h2", pTag],
|
|
2744
|
+
["h3", pTag],
|
|
2745
|
+
["h4", pTag],
|
|
2746
|
+
["h5", pTag],
|
|
2747
|
+
["h6", pTag],
|
|
2748
|
+
["select", formTags],
|
|
2749
|
+
["input", formTags],
|
|
2750
|
+
["output", formTags],
|
|
2751
|
+
["button", formTags],
|
|
2752
|
+
["datalist", formTags],
|
|
2753
|
+
["textarea", formTags],
|
|
2754
|
+
["option", new Set(["option"])],
|
|
2755
|
+
["optgroup", new Set(["optgroup", "option"])],
|
|
2756
|
+
["dd", ddtTags],
|
|
2757
|
+
["dt", ddtTags],
|
|
2758
|
+
["address", pTag],
|
|
2759
|
+
["article", pTag],
|
|
2760
|
+
["aside", pTag],
|
|
2761
|
+
["blockquote", pTag],
|
|
2762
|
+
["details", pTag],
|
|
2763
|
+
["div", pTag],
|
|
2764
|
+
["dl", pTag],
|
|
2765
|
+
["fieldset", pTag],
|
|
2766
|
+
["figcaption", pTag],
|
|
2767
|
+
["figure", pTag],
|
|
2768
|
+
["footer", pTag],
|
|
2769
|
+
["form", pTag],
|
|
2770
|
+
["header", pTag],
|
|
2771
|
+
["hr", pTag],
|
|
2772
|
+
["main", pTag],
|
|
2773
|
+
["nav", pTag],
|
|
2774
|
+
["ol", pTag],
|
|
2775
|
+
["pre", pTag],
|
|
2776
|
+
["section", pTag],
|
|
2777
|
+
["table", pTag],
|
|
2778
|
+
["ul", pTag],
|
|
2779
|
+
["rt", rtpTags],
|
|
2780
|
+
["rp", rtpTags],
|
|
2781
|
+
["tbody", tableSectionTags],
|
|
2782
|
+
["tfoot", tableSectionTags],
|
|
2783
|
+
]);
|
|
2784
|
+
var voidElements = new Set([
|
|
2785
|
+
"area",
|
|
2786
|
+
"base",
|
|
2787
|
+
"basefont",
|
|
2788
|
+
"br",
|
|
2789
|
+
"col",
|
|
2790
|
+
"command",
|
|
2791
|
+
"embed",
|
|
2792
|
+
"frame",
|
|
2793
|
+
"hr",
|
|
2794
|
+
"img",
|
|
2795
|
+
"input",
|
|
2796
|
+
"isindex",
|
|
2797
|
+
"keygen",
|
|
2798
|
+
"link",
|
|
2799
|
+
"meta",
|
|
2800
|
+
"param",
|
|
2801
|
+
"source",
|
|
2802
|
+
"track",
|
|
2803
|
+
"wbr",
|
|
2804
|
+
]);
|
|
2805
|
+
var foreignContextElements = new Set(["math", "svg"]);
|
|
2806
|
+
var htmlIntegrationElements = new Set([
|
|
2807
|
+
"mi",
|
|
2808
|
+
"mo",
|
|
2809
|
+
"mn",
|
|
2810
|
+
"ms",
|
|
2811
|
+
"mtext",
|
|
2812
|
+
"annotation-xml",
|
|
2813
|
+
"foreignobject",
|
|
2814
|
+
"desc",
|
|
2815
|
+
"title",
|
|
2816
|
+
]);
|
|
2817
|
+
var reNameEnd = /\s|\//;
|
|
2818
|
+
var Parser = /** @class */ (function () {
|
|
2819
|
+
function Parser(cbs, options) {
|
|
2820
|
+
if (options === void 0) { options = {}; }
|
|
2821
|
+
var _a, _b, _c, _d, _e;
|
|
2822
|
+
this.options = options;
|
|
2823
|
+
/** The start index of the last event. */
|
|
2824
|
+
this.startIndex = 0;
|
|
2825
|
+
/** The end index of the last event. */
|
|
2826
|
+
this.endIndex = 0;
|
|
2827
|
+
/**
|
|
2828
|
+
* Store the start index of the current open tag,
|
|
2829
|
+
* so we can update the start index for attributes.
|
|
2830
|
+
*/
|
|
2831
|
+
this.openTagStart = 0;
|
|
2832
|
+
this.tagname = "";
|
|
2833
|
+
this.attribname = "";
|
|
2834
|
+
this.attribvalue = "";
|
|
2835
|
+
this.attribs = null;
|
|
2836
|
+
this.stack = [];
|
|
2837
|
+
this.foreignContext = [];
|
|
2838
|
+
this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
|
|
2839
|
+
this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;
|
|
2840
|
+
this.lowerCaseAttributeNames =
|
|
2841
|
+
(_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;
|
|
2842
|
+
this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this);
|
|
2843
|
+
(_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);
|
|
2844
|
+
}
|
|
2845
|
+
// Tokenizer event handlers
|
|
2846
|
+
/** @internal */
|
|
2847
|
+
Parser.prototype.ontext = function (data) {
|
|
2848
|
+
var _a, _b;
|
|
2849
|
+
var idx = this.tokenizer.getAbsoluteIndex();
|
|
2850
|
+
this.endIndex = idx - 1;
|
|
2851
|
+
(_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
|
2852
|
+
this.startIndex = idx;
|
|
2853
|
+
};
|
|
2854
|
+
Parser.prototype.isVoidElement = function (name) {
|
|
2855
|
+
return !this.options.xmlMode && voidElements.has(name);
|
|
2856
|
+
};
|
|
2857
|
+
/** @internal */
|
|
2858
|
+
Parser.prototype.onopentagname = function (name) {
|
|
2859
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
2860
|
+
if (this.lowerCaseTagNames) {
|
|
2861
|
+
name = name.toLowerCase();
|
|
2862
|
+
}
|
|
2863
|
+
this.emitOpenTag(name);
|
|
2864
|
+
};
|
|
2865
|
+
Parser.prototype.emitOpenTag = function (name) {
|
|
2866
|
+
var _a, _b, _c, _d;
|
|
2867
|
+
this.openTagStart = this.startIndex;
|
|
2868
|
+
this.tagname = name;
|
|
2869
|
+
var impliesClose = !this.options.xmlMode && openImpliesClose.get(name);
|
|
2870
|
+
if (impliesClose) {
|
|
2871
|
+
while (this.stack.length > 0 &&
|
|
2872
|
+
impliesClose.has(this.stack[this.stack.length - 1])) {
|
|
2873
|
+
var el = this.stack.pop();
|
|
2874
|
+
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, el, true);
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
if (!this.isVoidElement(name)) {
|
|
2878
|
+
this.stack.push(name);
|
|
2879
|
+
if (foreignContextElements.has(name)) {
|
|
2880
|
+
this.foreignContext.push(true);
|
|
2881
|
+
}
|
|
2882
|
+
else if (htmlIntegrationElements.has(name)) {
|
|
2883
|
+
this.foreignContext.push(false);
|
|
2884
|
+
}
|
|
2885
|
+
}
|
|
2886
|
+
(_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
|
|
2887
|
+
if (this.cbs.onopentag)
|
|
2888
|
+
this.attribs = {};
|
|
2889
|
+
};
|
|
2890
|
+
Parser.prototype.endOpenTag = function (isImplied) {
|
|
2891
|
+
var _a, _b;
|
|
2892
|
+
this.startIndex = this.openTagStart;
|
|
2893
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
2894
|
+
if (this.attribs) {
|
|
2895
|
+
(_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);
|
|
2896
|
+
this.attribs = null;
|
|
2897
|
+
}
|
|
2898
|
+
if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {
|
|
2899
|
+
this.cbs.onclosetag(this.tagname, true);
|
|
2900
|
+
}
|
|
2901
|
+
this.tagname = "";
|
|
2902
|
+
};
|
|
2903
|
+
/** @internal */
|
|
2904
|
+
Parser.prototype.onopentagend = function () {
|
|
2905
|
+
this.endOpenTag(false);
|
|
2906
|
+
// Set `startIndex` for next node
|
|
2907
|
+
this.startIndex = this.endIndex + 1;
|
|
2908
|
+
};
|
|
2909
|
+
/** @internal */
|
|
2910
|
+
Parser.prototype.onclosetag = function (name) {
|
|
2911
|
+
var _a, _b, _c, _d, _e, _f;
|
|
2912
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
2913
|
+
if (this.lowerCaseTagNames) {
|
|
2914
|
+
name = name.toLowerCase();
|
|
2915
|
+
}
|
|
2916
|
+
if (foreignContextElements.has(name) ||
|
|
2917
|
+
htmlIntegrationElements.has(name)) {
|
|
2918
|
+
this.foreignContext.pop();
|
|
2919
|
+
}
|
|
2920
|
+
if (!this.isVoidElement(name)) {
|
|
2921
|
+
var pos = this.stack.lastIndexOf(name);
|
|
2922
|
+
if (pos !== -1) {
|
|
2923
|
+
if (this.cbs.onclosetag) {
|
|
2924
|
+
var count = this.stack.length - pos;
|
|
2925
|
+
while (count--) {
|
|
2926
|
+
// We know the stack has sufficient elements.
|
|
2927
|
+
this.cbs.onclosetag(this.stack.pop(), count !== 0);
|
|
2928
|
+
}
|
|
2929
|
+
}
|
|
2930
|
+
else
|
|
2931
|
+
this.stack.length = pos;
|
|
2932
|
+
}
|
|
2933
|
+
else if (!this.options.xmlMode && name === "p") {
|
|
2934
|
+
this.emitOpenTag(name);
|
|
2935
|
+
this.closeCurrentTag(true);
|
|
2936
|
+
}
|
|
2937
|
+
}
|
|
2938
|
+
else if (!this.options.xmlMode && name === "br") {
|
|
2939
|
+
// We can't go through `emitOpenTag` here, as `br` would be implicitly closed.
|
|
2940
|
+
(_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name);
|
|
2941
|
+
(_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, name, {}, true);
|
|
2942
|
+
(_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, name, false);
|
|
2943
|
+
}
|
|
2944
|
+
// Set `startIndex` for next node
|
|
2945
|
+
this.startIndex = this.endIndex + 1;
|
|
2946
|
+
};
|
|
2947
|
+
/** @internal */
|
|
2948
|
+
Parser.prototype.onselfclosingtag = function () {
|
|
2949
|
+
if (this.options.xmlMode ||
|
|
2950
|
+
this.options.recognizeSelfClosing ||
|
|
2951
|
+
this.foreignContext[this.foreignContext.length - 1]) {
|
|
2952
|
+
this.closeCurrentTag(false);
|
|
2953
|
+
// Set `startIndex` for next node
|
|
2954
|
+
this.startIndex = this.endIndex + 1;
|
|
2955
|
+
}
|
|
2956
|
+
else {
|
|
2957
|
+
// Ignore the fact that the tag is self-closing.
|
|
2958
|
+
this.onopentagend();
|
|
2959
|
+
}
|
|
2960
|
+
};
|
|
2961
|
+
Parser.prototype.closeCurrentTag = function (isOpenImplied) {
|
|
2962
|
+
var _a, _b;
|
|
2963
|
+
var name = this.tagname;
|
|
2964
|
+
this.endOpenTag(isOpenImplied);
|
|
2965
|
+
// Self-closing tags will be on the top of the stack
|
|
2966
|
+
if (this.stack[this.stack.length - 1] === name) {
|
|
2967
|
+
// If the opening tag isn't implied, the closing tag has to be implied.
|
|
2968
|
+
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);
|
|
2969
|
+
this.stack.pop();
|
|
2970
|
+
}
|
|
2971
|
+
};
|
|
2972
|
+
/** @internal */
|
|
2973
|
+
Parser.prototype.onattribname = function (name) {
|
|
2974
|
+
this.startIndex = this.tokenizer.getAbsoluteSectionStart();
|
|
2975
|
+
if (this.lowerCaseAttributeNames) {
|
|
2976
|
+
name = name.toLowerCase();
|
|
2977
|
+
}
|
|
2978
|
+
this.attribname = name;
|
|
2979
|
+
};
|
|
2980
|
+
/** @internal */
|
|
2981
|
+
Parser.prototype.onattribdata = function (value) {
|
|
2982
|
+
this.attribvalue += value;
|
|
2983
|
+
};
|
|
2984
|
+
/** @internal */
|
|
2985
|
+
Parser.prototype.onattribend = function (quote) {
|
|
2986
|
+
var _a, _b;
|
|
2987
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
2988
|
+
(_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote);
|
|
2989
|
+
if (this.attribs &&
|
|
2990
|
+
!Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {
|
|
2991
|
+
this.attribs[this.attribname] = this.attribvalue;
|
|
2992
|
+
}
|
|
2993
|
+
this.attribname = "";
|
|
2994
|
+
this.attribvalue = "";
|
|
2995
|
+
};
|
|
2996
|
+
Parser.prototype.getInstructionName = function (value) {
|
|
2997
|
+
var idx = value.search(reNameEnd);
|
|
2998
|
+
var name = idx < 0 ? value : value.substr(0, idx);
|
|
2999
|
+
if (this.lowerCaseTagNames) {
|
|
3000
|
+
name = name.toLowerCase();
|
|
3001
|
+
}
|
|
3002
|
+
return name;
|
|
3003
|
+
};
|
|
3004
|
+
/** @internal */
|
|
3005
|
+
Parser.prototype.ondeclaration = function (value) {
|
|
3006
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
3007
|
+
if (this.cbs.onprocessinginstruction) {
|
|
3008
|
+
var name_1 = this.getInstructionName(value);
|
|
3009
|
+
this.cbs.onprocessinginstruction("!" + name_1, "!" + value);
|
|
3010
|
+
}
|
|
3011
|
+
// Set `startIndex` for next node
|
|
3012
|
+
this.startIndex = this.endIndex + 1;
|
|
3013
|
+
};
|
|
3014
|
+
/** @internal */
|
|
3015
|
+
Parser.prototype.onprocessinginstruction = function (value) {
|
|
3016
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
3017
|
+
if (this.cbs.onprocessinginstruction) {
|
|
3018
|
+
var name_2 = this.getInstructionName(value);
|
|
3019
|
+
this.cbs.onprocessinginstruction("?" + name_2, "?" + value);
|
|
3020
|
+
}
|
|
3021
|
+
// Set `startIndex` for next node
|
|
3022
|
+
this.startIndex = this.endIndex + 1;
|
|
3023
|
+
};
|
|
3024
|
+
/** @internal */
|
|
3025
|
+
Parser.prototype.oncomment = function (value) {
|
|
3026
|
+
var _a, _b, _c, _d;
|
|
3027
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
3028
|
+
(_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value);
|
|
3029
|
+
(_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
3030
|
+
// Set `startIndex` for next node
|
|
3031
|
+
this.startIndex = this.endIndex + 1;
|
|
3032
|
+
};
|
|
3033
|
+
/** @internal */
|
|
3034
|
+
Parser.prototype.oncdata = function (value) {
|
|
3035
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
3036
|
+
this.endIndex = this.tokenizer.getAbsoluteIndex();
|
|
3037
|
+
if (this.options.xmlMode || this.options.recognizeCDATA) {
|
|
3038
|
+
(_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3039
|
+
(_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
|
|
3040
|
+
(_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
3041
|
+
}
|
|
3042
|
+
else {
|
|
3043
|
+
(_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, "[CDATA[" + value + "]]");
|
|
3044
|
+
(_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
|
|
3045
|
+
}
|
|
3046
|
+
// Set `startIndex` for next node
|
|
3047
|
+
this.startIndex = this.endIndex + 1;
|
|
3048
|
+
};
|
|
3049
|
+
/** @internal */
|
|
3050
|
+
Parser.prototype.onerror = function (err) {
|
|
3051
|
+
var _a, _b;
|
|
3052
|
+
(_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err);
|
|
3053
|
+
};
|
|
3054
|
+
/** @internal */
|
|
3055
|
+
Parser.prototype.onend = function () {
|
|
3056
|
+
var _a, _b;
|
|
3057
|
+
if (this.cbs.onclosetag) {
|
|
3058
|
+
// Set the end index for all remaining tags
|
|
3059
|
+
this.endIndex = this.startIndex;
|
|
3060
|
+
for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i], true))
|
|
3061
|
+
;
|
|
3062
|
+
}
|
|
3063
|
+
(_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3064
|
+
};
|
|
3065
|
+
/**
|
|
3066
|
+
* Resets the parser to a blank state, ready to parse a new HTML document
|
|
3067
|
+
*/
|
|
3068
|
+
Parser.prototype.reset = function () {
|
|
3069
|
+
var _a, _b, _c, _d;
|
|
3070
|
+
(_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
3071
|
+
this.tokenizer.reset();
|
|
3072
|
+
this.tagname = "";
|
|
3073
|
+
this.attribname = "";
|
|
3074
|
+
this.attribs = null;
|
|
3075
|
+
this.stack = [];
|
|
3076
|
+
this.startIndex = 0;
|
|
3077
|
+
this.endIndex = 0;
|
|
3078
|
+
(_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
|
|
3079
|
+
};
|
|
3080
|
+
/**
|
|
3081
|
+
* Resets the parser, then parses a complete document and
|
|
3082
|
+
* pushes it to the handler.
|
|
3083
|
+
*
|
|
3084
|
+
* @param data Document to parse.
|
|
3085
|
+
*/
|
|
3086
|
+
Parser.prototype.parseComplete = function (data) {
|
|
3087
|
+
this.reset();
|
|
3088
|
+
this.end(data);
|
|
3089
|
+
};
|
|
3090
|
+
/**
|
|
3091
|
+
* Parses a chunk of data and calls the corresponding callbacks.
|
|
3092
|
+
*
|
|
3093
|
+
* @param chunk Chunk to parse.
|
|
3094
|
+
*/
|
|
3095
|
+
Parser.prototype.write = function (chunk) {
|
|
3096
|
+
this.tokenizer.write(chunk);
|
|
3097
|
+
};
|
|
3098
|
+
/**
|
|
3099
|
+
* Parses the end of the buffer and clears the stack, calls onend.
|
|
3100
|
+
*
|
|
3101
|
+
* @param chunk Optional final chunk to parse.
|
|
3102
|
+
*/
|
|
3103
|
+
Parser.prototype.end = function (chunk) {
|
|
3104
|
+
this.tokenizer.end(chunk);
|
|
3105
|
+
};
|
|
3106
|
+
/**
|
|
3107
|
+
* Pauses parsing. The parser won't emit events until `resume` is called.
|
|
3108
|
+
*/
|
|
3109
|
+
Parser.prototype.pause = function () {
|
|
3110
|
+
this.tokenizer.pause();
|
|
3111
|
+
};
|
|
3112
|
+
/**
|
|
3113
|
+
* Resumes parsing after `pause` was called.
|
|
3114
|
+
*/
|
|
3115
|
+
Parser.prototype.resume = function () {
|
|
3116
|
+
this.tokenizer.resume();
|
|
3117
|
+
};
|
|
3118
|
+
/**
|
|
3119
|
+
* Alias of `write`, for backwards compatibility.
|
|
3120
|
+
*
|
|
3121
|
+
* @param chunk Chunk to parse.
|
|
3122
|
+
* @deprecated
|
|
3123
|
+
*/
|
|
3124
|
+
Parser.prototype.parseChunk = function (chunk) {
|
|
3125
|
+
this.write(chunk);
|
|
3126
|
+
};
|
|
3127
|
+
/**
|
|
3128
|
+
* Alias of `end`, for backwards compatibility.
|
|
3129
|
+
*
|
|
3130
|
+
* @param chunk Optional final chunk to parse.
|
|
3131
|
+
* @deprecated
|
|
3132
|
+
*/
|
|
3133
|
+
Parser.prototype.done = function (chunk) {
|
|
3134
|
+
this.end(chunk);
|
|
3135
|
+
};
|
|
3136
|
+
return Parser;
|
|
3137
|
+
}());
|
|
3138
|
+
exports.Parser = Parser;
|
|
3139
|
+
});
|
|
3140
|
+
|
|
3141
|
+
var lib$1 = createCommonjsModule(function (module, exports) {
|
|
3142
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3143
|
+
exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0;
|
|
3144
|
+
/** Types of elements found in htmlparser2's DOM */
|
|
3145
|
+
var ElementType;
|
|
3146
|
+
(function (ElementType) {
|
|
3147
|
+
/** Type for the root element of a document */
|
|
3148
|
+
ElementType["Root"] = "root";
|
|
3149
|
+
/** Type for Text */
|
|
3150
|
+
ElementType["Text"] = "text";
|
|
3151
|
+
/** Type for <? ... ?> */
|
|
3152
|
+
ElementType["Directive"] = "directive";
|
|
3153
|
+
/** Type for <!-- ... --> */
|
|
3154
|
+
ElementType["Comment"] = "comment";
|
|
3155
|
+
/** Type for <script> tags */
|
|
3156
|
+
ElementType["Script"] = "script";
|
|
3157
|
+
/** Type for <style> tags */
|
|
3158
|
+
ElementType["Style"] = "style";
|
|
3159
|
+
/** Type for Any tag */
|
|
3160
|
+
ElementType["Tag"] = "tag";
|
|
3161
|
+
/** Type for <![CDATA[ ... ]]> */
|
|
3162
|
+
ElementType["CDATA"] = "cdata";
|
|
3163
|
+
/** Type for <!doctype ...> */
|
|
3164
|
+
ElementType["Doctype"] = "doctype";
|
|
3165
|
+
})(ElementType = exports.ElementType || (exports.ElementType = {}));
|
|
3166
|
+
/**
|
|
3167
|
+
* Tests whether an element is a tag or not.
|
|
3168
|
+
*
|
|
3169
|
+
* @param elem Element to test
|
|
3170
|
+
*/
|
|
3171
|
+
function isTag(elem) {
|
|
3172
|
+
return (elem.type === ElementType.Tag ||
|
|
3173
|
+
elem.type === ElementType.Script ||
|
|
3174
|
+
elem.type === ElementType.Style);
|
|
49
3175
|
}
|
|
3176
|
+
exports.isTag = isTag;
|
|
3177
|
+
// Exports for backwards compatibility
|
|
3178
|
+
/** Type for the root element of a document */
|
|
3179
|
+
exports.Root = ElementType.Root;
|
|
3180
|
+
/** Type for Text */
|
|
3181
|
+
exports.Text = ElementType.Text;
|
|
3182
|
+
/** Type for <? ... ?> */
|
|
3183
|
+
exports.Directive = ElementType.Directive;
|
|
3184
|
+
/** Type for <!-- ... --> */
|
|
3185
|
+
exports.Comment = ElementType.Comment;
|
|
3186
|
+
/** Type for <script> tags */
|
|
3187
|
+
exports.Script = ElementType.Script;
|
|
3188
|
+
/** Type for <style> tags */
|
|
3189
|
+
exports.Style = ElementType.Style;
|
|
3190
|
+
/** Type for Any tag */
|
|
3191
|
+
exports.Tag = ElementType.Tag;
|
|
3192
|
+
/** Type for <![CDATA[ ... ]]> */
|
|
3193
|
+
exports.CDATA = ElementType.CDATA;
|
|
3194
|
+
/** Type for <!doctype ...> */
|
|
3195
|
+
exports.Doctype = ElementType.Doctype;
|
|
3196
|
+
});
|
|
50
3197
|
|
|
51
|
-
var
|
|
52
|
-
var languageFilterImplementations__default = /*#__PURE__*/_interopDefaultLegacy(languageFilterImplementations);
|
|
53
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
54
|
-
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
55
|
-
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
56
|
-
var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
|
|
57
|
-
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
58
|
-
var customFlagComponents__namespace = /*#__PURE__*/_interopNamespace(customFlagComponents);
|
|
59
|
-
var config__default = /*#__PURE__*/_interopDefaultLegacy(config);
|
|
60
|
-
var schemas__default = /*#__PURE__*/_interopDefaultLegacy(schemas);
|
|
61
|
-
var client__default = /*#__PURE__*/_interopDefaultLegacy(client);
|
|
62
|
-
var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
|
|
63
|
-
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
|
|
64
|
-
var languagesLoaderFn__default = /*#__PURE__*/_interopDefaultLegacy(languagesLoaderFn);
|
|
65
|
-
var shouldReloadFn__default = /*#__PURE__*/_interopDefaultLegacy(shouldReloadFn);
|
|
66
|
-
var documentStore__default = /*#__PURE__*/_interopDefaultLegacy(documentStore);
|
|
67
|
-
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
68
|
-
|
|
69
|
-
var objectSafeGet = get;
|
|
3198
|
+
var domelementtype_1 = lib$1;
|
|
70
3199
|
|
|
71
|
-
|
|
72
|
-
|
|
3200
|
+
var node = createCommonjsModule(function (module, exports) {
|
|
3201
|
+
var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () {
|
|
3202
|
+
var extendStatics = function (d, b) {
|
|
3203
|
+
extendStatics = Object.setPrototypeOf ||
|
|
3204
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
3205
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
3206
|
+
return extendStatics(d, b);
|
|
3207
|
+
};
|
|
3208
|
+
return function (d, b) {
|
|
3209
|
+
if (typeof b !== "function" && b !== null)
|
|
3210
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
3211
|
+
extendStatics(d, b);
|
|
3212
|
+
function __() { this.constructor = d; }
|
|
3213
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
3214
|
+
};
|
|
3215
|
+
})();
|
|
3216
|
+
var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () {
|
|
3217
|
+
__assign = Object.assign || function(t) {
|
|
3218
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
3219
|
+
s = arguments[i];
|
|
3220
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
3221
|
+
t[p] = s[p];
|
|
3222
|
+
}
|
|
3223
|
+
return t;
|
|
3224
|
+
};
|
|
3225
|
+
return __assign.apply(this, arguments);
|
|
3226
|
+
};
|
|
3227
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3228
|
+
exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0;
|
|
3229
|
+
|
|
3230
|
+
var nodeTypes = new Map([
|
|
3231
|
+
[domelementtype_1.ElementType.Tag, 1],
|
|
3232
|
+
[domelementtype_1.ElementType.Script, 1],
|
|
3233
|
+
[domelementtype_1.ElementType.Style, 1],
|
|
3234
|
+
[domelementtype_1.ElementType.Directive, 1],
|
|
3235
|
+
[domelementtype_1.ElementType.Text, 3],
|
|
3236
|
+
[domelementtype_1.ElementType.CDATA, 4],
|
|
3237
|
+
[domelementtype_1.ElementType.Comment, 8],
|
|
3238
|
+
[domelementtype_1.ElementType.Root, 9],
|
|
3239
|
+
]);
|
|
3240
|
+
/**
|
|
3241
|
+
* This object will be used as the prototype for Nodes when creating a
|
|
3242
|
+
* DOM-Level-1-compliant structure.
|
|
3243
|
+
*/
|
|
3244
|
+
var Node = /** @class */ (function () {
|
|
3245
|
+
/**
|
|
3246
|
+
*
|
|
3247
|
+
* @param type The type of the node.
|
|
3248
|
+
*/
|
|
3249
|
+
function Node(type) {
|
|
3250
|
+
this.type = type;
|
|
3251
|
+
/** Parent of the node */
|
|
3252
|
+
this.parent = null;
|
|
3253
|
+
/** Previous sibling */
|
|
3254
|
+
this.prev = null;
|
|
3255
|
+
/** Next sibling */
|
|
3256
|
+
this.next = null;
|
|
3257
|
+
/** The start index of the node. Requires `withStartIndices` on the handler to be `true. */
|
|
3258
|
+
this.startIndex = null;
|
|
3259
|
+
/** The end index of the node. Requires `withEndIndices` on the handler to be `true. */
|
|
3260
|
+
this.endIndex = null;
|
|
3261
|
+
}
|
|
3262
|
+
Object.defineProperty(Node.prototype, "nodeType", {
|
|
3263
|
+
// Read-only aliases
|
|
3264
|
+
/**
|
|
3265
|
+
* [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible
|
|
3266
|
+
* node {@link type}.
|
|
3267
|
+
*/
|
|
3268
|
+
get: function () {
|
|
3269
|
+
var _a;
|
|
3270
|
+
return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1;
|
|
3271
|
+
},
|
|
3272
|
+
enumerable: false,
|
|
3273
|
+
configurable: true
|
|
3274
|
+
});
|
|
3275
|
+
Object.defineProperty(Node.prototype, "parentNode", {
|
|
3276
|
+
// Read-write aliases for properties
|
|
3277
|
+
/**
|
|
3278
|
+
* Same as {@link parent}.
|
|
3279
|
+
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
|
|
3280
|
+
*/
|
|
3281
|
+
get: function () {
|
|
3282
|
+
return this.parent;
|
|
3283
|
+
},
|
|
3284
|
+
set: function (parent) {
|
|
3285
|
+
this.parent = parent;
|
|
3286
|
+
},
|
|
3287
|
+
enumerable: false,
|
|
3288
|
+
configurable: true
|
|
3289
|
+
});
|
|
3290
|
+
Object.defineProperty(Node.prototype, "previousSibling", {
|
|
3291
|
+
/**
|
|
3292
|
+
* Same as {@link prev}.
|
|
3293
|
+
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
|
|
3294
|
+
*/
|
|
3295
|
+
get: function () {
|
|
3296
|
+
return this.prev;
|
|
3297
|
+
},
|
|
3298
|
+
set: function (prev) {
|
|
3299
|
+
this.prev = prev;
|
|
3300
|
+
},
|
|
3301
|
+
enumerable: false,
|
|
3302
|
+
configurable: true
|
|
3303
|
+
});
|
|
3304
|
+
Object.defineProperty(Node.prototype, "nextSibling", {
|
|
3305
|
+
/**
|
|
3306
|
+
* Same as {@link next}.
|
|
3307
|
+
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
|
|
3308
|
+
*/
|
|
3309
|
+
get: function () {
|
|
3310
|
+
return this.next;
|
|
3311
|
+
},
|
|
3312
|
+
set: function (next) {
|
|
3313
|
+
this.next = next;
|
|
3314
|
+
},
|
|
3315
|
+
enumerable: false,
|
|
3316
|
+
configurable: true
|
|
3317
|
+
});
|
|
3318
|
+
/**
|
|
3319
|
+
* Clone this node, and optionally its children.
|
|
3320
|
+
*
|
|
3321
|
+
* @param recursive Clone child nodes as well.
|
|
3322
|
+
* @returns A clone of the node.
|
|
3323
|
+
*/
|
|
3324
|
+
Node.prototype.cloneNode = function (recursive) {
|
|
3325
|
+
if (recursive === void 0) { recursive = false; }
|
|
3326
|
+
return cloneNode(this, recursive);
|
|
3327
|
+
};
|
|
3328
|
+
return Node;
|
|
3329
|
+
}());
|
|
3330
|
+
exports.Node = Node;
|
|
3331
|
+
/**
|
|
3332
|
+
* A node that contains some data.
|
|
3333
|
+
*/
|
|
3334
|
+
var DataNode = /** @class */ (function (_super) {
|
|
3335
|
+
__extends(DataNode, _super);
|
|
3336
|
+
/**
|
|
3337
|
+
* @param type The type of the node
|
|
3338
|
+
* @param data The content of the data node
|
|
3339
|
+
*/
|
|
3340
|
+
function DataNode(type, data) {
|
|
3341
|
+
var _this = _super.call(this, type) || this;
|
|
3342
|
+
_this.data = data;
|
|
3343
|
+
return _this;
|
|
3344
|
+
}
|
|
3345
|
+
Object.defineProperty(DataNode.prototype, "nodeValue", {
|
|
3346
|
+
/**
|
|
3347
|
+
* Same as {@link data}.
|
|
3348
|
+
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
|
|
3349
|
+
*/
|
|
3350
|
+
get: function () {
|
|
3351
|
+
return this.data;
|
|
3352
|
+
},
|
|
3353
|
+
set: function (data) {
|
|
3354
|
+
this.data = data;
|
|
3355
|
+
},
|
|
3356
|
+
enumerable: false,
|
|
3357
|
+
configurable: true
|
|
3358
|
+
});
|
|
3359
|
+
return DataNode;
|
|
3360
|
+
}(Node));
|
|
3361
|
+
exports.DataNode = DataNode;
|
|
3362
|
+
/**
|
|
3363
|
+
* Text within the document.
|
|
3364
|
+
*/
|
|
3365
|
+
var Text = /** @class */ (function (_super) {
|
|
3366
|
+
__extends(Text, _super);
|
|
3367
|
+
function Text(data) {
|
|
3368
|
+
return _super.call(this, domelementtype_1.ElementType.Text, data) || this;
|
|
3369
|
+
}
|
|
3370
|
+
return Text;
|
|
3371
|
+
}(DataNode));
|
|
3372
|
+
exports.Text = Text;
|
|
3373
|
+
/**
|
|
3374
|
+
* Comments within the document.
|
|
3375
|
+
*/
|
|
3376
|
+
var Comment = /** @class */ (function (_super) {
|
|
3377
|
+
__extends(Comment, _super);
|
|
3378
|
+
function Comment(data) {
|
|
3379
|
+
return _super.call(this, domelementtype_1.ElementType.Comment, data) || this;
|
|
3380
|
+
}
|
|
3381
|
+
return Comment;
|
|
3382
|
+
}(DataNode));
|
|
3383
|
+
exports.Comment = Comment;
|
|
3384
|
+
/**
|
|
3385
|
+
* Processing instructions, including doc types.
|
|
3386
|
+
*/
|
|
3387
|
+
var ProcessingInstruction = /** @class */ (function (_super) {
|
|
3388
|
+
__extends(ProcessingInstruction, _super);
|
|
3389
|
+
function ProcessingInstruction(name, data) {
|
|
3390
|
+
var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this;
|
|
3391
|
+
_this.name = name;
|
|
3392
|
+
return _this;
|
|
3393
|
+
}
|
|
3394
|
+
return ProcessingInstruction;
|
|
3395
|
+
}(DataNode));
|
|
3396
|
+
exports.ProcessingInstruction = ProcessingInstruction;
|
|
3397
|
+
/**
|
|
3398
|
+
* A `Node` that can have children.
|
|
3399
|
+
*/
|
|
3400
|
+
var NodeWithChildren = /** @class */ (function (_super) {
|
|
3401
|
+
__extends(NodeWithChildren, _super);
|
|
3402
|
+
/**
|
|
3403
|
+
* @param type Type of the node.
|
|
3404
|
+
* @param children Children of the node. Only certain node types can have children.
|
|
3405
|
+
*/
|
|
3406
|
+
function NodeWithChildren(type, children) {
|
|
3407
|
+
var _this = _super.call(this, type) || this;
|
|
3408
|
+
_this.children = children;
|
|
3409
|
+
return _this;
|
|
3410
|
+
}
|
|
3411
|
+
Object.defineProperty(NodeWithChildren.prototype, "firstChild", {
|
|
3412
|
+
// Aliases
|
|
3413
|
+
/** First child of the node. */
|
|
3414
|
+
get: function () {
|
|
3415
|
+
var _a;
|
|
3416
|
+
return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;
|
|
3417
|
+
},
|
|
3418
|
+
enumerable: false,
|
|
3419
|
+
configurable: true
|
|
3420
|
+
});
|
|
3421
|
+
Object.defineProperty(NodeWithChildren.prototype, "lastChild", {
|
|
3422
|
+
/** Last child of the node. */
|
|
3423
|
+
get: function () {
|
|
3424
|
+
return this.children.length > 0
|
|
3425
|
+
? this.children[this.children.length - 1]
|
|
3426
|
+
: null;
|
|
3427
|
+
},
|
|
3428
|
+
enumerable: false,
|
|
3429
|
+
configurable: true
|
|
3430
|
+
});
|
|
3431
|
+
Object.defineProperty(NodeWithChildren.prototype, "childNodes", {
|
|
3432
|
+
/**
|
|
3433
|
+
* Same as {@link children}.
|
|
3434
|
+
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
|
|
3435
|
+
*/
|
|
3436
|
+
get: function () {
|
|
3437
|
+
return this.children;
|
|
3438
|
+
},
|
|
3439
|
+
set: function (children) {
|
|
3440
|
+
this.children = children;
|
|
3441
|
+
},
|
|
3442
|
+
enumerable: false,
|
|
3443
|
+
configurable: true
|
|
3444
|
+
});
|
|
3445
|
+
return NodeWithChildren;
|
|
3446
|
+
}(Node));
|
|
3447
|
+
exports.NodeWithChildren = NodeWithChildren;
|
|
3448
|
+
/**
|
|
3449
|
+
* The root node of the document.
|
|
3450
|
+
*/
|
|
3451
|
+
var Document = /** @class */ (function (_super) {
|
|
3452
|
+
__extends(Document, _super);
|
|
3453
|
+
function Document(children) {
|
|
3454
|
+
return _super.call(this, domelementtype_1.ElementType.Root, children) || this;
|
|
3455
|
+
}
|
|
3456
|
+
return Document;
|
|
3457
|
+
}(NodeWithChildren));
|
|
3458
|
+
exports.Document = Document;
|
|
3459
|
+
/**
|
|
3460
|
+
* An element within the DOM.
|
|
3461
|
+
*/
|
|
3462
|
+
var Element = /** @class */ (function (_super) {
|
|
3463
|
+
__extends(Element, _super);
|
|
3464
|
+
/**
|
|
3465
|
+
* @param name Name of the tag, eg. `div`, `span`.
|
|
3466
|
+
* @param attribs Object mapping attribute names to attribute values.
|
|
3467
|
+
* @param children Children of the node.
|
|
3468
|
+
*/
|
|
3469
|
+
function Element(name, attribs, children, type) {
|
|
3470
|
+
if (children === void 0) { children = []; }
|
|
3471
|
+
if (type === void 0) { type = name === "script"
|
|
3472
|
+
? domelementtype_1.ElementType.Script
|
|
3473
|
+
: name === "style"
|
|
3474
|
+
? domelementtype_1.ElementType.Style
|
|
3475
|
+
: domelementtype_1.ElementType.Tag; }
|
|
3476
|
+
var _this = _super.call(this, type, children) || this;
|
|
3477
|
+
_this.name = name;
|
|
3478
|
+
_this.attribs = attribs;
|
|
3479
|
+
return _this;
|
|
3480
|
+
}
|
|
3481
|
+
Object.defineProperty(Element.prototype, "tagName", {
|
|
3482
|
+
// DOM Level 1 aliases
|
|
3483
|
+
/**
|
|
3484
|
+
* Same as {@link name}.
|
|
3485
|
+
* [DOM spec](https://dom.spec.whatwg.org)-compatible alias.
|
|
3486
|
+
*/
|
|
3487
|
+
get: function () {
|
|
3488
|
+
return this.name;
|
|
3489
|
+
},
|
|
3490
|
+
set: function (name) {
|
|
3491
|
+
this.name = name;
|
|
3492
|
+
},
|
|
3493
|
+
enumerable: false,
|
|
3494
|
+
configurable: true
|
|
3495
|
+
});
|
|
3496
|
+
Object.defineProperty(Element.prototype, "attributes", {
|
|
3497
|
+
get: function () {
|
|
3498
|
+
var _this = this;
|
|
3499
|
+
return Object.keys(this.attribs).map(function (name) {
|
|
3500
|
+
var _a, _b;
|
|
3501
|
+
return ({
|
|
3502
|
+
name: name,
|
|
3503
|
+
value: _this.attribs[name],
|
|
3504
|
+
namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name],
|
|
3505
|
+
prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name],
|
|
3506
|
+
});
|
|
3507
|
+
});
|
|
3508
|
+
},
|
|
3509
|
+
enumerable: false,
|
|
3510
|
+
configurable: true
|
|
3511
|
+
});
|
|
3512
|
+
return Element;
|
|
3513
|
+
}(NodeWithChildren));
|
|
3514
|
+
exports.Element = Element;
|
|
3515
|
+
/**
|
|
3516
|
+
* @param node Node to check.
|
|
3517
|
+
* @returns `true` if the node is a `Element`, `false` otherwise.
|
|
3518
|
+
*/
|
|
3519
|
+
function isTag(node) {
|
|
3520
|
+
return (0, domelementtype_1.isTag)(node);
|
|
3521
|
+
}
|
|
3522
|
+
exports.isTag = isTag;
|
|
3523
|
+
/**
|
|
3524
|
+
* @param node Node to check.
|
|
3525
|
+
* @returns `true` if the node has the type `CDATA`, `false` otherwise.
|
|
3526
|
+
*/
|
|
3527
|
+
function isCDATA(node) {
|
|
3528
|
+
return node.type === domelementtype_1.ElementType.CDATA;
|
|
3529
|
+
}
|
|
3530
|
+
exports.isCDATA = isCDATA;
|
|
3531
|
+
/**
|
|
3532
|
+
* @param node Node to check.
|
|
3533
|
+
* @returns `true` if the node has the type `Text`, `false` otherwise.
|
|
3534
|
+
*/
|
|
3535
|
+
function isText(node) {
|
|
3536
|
+
return node.type === domelementtype_1.ElementType.Text;
|
|
3537
|
+
}
|
|
3538
|
+
exports.isText = isText;
|
|
3539
|
+
/**
|
|
3540
|
+
* @param node Node to check.
|
|
3541
|
+
* @returns `true` if the node has the type `Comment`, `false` otherwise.
|
|
3542
|
+
*/
|
|
3543
|
+
function isComment(node) {
|
|
3544
|
+
return node.type === domelementtype_1.ElementType.Comment;
|
|
3545
|
+
}
|
|
3546
|
+
exports.isComment = isComment;
|
|
3547
|
+
/**
|
|
3548
|
+
* @param node Node to check.
|
|
3549
|
+
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
|
|
3550
|
+
*/
|
|
3551
|
+
function isDirective(node) {
|
|
3552
|
+
return node.type === domelementtype_1.ElementType.Directive;
|
|
3553
|
+
}
|
|
3554
|
+
exports.isDirective = isDirective;
|
|
3555
|
+
/**
|
|
3556
|
+
* @param node Node to check.
|
|
3557
|
+
* @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.
|
|
3558
|
+
*/
|
|
3559
|
+
function isDocument(node) {
|
|
3560
|
+
return node.type === domelementtype_1.ElementType.Root;
|
|
3561
|
+
}
|
|
3562
|
+
exports.isDocument = isDocument;
|
|
3563
|
+
/**
|
|
3564
|
+
* @param node Node to check.
|
|
3565
|
+
* @returns `true` if the node is a `NodeWithChildren` (has children), `false` otherwise.
|
|
3566
|
+
*/
|
|
3567
|
+
function hasChildren(node) {
|
|
3568
|
+
return Object.prototype.hasOwnProperty.call(node, "children");
|
|
3569
|
+
}
|
|
3570
|
+
exports.hasChildren = hasChildren;
|
|
3571
|
+
/**
|
|
3572
|
+
* Clone a node, and optionally its children.
|
|
3573
|
+
*
|
|
3574
|
+
* @param recursive Clone child nodes as well.
|
|
3575
|
+
* @returns A clone of the node.
|
|
3576
|
+
*/
|
|
3577
|
+
function cloneNode(node, recursive) {
|
|
3578
|
+
if (recursive === void 0) { recursive = false; }
|
|
3579
|
+
var result;
|
|
3580
|
+
if (isText(node)) {
|
|
3581
|
+
result = new Text(node.data);
|
|
3582
|
+
}
|
|
3583
|
+
else if (isComment(node)) {
|
|
3584
|
+
result = new Comment(node.data);
|
|
3585
|
+
}
|
|
3586
|
+
else if (isTag(node)) {
|
|
3587
|
+
var children = recursive ? cloneChildren(node.children) : [];
|
|
3588
|
+
var clone_1 = new Element(node.name, __assign({}, node.attribs), children);
|
|
3589
|
+
children.forEach(function (child) { return (child.parent = clone_1); });
|
|
3590
|
+
if (node.namespace != null) {
|
|
3591
|
+
clone_1.namespace = node.namespace;
|
|
3592
|
+
}
|
|
3593
|
+
if (node["x-attribsNamespace"]) {
|
|
3594
|
+
clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]);
|
|
3595
|
+
}
|
|
3596
|
+
if (node["x-attribsPrefix"]) {
|
|
3597
|
+
clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]);
|
|
3598
|
+
}
|
|
3599
|
+
result = clone_1;
|
|
3600
|
+
}
|
|
3601
|
+
else if (isCDATA(node)) {
|
|
3602
|
+
var children = recursive ? cloneChildren(node.children) : [];
|
|
3603
|
+
var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children);
|
|
3604
|
+
children.forEach(function (child) { return (child.parent = clone_2); });
|
|
3605
|
+
result = clone_2;
|
|
3606
|
+
}
|
|
3607
|
+
else if (isDocument(node)) {
|
|
3608
|
+
var children = recursive ? cloneChildren(node.children) : [];
|
|
3609
|
+
var clone_3 = new Document(children);
|
|
3610
|
+
children.forEach(function (child) { return (child.parent = clone_3); });
|
|
3611
|
+
if (node["x-mode"]) {
|
|
3612
|
+
clone_3["x-mode"] = node["x-mode"];
|
|
3613
|
+
}
|
|
3614
|
+
result = clone_3;
|
|
3615
|
+
}
|
|
3616
|
+
else if (isDirective(node)) {
|
|
3617
|
+
var instruction = new ProcessingInstruction(node.name, node.data);
|
|
3618
|
+
if (node["x-name"] != null) {
|
|
3619
|
+
instruction["x-name"] = node["x-name"];
|
|
3620
|
+
instruction["x-publicId"] = node["x-publicId"];
|
|
3621
|
+
instruction["x-systemId"] = node["x-systemId"];
|
|
3622
|
+
}
|
|
3623
|
+
result = instruction;
|
|
3624
|
+
}
|
|
3625
|
+
else {
|
|
3626
|
+
throw new Error("Not implemented yet: ".concat(node.type));
|
|
3627
|
+
}
|
|
3628
|
+
result.startIndex = node.startIndex;
|
|
3629
|
+
result.endIndex = node.endIndex;
|
|
3630
|
+
if (node.sourceCodeLocation != null) {
|
|
3631
|
+
result.sourceCodeLocation = node.sourceCodeLocation;
|
|
3632
|
+
}
|
|
3633
|
+
return result;
|
|
3634
|
+
}
|
|
3635
|
+
exports.cloneNode = cloneNode;
|
|
3636
|
+
function cloneChildren(childs) {
|
|
3637
|
+
var children = childs.map(function (child) { return cloneNode(child, true); });
|
|
3638
|
+
for (var i = 1; i < children.length; i++) {
|
|
3639
|
+
children[i].prev = children[i - 1];
|
|
3640
|
+
children[i - 1].next = children[i];
|
|
3641
|
+
}
|
|
3642
|
+
return children;
|
|
3643
|
+
}
|
|
3644
|
+
});
|
|
73
3645
|
|
|
74
|
-
|
|
75
|
-
get(obj, ['a', 'aa', 'aaa']); // 2
|
|
3646
|
+
var require$$1$1 = node;
|
|
76
3647
|
|
|
77
|
-
|
|
78
|
-
|
|
3648
|
+
var lib = createCommonjsModule(function (module, exports) {
|
|
3649
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3650
|
+
if (k2 === undefined) k2 = k;
|
|
3651
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
3652
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
3653
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
3654
|
+
}
|
|
3655
|
+
Object.defineProperty(o, k2, desc);
|
|
3656
|
+
}) : (function(o, m, k, k2) {
|
|
3657
|
+
if (k2 === undefined) k2 = k;
|
|
3658
|
+
o[k2] = m[k];
|
|
3659
|
+
}));
|
|
3660
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
3661
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
3662
|
+
};
|
|
3663
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3664
|
+
exports.DomHandler = void 0;
|
|
3665
|
+
|
|
3666
|
+
|
|
3667
|
+
__exportStar(require$$1$1, exports);
|
|
3668
|
+
var reWhitespace = /\s+/g;
|
|
3669
|
+
// Default options
|
|
3670
|
+
var defaultOpts = {
|
|
3671
|
+
normalizeWhitespace: false,
|
|
3672
|
+
withStartIndices: false,
|
|
3673
|
+
withEndIndices: false,
|
|
3674
|
+
xmlMode: false,
|
|
3675
|
+
};
|
|
3676
|
+
var DomHandler = /** @class */ (function () {
|
|
3677
|
+
/**
|
|
3678
|
+
* @param callback Called once parsing has completed.
|
|
3679
|
+
* @param options Settings for the handler.
|
|
3680
|
+
* @param elementCB Callback whenever a tag is closed.
|
|
3681
|
+
*/
|
|
3682
|
+
function DomHandler(callback, options, elementCB) {
|
|
3683
|
+
/** The elements of the DOM */
|
|
3684
|
+
this.dom = [];
|
|
3685
|
+
/** The root element for the DOM */
|
|
3686
|
+
this.root = new require$$1$1.Document(this.dom);
|
|
3687
|
+
/** Indicated whether parsing has been completed. */
|
|
3688
|
+
this.done = false;
|
|
3689
|
+
/** Stack of open tags. */
|
|
3690
|
+
this.tagStack = [this.root];
|
|
3691
|
+
/** A data node that is still being written to. */
|
|
3692
|
+
this.lastNode = null;
|
|
3693
|
+
/** Reference to the parser instance. Used for location information. */
|
|
3694
|
+
this.parser = null;
|
|
3695
|
+
// Make it possible to skip arguments, for backwards-compatibility
|
|
3696
|
+
if (typeof options === "function") {
|
|
3697
|
+
elementCB = options;
|
|
3698
|
+
options = defaultOpts;
|
|
3699
|
+
}
|
|
3700
|
+
if (typeof callback === "object") {
|
|
3701
|
+
options = callback;
|
|
3702
|
+
callback = undefined;
|
|
3703
|
+
}
|
|
3704
|
+
this.callback = callback !== null && callback !== void 0 ? callback : null;
|
|
3705
|
+
this.options = options !== null && options !== void 0 ? options : defaultOpts;
|
|
3706
|
+
this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
|
|
3707
|
+
}
|
|
3708
|
+
DomHandler.prototype.onparserinit = function (parser) {
|
|
3709
|
+
this.parser = parser;
|
|
3710
|
+
};
|
|
3711
|
+
// Resets the handler back to starting state
|
|
3712
|
+
DomHandler.prototype.onreset = function () {
|
|
3713
|
+
this.dom = [];
|
|
3714
|
+
this.root = new require$$1$1.Document(this.dom);
|
|
3715
|
+
this.done = false;
|
|
3716
|
+
this.tagStack = [this.root];
|
|
3717
|
+
this.lastNode = null;
|
|
3718
|
+
this.parser = null;
|
|
3719
|
+
};
|
|
3720
|
+
// Signals the handler that parsing is done
|
|
3721
|
+
DomHandler.prototype.onend = function () {
|
|
3722
|
+
if (this.done)
|
|
3723
|
+
return;
|
|
3724
|
+
this.done = true;
|
|
3725
|
+
this.parser = null;
|
|
3726
|
+
this.handleCallback(null);
|
|
3727
|
+
};
|
|
3728
|
+
DomHandler.prototype.onerror = function (error) {
|
|
3729
|
+
this.handleCallback(error);
|
|
3730
|
+
};
|
|
3731
|
+
DomHandler.prototype.onclosetag = function () {
|
|
3732
|
+
this.lastNode = null;
|
|
3733
|
+
var elem = this.tagStack.pop();
|
|
3734
|
+
if (this.options.withEndIndices) {
|
|
3735
|
+
elem.endIndex = this.parser.endIndex;
|
|
3736
|
+
}
|
|
3737
|
+
if (this.elementCB)
|
|
3738
|
+
this.elementCB(elem);
|
|
3739
|
+
};
|
|
3740
|
+
DomHandler.prototype.onopentag = function (name, attribs) {
|
|
3741
|
+
var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;
|
|
3742
|
+
var element = new require$$1$1.Element(name, attribs, undefined, type);
|
|
3743
|
+
this.addNode(element);
|
|
3744
|
+
this.tagStack.push(element);
|
|
3745
|
+
};
|
|
3746
|
+
DomHandler.prototype.ontext = function (data) {
|
|
3747
|
+
var normalizeWhitespace = this.options.normalizeWhitespace;
|
|
3748
|
+
var lastNode = this.lastNode;
|
|
3749
|
+
if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {
|
|
3750
|
+
if (normalizeWhitespace) {
|
|
3751
|
+
lastNode.data = (lastNode.data + data).replace(reWhitespace, " ");
|
|
3752
|
+
}
|
|
3753
|
+
else {
|
|
3754
|
+
lastNode.data += data;
|
|
3755
|
+
}
|
|
3756
|
+
if (this.options.withEndIndices) {
|
|
3757
|
+
lastNode.endIndex = this.parser.endIndex;
|
|
3758
|
+
}
|
|
3759
|
+
}
|
|
3760
|
+
else {
|
|
3761
|
+
if (normalizeWhitespace) {
|
|
3762
|
+
data = data.replace(reWhitespace, " ");
|
|
3763
|
+
}
|
|
3764
|
+
var node = new require$$1$1.Text(data);
|
|
3765
|
+
this.addNode(node);
|
|
3766
|
+
this.lastNode = node;
|
|
3767
|
+
}
|
|
3768
|
+
};
|
|
3769
|
+
DomHandler.prototype.oncomment = function (data) {
|
|
3770
|
+
if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
|
|
3771
|
+
this.lastNode.data += data;
|
|
3772
|
+
return;
|
|
3773
|
+
}
|
|
3774
|
+
var node = new require$$1$1.Comment(data);
|
|
3775
|
+
this.addNode(node);
|
|
3776
|
+
this.lastNode = node;
|
|
3777
|
+
};
|
|
3778
|
+
DomHandler.prototype.oncommentend = function () {
|
|
3779
|
+
this.lastNode = null;
|
|
3780
|
+
};
|
|
3781
|
+
DomHandler.prototype.oncdatastart = function () {
|
|
3782
|
+
var text = new require$$1$1.Text("");
|
|
3783
|
+
var node = new require$$1$1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]);
|
|
3784
|
+
this.addNode(node);
|
|
3785
|
+
text.parent = node;
|
|
3786
|
+
this.lastNode = text;
|
|
3787
|
+
};
|
|
3788
|
+
DomHandler.prototype.oncdataend = function () {
|
|
3789
|
+
this.lastNode = null;
|
|
3790
|
+
};
|
|
3791
|
+
DomHandler.prototype.onprocessinginstruction = function (name, data) {
|
|
3792
|
+
var node = new require$$1$1.ProcessingInstruction(name, data);
|
|
3793
|
+
this.addNode(node);
|
|
3794
|
+
};
|
|
3795
|
+
DomHandler.prototype.handleCallback = function (error) {
|
|
3796
|
+
if (typeof this.callback === "function") {
|
|
3797
|
+
this.callback(error, this.dom);
|
|
3798
|
+
}
|
|
3799
|
+
else if (error) {
|
|
3800
|
+
throw error;
|
|
3801
|
+
}
|
|
3802
|
+
};
|
|
3803
|
+
DomHandler.prototype.addNode = function (node) {
|
|
3804
|
+
var parent = this.tagStack[this.tagStack.length - 1];
|
|
3805
|
+
var previousSibling = parent.children[parent.children.length - 1];
|
|
3806
|
+
if (this.options.withStartIndices) {
|
|
3807
|
+
node.startIndex = this.parser.startIndex;
|
|
3808
|
+
}
|
|
3809
|
+
if (this.options.withEndIndices) {
|
|
3810
|
+
node.endIndex = this.parser.endIndex;
|
|
3811
|
+
}
|
|
3812
|
+
parent.children.push(node);
|
|
3813
|
+
if (previousSibling) {
|
|
3814
|
+
node.prev = previousSibling;
|
|
3815
|
+
previousSibling.next = node;
|
|
3816
|
+
}
|
|
3817
|
+
node.parent = parent;
|
|
3818
|
+
this.lastNode = null;
|
|
3819
|
+
};
|
|
3820
|
+
return DomHandler;
|
|
3821
|
+
}());
|
|
3822
|
+
exports.DomHandler = DomHandler;
|
|
3823
|
+
exports.default = DomHandler;
|
|
3824
|
+
});
|
|
79
3825
|
|
|
80
|
-
|
|
81
|
-
|
|
3826
|
+
/**
|
|
3827
|
+
* Sets root parent to null.
|
|
3828
|
+
*
|
|
3829
|
+
* @param {Array<Comment|Element|ProcessingInstruction|Text>} nodes
|
|
3830
|
+
* @return {Array<Comment|Element|ProcessingInstruction|Text>}
|
|
3831
|
+
*/
|
|
3832
|
+
function unsetRootParent$1(nodes) {
|
|
3833
|
+
for (var index = 0, len = nodes.length; index < len; index++) {
|
|
3834
|
+
var node = nodes[index];
|
|
3835
|
+
node.parent = null;
|
|
3836
|
+
}
|
|
3837
|
+
return nodes;
|
|
3838
|
+
}
|
|
82
3839
|
|
|
83
|
-
|
|
84
|
-
|
|
3840
|
+
var utilities = {
|
|
3841
|
+
unsetRootParent: unsetRootParent$1
|
|
3842
|
+
};
|
|
85
3843
|
|
|
86
|
-
|
|
87
|
-
get(obj.b, ['bb', 'bbb'], 42); // 42
|
|
3844
|
+
var require$$0 = Parser_1;
|
|
88
3845
|
|
|
89
|
-
|
|
90
|
-
get(undefined, ['a']); // undefined
|
|
3846
|
+
var require$$1 = lib;
|
|
91
3847
|
|
|
92
|
-
|
|
93
|
-
|
|
3848
|
+
var Parser = require$$0.Parser;
|
|
3849
|
+
var DomHandler = require$$1.DomHandler;
|
|
94
3850
|
|
|
95
|
-
|
|
96
|
-
const sym = Symbol();
|
|
97
|
-
obj.a[sym] = 4;
|
|
98
|
-
get(obj.a, sym); // 4
|
|
99
|
-
*/
|
|
3851
|
+
var unsetRootParent = utilities.unsetRootParent;
|
|
100
3852
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (typeof
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
if (!Array.isArray(props)) {
|
|
116
|
-
throw new Error('props arg must be an array, a string or a symbol');
|
|
3853
|
+
/**
|
|
3854
|
+
* Parses HTML string to DOM nodes in Node.js.
|
|
3855
|
+
*
|
|
3856
|
+
* This is the same method as `require('htmlparser2').parseDOM`
|
|
3857
|
+
* https://github.com/fb55/htmlparser2/blob/v6.0.0/src/index.ts#L29-L41
|
|
3858
|
+
*
|
|
3859
|
+
* @param {string} html - HTML markup.
|
|
3860
|
+
* @param {DomHandlerOptions} [options] - Parser options (https://github.com/fb55/domhandler/tree/v4.0.0#readme).
|
|
3861
|
+
* @return {Array<Comment|Element|ProcessingInstruction|Text>} - DOM nodes.
|
|
3862
|
+
*/
|
|
3863
|
+
function HTMLDOMParser(html, options) {
|
|
3864
|
+
if (typeof html !== 'string') {
|
|
3865
|
+
throw new TypeError('First argument must be a string.');
|
|
117
3866
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
return defaultValue;
|
|
122
|
-
}
|
|
123
|
-
obj = obj[prop];
|
|
124
|
-
if (obj === undefined) {
|
|
125
|
-
return defaultValue;
|
|
126
|
-
}
|
|
3867
|
+
|
|
3868
|
+
if (html === '') {
|
|
3869
|
+
return [];
|
|
127
3870
|
}
|
|
128
|
-
|
|
3871
|
+
|
|
3872
|
+
var handler = new DomHandler(undefined, options);
|
|
3873
|
+
new Parser(handler, options).end(html);
|
|
3874
|
+
return unsetRootParent(handler.dom);
|
|
129
3875
|
}
|
|
130
3876
|
|
|
3877
|
+
var htmlToDom = HTMLDOMParser;
|
|
3878
|
+
|
|
131
3879
|
/**
|
|
132
|
-
*
|
|
133
|
-
|
|
134
|
-
var cache = new Map();
|
|
135
|
-
/**
|
|
136
|
-
* Check if emoji is supported with cache
|
|
3880
|
+
* When running on Node.js, use the server parser.
|
|
3881
|
+
* When bundling for the browser, use the client parser.
|
|
137
3882
|
*
|
|
138
|
-
* @
|
|
139
|
-
* @returns {boolean}
|
|
3883
|
+
* @see {@link https://github.com/substack/node-browserify#browser-field}
|
|
140
3884
|
*/
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
3885
|
+
|
|
3886
|
+
var htmlDomParser = htmlToDom;
|
|
3887
|
+
|
|
3888
|
+
var htmlToDOM = htmlDomParser;
|
|
3889
|
+
|
|
3890
|
+
// support backwards compatibility for ES Module
|
|
3891
|
+
htmlToDOM =
|
|
3892
|
+
/* istanbul ignore next */
|
|
3893
|
+
typeof htmlToDOM.default === 'function' ? htmlToDOM.default : htmlToDOM;
|
|
3894
|
+
|
|
3895
|
+
var domParserOptions = { lowerCaseAttributeNames: false };
|
|
3896
|
+
|
|
149
3897
|
/**
|
|
150
|
-
*
|
|
3898
|
+
* Converts HTML string to React elements.
|
|
151
3899
|
*
|
|
152
|
-
* @
|
|
153
|
-
* @
|
|
3900
|
+
* @param {String} html - HTML string.
|
|
3901
|
+
* @param {Object} [options] - Parser options.
|
|
3902
|
+
* @param {Object} [options.htmlparser2] - htmlparser2 options.
|
|
3903
|
+
* @param {Object} [options.library] - Library for React, Preact, etc.
|
|
3904
|
+
* @param {Function} [options.replace] - Replace method.
|
|
3905
|
+
* @return {JSX.Element|JSX.Element[]|String} - React element(s), empty array, or string.
|
|
154
3906
|
*/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return function (unicode) {
|
|
174
|
-
ctx.clearRect(0, 0, CANVAS_WIDTH * 2, CANVAS_HEIGHT);
|
|
175
|
-
// Draw in red on the left
|
|
176
|
-
ctx.fillStyle = '#FF0000';
|
|
177
|
-
ctx.fillText(unicode, 0, 22);
|
|
178
|
-
// Draw in blue on right
|
|
179
|
-
ctx.fillStyle = '#0000FF';
|
|
180
|
-
ctx.fillText(unicode, CANVAS_WIDTH, 22);
|
|
181
|
-
var a = ctx.getImageData(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT).data;
|
|
182
|
-
var count = a.length;
|
|
183
|
-
var i = 0;
|
|
184
|
-
// Search the first visible pixel
|
|
185
|
-
for (; i < count && !a[i + 3]; i += 4)
|
|
186
|
-
;
|
|
187
|
-
// No visible pixel
|
|
188
|
-
if (i >= count) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
// Emoji has immutable color, so we check the color of the emoji in two different colors
|
|
192
|
-
// the result show be the same.
|
|
193
|
-
var x = CANVAS_WIDTH + ((i / 4) % CANVAS_WIDTH);
|
|
194
|
-
var y = Math.floor(i / 4 / CANVAS_WIDTH);
|
|
195
|
-
var b = ctx.getImageData(x, y, 1, 1).data;
|
|
196
|
-
if (a[i] !== b[0] || a[i + 2] !== b[2]) {
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
// Some emojis are a contraction of different ones, so if it's not
|
|
200
|
-
// supported, it will show multiple characters
|
|
201
|
-
if (ctx.measureText(unicode).width >= CANVAS_WIDTH) {
|
|
202
|
-
return false;
|
|
203
|
-
}
|
|
204
|
-
// Supported
|
|
205
|
-
return true;
|
|
206
|
-
};
|
|
207
|
-
})();
|
|
3907
|
+
function HTMLReactParser(html, options) {
|
|
3908
|
+
if (typeof html !== 'string') {
|
|
3909
|
+
throw new TypeError('First argument must be a string');
|
|
3910
|
+
}
|
|
3911
|
+
if (html === '') {
|
|
3912
|
+
return [];
|
|
3913
|
+
}
|
|
3914
|
+
options = options || {};
|
|
3915
|
+
return domToReact_1(
|
|
3916
|
+
htmlToDOM(html, options.htmlparser2 || domParserOptions),
|
|
3917
|
+
options
|
|
3918
|
+
);
|
|
3919
|
+
}
|
|
3920
|
+
|
|
3921
|
+
HTMLReactParser.domToReact = domToReact_1;
|
|
3922
|
+
HTMLReactParser.htmlToDOM = htmlToDOM;
|
|
3923
|
+
HTMLReactParser.attributesToProps = attributesToProps;
|
|
3924
|
+
HTMLReactParser.Element = require$$1$1.Element;
|
|
208
3925
|
|
|
209
|
-
|
|
3926
|
+
// support CommonJS and ES Modules
|
|
3927
|
+
var htmlReactParser = HTMLReactParser;
|
|
3928
|
+
var _default = HTMLReactParser;
|
|
3929
|
+
htmlReactParser.default = _default;
|
|
210
3930
|
|
|
211
3931
|
/*
|
|
212
3932
|
These magic numbers are charCode math, where we take advantage of the offset
|
|
@@ -925,7 +4645,7 @@ var UiMessages = {
|
|
|
925
4645
|
publishing: 'Publishing...',
|
|
926
4646
|
publish: 'Publish',
|
|
927
4647
|
updatingIntlFields: 'Updating i18n fields',
|
|
928
|
-
intlFieldsUpdated: '
|
|
4648
|
+
intlFieldsUpdated: 'i18n fields updated',
|
|
929
4649
|
baseDocumentCopied: 'Base document copied',
|
|
930
4650
|
translationCreatedToast: {
|
|
931
4651
|
title: function title(name) {
|
|
@@ -997,25 +4717,32 @@ var getFlagCode = function getFlagCode() {
|
|
|
997
4717
|
}
|
|
998
4718
|
|
|
999
4719
|
switch (code.toLocaleLowerCase()) {
|
|
4720
|
+
// Return :flag-gb: for English
|
|
1000
4721
|
case "en":
|
|
1001
4722
|
return "gb";
|
|
4723
|
+
// Return :flag-al: (Albania) for `sq` language code
|
|
4724
|
+
|
|
4725
|
+
case "sq":
|
|
4726
|
+
return "al";
|
|
1002
4727
|
|
|
1003
4728
|
default:
|
|
1004
4729
|
return code;
|
|
1005
4730
|
}
|
|
1006
4731
|
};
|
|
1007
4732
|
|
|
1008
|
-
var _templateObject$2
|
|
1009
|
-
|
|
1010
|
-
var FlagImageContainer = styled__default["default"].span(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral__default["default"](["\n display: block;\n font-size: 19px;\n transform: translateY(-1px);\n\n & img {\n display: block;\n }\n"])));
|
|
1011
|
-
var EmojiSpan = styled__default["default"].span(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteral__default["default"](["\n font-family: 'Twemoji Country Flags';\n"])));
|
|
4733
|
+
var _templateObject$2;
|
|
4734
|
+
var EmojiBox = styled__default["default"](ui.Box)(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral__default["default"](["\n min-width: 24px;\n transform: translateY(1px);\n"])));
|
|
1012
4735
|
var SingleFlag = function SingleFlag(_ref) {
|
|
1013
4736
|
var code = _ref.code,
|
|
1014
|
-
langCulture = _ref.langCulture
|
|
1015
|
-
className = _ref.className;
|
|
4737
|
+
langCulture = _ref.langCulture;
|
|
1016
4738
|
var flagEmoji = React.useMemo(function () {
|
|
1017
4739
|
return code && getFlag(code);
|
|
1018
4740
|
}, [code]);
|
|
4741
|
+
var flagHtml = twemoji.parse(flagEmoji !== null && flagEmoji !== void 0 ? flagEmoji : "\uD83C\uDDFA\uD83C\uDDF3", {
|
|
4742
|
+
folder: 'svg',
|
|
4743
|
+
ext: '.svg'
|
|
4744
|
+
});
|
|
4745
|
+
var flagReact = htmlReactParser(flagHtml);
|
|
1019
4746
|
var CustomFlagComponent = React.useMemo(function () {
|
|
1020
4747
|
if (langCulture && customFlagComponents__namespace) {
|
|
1021
4748
|
var exportedName = langCulture.replace(/[^a-zA-Z0-9_]/g, '_');
|
|
@@ -1027,12 +4754,11 @@ var SingleFlag = function SingleFlag(_ref) {
|
|
|
1027
4754
|
|
|
1028
4755
|
return null;
|
|
1029
4756
|
}, [langCulture]);
|
|
1030
|
-
return /*#__PURE__*/React__default["default"].createElement(
|
|
1031
|
-
"aria-label": code
|
|
1032
|
-
className: className
|
|
4757
|
+
return /*#__PURE__*/React__default["default"].createElement(ui.Box, {
|
|
4758
|
+
"aria-label": code
|
|
1033
4759
|
}, CustomFlagComponent && code ? /*#__PURE__*/React__default["default"].createElement(CustomFlagComponent, {
|
|
1034
4760
|
code: code
|
|
1035
|
-
}) : /*#__PURE__*/React__default["default"].createElement(
|
|
4761
|
+
}) : /*#__PURE__*/React__default["default"].createElement(EmojiBox, null, flagReact));
|
|
1036
4762
|
};
|
|
1037
4763
|
|
|
1038
4764
|
var getSchema = function getSchema(name) {
|
|
@@ -1611,14 +5337,6 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
|
1611
5337
|
var flagCode = React__default["default"].useMemo(function () {
|
|
1612
5338
|
return language.id.split(/[_-]/).pop();
|
|
1613
5339
|
}, [language.id]);
|
|
1614
|
-
var FlagIcon = React__default["default"].useMemo(function () {
|
|
1615
|
-
return function FlagIconComponent(props) {
|
|
1616
|
-
return /*#__PURE__*/React__default["default"].createElement(SingleFlag, _extends__default["default"]({
|
|
1617
|
-
code: flagCode,
|
|
1618
|
-
langCulture: language.id
|
|
1619
|
-
}, props));
|
|
1620
|
-
};
|
|
1621
|
-
}, [flagCode, language]);
|
|
1622
5340
|
var translatedId = React__default["default"].useMemo(function () {
|
|
1623
5341
|
return language.id === (baseLanguage === null || baseLanguage === void 0 ? void 0 : baseLanguage.id) ? baseId : buildDocId(baseId, language.id);
|
|
1624
5342
|
}, [baseId, language.id, baseLanguage]);
|
|
@@ -1657,7 +5375,7 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
|
1657
5375
|
routerContext.navigateUrl(href);
|
|
1658
5376
|
}, [routerContext, routerPanesState, groupIndex]);
|
|
1659
5377
|
var handleCreateClick = React__default["default"].useCallback( /*#__PURE__*/_asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
|
|
1660
|
-
var baseDocument, langFieldName;
|
|
5378
|
+
var baseDocument, langFieldName, referencesFieldName, baseFieldName;
|
|
1661
5379
|
return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
|
|
1662
5380
|
while (1) {
|
|
1663
5381
|
switch (_context.prev = _context.next) {
|
|
@@ -1666,13 +5384,18 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
|
1666
5384
|
setPending(true);
|
|
1667
5385
|
baseDocument = baseDocumentEditState.draft || baseDocumentEditState.published;
|
|
1668
5386
|
langFieldName = config.fieldNames.lang;
|
|
1669
|
-
|
|
1670
|
-
|
|
5387
|
+
referencesFieldName = config.fieldNames.references;
|
|
5388
|
+
baseFieldName = config.fieldNames.baseReference;
|
|
5389
|
+
_context.next = 8;
|
|
5390
|
+
return getSanityClient().createIfNotExists(_objectSpread$2(_objectSpread$2({
|
|
1671
5391
|
_id: "drafts.".concat(translatedId),
|
|
1672
5392
|
_type: currentDocumentType
|
|
1673
|
-
}, langFieldName, language.id)
|
|
5393
|
+
}, baseDocument ? objectOmit(baseDocument, ["_id", "_type", referencesFieldName]) : {}), {}, _defineProperty__default["default"]({}, langFieldName, language.id), baseDocument !== null && baseDocument !== void 0 && baseDocument._id ? _defineProperty__default["default"]({}, baseFieldName, {
|
|
5394
|
+
_type: 'reference',
|
|
5395
|
+
_ref: baseDocument._id.replace("drafts.*", "")
|
|
5396
|
+
}) : {}));
|
|
1674
5397
|
|
|
1675
|
-
case
|
|
5398
|
+
case 8:
|
|
1676
5399
|
toast.push({
|
|
1677
5400
|
closable: true,
|
|
1678
5401
|
status: 'success',
|
|
@@ -1680,11 +5403,11 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
|
1680
5403
|
description: baseLanguage ? UiMessages.translationCreatedToast.description(baseLanguage.title) : undefined
|
|
1681
5404
|
});
|
|
1682
5405
|
openDocumentInCurrentPane(translatedId, currentDocumentType);
|
|
1683
|
-
_context.next =
|
|
5406
|
+
_context.next = 15;
|
|
1684
5407
|
break;
|
|
1685
5408
|
|
|
1686
|
-
case
|
|
1687
|
-
_context.prev =
|
|
5409
|
+
case 12:
|
|
5410
|
+
_context.prev = 12;
|
|
1688
5411
|
_context.t0 = _context["catch"](0);
|
|
1689
5412
|
toast.push({
|
|
1690
5413
|
closable: true,
|
|
@@ -1692,18 +5415,18 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
|
1692
5415
|
title: _context.t0.toString()
|
|
1693
5416
|
});
|
|
1694
5417
|
|
|
1695
|
-
case
|
|
1696
|
-
_context.prev =
|
|
5418
|
+
case 15:
|
|
5419
|
+
_context.prev = 15;
|
|
1697
5420
|
setPending(false);
|
|
1698
|
-
return _context.finish(
|
|
5421
|
+
return _context.finish(15);
|
|
1699
5422
|
|
|
1700
|
-
case
|
|
5423
|
+
case 18:
|
|
1701
5424
|
case "end":
|
|
1702
5425
|
return _context.stop();
|
|
1703
5426
|
}
|
|
1704
5427
|
}
|
|
1705
|
-
}, _callee, null, [[0,
|
|
1706
|
-
})), [
|
|
5428
|
+
}, _callee, null, [[0, 12, 15, 18]]);
|
|
5429
|
+
})), [baseDocumentEditState.draft, baseDocumentEditState.published, config.fieldNames.lang, config.fieldNames.references, config.fieldNames.baseReference, translatedId, currentDocumentType, language.id, language.title, toast, baseLanguage, openDocumentInCurrentPane]);
|
|
1707
5430
|
var handleOpenClick = React__default["default"].useCallback(function () {
|
|
1708
5431
|
openDocumentInCurrentPane(translatedId, currentDocumentType);
|
|
1709
5432
|
}, [openDocumentInCurrentPane, translatedId, currentDocumentType]);
|
|
@@ -1727,13 +5450,20 @@ var LanguageSelectListItem = function LanguageSelectListItem(_ref5) {
|
|
|
1727
5450
|
"data-as": "button",
|
|
1728
5451
|
"data-selected": language.isCurrentLanguage,
|
|
1729
5452
|
selected: language.isCurrentLanguage,
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
}
|
|
5453
|
+
onClick: handleOpenClick,
|
|
5454
|
+
paddingY: 1,
|
|
5455
|
+
paddingX: 2
|
|
5456
|
+
}, /*#__PURE__*/React__default["default"].createElement(ui.Flex, {
|
|
5457
|
+
align: "center",
|
|
5458
|
+
gap: 2
|
|
5459
|
+
}, /*#__PURE__*/React__default["default"].createElement(SingleFlag, {
|
|
5460
|
+
code: flagCode,
|
|
5461
|
+
langCulture: language.id
|
|
5462
|
+
}), /*#__PURE__*/React__default["default"].createElement(ui.Box, {
|
|
5463
|
+
flex: 1
|
|
5464
|
+
}, /*#__PURE__*/React__default["default"].createElement(ui.Text, null, language.title)), baseTranslationBadgeLabel ? /*#__PURE__*/React__default["default"].createElement(ui.Badge, {
|
|
5465
|
+
fontSize: 0
|
|
5466
|
+
}, baseTranslationBadgeLabel) : null)), !language.isCurrentLanguage && /*#__PURE__*/React__default["default"].createElement(ListItemSplitButton, {
|
|
1737
5467
|
type: "button",
|
|
1738
5468
|
tone: "default",
|
|
1739
5469
|
mode: "bleed",
|
|
@@ -1930,16 +5660,22 @@ var LanguageSelect = function LanguageSelect(_ref) {
|
|
|
1930
5660
|
id: "document-internationalization/language-select",
|
|
1931
5661
|
popover: POPOVER_PROPS,
|
|
1932
5662
|
button: /*#__PURE__*/React__default["default"].createElement(ui.Button, {
|
|
5663
|
+
paddingY: 1,
|
|
5664
|
+
paddingX: 2,
|
|
1933
5665
|
mode: "bleed",
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
5666
|
+
title: (_currentLanguageObjec = currentLanguageObject.title) !== null && _currentLanguageObjec !== void 0 ? _currentLanguageObjec : currentLanguageObject.id
|
|
5667
|
+
}, /*#__PURE__*/React__default["default"].createElement(ui.Flex, {
|
|
5668
|
+
align: "center",
|
|
5669
|
+
gap: 2
|
|
5670
|
+
}, /*#__PURE__*/React__default["default"].createElement(SingleFlag, {
|
|
5671
|
+
code: currentLanguageFlagCode,
|
|
5672
|
+
langCulture: currentLanguageCode
|
|
5673
|
+
}), /*#__PURE__*/React__default["default"].createElement(ui.Box, {
|
|
5674
|
+
flex: 1
|
|
5675
|
+
}, /*#__PURE__*/React__default["default"].createElement(ui.Text, null, (_currentLanguageObjec2 = currentLanguageObject.title) !== null && _currentLanguageObjec2 !== void 0 ? _currentLanguageObjec2 : currentLanguageObject.id)), /*#__PURE__*/React__default["default"].createElement(icons.ChevronDownIcon, {
|
|
5676
|
+
width: 19,
|
|
5677
|
+
height: 19
|
|
5678
|
+
}))),
|
|
1943
5679
|
menu: /*#__PURE__*/React__default["default"].createElement(ui.Menu, null, /*#__PURE__*/React__default["default"].createElement(LanguageSelectList, languagesObjects))
|
|
1944
5680
|
}));
|
|
1945
5681
|
};
|