@wbiokr/arrow 0.0.2 → 0.0.4
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/README.md +13 -3
- package/dist/bundle.cjs.js +109 -1381
- package/dist/bundle.cjs.js.map +1 -1
- package/dist/bundle.esm.js +399 -1343
- package/dist/bundle.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/bundle.cjs.js
CHANGED
|
@@ -1,1415 +1,143 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return n;
|
|
9
|
-
}
|
|
10
|
-
function _classCallCheck(a, n) {
|
|
11
|
-
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
|
|
12
|
-
}
|
|
13
|
-
function _defineProperties(e, r) {
|
|
14
|
-
for (var t = 0; t < r.length; t++) {
|
|
15
|
-
var o = r[t];
|
|
16
|
-
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
function _createClass(e, r, t) {
|
|
20
|
-
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
|
|
21
|
-
writable: !1
|
|
22
|
-
}), e;
|
|
23
|
-
}
|
|
24
|
-
function _createForOfIteratorHelper(r, e) {
|
|
25
|
-
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
26
|
-
if (!t) {
|
|
27
|
-
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
|
|
28
|
-
t && (r = t);
|
|
29
|
-
var n = 0,
|
|
30
|
-
F = function () {};
|
|
31
|
-
return {
|
|
32
|
-
s: F,
|
|
33
|
-
n: function () {
|
|
34
|
-
return n >= r.length ? {
|
|
35
|
-
done: !0
|
|
36
|
-
} : {
|
|
37
|
-
done: !1,
|
|
38
|
-
value: r[n++]
|
|
39
|
-
};
|
|
40
|
-
},
|
|
41
|
-
e: function (r) {
|
|
42
|
-
throw r;
|
|
43
|
-
},
|
|
44
|
-
f: F
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
48
|
-
}
|
|
49
|
-
var o,
|
|
50
|
-
a = !0,
|
|
51
|
-
u = !1;
|
|
52
|
-
return {
|
|
53
|
-
s: function () {
|
|
54
|
-
t = t.call(r);
|
|
55
|
-
},
|
|
56
|
-
n: function () {
|
|
57
|
-
var r = t.next();
|
|
58
|
-
return a = r.done, r;
|
|
59
|
-
},
|
|
60
|
-
e: function (r) {
|
|
61
|
-
u = !0, o = r;
|
|
62
|
-
},
|
|
63
|
-
f: function () {
|
|
64
|
-
try {
|
|
65
|
-
a || null == t.return || t.return();
|
|
66
|
-
} finally {
|
|
67
|
-
if (u) throw o;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
function _toPrimitive(t, r) {
|
|
73
|
-
if ("object" != typeof t || !t) return t;
|
|
74
|
-
var e = t[Symbol.toPrimitive];
|
|
75
|
-
if (void 0 !== e) {
|
|
76
|
-
var i = e.call(t, r || "default");
|
|
77
|
-
if ("object" != typeof i) return i;
|
|
78
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
79
|
-
}
|
|
80
|
-
return ("string" === r ? String : Number)(t);
|
|
81
|
-
}
|
|
82
|
-
function _toPropertyKey(t) {
|
|
83
|
-
var i = _toPrimitive(t, "string");
|
|
84
|
-
return "symbol" == typeof i ? i : i + "";
|
|
85
|
-
}
|
|
86
|
-
function _unsupportedIterableToArray(r, a) {
|
|
87
|
-
if (r) {
|
|
88
|
-
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
89
|
-
var t = {}.toString.call(r).slice(8, -1);
|
|
90
|
-
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
var xhtml = "http://www.w3.org/1999/xhtml";
|
|
95
|
-
|
|
96
|
-
var namespaces = {
|
|
97
|
-
svg: "http://www.w3.org/2000/svg",
|
|
98
|
-
xhtml: xhtml,
|
|
99
|
-
xlink: "http://www.w3.org/1999/xlink",
|
|
100
|
-
xml: "http://www.w3.org/XML/1998/namespace",
|
|
101
|
-
xmlns: "http://www.w3.org/2000/xmlns/"
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
function namespace(name) {
|
|
105
|
-
var prefix = name += "", i = prefix.indexOf(":");
|
|
106
|
-
if (i >= 0 && (prefix = name.slice(0, i)) !== "xmlns") name = name.slice(i + 1);
|
|
107
|
-
return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function creatorInherit(name) {
|
|
111
|
-
return function() {
|
|
112
|
-
var document = this.ownerDocument,
|
|
113
|
-
uri = this.namespaceURI;
|
|
114
|
-
return uri === xhtml && document.documentElement.namespaceURI === xhtml
|
|
115
|
-
? document.createElement(name)
|
|
116
|
-
: document.createElementNS(uri, name);
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function creatorFixed(fullname) {
|
|
121
|
-
return function() {
|
|
122
|
-
return this.ownerDocument.createElementNS(fullname.space, fullname.local);
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function creator(name) {
|
|
127
|
-
var fullname = namespace(name);
|
|
128
|
-
return (fullname.local
|
|
129
|
-
? creatorFixed
|
|
130
|
-
: creatorInherit)(fullname);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function none() {}
|
|
134
|
-
|
|
135
|
-
function selector(selector) {
|
|
136
|
-
return selector == null ? none : function() {
|
|
137
|
-
return this.querySelector(selector);
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function selection_select(select) {
|
|
142
|
-
if (typeof select !== "function") select = selector(select);
|
|
143
|
-
|
|
144
|
-
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
|
145
|
-
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {
|
|
146
|
-
if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {
|
|
147
|
-
if ("__data__" in node) subnode.__data__ = node.__data__;
|
|
148
|
-
subgroup[i] = subnode;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return new Selection(subgroups, this._parents);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Given something array like (or null), returns something that is strictly an
|
|
157
|
-
// array. This is used to ensure that array-like objects passed to d3.selectAll
|
|
158
|
-
// or selection.selectAll are converted into proper arrays when creating a
|
|
159
|
-
// selection; we don’t ever want to create a selection backed by a live
|
|
160
|
-
// HTMLCollection or NodeList. However, note that selection.selectAll will use a
|
|
161
|
-
// static NodeList as a group, since it safely derived from querySelectorAll.
|
|
162
|
-
function array(x) {
|
|
163
|
-
return x == null ? [] : Array.isArray(x) ? x : Array.from(x);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
function empty() {
|
|
167
|
-
return [];
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
function selectorAll(selector) {
|
|
171
|
-
return selector == null ? empty : function() {
|
|
172
|
-
return this.querySelectorAll(selector);
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
function arrayAll(select) {
|
|
177
|
-
return function() {
|
|
178
|
-
return array(select.apply(this, arguments));
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
function selection_selectAll(select) {
|
|
183
|
-
if (typeof select === "function") select = arrayAll(select);
|
|
184
|
-
else select = selectorAll(select);
|
|
185
|
-
|
|
186
|
-
for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {
|
|
187
|
-
for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {
|
|
188
|
-
if (node = group[i]) {
|
|
189
|
-
subgroups.push(select.call(node, node.__data__, i, group));
|
|
190
|
-
parents.push(node);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
return new Selection(subgroups, parents);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
function matcher(selector) {
|
|
199
|
-
return function() {
|
|
200
|
-
return this.matches(selector);
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
function childMatcher(selector) {
|
|
205
|
-
return function(node) {
|
|
206
|
-
return node.matches(selector);
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
var find = Array.prototype.find;
|
|
211
|
-
|
|
212
|
-
function childFind(match) {
|
|
213
|
-
return function() {
|
|
214
|
-
return find.call(this.children, match);
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
function childFirst() {
|
|
219
|
-
return this.firstElementChild;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
function selection_selectChild(match) {
|
|
223
|
-
return this.select(match == null ? childFirst
|
|
224
|
-
: childFind(typeof match === "function" ? match : childMatcher(match)));
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
var filter = Array.prototype.filter;
|
|
228
|
-
|
|
229
|
-
function children() {
|
|
230
|
-
return Array.from(this.children);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
function childrenFilter(match) {
|
|
234
|
-
return function() {
|
|
235
|
-
return filter.call(this.children, match);
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
function selection_selectChildren(match) {
|
|
240
|
-
return this.selectAll(match == null ? children
|
|
241
|
-
: childrenFilter(typeof match === "function" ? match : childMatcher(match)));
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
function selection_filter(match) {
|
|
245
|
-
if (typeof match !== "function") match = matcher(match);
|
|
246
|
-
|
|
247
|
-
for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {
|
|
248
|
-
for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {
|
|
249
|
-
if ((node = group[i]) && match.call(node, node.__data__, i, group)) {
|
|
250
|
-
subgroup.push(node);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
return new Selection(subgroups, this._parents);
|
|
1
|
+
(function(g,_){typeof exports=="object"&&typeof module<"u"?_(exports,require("@wbiokr/keybinding")):typeof define=="function"&&define.amd?define(["exports","@wbiokr/keybinding"],_):(g=typeof globalThis<"u"?globalThis:g||self,_(g.ArrowEditor={},g.Keybinding))})(this,(function(g,_){"use strict";const S=`
|
|
2
|
+
.ae-d2-container {
|
|
3
|
+
position: relative;
|
|
4
|
+
width: 1000px;
|
|
5
|
+
height: 600px;
|
|
6
|
+
background: #fff;
|
|
7
|
+
margin: auto;
|
|
256
8
|
}
|
|
257
9
|
|
|
258
|
-
|
|
259
|
-
|
|
10
|
+
.ae-d2-svg {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
260
13
|
}
|
|
261
14
|
|
|
262
|
-
|
|
263
|
-
|
|
15
|
+
.ae-arrow-path {
|
|
16
|
+
fill: none;
|
|
17
|
+
stroke-linecap: round;
|
|
18
|
+
stroke-linejoin: round;
|
|
19
|
+
cursor: pointer;
|
|
264
20
|
}
|
|
265
21
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
this.namespaceURI = parent.namespaceURI;
|
|
269
|
-
this._next = null;
|
|
270
|
-
this._parent = parent;
|
|
271
|
-
this.__data__ = datum;
|
|
22
|
+
.ae-arrow-path:hover {
|
|
23
|
+
stroke: #00aaff;
|
|
272
24
|
}
|
|
273
25
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }
|
|
280
|
-
};
|
|
281
|
-
|
|
282
|
-
function constant(x) {
|
|
283
|
-
return function() {
|
|
284
|
-
return x;
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
function bindIndex(parent, group, enter, update, exit, data) {
|
|
289
|
-
var i = 0,
|
|
290
|
-
node,
|
|
291
|
-
groupLength = group.length,
|
|
292
|
-
dataLength = data.length;
|
|
293
|
-
|
|
294
|
-
// Put any non-null nodes that fit into update.
|
|
295
|
-
// Put any null nodes into enter.
|
|
296
|
-
// Put any remaining data into enter.
|
|
297
|
-
for (; i < dataLength; ++i) {
|
|
298
|
-
if (node = group[i]) {
|
|
299
|
-
node.__data__ = data[i];
|
|
300
|
-
update[i] = node;
|
|
301
|
-
} else {
|
|
302
|
-
enter[i] = new EnterNode(parent, data[i]);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
// Put any non-null nodes that don’t fit into exit.
|
|
307
|
-
for (; i < groupLength; ++i) {
|
|
308
|
-
if (node = group[i]) {
|
|
309
|
-
exit[i] = node;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
function bindKey(parent, group, enter, update, exit, data, key) {
|
|
315
|
-
var i,
|
|
316
|
-
node,
|
|
317
|
-
nodeByKeyValue = new Map,
|
|
318
|
-
groupLength = group.length,
|
|
319
|
-
dataLength = data.length,
|
|
320
|
-
keyValues = new Array(groupLength),
|
|
321
|
-
keyValue;
|
|
322
|
-
|
|
323
|
-
// Compute the key for each node.
|
|
324
|
-
// If multiple nodes have the same key, the duplicates are added to exit.
|
|
325
|
-
for (i = 0; i < groupLength; ++i) {
|
|
326
|
-
if (node = group[i]) {
|
|
327
|
-
keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + "";
|
|
328
|
-
if (nodeByKeyValue.has(keyValue)) {
|
|
329
|
-
exit[i] = node;
|
|
330
|
-
} else {
|
|
331
|
-
nodeByKeyValue.set(keyValue, node);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
// Compute the key for each datum.
|
|
337
|
-
// If there a node associated with this key, join and add it to update.
|
|
338
|
-
// If there is not (or the key is a duplicate), add it to enter.
|
|
339
|
-
for (i = 0; i < dataLength; ++i) {
|
|
340
|
-
keyValue = key.call(parent, data[i], i, data) + "";
|
|
341
|
-
if (node = nodeByKeyValue.get(keyValue)) {
|
|
342
|
-
update[i] = node;
|
|
343
|
-
node.__data__ = data[i];
|
|
344
|
-
nodeByKeyValue.delete(keyValue);
|
|
345
|
-
} else {
|
|
346
|
-
enter[i] = new EnterNode(parent, data[i]);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
// Add any remaining nodes that were not bound to data to exit.
|
|
351
|
-
for (i = 0; i < groupLength; ++i) {
|
|
352
|
-
if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {
|
|
353
|
-
exit[i] = node;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
function datum(node) {
|
|
359
|
-
return node.__data__;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
function selection_data(value, key) {
|
|
363
|
-
if (!arguments.length) return Array.from(this, datum);
|
|
364
|
-
|
|
365
|
-
var bind = key ? bindKey : bindIndex,
|
|
366
|
-
parents = this._parents,
|
|
367
|
-
groups = this._groups;
|
|
368
|
-
|
|
369
|
-
if (typeof value !== "function") value = constant(value);
|
|
370
|
-
|
|
371
|
-
for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {
|
|
372
|
-
var parent = parents[j],
|
|
373
|
-
group = groups[j],
|
|
374
|
-
groupLength = group.length,
|
|
375
|
-
data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),
|
|
376
|
-
dataLength = data.length,
|
|
377
|
-
enterGroup = enter[j] = new Array(dataLength),
|
|
378
|
-
updateGroup = update[j] = new Array(dataLength),
|
|
379
|
-
exitGroup = exit[j] = new Array(groupLength);
|
|
380
|
-
|
|
381
|
-
bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);
|
|
382
|
-
|
|
383
|
-
// Now connect the enter nodes to their following update node, such that
|
|
384
|
-
// appendChild can insert the materialized enter node before this node,
|
|
385
|
-
// rather than at the end of the parent node.
|
|
386
|
-
for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {
|
|
387
|
-
if (previous = enterGroup[i0]) {
|
|
388
|
-
if (i0 >= i1) i1 = i0 + 1;
|
|
389
|
-
while (!(next = updateGroup[i1]) && ++i1 < dataLength);
|
|
390
|
-
previous._next = next || null;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
update = new Selection(update, parents);
|
|
396
|
-
update._enter = enter;
|
|
397
|
-
update._exit = exit;
|
|
398
|
-
return update;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// Given some data, this returns an array-like view of it: an object that
|
|
402
|
-
// exposes a length property and allows numeric indexing. Note that unlike
|
|
403
|
-
// selectAll, this isn’t worried about “live” collections because the resulting
|
|
404
|
-
// array will only be used briefly while data is being bound. (It is possible to
|
|
405
|
-
// cause the data to change while iterating by using a key function, but please
|
|
406
|
-
// don’t; we’d rather avoid a gratuitous copy.)
|
|
407
|
-
function arraylike(data) {
|
|
408
|
-
return typeof data === "object" && "length" in data
|
|
409
|
-
? data // Array, TypedArray, NodeList, array-like
|
|
410
|
-
: Array.from(data); // Map, Set, iterable, string, or anything else
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
function selection_exit() {
|
|
414
|
-
return new Selection(this._exit || this._groups.map(sparse), this._parents);
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
function selection_join(onenter, onupdate, onexit) {
|
|
418
|
-
var enter = this.enter(), update = this, exit = this.exit();
|
|
419
|
-
if (typeof onenter === "function") {
|
|
420
|
-
enter = onenter(enter);
|
|
421
|
-
if (enter) enter = enter.selection();
|
|
422
|
-
} else {
|
|
423
|
-
enter = enter.append(onenter + "");
|
|
424
|
-
}
|
|
425
|
-
if (onupdate != null) {
|
|
426
|
-
update = onupdate(update);
|
|
427
|
-
if (update) update = update.selection();
|
|
428
|
-
}
|
|
429
|
-
if (onexit == null) exit.remove(); else onexit(exit);
|
|
430
|
-
return enter && update ? enter.merge(update).order() : update;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
function selection_merge(context) {
|
|
434
|
-
var selection = context.selection ? context.selection() : context;
|
|
435
|
-
|
|
436
|
-
for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {
|
|
437
|
-
for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {
|
|
438
|
-
if (node = group0[i] || group1[i]) {
|
|
439
|
-
merge[i] = node;
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
for (; j < m0; ++j) {
|
|
445
|
-
merges[j] = groups0[j];
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
return new Selection(merges, this._parents);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
function selection_order() {
|
|
452
|
-
|
|
453
|
-
for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {
|
|
454
|
-
for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
|
|
455
|
-
if (node = group[i]) {
|
|
456
|
-
if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);
|
|
457
|
-
next = node;
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
return this;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
function selection_sort(compare) {
|
|
466
|
-
if (!compare) compare = ascending;
|
|
467
|
-
|
|
468
|
-
function compareNode(a, b) {
|
|
469
|
-
return a && b ? compare(a.__data__, b.__data__) : !a - !b;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {
|
|
473
|
-
for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {
|
|
474
|
-
if (node = group[i]) {
|
|
475
|
-
sortgroup[i] = node;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
sortgroup.sort(compareNode);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
return new Selection(sortgroups, this._parents).order();
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
function ascending(a, b) {
|
|
485
|
-
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
function selection_call() {
|
|
489
|
-
var callback = arguments[0];
|
|
490
|
-
arguments[0] = this;
|
|
491
|
-
callback.apply(null, arguments);
|
|
492
|
-
return this;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
function selection_nodes() {
|
|
496
|
-
return Array.from(this);
|
|
26
|
+
.ae-transform-box {
|
|
27
|
+
fill: none;
|
|
28
|
+
stroke: #00aaff;
|
|
29
|
+
stroke-width: 2;
|
|
30
|
+
stroke-dasharray: 4;
|
|
497
31
|
}
|
|
498
32
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
if (node) return node;
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
return null;
|
|
33
|
+
.ae-transform-handle {
|
|
34
|
+
fill: #fff;
|
|
35
|
+
stroke: #00aaff;
|
|
36
|
+
stroke-width: 2;
|
|
37
|
+
cursor: pointer;
|
|
509
38
|
}
|
|
510
39
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
for (const node of this) ++size; // eslint-disable-line no-unused-vars
|
|
514
|
-
return size;
|
|
40
|
+
.ae-transform-handle:hover {
|
|
41
|
+
fill: #00aaff;
|
|
515
42
|
}
|
|
516
43
|
|
|
517
|
-
|
|
518
|
-
|
|
44
|
+
.ae-rotate-handle {
|
|
45
|
+
fill: #fff;
|
|
46
|
+
stroke: #ff6600;
|
|
47
|
+
stroke-width: 2;
|
|
48
|
+
cursor: grab;
|
|
519
49
|
}
|
|
520
50
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
|
524
|
-
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
|
|
525
|
-
if (node = group[i]) callback.call(node, node.__data__, i, group);
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
return this;
|
|
51
|
+
.ae-rotate-handle:hover {
|
|
52
|
+
fill: #ff6600;
|
|
530
53
|
}
|
|
531
54
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
55
|
+
.ae-rotate-line {
|
|
56
|
+
stroke: #ff6600;
|
|
57
|
+
stroke-width: 1;
|
|
58
|
+
stroke-dasharray: 4;
|
|
536
59
|
}
|
|
537
60
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
61
|
+
/* 工具条样式 */
|
|
62
|
+
.ae-toolbar {
|
|
63
|
+
position: absolute;
|
|
64
|
+
display: none;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
gap: 10px;
|
|
67
|
+
padding: 12px;
|
|
68
|
+
background: #fff;
|
|
69
|
+
border: 1px solid #ddd;
|
|
70
|
+
border-radius: 8px;
|
|
71
|
+
box-shadow: 0 2px 12px rgba(0,0,0,0.15);
|
|
72
|
+
z-index: 1000;
|
|
73
|
+
pointer-events: auto;
|
|
74
|
+
min-width: 140px;
|
|
542
75
|
}
|
|
543
76
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
77
|
+
.ae-toolbar-drag-handle {
|
|
78
|
+
cursor: grab;
|
|
79
|
+
text-align: center;
|
|
80
|
+
padding: 4px;
|
|
81
|
+
color: #999;
|
|
82
|
+
font-size: 14px;
|
|
83
|
+
line-height: 1;
|
|
84
|
+
user-select: none;
|
|
85
|
+
border-bottom: 1px solid #eee;
|
|
86
|
+
margin: -12px -12px 8px -12px;
|
|
87
|
+
padding-top: 8px;
|
|
88
|
+
padding-bottom: 8px;
|
|
89
|
+
border-radius: 8px 8px 0 0;
|
|
548
90
|
}
|
|
549
91
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
this.setAttributeNS(fullname.space, fullname.local, value);
|
|
553
|
-
};
|
|
92
|
+
.ae-toolbar-drag-handle:active {
|
|
93
|
+
cursor: grabbing;
|
|
554
94
|
}
|
|
555
95
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
else this.setAttribute(name, v);
|
|
561
|
-
};
|
|
96
|
+
.ae-toolbar-item {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-direction: column;
|
|
99
|
+
gap: 4px;
|
|
562
100
|
}
|
|
563
101
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
if (v == null) this.removeAttributeNS(fullname.space, fullname.local);
|
|
568
|
-
else this.setAttributeNS(fullname.space, fullname.local, v);
|
|
569
|
-
};
|
|
102
|
+
.ae-toolbar-label {
|
|
103
|
+
font-size: 11px;
|
|
104
|
+
color: #666;
|
|
570
105
|
}
|
|
571
106
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
return this.each((value == null
|
|
583
|
-
? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === "function"
|
|
584
|
-
? (fullname.local ? attrFunctionNS : attrFunction)
|
|
585
|
-
: (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));
|
|
586
|
-
}
|
|
107
|
+
.ae-toolbar input[type="color"] {
|
|
108
|
+
width: 40px;
|
|
109
|
+
height: 30px;
|
|
110
|
+
border: 1px solid #ddd;
|
|
111
|
+
border-radius: 4px;
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
padding: 0;
|
|
114
|
+
background: none;
|
|
115
|
+
}
|
|
587
116
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|| node.defaultView; // node is a Document
|
|
117
|
+
.ae-toolbar input[type="range"] {
|
|
118
|
+
width: 120px;
|
|
119
|
+
cursor: pointer;
|
|
592
120
|
}
|
|
593
121
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
function selection_style(name, value, priority) {
|
|
615
|
-
return arguments.length > 1
|
|
616
|
-
? this.each((value == null
|
|
617
|
-
? styleRemove : typeof value === "function"
|
|
618
|
-
? styleFunction
|
|
619
|
-
: styleConstant)(name, value, priority == null ? "" : priority))
|
|
620
|
-
: styleValue(this.node(), name);
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
function styleValue(node, name) {
|
|
624
|
-
return node.style.getPropertyValue(name)
|
|
625
|
-
|| defaultView(node).getComputedStyle(node, null).getPropertyValue(name);
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
function propertyRemove(name) {
|
|
629
|
-
return function() {
|
|
630
|
-
delete this[name];
|
|
631
|
-
};
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
function propertyConstant(name, value) {
|
|
635
|
-
return function() {
|
|
636
|
-
this[name] = value;
|
|
637
|
-
};
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
function propertyFunction(name, value) {
|
|
641
|
-
return function() {
|
|
642
|
-
var v = value.apply(this, arguments);
|
|
643
|
-
if (v == null) delete this[name];
|
|
644
|
-
else this[name] = v;
|
|
645
|
-
};
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
function selection_property(name, value) {
|
|
649
|
-
return arguments.length > 1
|
|
650
|
-
? this.each((value == null
|
|
651
|
-
? propertyRemove : typeof value === "function"
|
|
652
|
-
? propertyFunction
|
|
653
|
-
: propertyConstant)(name, value))
|
|
654
|
-
: this.node()[name];
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
function classArray(string) {
|
|
658
|
-
return string.trim().split(/^|\s+/);
|
|
659
|
-
}
|
|
660
|
-
|
|
661
|
-
function classList(node) {
|
|
662
|
-
return node.classList || new ClassList(node);
|
|
663
|
-
}
|
|
664
|
-
|
|
665
|
-
function ClassList(node) {
|
|
666
|
-
this._node = node;
|
|
667
|
-
this._names = classArray(node.getAttribute("class") || "");
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
ClassList.prototype = {
|
|
671
|
-
add: function(name) {
|
|
672
|
-
var i = this._names.indexOf(name);
|
|
673
|
-
if (i < 0) {
|
|
674
|
-
this._names.push(name);
|
|
675
|
-
this._node.setAttribute("class", this._names.join(" "));
|
|
676
|
-
}
|
|
677
|
-
},
|
|
678
|
-
remove: function(name) {
|
|
679
|
-
var i = this._names.indexOf(name);
|
|
680
|
-
if (i >= 0) {
|
|
681
|
-
this._names.splice(i, 1);
|
|
682
|
-
this._node.setAttribute("class", this._names.join(" "));
|
|
683
|
-
}
|
|
684
|
-
},
|
|
685
|
-
contains: function(name) {
|
|
686
|
-
return this._names.indexOf(name) >= 0;
|
|
687
|
-
}
|
|
688
|
-
};
|
|
689
|
-
|
|
690
|
-
function classedAdd(node, names) {
|
|
691
|
-
var list = classList(node), i = -1, n = names.length;
|
|
692
|
-
while (++i < n) list.add(names[i]);
|
|
693
|
-
}
|
|
694
|
-
|
|
695
|
-
function classedRemove(node, names) {
|
|
696
|
-
var list = classList(node), i = -1, n = names.length;
|
|
697
|
-
while (++i < n) list.remove(names[i]);
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
function classedTrue(names) {
|
|
701
|
-
return function() {
|
|
702
|
-
classedAdd(this, names);
|
|
703
|
-
};
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
function classedFalse(names) {
|
|
707
|
-
return function() {
|
|
708
|
-
classedRemove(this, names);
|
|
709
|
-
};
|
|
710
|
-
}
|
|
711
|
-
|
|
712
|
-
function classedFunction(names, value) {
|
|
713
|
-
return function() {
|
|
714
|
-
(value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);
|
|
715
|
-
};
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
function selection_classed(name, value) {
|
|
719
|
-
var names = classArray(name + "");
|
|
720
|
-
|
|
721
|
-
if (arguments.length < 2) {
|
|
722
|
-
var list = classList(this.node()), i = -1, n = names.length;
|
|
723
|
-
while (++i < n) if (!list.contains(names[i])) return false;
|
|
724
|
-
return true;
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
return this.each((typeof value === "function"
|
|
728
|
-
? classedFunction : value
|
|
729
|
-
? classedTrue
|
|
730
|
-
: classedFalse)(names, value));
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
function textRemove() {
|
|
734
|
-
this.textContent = "";
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
function textConstant(value) {
|
|
738
|
-
return function() {
|
|
739
|
-
this.textContent = value;
|
|
740
|
-
};
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
function textFunction(value) {
|
|
744
|
-
return function() {
|
|
745
|
-
var v = value.apply(this, arguments);
|
|
746
|
-
this.textContent = v == null ? "" : v;
|
|
747
|
-
};
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
function selection_text(value) {
|
|
751
|
-
return arguments.length
|
|
752
|
-
? this.each(value == null
|
|
753
|
-
? textRemove : (typeof value === "function"
|
|
754
|
-
? textFunction
|
|
755
|
-
: textConstant)(value))
|
|
756
|
-
: this.node().textContent;
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
function htmlRemove() {
|
|
760
|
-
this.innerHTML = "";
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
function htmlConstant(value) {
|
|
764
|
-
return function() {
|
|
765
|
-
this.innerHTML = value;
|
|
766
|
-
};
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
function htmlFunction(value) {
|
|
770
|
-
return function() {
|
|
771
|
-
var v = value.apply(this, arguments);
|
|
772
|
-
this.innerHTML = v == null ? "" : v;
|
|
773
|
-
};
|
|
774
|
-
}
|
|
775
|
-
|
|
776
|
-
function selection_html(value) {
|
|
777
|
-
return arguments.length
|
|
778
|
-
? this.each(value == null
|
|
779
|
-
? htmlRemove : (typeof value === "function"
|
|
780
|
-
? htmlFunction
|
|
781
|
-
: htmlConstant)(value))
|
|
782
|
-
: this.node().innerHTML;
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
function raise() {
|
|
786
|
-
if (this.nextSibling) this.parentNode.appendChild(this);
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
function selection_raise() {
|
|
790
|
-
return this.each(raise);
|
|
791
|
-
}
|
|
792
|
-
|
|
793
|
-
function lower() {
|
|
794
|
-
if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);
|
|
795
|
-
}
|
|
796
|
-
|
|
797
|
-
function selection_lower() {
|
|
798
|
-
return this.each(lower);
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
function selection_append(name) {
|
|
802
|
-
var create = typeof name === "function" ? name : creator(name);
|
|
803
|
-
return this.select(function() {
|
|
804
|
-
return this.appendChild(create.apply(this, arguments));
|
|
805
|
-
});
|
|
806
|
-
}
|
|
807
|
-
|
|
808
|
-
function constantNull() {
|
|
809
|
-
return null;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
function selection_insert(name, before) {
|
|
813
|
-
var create = typeof name === "function" ? name : creator(name),
|
|
814
|
-
select = before == null ? constantNull : typeof before === "function" ? before : selector(before);
|
|
815
|
-
return this.select(function() {
|
|
816
|
-
return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);
|
|
817
|
-
});
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
function remove() {
|
|
821
|
-
var parent = this.parentNode;
|
|
822
|
-
if (parent) parent.removeChild(this);
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
function selection_remove() {
|
|
826
|
-
return this.each(remove);
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
function selection_cloneShallow() {
|
|
830
|
-
var clone = this.cloneNode(false), parent = this.parentNode;
|
|
831
|
-
return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
|
|
832
|
-
}
|
|
833
|
-
|
|
834
|
-
function selection_cloneDeep() {
|
|
835
|
-
var clone = this.cloneNode(true), parent = this.parentNode;
|
|
836
|
-
return parent ? parent.insertBefore(clone, this.nextSibling) : clone;
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
function selection_clone(deep) {
|
|
840
|
-
return this.select(deep ? selection_cloneDeep : selection_cloneShallow);
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
function selection_datum(value) {
|
|
844
|
-
return arguments.length
|
|
845
|
-
? this.property("__data__", value)
|
|
846
|
-
: this.node().__data__;
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
function contextListener(listener) {
|
|
850
|
-
return function(event) {
|
|
851
|
-
listener.call(this, event, this.__data__);
|
|
852
|
-
};
|
|
853
|
-
}
|
|
854
|
-
|
|
855
|
-
function parseTypenames(typenames) {
|
|
856
|
-
return typenames.trim().split(/^|\s+/).map(function(t) {
|
|
857
|
-
var name = "", i = t.indexOf(".");
|
|
858
|
-
if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);
|
|
859
|
-
return {type: t, name: name};
|
|
860
|
-
});
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
function onRemove(typename) {
|
|
864
|
-
return function() {
|
|
865
|
-
var on = this.__on;
|
|
866
|
-
if (!on) return;
|
|
867
|
-
for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {
|
|
868
|
-
if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {
|
|
869
|
-
this.removeEventListener(o.type, o.listener, o.options);
|
|
870
|
-
} else {
|
|
871
|
-
on[++i] = o;
|
|
872
|
-
}
|
|
873
|
-
}
|
|
874
|
-
if (++i) on.length = i;
|
|
875
|
-
else delete this.__on;
|
|
876
|
-
};
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
function onAdd(typename, value, options) {
|
|
880
|
-
return function() {
|
|
881
|
-
var on = this.__on, o, listener = contextListener(value);
|
|
882
|
-
if (on) for (var j = 0, m = on.length; j < m; ++j) {
|
|
883
|
-
if ((o = on[j]).type === typename.type && o.name === typename.name) {
|
|
884
|
-
this.removeEventListener(o.type, o.listener, o.options);
|
|
885
|
-
this.addEventListener(o.type, o.listener = listener, o.options = options);
|
|
886
|
-
o.value = value;
|
|
887
|
-
return;
|
|
888
|
-
}
|
|
889
|
-
}
|
|
890
|
-
this.addEventListener(typename.type, listener, options);
|
|
891
|
-
o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};
|
|
892
|
-
if (!on) this.__on = [o];
|
|
893
|
-
else on.push(o);
|
|
894
|
-
};
|
|
895
|
-
}
|
|
896
|
-
|
|
897
|
-
function selection_on(typename, value, options) {
|
|
898
|
-
var typenames = parseTypenames(typename + ""), i, n = typenames.length, t;
|
|
899
|
-
|
|
900
|
-
if (arguments.length < 2) {
|
|
901
|
-
var on = this.node().__on;
|
|
902
|
-
if (on) for (var j = 0, m = on.length, o; j < m; ++j) {
|
|
903
|
-
for (i = 0, o = on[j]; i < n; ++i) {
|
|
904
|
-
if ((t = typenames[i]).type === o.type && t.name === o.name) {
|
|
905
|
-
return o.value;
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
return;
|
|
910
|
-
}
|
|
911
|
-
|
|
912
|
-
on = value ? onAdd : onRemove;
|
|
913
|
-
for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));
|
|
914
|
-
return this;
|
|
915
|
-
}
|
|
916
|
-
|
|
917
|
-
function dispatchEvent(node, type, params) {
|
|
918
|
-
var window = defaultView(node),
|
|
919
|
-
event = window.CustomEvent;
|
|
920
|
-
|
|
921
|
-
if (typeof event === "function") {
|
|
922
|
-
event = new event(type, params);
|
|
923
|
-
} else {
|
|
924
|
-
event = window.document.createEvent("Event");
|
|
925
|
-
if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;
|
|
926
|
-
else event.initEvent(type, false, false);
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
node.dispatchEvent(event);
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
function dispatchConstant(type, params) {
|
|
933
|
-
return function() {
|
|
934
|
-
return dispatchEvent(this, type, params);
|
|
935
|
-
};
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
function dispatchFunction(type, params) {
|
|
939
|
-
return function() {
|
|
940
|
-
return dispatchEvent(this, type, params.apply(this, arguments));
|
|
941
|
-
};
|
|
942
|
-
}
|
|
943
|
-
|
|
944
|
-
function selection_dispatch(type, params) {
|
|
945
|
-
return this.each((typeof params === "function"
|
|
946
|
-
? dispatchFunction
|
|
947
|
-
: dispatchConstant)(type, params));
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
function* selection_iterator() {
|
|
951
|
-
for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
|
|
952
|
-
for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {
|
|
953
|
-
if (node = group[i]) yield node;
|
|
954
|
-
}
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
var root = [null];
|
|
959
|
-
|
|
960
|
-
function Selection(groups, parents) {
|
|
961
|
-
this._groups = groups;
|
|
962
|
-
this._parents = parents;
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
function selection_selection() {
|
|
966
|
-
return this;
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
Selection.prototype = {
|
|
970
|
-
constructor: Selection,
|
|
971
|
-
select: selection_select,
|
|
972
|
-
selectAll: selection_selectAll,
|
|
973
|
-
selectChild: selection_selectChild,
|
|
974
|
-
selectChildren: selection_selectChildren,
|
|
975
|
-
filter: selection_filter,
|
|
976
|
-
data: selection_data,
|
|
977
|
-
enter: selection_enter,
|
|
978
|
-
exit: selection_exit,
|
|
979
|
-
join: selection_join,
|
|
980
|
-
merge: selection_merge,
|
|
981
|
-
selection: selection_selection,
|
|
982
|
-
order: selection_order,
|
|
983
|
-
sort: selection_sort,
|
|
984
|
-
call: selection_call,
|
|
985
|
-
nodes: selection_nodes,
|
|
986
|
-
node: selection_node,
|
|
987
|
-
size: selection_size,
|
|
988
|
-
empty: selection_empty,
|
|
989
|
-
each: selection_each,
|
|
990
|
-
attr: selection_attr,
|
|
991
|
-
style: selection_style,
|
|
992
|
-
property: selection_property,
|
|
993
|
-
classed: selection_classed,
|
|
994
|
-
text: selection_text,
|
|
995
|
-
html: selection_html,
|
|
996
|
-
raise: selection_raise,
|
|
997
|
-
lower: selection_lower,
|
|
998
|
-
append: selection_append,
|
|
999
|
-
insert: selection_insert,
|
|
1000
|
-
remove: selection_remove,
|
|
1001
|
-
clone: selection_clone,
|
|
1002
|
-
datum: selection_datum,
|
|
1003
|
-
on: selection_on,
|
|
1004
|
-
dispatch: selection_dispatch,
|
|
1005
|
-
[Symbol.iterator]: selection_iterator
|
|
1006
|
-
};
|
|
1007
|
-
|
|
1008
|
-
function n(selector) {
|
|
1009
|
-
return typeof selector === "string"
|
|
1010
|
-
? new Selection([[document.querySelector(selector)]], [document.documentElement])
|
|
1011
|
-
: new Selection([[selector]], root);
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
|
-
let D;function L(A){const B=typeof A;if(B=="number"||B=="boolean"||A==null)return `${A}`;if(B=="string")return `"${A}"`;if(B=="symbol"){const C=A.description;return C==null?"Symbol":`Symbol(${C})`}if(B=="function"){const C=A.name;return typeof C=="string"&&C.length>0?`Function(${C})`:"Function"}if(Array.isArray(A)){const C=A.length;let E="[";C>0&&(E+=L(A[0]));for(let I=1;I<C;I++)E+=", "+L(A[I]);return E+="]",E}const Q=/\[object ([^\]]+)\]/.exec(toString.call(A));let g;if(Q&&Q.length>1)g=Q[1];else return toString.call(A);if(g=="Object")try{return "Object("+JSON.stringify(A)+")"}catch{return "Object"}return A instanceof Error?`${A.name}: ${A.message}
|
|
1015
|
-
${A.stack}`:g}let o=0,F=null;function y(){return (F===null||F.byteLength===0)&&(F=new Uint8Array(D.memory.buffer)),F}const s=new TextEncoder;"encodeInto"in s||(s.encodeInto=function(A,B){const Q=s.encode(A);return B.set(Q),{read:A.length,written:Q.length}});function k(A,B,Q){if(Q===void 0){const i=s.encode(A),N=B(i.length,1)>>>0;return y().subarray(N,N+i.length).set(i),o=i.length,N}let g=A.length,C=B(g,1)>>>0;const E=y();let I=0;for(;I<g;I++){const i=A.charCodeAt(I);if(i>127)break;E[C+I]=i;}if(I!==g){I!==0&&(A=A.slice(I)),C=Q(C,g,g=I+A.length*3,1)>>>0;const i=y().subarray(C+I,C+g),N=s.encodeInto(A,i);I+=N.written,C=Q(C,g,I,1)>>>0;}return o=I,C}let M=null;function j(){return (M===null||M.buffer.detached===!0||M.buffer.detached===void 0&&M.buffer!==D.memory.buffer)&&(M=new DataView(D.memory.buffer)),M}let J=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});J.decode();const l=2146435072;let h=0;function X(A,B){return h+=B,h>=l&&(J=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),J.decode(),h=B),J.decode(y().subarray(A,A+B))}function a(A,B){return A=A>>>0,X(A,B)}function d(A){const B=k(A,D.__wbindgen_malloc,D.__wbindgen_realloc),Q=o,g=D.get_modifier_code(B,Q);let C;return g[0]!==0&&(C=a(g[0],g[1]).slice(),D.__wbindgen_free(g[0],g[1]*1,1)),C}function p(A){const B=k(A,D.__wbindgen_malloc,D.__wbindgen_realloc),Q=o,g=D.get_key_code(B,Q);return g===16777215?void 0:g}function S(A){const B=k(A,D.__wbindgen_malloc,D.__wbindgen_realloc),Q=o;return D.get_key_value(B,Q)}const f=new Set(["basic","cors","default"]);async function W(A,B){if(typeof Response=="function"&&A instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(A,B)}catch(g){if(A.ok&&f.has(A.type)&&A.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",g);else throw g}const Q=await A.arrayBuffer();return await WebAssembly.instantiate(Q,B)}else {const Q=await WebAssembly.instantiate(A,B);return Q instanceof WebAssembly.Instance?{instance:Q,module:A}:Q}}function x(){const A={};return A.wbg={},A.wbg.__wbg___wbindgen_debug_string_df47ffb5e35e6763=function(B,Q){const g=L(Q),C=k(g,D.__wbindgen_malloc,D.__wbindgen_realloc),E=o;j().setInt32(B+4*1,E,!0),j().setInt32(B+4*0,C,!0);},A.wbg.__wbg___wbindgen_throw_b855445ff6a94295=function(B,Q){throw new Error(a(B,Q))},A.wbg.__wbg_new_1acc0b6eea89d040=function(){return new Object},A.wbg.__wbg_new_e17d9f43105b08be=function(){return new Array},A.wbg.__wbg_set_3f1d0b984ed272ed=function(B,Q,g){B[Q]=g;},A.wbg.__wbg_set_c213c871859d6500=function(B,Q,g){B[Q>>>0]=g;},A.wbg.__wbindgen_cast_2241b6af4c4b2941=function(B,Q){return a(B,Q)},A.wbg.__wbindgen_init_externref_table=function(){const B=D.__wbindgen_externrefs,Q=B.grow(4);B.set(0,void 0),B.set(Q+0,void 0),B.set(Q+1,null),B.set(Q+2,!0),B.set(Q+3,!1);},A}function K(A,B){return D=A.exports,m.__wbindgen_wasm_module=B,M=null,F=null,D.__wbindgen_start(),D}async function m(A){if(D!==void 0)return D;typeof A<"u"&&(Object.getPrototypeOf(A)===Object.prototype?{module_or_path:A}=A:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof A>"u"&&(A=new URL("data:application/wasm;base64,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A0EDdEH81sAAaigCACABSxsiAyADQQFqIgMgA0EDdEH81sAAaigCACABSxsiAyADQQFqIgMgA0EDdEH81sAAaigCACABSxsiA0EDdEH81sAAaigCACIEIAFHDQECQCADIAQgAUlqIgFBmQtLDQBB6QAgAUEDdEGA18AAaigCACIBIAFBgLADc0GAgLx/akGAkLx/SSICGyEBQYcGQQAgAhshAgwCC0GaC0GaC0Hs1sAAEDcACyABQb9/akEaSUEFdCABciEBQQAhAgsgAEEANgIIIAAgAjYCBCAAIAE2AgAL8QMBAn8gACABaiECAkACQCAAKAIEIgNBAXENACADQQJxRQ0BIAAoAgAiAyABaiEBAkAgACADayIAQQAoAsS0QUcNACACKAIEQQNxQQNHDQFBACABNgK8tEEgAiACKAIEQX5xNgIEIAAgAUEBcjYCBCACIAE2AgAMAgsgACADEBwLAkACQAJAAkAgAigCBCIDQQJxDQAgAkEAKALItEFGDQIgAkEAKALEtEFGDQMgAiADQXhxIgMQHCAAIAMgAWoiAUEBcjYCBCAAIAFqIAE2AgAgAEEAKALEtEFHDQFBACABNgK8tEEPCyACIANBfnE2AgQgACABQQFyNgIEIAAgAWogATYCAAsCQCABQYACSQ0AIAAgARAjDwsgAUH4AXFBrLLBAGohAgJAAkBBACgCtLRBIgNBASABQQN2dCIBcQ0AQQAgAyABcjYCtLRBIAIhAQwBCyACKAIIIQELIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQQAgADYCyLRBQQBBACgCwLRBIAFqIgE2AsC0QSAAIAFBAXI2AgQgAEEAKALEtEFHDQFBAEEANgK8tEFBAEEANgLEtEEPC0EAIAA2AsS0QUEAQQAoAry0QSABaiIBNgK8tEEgACABQQFyNgIEIAAgAWogATYCAA8LC64DAgd/An4jAEEQayICJAACQAJAIAENAEEAIQFB+K3AACEDDAELIAEoAgAhAyABQQA2AgAgAUEIakH4rcAAIANBAXEiBBshAyABKAIEQQAgBBshAQsgAkEIaiADQQhqKQIAIgk3AwAgACgCACEFIAMpAgAhCiAAQQE2AgAgACgCCCEGIAAoAgwhByAAIAo3AgggACgCFCEEIABBEGogCTcCACAAIAE2AgQgAiAKNwMA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AEGBAhAQAkACQCACLQANIgNBgQFJDQAgBCACKAIAIAERBgBFDQFBASEDDAILIAQgAiACLQAMIgBqIAMgAGsgBSgCDBEKAEUNAEEBIQMMAQsgBEEnIAERBgAhAwsgAkEQaiQAIAMLhwEBAX8jAEEgayICJAACQAJAIAAoAgBBgICAgHhGDQAgASAAKAIEIAAoAggQayEADAELIAJBCGpBCGogACgCDCgCACIAQQhqKQIANwMAIAJBCGpBEGogAEEQaikCADcDACACIAApAgA3AwggASgCACABKAIEIAJBCGoQFCEACyACQSBqJAAgAAt6AQF/IwBBwABrIgUkACAFIAE2AgwgBSAANgIIIAUgAzYCFCAFIAI2AhAgBUECNgIcIAVBzMPAADYCGCAFQgI3AiQgBUEkrUIghiAFQRBqrYQ3AzggBUElrUIghiAFQQhqrYQ3AzAgBSAFQTBqNgIgIAVBGGogBBBMAAuKAQEBfwJAAkACQCAAQYQBSQ0AIADQbyYBQQAoAsywQQ0CQQBBfzYCzLBBIABBACgC4LBBIgFJDQEgACABayIAQQAoAtiwQU8NAUEAKALUsEEgAEECdGpBACgC3LBBNgIAQQAgADYC3LBBQQBBACgCzLBBQQFqNgLMsEELDwsQlAEAC0HsrsAAED0AC2gCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbjDwAA2AgggA0ICNwIUIANBEq1CIIYiBCADrYQ3AyggAyAEIANBBGqthDcDICADIANBIGo2AhAgA0EIaiACEEwAC2gCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQbTTwAA2AgggA0ICNwIUIANBEq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEEwAC2gCAX8BfiMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQejTwAA2AgggA0ICNwIUIANBEq1CIIYiBCADQQRqrYQ3AyggAyAEIAOthDcDICADIANBIGo2AhAgA0EIaiACEEwAC2kBAX8jAEEwayICJAACQEEALQDksEENACACQTBqJAAPCyACQQI2AgwgAkHksMAANgIIIAJCATcCFCACIAE2AiwgAkESrUIghiACQSxqrYQ3AyAgAiACQSBqNgIQIAJBCGpB9LDAABBMAAtgAQJ/AkACQCAAQXxqKAIAIgNBeHEiBEEEQQggA0EDcSIDGyABakkNAAJAIANFDQAgBCABQSdqSw0CCyAAEBEPC0HAr8AAQS5B8K/AABBFAAtBgLDAAEEuQbCwwAAQRQALUAEBfwJAIAIgACgCACAAKAIIIgNrTQ0AIAAgAyACQQFBARAmIAAoAgghAwsCQCACRQ0AIAAoAgQgA2ogASAC/AoAAAsgACADIAJqNgIIQQALSwEBfyMAQTBrIgEkACABQQE2AgwgAUG4wsAANgIIIAFCATcCFCABQSOtQiCGIAFBL2qthDcDICABIAFBIGo2AhAgAUEIaiAAEEwAC0oBA39BACEDAkAgAkUNAAJAA0AgAC0AACIEIAEtAAAiBUcNASAAQQFqIQAgAUEBaiEBIAJBf2oiAkUNAgwACwsgBCAFayEDCyADC0QBAX8gAkEQdiACQf//A3FBAEdqIgNAACECIABBADYCCCAAQQAgA0EQdCACQX9GIgMbNgIEIABBACACQRB0IAMbNgIAC08BAX8jAEEgayICJAACQCABRQ0AIAJBADYCGCACQQE2AgwgAkH4scAANgIIIAJCBDcCECACQQhqQYCywAAQTAALIABBADYCACACQSBqJAALTwECfyAAKAIEIQIgACgCACEDAkAgACgCCCIALQAARQ0AIANB9MPAAEEEIAIoAgwRCgBFDQBBAQ8LIAAgAUEKRjoAACADIAEgAigCEBEGAAtSAQJ/QQAhAUEAQQAoApixQSICQQFqNgKYsUECQCACQQBIDQBBASEBQQAtAOS0QQ0AQQAgADoA5LRBQQBBACgC4LRBQQFqNgLgtEFBAiEBCyABCz8BAX8jAEEgayICJAAgAkEIaiAAKAIAIAJBFmpBChAgIAFBAUEBQQAgAigCCCACKAIMEA8hACACQSBqJAAgAAtJAQJ/IAEoAgQhAiABKAIAIQMQkQECQEEIQQQQciIBDQBBBEEIEIYBAAsgASACNgIEIAEgAzYCACAAQZSxwAA2AgQgACABNgIAC0EBAX8jAEEgayIDJAAgA0EANgIQIANBATYCBCADQgQ3AgggAyABNgIcIAMgADYCGCADIANBGGo2AgAgAyACEEwACzkAAkAgAkGAgMQARg0AIAAgAiABKAIQEQYARQ0AQQEPCwJAIAMNAEEADwsgACADIAQgASgCDBEKAAs2AQF/IwBBIGsiASQAIAFBADYCGCABQQE2AgwgAUGkssAANgIIIAFCBDcCECABQQhqIAAQTAALOQEBf0EBIQICQCAAIAEQIg0AIAEoAgBBpMLAAEECIAEoAgQoAgwRCgANACAAQQRqIAEQIiECCyACCzQBAX8jAEEQayICJAAgAiAANgIMIAFBkIDAAEEFIAJBDGpBgIDAABAnIQAgAkEQaiQAIAALKwACQCAAIAEQY0UNAAJAIABFDQAQkQEgACABEHIiAUUNAQsgAQ8LEI8BAAstAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahCOAQALKgEBfyMAQRBrIgIkACACQQE7AQwgAiABNgIIIAIgADYCBCACQQRqEEsACyUAAkACQCABIAMQY0UNACAAIAEgAyACEGYiAw0BCxCPAQALIAMLJgEBfyMAQRBrIgIkACACIAAgARAWIAIoAgAgAigCBCACQRBqJAALJgACQCAADQBBqK7AAEEyEIMBAAsgACACIAMgBCAFIAEoAhARDgALJAACQCAADQBBqK7AAEEyEIMBAAsgACACIAMgBCABKAIQEQsACyQAAkAgAA0AQaiuwABBMhCDAQALIAAgAiADIAQgASgCEBEXAAskAAJAIAANAEGorsAAQTIQgwEACyAAIAIgAyAEIAEoAhARCwALJAACQCAADQBBqK7AAEEyEIMBAAsgACACIAMgBCABKAIQEQwACyQAAkAgAA0AQaiuwABBMhCDAQALIAAgAiADIAQgASgCEBELAAskAAJAIAANAEGorsAAQTIQgwEACyAAIAIgAyAEIAEoAhARDAALJAACQCAADQBBqK7AAEEyEIMBAAsgACACIAMgBCABKAIQERYACyQAAkAgAA0AQaiuwABBMhCDAQALIAAgAiADIAQgASgCEBEYAAspAQF/AkAgACgCACIBQYCAgIB4ckGAgICAeEYNACAAKAIEIAFBARB7CwsgAAJAIAFFDQAgAiADEIYBAAsgACADNgIEIAAgAjYCAAsiAAJAIAANAEGorsAAQTIQgwEACyAAIAIgAyABKAIQEQkACyAAAkAgAA0AQaiuwABBMhCDAQALIAAgAiABKAIQEQYACx4BAX8QkgEhAyAAQQA2AgggACADNgIEIAAgATYCAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEHsLCx8AAkAgAEGAgICAeHJBgICAgHhGDQAgASAAQQEQewsLFwACQCABQQlJDQAgASAAEBoPCyAAEAkLFwACQCAARQ0AIAAgARCGAQALIAIQRwALGAAgACUBIAElASABEDYgAiUBIAIQNhAACxoBAX8gASAAQQAoAoixQSICQRMgAhsRBQAACxUAIAFpQQFGIABBgICAgHggAWtNcQsWAAJAIAAoAgAiAEGEAUkNACAAEDYLCxgCAX8BbyAAIAEQByEDEBsiAiADJgEgAgsTAQF/IAAgASACIAMQDSEEIAQPCxQAIAAgBSAGEBM2AgQgAEEANgIACxQAIAAgAiADEGU2AgQgAEEANgIACxIAAkAgAUUNACAAIAEgAhB7CwsVACAAIAEQkAEaQYCAgIB4IAEQXgALFgAgACgCACABIAIgACgCBCgCDBEKAAsSACAAJQEgASACJQEgAhA2EAMLFAAgACgCACABIAAoAgQoAgwRBgALDwAgACABIAIgAyAEEAsACxQCAX8BbxABIQEQGyIAIAEmASAACxQCAX8BbxACIQEQGyIAIAEmASAACxIBAX8gACABEA4iAiUBIAIQNgsPAQF/IAAgARBfIQIgAg8LEQAgABCTATYCBCAAIAE2AgALEQAgACgCBCAAKAIIIAEQiQELIAAgAELfnp2YnLeWuAI3AwggAEKh7ayM+fScuAc3AwALIgAgAELtuq22zYXU9eMANwMIIABC+IKZvZXuxsW5fzcDAAsTACAAQZSxwAA2AgQgACABNgIACxAAIAEgACgCACAAKAIEEGsLEAAgASAAKAIAIAAoAgQQEgsQAQF/EBsiASAAJQEmASABCwsAIAAgASACEDsPCw0AIAAoAgAgASACEGELDQAgACgCACABIAIQbAsLACAAIAEgAhA4AAsLACAAIAEgAhA5AAsOAEHYwsAAQSsgABBFAAsLACAAKAIAIAEQLgsJACAAIAEQYg8LCgAgACABEIwBAAsNACAAQaivwAAgARAUCwwAIAAgASkCADcDAAsKACABIAAQggEACw0AIAFBwMLAAEEYEBILDQAgAEHcw8AAIAEQFAsKACACIAAgARASCwoAIAAgASUBEAQLCAAgACABEGULCAAgACABEAULCQAgAEEANgIACwcAIAAQLwALBgAQlAEACwYAEJQBAAsDAA8LBAAQbwsEABBwCwMAAAsL97ABAgBBgIDAAAvMsAEAAAAABAAAAAQAAAABAAAARXJyb3JDOlxVc2Vyc1wwMTM5NDI2OVwuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTA1XHNyY1xjb252ZXJ0XHNsaWNlcy5ycwBsaWJyYXJ5L2FsbG9jL3NyYy9zdHIucnMAQzpcVXNlcnNcMDEzOTQyNjlcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zlx3YXNtLWJpbmRnZW4tMC4yLjEwNVxzcmNcZXh0ZXJucmVmLnJzAGxpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAQzpcVXNlcnNcMDEzOTQyNjlcLnJ1c3R1cFx0b29sY2hhaW5zXHN0YWJsZS14ODZfNjQtcGMtd2luZG93cy1nbnVcbGliL3J1c3RsaWIvc3JjL3J1c3RcbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS40L3NyYy9yYXcvbW9kLnJzAGxpYnJhcnkvY29yZS9zcmMvc3RyL21vZC5ycwAvcnVzdGMvMjk0ODM4ODNlZWQ2OWQ1ZmI0ZGIwMTk2NGNkZjJhZjRkODZlOWNiMi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi45L3NyYy9kbG1hbGxvYy5ycwBsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnMAQzpcVXNlcnNcMDEzOTQyNjlcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxzZXJkZS13YXNtLWJpbmRnZW4tMC42LjVcc3JjXGxpYi5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvdW5pY29kZV9kYXRhLnJzADMBEAByAAAAwQEAAB0AAABLZXlWYWx1ZXR5cGVTdHJ2YWx1ZUFycnNoaWZ0U2hpZnTih6fi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AQoBMgMkBQEIPgEMAjQJCgQCAV8DAgEBAgYBAgGdAQMIFQI5AgMBJQcDBUYGDQEBAQEBDgJVCAIDAQEXAVQGAQEEAgEC7gQGAgECGwJVCAIBAQJqAQEBAgYBAWUBAQECBAEFAAkBAgACAQEEAZAEAgIEASAKKAYCBAgBCQYCAy4NAQIABwEGAQFSFgIHAQIBAnoGAwEBAgEHAQFIAgMBAQEAAgsCNAUFAQEBFwEAEQYPAAwDAwAFOwcJBAADKAIAAT8RQAIBAgAEAQcBAgACAQQALgIXAAMJEAIHHgSUAwA3BDIIAQ4BFgUBDwAHARECBwECAQUFPiEBoA4AAT0EAAX+AgAHbQgABQABHmCA8ABBGgYaLwEKAQQBBRcBHwHDAQQE0AEkBwIeBWABKgQCAgIEAQEGAQEDAQEBFAFTAYsIpgEmCSkAJgEBBQECKwEEAFYCBgALBSsCA0DAQAACBgImAgYCCAEBAQEBAQEfAjUBBwEBAwMBBwMEAgYEDQUDAQd0AQ0BEA1lAQQBAgoBAQMFBgEBAQEBAQQBBgQBAgQFBQQBESADAgA0AOUGBAMCDCYBAQUBAC4SHoRmAwQBPgICAQEBCBUFAQMAKwEOBlAABwwFABoGGgBQYCQEJHQLAQ8BBwECAQsBDwEHAQIAAQIDASoBCQAzDTNdFgoWAEAAQABVAUcBAgIBAgICBAEMAQEBBwFBAQQCCAEHARwBBAEFAQEDBwEAAhkBGQEfARkBHwEZAR8BGQEfARkBCAAKARQGBgA+AEQAGgYaBhoAAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDOwkqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgIBAQMDAQQHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwAEHAMdAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJPBEYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECAAcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AgAHbQcAYIDwACkuLjAxMjM0NTY3ODlhYmNkZWYAAAEAAAAAAAAAUmVmQ2VsbCBhbHJlYWR5IGJvcnJvd2VkY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAAAAgyEQACAAAACjIRAAEgAAADogAAABAAAAAAAAAMghEAACAAAAAAAAAAwAAAAEAAAAKAAAACkAAAAqAAAAICAgICwKKCgKLDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlbLi4uXWJlZ2luIDw9IGVuZCAoIDw9ICkgd2hlbiBzbGljaW5nIGBgzSIQAA4AAADbIhAABAAAAN8iEAAQAAAA7yIQAAEAAABieXRlIGluZGV4ICBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgIChieXRlcyApIG9mIGAAECMQAAsAAAAbIxAAJgAAAEEjEAAIAAAASSMQAAYAAADvIhAAAQAAACBpcyBvdXQgb2YgYm91bmRzIG9mIGAAABAjEAALAAAAeCMQABYAAADvIhAAAQAAANABEAAcAAAAnwEAACwAAAANARAAJgAAABoAAAA2AAAADQEQACYAAAAKAAAAKwAAAAAGAQEDAQQCBQcHAggICQIKBQsCDgQQARECEgUTHBQBFQIXAhkNHAUdCB8BJAFqBGsCrwOxArwCzwLRAtQM1QnWAtcC2gHgBeEC5wToAu4g8AT4AvoE+wEMJzs+Tk+Pnp6fe4uTlqKyuoaxBgcJNj0+VvPQ0QQUGDY3Vld/qq6vvTXgEoeJjp4EDQ4REikxNDpFRklKTk9kZYqMjY+2wcPExsvWXLa3GxwHCAoLFBc2OTqoqdjZCTeQkagHCjs+ZmmPkhFvX7/u71pi9Pz/U1Samy4vJyhVnaCho6SnqK26vMQGCwwVHTo/RVGmp8zNoAcZGiIlPj/n7O//xcYEICMlJigzODpISkxQU1VWWFpcXmBjZWZrc3h9f4qkqq+wwNCur25v3d6TXiJ7BQMELQNmAwEvLoCCHQMxDxwEJAkeBSsFRAQOKoCqBiQEJAQoCDQLTgM0DIE3CRYKCBg7RTkDYwgJMBYFIQMbBQFAOARLBS8ECgcJB0AgJwQMCTYDOgUaBwQMB1BJNzMNMwcuCAoGJgMdCAKA0FIQAzcsCCoWGiYcFBcJTgQkCUQNGQcKBkgIJwl1C0I+KgY7BQoGUQYBBRADBQtZCAIdYh5ICAqApl4iRQsKBg0TOgYKBhQcLAQXgLk8ZFMMSAkKRkUbSAhTDUkHCoC2Ig4KBkYKHQNHSTcDDggKBjkHCoE2GQc7Ax1VAQ8yDYObZnULgMSKTGMNhDAQFgqPmwWCR5q5OobGgjkHKgRcBiYKRgooBROBsDqAxltlSwQ5BxFABQsCDpf4CITWKQqi54EzDwEdBg4ECIGMiQRrBQ0DCQcQj2CA+gaBtExHCXQ8gPYKcwhwFUZ6FAwUDFcJGYCHgUcDhUIPFYRQHwYGgNUrBT4hAXAtAxoEAoFAHxE6BQGB0CqA1isEAYHggPcpTAQKBAKDEURMPYDCPAYBBFUFGzQCgQ4sBGQMVgqArjgdDSwECQcCDgaAmoPYBBEDDQN3BF8GDAQBDwwEOAgKBigILAQCPoFUDB0DCgU4BxwGCQeA+oQGAAEDBQUGBgIHBggHCREKHAsZDBoNEA4MDwQQAxISEwkWARcEGAEZAxoHGwEcAh8WIAMrAy0LLgEwBDECMgGnBKkCqgSrCPoC+wX9Av4D/wmteHmLjaIwV1iLjJAc3Q4PS0z7/C4vP1xdX+KEjY6RkqmxurvFxsnK3uTl/wAEERIpMTQ3Ojs9SUpdhI6SqbG0urvGys7P5OUABA0OERIpMTQ6O0VGSUpeZGWEkZudyc7PDREpOjtFSVdbXF5fZGWNkam0urvFyd/k5fANEUVJZGWAhLK8vr/V1/Dxg4WLpKa+v8XHz9rbSJi9zcbOz0lOT1dZXl+Jjo+xtre/wcbH1xEWF1tc9vf+/4Btcd7fDh9ubxwdX31+rq9Nu7wWFx4fRkdOT1haXF5+f7XF1NXc8PH1cnOPdHWWJi4vp6+3v8fP19+aAECXmDCPH87P0tTO/05PWlsHCA8QJy/u725vNz0/QkWQkVNndcjJ0NHY2ef+/wAgXyKC3wSCRAgbBAYRgawOgKsFHwiBHAMZCAEELwQ0BAcDAQcGBxEKUA8SB1UHAwQcCgkDCAMHAwIDAwMMBAUDCwYBDhUFTgcbB1cHAgYXDFAEQwMtAwEEEQYPDDoEHSVfIG0EaiWAyAWCsAMaBoL9A1kHFgkYCRQMFAxqBgoGGgZZBysFRgosBAwEAQMxCywEGgYLA4CsBgoGLzGA9Ag8Aw8DPgU4CCsFgv8RGAgvES0DIQ8hD4CMBIKaFgsViJQFLwU7BwIOGAmAviJ0DIDWGoEQBYDhCfKeAzcJgVwUgLgIgN0VOwMKBjgIRggMBnQLHgNaBFkJgIMYHAoWCUwEgIoGq6QMFwQxoQSB2iYHDAUFgKYQgfUHASAqBkwEgI0EgL4DGwMPDSBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCByYW5nZSBlbmQgaW5kZXggAKMpEAAQAAAAgSkQACIAAABzbGljZSBpbmRleCBzdGFydHMgYXQgIGJ1dCBlbmRzIGF0IADEKRAAFgAAANopEAANAAAAsAIAAF0ToAISFyAivR9gInwsIDAFMGA0FaDgNfikYDcMpqA3HvvgNwD+4EP9AWFEgAchSAEK4UgkDaFJqw4hSy8YIUw7GaFbMBwhXPMeoV8wNGFjHmHhZPBqYWVAbeFlT2+hZvCvIWedvCFoAM/haGfRYWkA2uFpAOAha67ioWzr5KFu0Oghb/vzoW8BAC5w8AF/cKAQAACgE+AGgBwgCBYfoAi2JMAJACwgE0CmYBMwq+AUAPtgFyH/IBgABKEYgAchGYAM4RugGOEcQG7hHQDUIR6m1mEeAN8BIzDg4SUA6aEmMPHhJorxMicAAwAAgwQgAJEFYABdE6AAEhcgHwwgYB/vLCArKjCgK2+mYCwCqOAsHvvgLQD+IDae/2A2/QHhNgEKITckDeE3qw5hOS8Y4TkwHOFK8x7hTkA0oVIeYeFT8GphVE9v4VSdvGFVAM9hVmXRoVYA2iFXAOChWK7iIVrs5OFb0OhhXCAA7lzwAX9d6wIQACkAAADsAgAAHQAAAMAAAADgAAAAwQAAAOEAAADCAAAA4gAAAMMAAADjAAAAxAAAAOQAAADFAAAA5QAAAMYAAADmAAAAxwAAAOcAAADIAAAA6AAAAMkAAADpAAAAygAAAOoAAADLAAAA6wAAAMwAAADsAAAAzQAAAO0AAADOAAAA7gAAAM8AAADvAAAA0AAAAPAAAADRAAAA8QAAANIAAADyAAAA0wAAAPMAAADUAAAA9AAAANUAAAD1AAAA1gAAAPYAAADYAAAA+AAAANkAAAD5AAAA2gAAAPoAAADbAAAA+wAAANwAAAD8AAAA3QAAAP0AAADeAAAA/gAAAAABAAABAQAAAgEAAAMBAAAEAQAABQEAAAYBAAAHAQAACAEAAAkBAAAKAQAACwEAAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAATAQAAFAEAABUBAAAWAQAAFwEAABgBAAAZAQAAGgEAABsBAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAAIwEAACQBAAAlAQAAJgEAACcBAAAoAQAAKQEAACoBAAArAQAALAEAAC0BAAAuAQAALwEAADABAAAAAEAAMgEAADMBAAA0AQAANQEAADYBAAA3AQAAOQEAADoBAAA7AQAAPAEAAD0BAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEoBAABLAQAATAEAAE0BAABOAQAATwEAAFABAABRAQAAUgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAABgAQAAYQEAAGIBAABjAQAAZAEAAGUBAABmAQAAZwEAAGgBAABpAQAAagEAAGsBAABsAQAAbQEAAG4BAABvAQAAcAEAAHEBAAByAQAAcwEAAHQBAAB1AQAAdgEAAHcBAAB4AQAA/wAAAHkBAAB6AQAAewEAAHwBAAB9AQAAfgEAAIEBAABTAgAAggEAAIMBAACEAQAAhQEAAIYBAABUAgAAhwEAAIgBAACJAQAAVgIAAIoBAABXAgAAiwEAAIwBAACOAQAA3QEAAI8BAABZAgAAkAEAAFsCAACRAQAAkgEAAJMBAABgAgAAlAEAAGMCAACWAQAAaQIAAJcBAABoAgAAmAEAAJkBAACcAQAAbwIAAJ0BAAByAgAAnwEAAHUCAACgAQAAoQEAAKIBAACjAQAApAEAAKUBAACmAQAAgAIAAKcBAACoAQAAqQEAAIMCAACsAQAArQEAAK4BAACIAgAArwEAALABAACxAQAAigIAALIBAACLAgAAswEAALQBAAC1AQAAtgEAALcBAACSAgAAuAEAALkBAAC8AQAAvQEAAMQBAADGAQAAxQEAAMYBAADHAQAAyQEAAMgBAADJAQAAygEAAMwBAADLAQAAzAEAAM0BAADOAQAAzwEAANABAADRAQAA0gEAANMBAADUAQAA1QEAANYBAADXAQAA2AEAANkBAADaAQAA2wEAANwBAADeAQAA3wEAAOABAADhAQAA4gEAAOMBAADkAQAA5QEAAOYBAADnAQAA6AEAAOkBAADqAQAA6wEAAOwBAADtAQAA7gEAAO8BAADxAQAA8wEAAPIBAADzAQAA9AEAAPUBAAD2AQAAlQEAAPcBAAC/AQAA+AEAAPkBAAD6AQAA+wEAAPwBAAD9AQAA/gEAAP8BAAAAAgAAAQIAAAICAAADAgAABAIAAAUCAAAGAgAABwIAAAgCAAAJAgAACgIAAAsCAAAMAgAADQIAAA4CAAAPAgAAEAIAABECAAASAgAAEwIAABQCAAAVAgAAFgIAABcCAAAYAgAAGQIAABoCAAAbAgAAHAIAAB0CAAAeAgAAHwIAACACAACeAQAAIgIAACMCAAAkAgAAJQIAACYCAAAnAgAAKAIAACkCAAAqAgAAKwIAACwCAAAtAgAALgIAAC8CAAAwAgAAMQIAADICAAAzAgAAOgIAAGUsAAA7AgAAPAIAAD0CAACaAQAAPgIAAGYsAABBAgAAQgIAAEMCAACAAQAARAIAAIkCAABFAgAAjAIAAEYCAABHAgAASAIAAEkCAABKAgAASwIAAEwCAABNAgAATgIAAE8CAABwAwAAcQMAAHIDAABzAwAAdgMAAHcDAAB/AwAA8wMAAIYDAACsAwAAiAMAAK0DAACJAwAArgMAAIoDAACvAwAAjAMAAMwDAACOAwAAzQMAAI8DAADOAwAAkQMAALEDAACSAwAAsgMAAJMDAACzAwAAlAMAALQDAACVAwAAtQMAAJYDAAC2AwAAlwMAALcDAACYAwAAuAMAAJkDAAC5AwAAmgMAALoDAACbAwAAuwMAAJwDAAC8AwAAnQMAAL0DAACeAwAAvgMAAJ8DAAC/AwAAoAMAAMADAAChAwAAwQMAAKMDAADDAwAApAMAAMQDAAClAwAAxQMAAKYDAADGAwAApwMAAMcDAACoAwAAyAMAAKkDAADJAwAAqgMAAMoDAACrAwAAywMAAM8DAADXAwAA2AMAANkDAADaAwAA2wMAANwDAADdAwAA3gMAAN8DAADgAwAA4QMAAOIDAADjAwAA5AMAAOUDAADmAwAA5wMAAOgDAADpAwAA6gMAAOsDAADsAwAA7QMAAO4DAADvAwAA9AMAALgDAAD3AwAA+AMAAPkDAADyAwAA+gMAAPsDAAD9AwAAewMAAP4DAAB8AwAA/wMAAH0DAAAABAAAUAQAAAEEAABRBAAAAgQAAFIEAAADBAAAUwQAAAQEAABUBAAABQQAAFUEAAAGBAAAVgQAAAcEAABXBAAACAQAAFgEAAAJBAAAWQQAAAoEAABaBAAACwQAAFsEAAAMBAAAXAQAAA0EAABdBAAADgQAAF4EAAAPBAAAXwQAABAEAAAwBAAAEQQAADEEAAASBAAAMgQAABMEAAAzBAAAFAQAADQEAAAVBAAANQQAABYEAAA2BAAAFwQAADcEAAAYBAAAOAQAABkEAAA5BAAAGgQAADoEAAAbBAAAOwQAABwEAAA8BAAAHQQAAD0EAAAeBAAAPgQAAB8EAAA/BAAAIAQAAEAEAAAhBAAAQQQAACIEAABCBAAAIwQAAEMEAAAkBAAARAQAACUEAABFBAAAJgQAAEYEAAAnBAAARwQAACgEAABIBAAAKQQAAEkEAAAqBAAASgQAACsEAABLBAAALAQAAEwEAAAtBAAATQQAAC4EAABOBAAALwQAAE8EAABgBAAAYQQAAGIEAABjBAAAZAQAAGUEAABmBAAAZwQAAGgEAABpBAAAagQAAGsEAABsBAAAbQQAAG4EAABvBAAAcAQAAHEEAAByBAAAcwQAAHQEAAB1BAAAdgQAAHcEAAB4BAAAeQQAAHoEAAB7BAAAfAQAAH0EAAB+BAAAfwQAAIAEAACBBAAAigQAAIsEAACMBAAAjQQAAI4EAACPBAAAkAQAAJEEAACSBAAAkwQAAJQEAACVBAAAlgQAAJcEAACYBAAAmQQAAJoEAACbBAAAnAQAAJ0EAACeBAAAnwQAAKAEAAChBAAAogQAAKMEAACkBAAApQQAAKYEAACnBAAAqAQAAKkEAACqBAAAqwQAAKwEAACtBAAArgQAAK8EAACwBAAAsQQAALIEAACzBAAAtAQAALUEAAC2BAAAtwQAALgEAAC5BAAAugQAALsEAAC8BAAAvQQAAL4EAAC/BAAAwAQAAM8EAADBBAAAwgQAAMMEAADEBAAAxQQAAMYEAADHBAAAyAQAAMkEAADKBAAAywQAAMwEAADNBAAAzgQAANAEAADRBAAA0gQAANMEAADUBAAA1QQAANYEAADXBAAA2AQAANkEAADaBAAA2wQAANwEAADdBAAA3gQAAN8EAADgBAAA4QQAAOIEAADjBAAA5AQAAOUEAADmBAAA5wQAAOgEAADpBAAA6gQAAOsEAADsBAAA7QQAAO4EAADvBAAA8AQAAPEEAADyBAAA8wQAAPQEAAD1BAAA9gQAAPcEAAD4BAAA+QQAAPoEAAD7BAAA/AQAAP0EAAD+BAAA/wQAAAAFAAABBQAAAgUAAAMFAAAEBQAABQUAAAYFAAAHBQAACAUAAAkFAAAKBQAACwUAAAwFAAANBQAADgUAAA8FAAAQBQAAEQUAABIFAAATBQAAFAUAABUFAAAWBQAAFwUAABgFAAAZBQAAGgUAABsFAAAcBQAAHQUAAB4FAAAfBQAAIAUAACEFAAAiBQAAIwUAACQFAAAlBQAAJgUAACcFAAAoBQAAKQUAACoFAAArBQAALAUAAC0FAAAuBQAALwUAADEFAABhBQAAMgUAAGIFAAAzBQAAYwUAADQFAABkBQAANQUAAGUFAAA2BQAAZgUAADcFAABnBQAAOAUAAGgFAAA5BQAAaQUAADoFAABqBQAAOwUAAGsFAAA8BQAAbAUAAD0FAABtBQAAPgUAAG4FAAA/BQAAbwUAAEAFAABwBQAAQQUAAHEFAABCBQAAcgUAAEMFAABzBQAARAUAAHQFAABFBQAAdQUAAEYFAAB2BQAARwUAAHcFAABIBQAAeAUAAEkFAAB5BQAASgUAAHoFAABLBQAAewUAAEwFAAB8BQAATQUAAH0FAABOBQAAfgUAAE8FAAB/BQAAUAUAAIAFAABRBQAAgQUAAFIFAACCBQAAUwUAAIMFAABUBQAAhAUAAFUFAACFBQAAVgUAAIYFAACgEAAAAC0AAKEQAAABLQAAohAAAAItAACjEAAAAy0AAKQQAAAELQAApRAAAAUtAACmEAAABi0AAKcQAAAHLQAAqBAAAAgtAACpEAAACS0AAKoQAAAKLQAAqxAAAAstAACsEAAADC0AAK0QAAANLQAArhAAAA4tAACvEAAADy0AALAQAAAQLQAAsRAAABEtAACyEAAAEi0AALMQAAATLQAAtBAAABQtAAC1EAAAFS0AALYQAAAWLQAAtxAAABctAAC4EAAAGC0AALkQAAAZLQAAuhAAABotAAC7EAAAGy0AALwQAAAcLQAAvRAAAB0tAAC+EAAAHi0AAL8QAAAfLQAAwBAAACAtAADBEAAAIS0AAMIQAAAiLQAAwxAAACMtAADEEAAAJC0AAMUQAAAlLQAAxxAAACctAADNEAAALS0AAKATAABwqwAAoRMAAHGrAACiEwAAcqsAAKMTAABzqwAApBMAAHSrAAClEwAAdasAAKYTAAB2qwAApxMAAHerAACoEwAAeKsAAKkTAAB5qwAAqhMAAHqrAACrEwAAe6sAAKwTAAB8qwAArRMAAH2rAACuEwAAfqsAAK8TAAB/qwAAsBMAAICrAACxEwAAgasAALITAACCqwAAsxMAAIOrAAC0EwAAhKsAALUTAACFqwAAthMAAIarAAC3EwAAh6sAALgTAACIqwAAuRMAAImrAAC6EwAAiqsAALsTAACLqwAAvBMAAIyrAAC9EwAAjasAAL4TAACOqwAAvxMAAI+rAADAEwAAkKsAAMETAACRqwAAwhMAAJKrAADDEwAAk6sAAMQTAACUqwAAxRMAAJWrAADGEwAAlqsAAMcTAACXqwAAyBMAAJirAADJEwAAmasAAMoTAACaqwAAyxMAAJurAADMEwAAnKsAAM0TAACdqwAAzhMAAJ6rAADPEwAAn6sAANATAACgqwAA0RMAAKGrAADSEwAAoqsAANMTAACjqwAA1BMAAKSrAADVEwAApasAANYTAACmqwAA1xMAAKerAADYEwAAqKsAANkTAACpqwAA2hMAAKqrAADbEwAAq6sAANwTAACsqwAA3RMAAK2rAADeEwAArqsAAN8TAACvqwAA4BMAALCrAADhEwAAsasAAOITAACyqwAA4xMAALOrAADkEwAAtKsAAOUTAAC1qwAA5hMAALarAADnEwAAt6sAAOgTAAC4qwAA6RMAALmrAADqEwAAuqsAAOsTAAC7qwAA7BMAALyrAADtEwAAvasAAO4TAAC+qwAA7xMAAL+rAADwEwAA+BMAAPETAAD5EwAA8hMAAPoTAADzEwAA+xMAAPQTAAD8EwAA9RMAAP0TAACJHAAAihwAAJAcAADQEAAAkRwAANEQAACSHAAA0hAAAJMcAADTEAAAlBwAANQQAACVHAAA1RAAAJYcAADWEAAAlxwAANcQAACYHAAA2BAAAJkcAADZEAAAmhwAANoQAACbHAAA2xAAAJwcAADcEAAAnRwAAN0QAACeHAAA3hAAAJ8cAADfEAAAoBwAAOAQAAChHAAA4RAAAKIcAADiEAAAoxwAAOMQAACkHAAA5BAAAKUcAADlEAAAphwAAOYQAACnHAAA5xAAAKgcAADoEAAAqRwAAOkQAACqHAAA6hAAAKscAADrEAAArBwAAOwQAACtHAAA7RAAAK4cAADuEAAArxwAAO8QAACwHAAA8BAAALEcAADxEAAAshwAAPIQAACzHAAA8xAAALQcAAD0EAAAtRwAAPUQAAC2HAAA9hAAALccAAD3EAAAuBwAAPgQAAC5HAAA+RAAALocAAD6EAAAvRwAAP0QAAC+HAAA/hAAAL8cAAD/EAAAAB4AAAEeAAACHgAAAx4AAAQeAAAFHgAABh4AAAceAAAIHgAACR4AAAoeAAALHgAADB4AAA0eAAAOHgAADx4AABAeAAARHgAAEh4AABMeAAAUHgAAFR4AABYeAAAXHgAAGB4AABkeAAAaHgAAGx4AABweAAAdHgAAHh4AAB8eAAAgHgAAIR4AACIeAAAjHgAAJB4AACUeAAAmHgAAJx4AACgeAAApHgAAKh4AACseAAAsHgAALR4AAC4eAAAvHgAAMB4AADEeAAAyHgAAMx4AADQeAAA1HgAANh4AADceAAA4HgAAOR4AADoeAAA7HgAAPB4AAD0eAAA+HgAAPx4AAEAeAABBHgAAQh4AAEMeAABEHgAARR4AAEYeAABHHgAASB4AAEkeAABKHgAASx4AAEweAABNHgAATh4AAE8eAABQHgAAUR4AAFIeAABTHgAAVB4AAFUeAABWHgAAVx4AAFgeAABZHgAAWh4AAFseAABcHgAAXR4AAF4eAABfHgAAYB4AAGEeAABiHgAAYx4AAGQeAABlHgAAZh4AAGceAABoHgAAaR4AAGoeAABrHgAAbB4AAG0eAABuHgAAbx4AAHAeAABxHgAAch4AAHMeAAB0HgAAdR4AAHYeAAB3HgAAeB4AAHkeAAB6HgAAex4AAHweAAB9HgAAfh4AAH8eAACAHgAAgR4AAIIeAACDHgAAhB4AAIUeAACGHgAAhx4AAIgeAACJHgAAih4AAIseAACMHgAAjR4AAI4eAACPHgAAkB4AAJEeAACSHgAAkx4AAJQeAACVHgAAnh4AAN8AAACgHgAAoR4AAKIeAACjHgAApB4AAKUeAACmHgAApx4AAKgeAACpHgAAqh4AAKseAACsHgAArR4AAK4eAACvHgAAsB4AALEeAACyHgAAsx4AALQeAAC1HgAAth4AALceAAC4HgAAuR4AALoeAAC7HgAAvB4AAL0eAAC+HgAAvx4AAMAeAADBHgAAwh4AAMMeAADEHgAAxR4AAMYeAADHHgAAyB4AAMkeAADKHgAAyx4AAMweAADNHgAAzh4AAM8eAADQHgAA0R4AANIeAADTHgAA1B4AANUeAADWHgAA1x4AANgeAADZHgAA2h4AANseAADcHgAA3R4AAN4eAADfHgAA4B4AAOEeAADiHgAA4x4AAOQeAADlHgAA5h4AAOceAADoHgAA6R4AAOoeAADrHgAA7B4AAO0eAADuHgAA7x4AAPAeAADxHgAA8h4AAPMeAAD0HgAA9R4AAPYeAAD3HgAA+B4AAPkeAAD6HgAA+x4AAPweAAD9HgAA/h4AAP8eAAAIHwAAAB8AAAkfAAABHwAACh8AAAIfAAALHwAAAx8AAAwfAAAEHwAADR8AAAUfAAAOHwAABh8AAA8fAAAHHwAAGB8AABAfAAAZHwAAER8AABofAAASHwAAGx8AABMfAAAcHwAAFB8AAB0fAAAVHwAAKB8AACAfAAApHwAAIR8AACofAAAiHwAAKx8AACMfAAAsHwAAJB8AAC0fAAAlHwAALh8AACYfAAAvHwAAJx8AADgfAAAwHwAAOR8AADEfAAA6HwAAMh8AADsfAAAzHwAAPB8AADQfAAA9HwAANR8AAD4fAAA2HwAAPx8AADcfAABIHwAAQB8AAEkfAABBHwAASh8AAEIfAABLHwAAQx8AAEwfAABEHwAATR8AAEUfAABZHwAAUR8AAFsfAABTHwAAXR8AAFUfAABfHwAAVx8AAGgfAABgHwAAaR8AAGEfAABqHwAAYh8AAGsfAABjHwAAbB8AAGQfAABtHwAAZR8AAG4fAABmHwAAbx8AAGcfAACIHwAAgB8AAIkfAACBHwAAih8AAIIfAACLHwAAgx8AAIwfAACEHwAAjR8AAIUfAACOHwAAhh8AAI8fAACHHwAAmB8AAJAfAACZHwAAkR8AAJofAACSHwAAmx8AAJMfAACcHwAAlB8AAJ0fAACVHwAAnh8AAJYfAACfHwAAlx8AAKgfAACgHwAAqR8AAKEfAACqHwAAoh8AAKsfAACjHwAArB8AAKQfAACtHwAApR8AAK4fAACmHwAArx8AAKcfAAC4HwAAsB8AALkfAACxHwAAuh8AAHAfAAC7HwAAcR8AALwfAACzHwAAyB8AAHIfAADJHwAAcx8AAMofAAB0HwAAyx8AAHUfAADMHwAAwx8AANgfAADQHwAA2R8AANEfAADaHwAAdh8AANsfAAB3HwAA6B8AAOAfAADpHwAA4R8AAOofAAB6HwAA6x8AAHsfAADsHwAA5R8AAPgfAAB4HwAA+R8AAHkfAAD6HwAAfB8AAPsfAAB9HwAA/B8AAPMfAAAmIQAAyQMAACohAABrAAAAKyEAAOUAAAAyIQAATiEAAGAhAABwIQAAYSEAAHEhAABiIQAAciEAAGMhAABzIQAAZCEAAHQhAABlIQAAdSEAAGYhAAB2IQAAZyEAAHchAABoIQAAeCEAAGkhAAB5IQAAaiEAAHohAABrIQAAeyEAAGwhAAB8IQAAbSEAAH0hAABuIQAAfiEAAG8hAAB/IQAAgyEAAIQhAAC2JAAA0CQAALckAADRJAAAuCQAANIkAAC5JAAA0yQAALokAADUJAAAuyQAANUkAAC8JAAA1iQAAL0kAADXJAAAviQAANgkAAC/JAAA2SQAAMAkAADaJAAAwSQAANskAADCJAAA3CQAAMMkAADdJAAAxCQAAN4kAADFJAAA3yQAAMYkAADgJAAAxyQAAOEkAADIJAAA4iQAAMkkAADjJAAAyiQAAOQkAADLJAAA5SQAAMwkAADmJAAAzSQAAOckAADOJAAA6CQAAM8kAADpJAAAACwAADAsAAABLAAAMSwAAAIsAAAyLAAAAywAADMsAAAELAAANCwAAAUsAAA1LAAABiwAADYsAAAHLAAANywAAAgsAAA4LAAACSwAADksAAAKLAAAOiwAAAssAAA7LAAADCwAADwsAAANLAAAPSwAAA4sAAA+LAAADywAAD8sAAAQLAAAQCwAABEsAABBLAAAEiwAAEIsAAATLAAAQywAABQsAABELAAAFSwAAEUsAAAWLAAARiwAABcsAABHLAAAGCwAAEgsAAAZLAAASSwAABosAABKLAAAGywAAEssAAAcLAAATCwAAB0sAABNLAAAHiwAAE4sAAAfLAAATywAACAsAABQLAAAISwAAFEsAAAiLAAAUiwAACMsAABTLAAAJCwAAFQsAAAlLAAAVSwAACYsAABWLAAAJywAAFcsAAAoLAAAWCwAACksAABZLAAAKiwAAFosAAArLAAAWywAACwsAABcLAAALSwAAF0sAAAuLAAAXiwAAC8sAABfLAAAYCwAAGEsAABiLAAAawIAAGMsAAB9HQAAZCwAAH0CAABnLAAAaCwAAGksAABqLAAAaywAAGwsAABtLAAAUQIAAG4sAABxAgAAbywAAFACAABwLAAAUgIAAHIsAABzLAAAdSwAAHYsAAB+LAAAPwIAAH8sAABAAgAAgCwAAIEsAACCLAAAgywAAIQsAACFLAAAhiwAAIcsAACILAAAiSwAAIosAACLLAAAjCwAAI0sAACOLAAAjywAAJAsAACRLAAAkiwAAJMsAACULAAAlSwAAJYsAACXLAAAmCwAAJksAACaLAAAmywAAJwsAACdLAAAniwAAJ8sAACgLAAAoSwAAKIsAACjLAAApCwAAKUsAACmLAAApywAAKgsAACpLAAAqiwAAKssAACsLAAArSwAAK4sAACvLAAAsCwAALEsAACyLAAAsywAALQsAAC1LAAAtiwAALcsAAC4LAAAuSwAALosAAC7LAAAvCwAAL0sAAC+LAAAvywAAMAsAADBLAAAwiwAAMMsAADELAAAxSwAAMYsAADHLAAAyCwAAMksAADKLAAAyywAAMwsAADNLAAAziwAAM8sAADQLAAA0SwAANIsAADTLAAA1CwAANUsAADWLAAA1ywAANgsAADZLAAA2iwAANssAADcLAAA3SwAAN4sAADfLAAA4CwAAOEsAADiLAAA4ywAAOssAADsLAAA7SwAAO4sAADyLAAA8ywAAECmAABBpgAAQqYAAEOmAABEpgAARaYAAEamAABHpgAASKYAAEmmAABKpgAAS6YAAEymAABNpgAATqYAAE+mAABQpgAAUaYAAFKmAABTpgAAVKYAAFWmAABWpgAAV6YAAFimAABZpgAAWqYAAFumAABcpgAAXaYAAF6mAABfpgAAYKYAAGGmAABipgAAY6YAAGSmAABlpgAAZqYAAGemAABopgAAaaYAAGqmAABrpgAAbKYAAG2mAACApgAAgaYAAIKmAACDpgAAhKYAAIWmAACGpgAAh6YAAIimAACJpgAAiqYAAIumAACMpgAAjaYAAI6mAACPpgAAkKYAAJGmAACSpgAAk6YAAJSmAACVpgAAlqYAAJemAACYpgAAmaYAAJqmAACbpgAAIqcAACOnAAAkpwAAJacAACanAAAnpwAAKKcAACmnAAAqpwAAK6cAACynAAAtpwAALqcAAC+nAAAypwAAM6cAADSnAAA1pwAANqcAADenAAA4pwAAOacAADqnAAA7pwAAPKcAAD2nAAA+pwAAP6cAAECnAABBpwAAQqcAAEOnAABEpwAARacAAEanAABHpwAASKcAAEmnAABKpwAAS6cAAEynAABNpwAATqcAAE+nAABQpwAAUacAAFKnAABTpwAAVKcAAFWnAABWpwAAV6cAAFinAABZpwAAWqcAAFunAABcpwAAXacAAF6nAABfpwAAYKcAAGGnAABipwAAY6cAAGSnAABlpwAAZqcAAGenAABopwAAaacAAGqnAABrpwAAbKcAAG2nAABupwAAb6cAAHmnAAB6pwAAe6cAAHynAAB9pwAAeR0AAH6nAAB/pwAAgKcAAIGnAACCpwAAg6cAAISnAACFpwAAhqcAAIenAACLpwAAjKcAAI2nAABlAgAAkKcAAJGnAACSpwAAk6cAAJanAACXpwAAmKcAAJmnAACapwAAm6cAAJynAACdpwAAnqcAAJ+nAACgpwAAoacAAKKnAACjpwAApKcAAKWnAACmpwAAp6cAAKinAACppwAAqqcAAGYCAACrpwAAXAIAAKynAABhAgAAracAAGwCAACupwAAagIAALCnAACeAgAAsacAAIcCAACypwAAnQIAALOnAABTqwAAtKcAALWnAAC2pwAAt6cAALinAAC5pwAAuqcAALunAAC8pwAAvacAAL6nAAC/pwAAwKcAAMGnAADCpwAAw6cAAMSnAACUpwAAxacAAIICAADGpwAAjh0AAMenAADIpwAAyacAAMqnAADLpwAAZAIAAMynAADNpwAA0KcAANGnAADWpwAA16cAANinAADZpwAA2qcAANunAADcpwAAmwEAAPWnAAD2pwAAIf8AAEH/AAAi/wAAQv8AACP/AABD/wAAJP8AAET/AAAl/wAARf8AACb/AABG/wAAJ/8AAEf/AAAo/wAASP8AACn/AABJ/wAAKv8AAEr/AAAr/wAAS/8AACz/AABM/wAALf8AAE3/AAAu/wAATv8AAC//AABP/wAAMP8AAFD/AAAx/wAAUf8AADL/AABS/wAAM/8AAFP/AAA0/wAAVP8AADX/AABV/wAANv8AAFb/AAA3/wAAV/8AADj/AABY/wAAOf8AAFn/AAA6/wAAWv8AAAAEAQAoBAEAAQQBACkEAQACBAEAKgQBAAMEAQArBAEABAQBACwEAQAFBAEALQQBAAYEAQAuBAEABwQBAC8EAQAIBAEAMAQBAAkEAQAxBAEACgQBADIEAQALBAEAMwQBAAwEAQA0BAEADQQBADUEAQAOBAEANgQBAA8EAQA3BAEAEAQBADgEAQARBAEAOQQBABIEAQA6BAEAEwQBADsEAQAUBAEAPAQBABUEAQA9BAEAFgQBAD4EAQAXBAEAPwQBABgEAQBABAEAGQQBAEEEAQAaBAEAQgQBABsEAQBDBAEAHAQBAEQEAQAdBAEARQQBAB4EAQBGBAEAHwQBAEcEAQAgBAEASAQBACEEAQBJBAEAIgQBAEoEAQAjBAEASwQBACQEAQBMBAEAJQQBAE0EAQAmBAEATgQBACcEAQBPBAEAsAQBANgEAQCxBAEA2QQBALIEAQDaBAEAswQBANsEAQC0BAEA3AQBALUEAQDdBAEAtgQBAN4EAQC3BAEA3wQBALgEAQDgBAEAuQQBAOEEAQC6BAEA4gQBALsEAQDjBAEAvAQBAOQEAQC9BAEA5QQBAL4EAQDmBAEAvwQBAOcEAQDABAEA6AQBAMEEAQDpBAEAwgQBAOoEAQDDBAEA6wQBAMQEAQDsBAEAxQQBAO0EAQDGBAEA7gQBAMcEAQDvBAEAyAQBAPAEAQDJBAEA8QQBAMoEAQDyBAEAywQBAPMEAQDMBAEA9AQBAM0EAQD1BAEAzgQBAPYEAQDPBAEA9wQBANAEAQD4BAEA0QQBAPkEAQDSBAEA+gQBANMEAQD7BAEAcAUBAJcFAQBxBQEAmAUBAHIFAQCZBQEAcwUBAJoFAQB0BQEAmwUBAHUFAQCcBQEAdgUBAJ0FAQB3BQEAngUBAHgFAQCfBQEAeQUBAKAFAQB6BQEAoQUBAHwFAQCjBQEAfQUBAKQFAQB+BQEApQUBAH8FAQCmBQEAgAUBAKcFAQCBBQEAqAUBAIIFAQCpBQEAgwUBAKoFAQCEBQEAqwUBAIUFAQCsBQEAhgUBAK0FAQCHBQEArgUBAIgFAQCvBQEAiQUBALAFAQCKBQEAsQUBAIwFAQCzBQEAjQUBALQFAQCOBQEAtQUBAI8FAQC2BQEAkAUBALcFAQCRBQEAuAUBAJIFAQC5BQEAlAUBALsFAQCVBQEAvAUBAIAMAQDADAEAgQwBAMEMAQCCDAEAwgwBAIMMAQDDDAEAhAwBAMQMAQCFDAEAxQwBAIYMAQDGDAEAhwwBAMcMAQCIDAEAyAwBAIkMAQDJDAEAigwBAMoMAQCLDAEAywwBAIwMAQDMDAEAjQwBAM0MAQCODAEAzgwBAI8MAQDPDAEAkAwBANAMAQCRDAEA0QwBAJIMAQDSDAEAkwwBANMMAQCUDAEA1AwBAJUMAQDVDAEAlgwBANYMAQCXDAEA1wwBAJgMAQDYDAEAmQwBANkMAQCaDAEA2gwBAJsMAQDbDAEAnAwBANwMAQCdDAEA3QwBAJ4MAQDeDAEAnwwBAN8MAQCgDAEA4AwBAKEMAQDhDAEAogwBAOIMAQCjDAEA4wwBAKQMAQDkDAEApQwBAOUMAQCmDAEA5gwBAKcMAQDnDAEAqAwBAOgMAQCpDAEA6QwBAKoMAQDqDAEAqwwBAOsMAQCsDAEA7AwBAK0MAQDtDAEArgwBAO4MAQCvDAEA7wwBALAMAQDwDAEAsQwBAPEMAQCyDAEA8gwBAFANAQBwDQEAUQ0BAHENAQBSDQEAcg0BAFMNAQBzDQEAVA0BAHQNAQBVDQEAdQ0BAFYNAQB2DQEAVw0BAHcNAQBYDQEAeA0BAFkNAQB5DQEAWg0BAHoNAQBbDQEAew0BAFwNAQB8DQEAXQ0BAH0NAQBeDQEAfg0BAF8NAQB/DQEAYA0BAIANAQBhDQEAgQ0BAGINAQCCDQEAYw0BAIMNAQBkDQEAhA0BAGUNAQCFDQEAoBgBAMAYAQChGAEAwRgBAKIYAQDCGAEAoxgBAMMYAQCkGAEAxBgBAKUYAQDFGAEAphgBAMYYAQCnGAEAxxgBAKgYAQDIGAEAqRgBAMkYAQCqGAEAyhgBAKsYAQDLGAEArBgBAMwYAQCtGAEAzRgBAK4YAQDOGAEArxgBAM8YAQCwGAEA0BgBALEYAQDRGAEAshgBANIYAQCzGAEA0xgBALQYAQDUGAEAtRgBANUYAQC2GAEA1hgBALcYAQDXGAEAuBgBANgYAQC5GAEA2RgBALoYAQDaGAEAuxgBANsYAQC8GAEA3BgBAL0YAQDdGAEAvhgBAN4YAQC/GAEA3xgBAEBuAQBgbgEAQW4BAGFuAQBCbgEAYm4BAENuAQBjbgEARG4BAGRuAQBFbgEAZW4BAEZuAQBmbgEAR24BAGduAQBIbgEAaG4BAEluAQBpbgEASm4BAGpuAQBLbgEAa24BAExuAQBsbgEATW4BAG1uAQBObgEAbm4BAE9uAQBvbgEAUG4BAHBuAQBRbgEAcW4BAFJuAQBybgEAU24BAHNuAQBUbgEAdG4BAFVuAQB1bgEAVm4BAHZuAQBXbgEAd24BAFhuAQB4bgEAWW4BAHluAQBabgEAem4BAFtuAQB7bgEAXG4BAHxuAQBdbgEAfW4BAF5uAQB+bgEAX24BAH9uAQAA6QEAIukBAAHpAQAj6QEAAukBACTpAQAD6QEAJekBAATpAQAm6QEABekBACfpAQAG6QEAKOkBAAfpAQAp6QEACOkBACrpAQAJ6QEAK+kBAArpAQAs6QEAC+kBAC3pAQAM6QEALukBAA3pAQAv6QEADukBADDpAQAP6QEAMekBABDpAQAy6QEAEekBADPpAQAS6QEANOkBABPpAQA16QEAFOkBADbpAQAV6QEAN+kBABbpAQA46QEAF+kBADnpAQAY6QEAOukBABnpAQA76QEAGukBADzpAQAb6QEAPekBABzpAQA+6QEAHekBAD/pAQAe6QEAQOkBAB/pAQBB6QEAIOkBAELpAQAh6QEAQ+kBAABBzLDBAAsYAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAOBIBG5hbWUACglydXN0Lndhc20Bi0iUAQBRc2VyZGVfd2FzbV9iaW5kZ2VuOjpPYmplY3RFeHQ6OnNldDo6X193Ymdfc2V0XzNmMWQwYjk4NGVkMjcyZWQ6OmhmMmYxMWU5MjY1NGM5YzQ5AUFqc19zeXM6OkFycmF5OjpuZXc6Ol9fd2JnX25ld19lMTdkOWY0MzEwNWIwOGJlOjpoYjg0N2I5OWI5ZTQzN2RjZQJCanNfc3lzOjpPYmplY3Q6Om5ldzo6X193YmdfbmV3XzFhY2MwYjZlZWE4OWQwNDA6Omg2NWQ3YWI5NDFhMzRmYTEwA0Fqc19zeXM6OkFycmF5OjpzZXQ6Ol9fd2JnX3NldF9jMjEzYzg3MTg1OWQ2NTAwOjpoNzNkZWFjMjY5MDE1Y2NkMQRod2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2RlYnVnX3N0cmluZzo6X193YmdfX193YmluZGdlbl9kZWJ1Z19zdHJpbmdfZGY0N2ZmYjVlMzVlNjc2Mzo6aGQwYWRmYTk3OGY3ZWI1MTEFWndhc21fYmluZGdlbjo6X193YmluZGdlbl90aHJvdzo6X193YmdfX193YmluZGdlbl90aHJvd19iODU1NDQ1ZmY2YTk0Mjk1OjpoNjdmNDg3MDEzYzAxYjg3MAcYUmVmKFN0cmluZykgLT4gRXh0ZXJucmVmCDdhbGxvYzo6c3RyOjo8aW1wbCBzdHI+Ojp0b19sb3dlcmNhc2U6OmgyZTBiYzAyMzI1MDg0NTNjCTpkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjptYWxsb2M6OmhmZjk1OGY1M2JhZTYzM2UzCkBoYXNoYnJvd246OnJhdzo6UmF3VGFibGU8VCxBPjo6cmVzZXJ2ZV9yZWhhc2g6Omg1YTM2ZjdhM2Y4ZGRkMzk4CzFjb3JlOjpzdHI6OnNsaWNlX2Vycm9yX2ZhaWxfcnQ6OmhiYTI5NjFmNTRiNzUzYWU3DDNjb3JlOjpzdHI6OmNvdW50Ojpkb19jb3VudF9jaGFyczo6aGI2NzE3NGJiMzY1ZjQ0OGINKF9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcmRsX3JlYWxsb2MODWdldF9rZXlfdmFsdWUPNWNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6OmgzNmJlMTNjMDdhNjNmZTVjEEVjb3JlOjpjaGFyOjptZXRob2RzOjo8aW1wbCBjaGFyPjo6ZXNjYXBlX2RlYnVnX2V4dDo6aDU5NThmOGUyYTdjMmYwZDgROGRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmZyZWU6OmgzY2RkNjViNGE1NjgxNTAyEixjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6cGFkOjpoN2YxNThkMTM1NjgwOTM0NBM3c2VyZGVfd2FzbV9iaW5kZ2VuOjpzdGF0aWNfc3RyX3RvX2pzOjpoOTYzZmM2NmJmMTI5NTQ1ZRQjY29yZTo6Zm10Ojp3cml0ZTo6aDM5ZmVmMGM1NTQ2NTFmNzIVUzxjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpQYWRBZGFwdGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhkYTAxMjY1NGFhMGIzMmI1FhFnZXRfbW9kaWZpZXJfY29kZRdFY29yZTo6dW5pY29kZTo6dW5pY29kZV9kYXRhOjpjb252ZXJzaW9uczo6dG9fbG93ZXI6OmgwY2Y0MjRiMTE3ZjM0ZDA0GEFkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjpkaXNwb3NlX2NodW5rOjpoODFhOWVkZDIxOGEwZjA4ZhlRc3RkOjpzeXM6OnRocmVhZF9sb2NhbDo6bm9fdGhyZWFkczo6TGF6eVN0b3JhZ2U8VD46OmluaXRpYWxpemU6Omg1ODk5NDdjN2YyZjcwN2E2GjxkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjptZW1hbGlnbjo6aDFkODhiMDY4YWIyMWI0N2UbF19fZXh0ZXJucmVmX3RhYmxlX2FsbG9jHEBkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+Ojp1bmxpbmtfY2h1bms6OmhiZTBlNmY1ZjgzY2RhZWIxHUxjb3JlOjp1bmljb2RlOjp1bmljb2RlX2RhdGE6OmdyYXBoZW1lX2V4dGVuZDo6bG9va3VwX3Nsb3c6Omg2OGFjMDllOTYwYTBjZmU1HkZjb3JlOjp1bmljb2RlOjp1bmljb2RlX2RhdGE6OmNhc2VfaWdub3JhYmxlOjpsb29rdXA6Omg0YjA0M2JkZWI5Y2Q5MTQwHzJjb3JlOjp1bmljb2RlOjpwcmludGFibGU6OmNoZWNrOjpoNmYyZmRmYTEzMWM4ZGNiZCA4Y29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgdTMyPjo6X2ZtdDo6aDI4NWI3YzhlN2ViNWM2ZTIhPWNvcmU6OnVuaWNvZGU6OnVuaWNvZGVfZGF0YTo6Y2FzZWQ6Omxvb2t1cDo6aGEwNDcyYjVlOTc0YzY3ZWMiR2NvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1MzI+OjpmbXQ6OmgyOGE2ZTU1OTMzY2FmZDliI0ZkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjppbnNlcnRfbGFyZ2VfY2h1bms6OmhiZDM4NmZlZjIzOThmZDQ1JEo8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoOGMwMjQyOTBhYjNmYWY3MSV0PHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+Ojp0YWtlX2JveDo6aGQzYzlhODRlOWU1MDFjODkmUWFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoZGZlMWMwZThkZDIwZjQxZSdCY29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3R1cGxlX2ZpZWxkMV9maW5pc2g6OmhkY2MyNWUwNWUyY2M1NjNkKAxnZXRfa2V5X2NvZGUpN3N0ZDo6cGFuaWNraW5nOjpydXN0X3BhbmljX3dpdGhfaG9vazo6aDRmYTNkYWVhZDljNGUwYTcqUWFsbG9jOjpyYXdfdmVjOjpSYXdWZWNJbm5lcjxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoYmMwMWRiMWI3OWIzZDkxYys5Y29yZTo6dW5pY29kZTo6cHJpbnRhYmxlOjppc19wcmludGFibGU6Omg5YmMyNTFkNzZlOGI3NTBhLG88c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OkZvcm1hdFN0cmluZ1BheWxvYWQgYXMgY29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OmdldDo6aDA1NDM2MjRjNzk2OTAzMWYtPXdhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Ol86Omludm9rZTo6aDQwNmYxNTBkMjg4NWI5MTUuQzx3YXNtX2JpbmRnZW46OkpzVmFsdWUgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDcxYzU4YzFmZTU5NjkyYTUvQ3N0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjp7e2Nsb3N1cmV9fTo6aGQ2YzFiMmQ5MzkyMjMxYWMwLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDAxM2I4ZWRiZmYwZTBjZDIxLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aGMyMGIzMmU5NThjZTg1NDMyLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDYzM2YxYTI4ODgxYjAwZjgzMjxjaGFyIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0MjcxYTZmNDFkYWY1MmU2NGg8c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OkZvcm1hdFN0cmluZ1BheWxvYWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMjRkMDU4ZjViNDZiMTJjYzUuY29yZTo6cmVzdWx0Ojp1bndyYXBfZmFpbGVkOjpoYzlmMGNkNWYyY2IwNjE4NTYZX19leHRlcm5yZWZfdGFibGVfZGVhbGxvYzc2Y29yZTo6cGFuaWNraW5nOjpwYW5pY19ib3VuZHNfY2hlY2s6OmgwZGI0OGEyMjM5ZjdhYTRjOFJjb3JlOjpzbGljZTo6aW5kZXg6OnNsaWNlX2VuZF9pbmRleF9sZW5fZmFpbDo6ZG9fcGFuaWM6OnJ1bnRpbWU6Omg3YjIzYWNmN2U0ZmMzOTg5OVBjb3JlOjpzbGljZTo6aW5kZXg6OnNsaWNlX2luZGV4X29yZGVyX2ZhaWw6OmRvX3BhbmljOjpydW50aW1lOjpoMmI4N2FkM2VlNzNkN2ViZTo3c3RkOjphbGxvYzo6ZGVmYXVsdF9hbGxvY19lcnJvcl9ob29rOjpoMjRiMzAwNzU3MzU1ZDU1NzsoX19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6X19yZGxfZGVhbGxvYzxJPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoOTAxMzk3NTkwODM2YjdkNz01Y29yZTo6Y2VsbDo6cGFuaWNfYWxyZWFkeV9ib3Jyb3dlZDo6aDBlNzc1MjA4ZDcxMWMyYmI+Bm1lbWNtcD9IPGRsbWFsbG9jOjpzeXM6OlN5c3RlbSBhcyBkbG1hbGxvYzo6QWxsb2NhdG9yPjo6YWxsb2M6Omg3ZTkzMTkzYmI4MDRjZDdhQEFoYXNoYnJvd246OnJhdzo6RmFsbGliaWxpdHk6OmNhcGFjaXR5X292ZXJmbG93OjpoMDYyZjA1M2NlZjg5NDg5NkFUPGNvcmU6OmZtdDo6YnVpbGRlcnM6OlBhZEFkYXB0ZXIgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmhjMTBhMzYyYTQ5NjNiOTNiQjhzdGQ6OnBhbmlja2luZzo6cGFuaWNfY291bnQ6OmluY3JlYXNlOjpoNzU0ZDgxOTQ3MGEzOTUyMUNOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1MzI+OjpmbXQ6OmhlZDQ0ZWQzMmI3MmY5NGU1RHE8c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OlN0YXRpY1N0clBheWxvYWQgYXMgY29yZTo6cGFuaWM6OlBhbmljUGF5bG9hZD46OnRha2VfYm94OjpoMmFiMDRiM2NiMzhmYTQ2ZUUpY29yZTo6cGFuaWNraW5nOjpwYW5pYzo6aGFhMmRkYmRmMWVhNTY0MTdGQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6OndyaXRlX3ByZWZpeDo6aDdlMTM0NGQ4MzZiNTg2YzVHNGFsbG9jOjpyYXdfdmVjOjpjYXBhY2l0eV9vdmVyZmxvdzo6aDgxZWExZGJlN2M3NGQ3NjVISjxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTxJZHg+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg4MzRjYzVlNDJkMjY1MzA4SU48c2VyZGVfd2FzbV9iaW5kZ2VuOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDNiZDVmMGZlMTg5MzdmZDZKEV9fd2JpbmRnZW5fbWFsbG9jSyxfX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpydXN0X2JlZ2luX3Vud2luZEwtY29yZTo6cGFuaWNraW5nOjpwYW5pY19mbXQ6OmhkMzA1MmEzNjYyZDUwYzk1TRJfX3diaW5kZ2VuX3JlYWxsb2NOIWdldF9tb2RpZmllcl9jb2RlIG11bHRpdmFsdWUgc2hpbU89d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoMjM0MzliMTI0NWYxNDlhMlA9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNDRiMjU3MzdhM2NjZWY3NlE9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNGQyZWRlZTFiNTc0NjJkYlI9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNGU2ZTM5ZjNiNDdhYmYxNFM9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoNzY5Yzc2OTM3ZDA1YzllOFQ9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoN2Y4NGJjN2RkNDVjMzZjYlU9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoODBjYjQ5NTUyZDljNjVhOVY9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoOGI5NTQwODA2ZDYwMzZmOVc9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoZDlmMTQyNGM4MWI5YjdiM1hlY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpGb3JtYXRTdHJpbmdQYXlsb2FkPjo6aGQ5MDQ5NDI0NmUwODAzYWFZOWhhc2hicm93bjo6cmF3OjpGYWxsaWJpbGl0eTo6YWxsb2NfZXJyOjpoYWRkOTZlZWNiOTg1YjczOFo9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoODMxMGYwZmNjMDEyNzdmNFs9d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6Xzo6aW52b2tlOjpoYzY2MGRiYTgxZDIwMmZjNlxpPCZzZXJkZV93YXNtX2JpbmRnZW46OnNlcjo6U2VyaWFsaXplciBhcyBzZXJkZV9jb3JlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfdHVwbGU6OmgzMTZmYzBiYjBmOGI0MDI5XUJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6aGExZDBjODVhOWU5YTM3MWFeVmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpvcHRpb246Ok9wdGlvbjxhbGxvYzo6dmVjOjpWZWM8dTg+Pj46OmgxNWYyMDcyYmU5MGViOTJkXyZfX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3JkbF9hbGxvY2AvYWxsb2M6OnJhd192ZWM6OmhhbmRsZV9lcnJvcjo6aDI4YTE0YTAzZDE4ZTQyZTNhYHNlcmRlX3dhc21fYmluZGdlbjo6T2JqZWN0RXh0OjpzZXQ6Ol9fd2JnX3NldF8zZjFkMGI5ODRlZDI3MmVkOjpoZjJmMTFlOTI2NTRjOWM0OSBleHRlcm5yZWYgc2hpbWIjX19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6X19yZ19vb21jQ2NvcmU6OmFsbG9jOjpsYXlvdXQ6OkxheW91dDo6aXNfc2l6ZV9hbGlnbl92YWxpZDo6aGJlYTY5ZjA4NWJiMDFiY2VkTWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzZXJkZV93YXNtX2JpbmRnZW46OmVycm9yOjpFcnJvcj46OmhmMzkzNDdlNjU3NDFjZTViZSdSZWYoU3RyaW5nKSAtPiBFeHRlcm5yZWYgZXh0ZXJucmVmIHNoaW1mKV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcnVzdF9yZWFsbG9jZ3A8JnNlcmRlX3dhc21fYmluZGdlbjo6c2VyOjpTZXJpYWxpemVyIGFzIHNlcmRlX2NvcmU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV91bml0X3ZhcmlhbnQ6Omg5ZmZhMGUwNWM1ZjRhMTEwaGc8JnNlcmRlX3dhc21fYmluZGdlbjo6c2VyOjpTZXJpYWxpemVyIGFzIHNlcmRlX2NvcmU6OnNlcjo6U2VyaWFsaXplcj46OnNlcmlhbGl6ZV9zdHI6OmhiYzFhM2MyMjJiMjI4ODM5aQ9fX3diaW5kZ2VuX2ZyZWVqJV9fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06OnJ1c3RfcGFuaWNrMmNvcmU6OmZtdDo6Rm9ybWF0dGVyOjp3cml0ZV9zdHI6OmgyOTgxNmQ2MTBmNDY3M2VmbFBqc19zeXM6OkFycmF5OjpzZXQ6Ol9fd2JnX3NldF9jMjEzYzg3MTg1OWQ2NTAwOjpoNzNkZWFjMjY5MDE1Y2NkMSBleHRlcm5yZWYgc2hpbW0wPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiOTliZWY2OTA3ODE4YTU1bi5jb3JlOjpzdHI6OnNsaWNlX2Vycm9yX2ZhaWw6Omg3ZWYyZmM1YmY4ODU0NTBlb1Bqc19zeXM6OkFycmF5OjpuZXc6Ol9fd2JnX25ld19lMTdkOWY0MzEwNWIwOGJlOjpoYjg0N2I5OWI5ZTQzN2RjZSBleHRlcm5yZWYgc2hpbXBRanNfc3lzOjpPYmplY3Q6Om5ldzo6X193YmdfbmV3XzFhY2MwYjZlZWE4OWQwNDA6Omg2NWQ3YWI5NDFhMzRmYTEwIGV4dGVybnJlZiBzaGltcRxnZXRfa2V5X3ZhbHVlIGV4dGVybnJlZiBzaGltcidfX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3RfYWxsb2Nzajwmc2VyZGVfd2FzbV9iaW5kZ2VuOjpzZXI6OlNlcmlhbGl6ZXIgYXMgc2VyZGVfY29yZTo6c2VyOjpTZXJpYWxpemVyPjo6c2VyaWFsaXplX3N0cnVjdDo6aDE5OTc1MDUwZTY0MzViNDB0RTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTg1ZTFiOGRmMTcyNzg0NXUxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoMTUyZGEyNTFiOTRkZTRmMHYxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoZmNiMTkxZTZmMjA1NmU2ZHdsPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+OjpnZXQ6OmgzYmM3MWNiZjhhZmNhYjgweGU8c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OlN0YXRpY1N0clBheWxvYWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoM2FkNTM1YjYzMDJkYjhhMHkyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk4ZjIxZTVlY2UwNzMyNTl6G19fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZnspX19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6X19ydXN0X2RlYWxsb2N8NXNlcmRlX3dhc21fYmluZGdlbjo6T2JqZWN0RXh0OjpzZXQ6Omg4NmY5OTdlMDI1MTZiMjUwfSVqc19zeXM6OkFycmF5OjpzZXQ6OmhlMTI1ZTMyMDc1OGZkMjk3fj9jb3JlOjpzbGljZTo6aW5kZXg6OnNsaWNlX2VuZF9pbmRleF9sZW5fZmFpbDo6aDQ3YzczZjc4OGMyZTcxMWZ/PWNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2VfaW5kZXhfb3JkZXJfZmFpbDo6aDVmNGM1MjE4ZGY5ODRkM2OAAS5jb3JlOjpvcHRpb246OnVud3JhcF9mYWlsZWQ6Omg3ZjA0Y2QxNTE1OTVkMGU5gQEwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgzZGNiOGM5NmUwMTY1ZTg0ggE1X19ydXN0Y1s1MjI0ZTZiODFjZDgyYThmXTo6X19ydXN0X2FsbG9jX2Vycm9yX2hhbmRsZXKDASp3YXNtX2JpbmRnZW46OnRocm93X3N0cjo6aDJlOGQ5MWVlOTUwMGM2M2KEAS5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg5OGJlMzA2Y2ZjNzQ2ZjQ3hQFvPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpTdGF0aWNTdHJQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpQYW5pY1BheWxvYWQ+Ojphc19zdHI6Omg0NTgzMjhmNzRmMDZhOWVhhgEzYWxsb2M6OmFsbG9jOjpoYW5kbGVfYWxsb2NfZXJyb3I6OmhiYzcyMWU4ZGQzYjZmZmNlhwFKPGNvcmU6OmNlbGw6OkJvcnJvd011dEVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGZiOGVjMDcyN2JhM2MwMTKIAS5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6OmhiZWY1ZTdkNDY1ZmU2Y2NliQEzPHN0ciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzZTYxYzJjMjUzNGQ0ZGU5igF3d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2RlYnVnX3N0cmluZzo6X193YmdfX193YmluZGdlbl9kZWJ1Z19zdHJpbmdfZGY0N2ZmYjVlMzVlNjc2Mzo6aGQwYWRmYTk3OGY3ZWI1MTEgZXh0ZXJucmVmIHNoaW2LAU08anNfc3lzOjpKc1N0cmluZyBhcyBjb3JlOjpzdHI6OnRyYWl0czo6RnJvbVN0cj46OmZyb21fc3RyOjpoMWI1ZmY3ZjE5M2M0M2NkNowBMXdhc21fYmluZGdlbjo6X193YmluZGdlbl90aHJvdzo6aDcwYzRiZGMwOGIzZjQwZmaNATRjb3JlOjpwYW5pYzo6UGFuaWNQYXlsb2FkOjphc19zdHI6OmgwNjg0NzFmODU2NTllOGQ0jgFCc3RkOjpzeXM6OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6Omg1OWQ2YzQwMmU0MGExNjg1jwE1d2FzbV9iaW5kZ2VuOjpfX3J0OjptYWxsb2NfZmFpbHVyZTo6aDQ5MjUxMTcyZWRhN2FlODCQAS1fX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3Rfc3RhcnRfcGFuaWORAT5fX3J1c3RjWzUyMjRlNmI4MWNkODJhOGZdOjpfX3J1c3Rfbm9fYWxsb2Nfc2hpbV9pc191bnN0YWJsZV92MpIBJWpzX3N5czo6QXJyYXk6Om5ldzo6aDhlYzE2YmVkZWZiZTU3YjOTASZqc19zeXM6Ok9iamVjdDo6bmV3OjpoZGQ2ODk0YjI1ZTEzOTVkNpQBJ19fcnVzdGNbNTIyNGU2YjgxY2Q4MmE4Zl06Ol9fcnVzdF9hYm9ydAUYAQEVX193YmluZGdlbl9leHRlcm5yZWZzBxIBAA9fX3N0YWNrX3BvaW50ZXIJEQIABy5yb2RhdGEBBS5kYXRhAHAJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjg5LjAgKDI5NDgzODgzZSAyMDI1LTA4LTA0KQZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbgcwLjIuMTA1AJQBD3RhcmdldF9mZWF0dXJlcwgrC2J1bGstbWVtb3J5Kw9idWxrLW1lbW9yeS1vcHQrFmNhbGwtaW5kaXJlY3Qtb3ZlcmxvbmcrCm11bHRpdmFsdWUrD211dGFibGUtZ2xvYmFscysTbm9udHJhcHBpbmctZnB0b2ludCsPcmVmZXJlbmNlLXR5cGVzKwhzaWduLWV4dA==",self.location));const B=x();(typeof A=="string"||typeof Request=="function"&&A instanceof Request||typeof URL=="function"&&A instanceof URL)&&(A=fetch(A));const{instance:Q,module:g}=await W(await A,B);return K(Q,g)}let U=null,R=!1;async function r(){try{return R||(U=await m(),R=!0),U}catch(A){return console.error("Error initializing WASM:",A),null}}function H(){return R}function b(A){return Array.from(new Set(A))}async function e(){try{await r();}catch(A){console.warn("Failed to initialize WASM, falling back to JS implementation:",A);}}class Z{constructor(B="global",Q=document,g="keydown"){if(g!=="keydown"&&g!=="keyup")throw new Error(g,"\u4E8B\u4EF6\u7C7B\u578B\u4EC5\u652F\u6301keydown\u3001keyup");this.eventType=g,this.namespace=B,this.selection=n(Q),this.bindedKeys=[],this.bindings=this.bindings.bind(this),this.capture=this.capture.bind(this),this.bubble=this.bubble.bind(this),this.init();}init(){try{e();}catch(B){console.warn("Failed to initialize WASM, falling back to JS implementation:",B);}return this.selection.on(`${this.eventType}.capture.${this.namespace}`,this.capture,!0),this.selection.on(`${this.eventType}.bubble.${this.namespace}`,this.bubble,!1),this}bindings(B,Q){var g=!1,C=Object.keys(this.bindedKeys).map((function(N){return this.bindedKeys[N]}).bind(this)),E,I;for(E=0;E<C.length;E++)if(I=C[E],!!I.event.modifiers.shiftKey&&!!I.capture===Q&&i(B,I,!0)){I.callback(B),g=!0,B.preventDefault();break}if(g)return;for(E=0;E<C.length;E++)if(I=C[E],!I.event.modifiers.shiftKey&&!!I.capture===Q&&i(B,I,!1)){I.callback(B),B.preventDefault();break}function i(N,w,G){var c=N,Y=!1,t=!0;return c.key!==void 0&&(t=c.key.charCodeAt(0)>255,Y=!0,w.event.key===void 0?Y=!1:Array.isArray(w.event.key)?w.event.key.map(function(O){return O.toLowerCase()}).indexOf(c.key.toLowerCase())===-1&&(Y=!1):c.key.toLowerCase()!==w.event.key.toLowerCase()&&(Y=!1)),!Y&&(t||w.event.modifiers.shiftKey)&&(Y=c.keyCode===w.event.keyCode),!(!Y||!(c.ctrlKey&&c.altKey)&&(c.ctrlKey!==w.event.modifiers.ctrlKey||c.altKey!==w.event.modifiers.altKey)||c.metaKey!==w.event.modifiers.metaKey||G&&c.shiftKey!==w.event.modifiers.shiftKey)}}async capture(B){await e(),this.bindings(B,!0);}async bubble(B){await e();var Q=n(B.target).node().tagName;Q==="INPUT"||Q==="SELECT"||Q==="TEXTAREA"||String(B.target.getAttribute("contenteditable"))!=="true"&&this.bindings(B,!1);}on(B,Q,g){if(typeof Q!="function")return this.off(B,g);const C=()=>{var Y;for(var E=b([].concat(B)),I=0;I<E.length;I++){var i=E[I]+(g?"-capture":"-bubble"),N={id:i,capture:g,callback:Q,event:{key:void 0,keyCode:0,modifiers:{shiftKey:!1,ctrlKey:!1,altKey:!1,metaKey:!1}}};this.bindedKeys[i]&&console.warn('warning: duplicate keybinding for "'+i+'"'),this.bindedKeys[i]=N;for(var w=E[I].toLowerCase().match(/(?:(?:[^+⇧⌃⌥⌘])+|[⇧⌃⌥⌘]|\+\+|^\+$)/g),G=0;G<w.length;G++)if(w[G]==="++"&&(w[G]="+"),d(w[G])){var c=d(w[G]);N.event.modifiers[c]=!0;}else N.event.key=((Y=S(w[G]))==null?void 0:Y.value)||w[G],N.event.keyCode=p(w[G])||0;}};if(H())C();else {const E=setInterval(()=>{H()&&(clearInterval(E),C());},200);}return this}unbind(){return this.selection.on(`${this.eventType}.capture.${this.namespace}`,null),this.selection.on(`${this.eventType}.bubble.${this.namespace}`,null),this}clear(){return this.bindedKeys={},this}off(B,Q){for(var g=b([].concat(B)),C=0;C<g.length;C++){var E=g[C]+(Q===!0?"-capture":"-bubble");delete this.bindedKeys[E];}return this}}new Z("global",document,"keydown");new Z("global",document,"keyup");
|
|
1016
|
-
|
|
1017
|
-
// 样式注入
|
|
1018
|
-
var STYLES = "\n.ae-d2-container {\n position: relative;\n width: 1000px;\n height: 600px;\n background: #fff;\n margin: auto;\n}\n\n.ae-d2-svg {\n width: 100%;\n height: 100%;\n}\n\n.ae-arrow-path {\n fill: none;\n stroke: #2b8cff;\n stroke-width: 8;\n stroke-linecap: round;\n stroke-linejoin: round;\n cursor: pointer;\n}\n\n.ae-arrow-path:hover {\n stroke: #00aaff;\n}\n\n.ae-transform-box {\n fill: none;\n stroke: #00aaff;\n stroke-width: 2;\n}\n";
|
|
1019
|
-
|
|
1020
|
-
// 注入样式
|
|
1021
|
-
if (typeof document !== 'undefined') {
|
|
1022
|
-
var styleEl = document.createElement('style');
|
|
1023
|
-
styleEl.textContent = STYLES;
|
|
1024
|
-
document.head.appendChild(styleEl);
|
|
1025
|
-
}
|
|
1026
|
-
var ArrowEditor2 = /*#__PURE__*/function () {
|
|
1027
|
-
function ArrowEditor2(container) {
|
|
1028
|
-
_classCallCheck(this, ArrowEditor2);
|
|
1029
|
-
this.container = typeof container === 'string' ? document.querySelector(container) : container;
|
|
1030
|
-
this.svg = null;
|
|
1031
|
-
this.arrows = [];
|
|
1032
|
-
this.drawing = false;
|
|
1033
|
-
this.current = null;
|
|
1034
|
-
this.selected = null;
|
|
1035
|
-
this.mode = null;
|
|
1036
|
-
this.lastClickTime = 0;
|
|
1037
|
-
this.lastClickPos = null;
|
|
1038
|
-
this.isCurveMode = false;
|
|
1039
|
-
this._shouldBlockClick = false;
|
|
1040
|
-
this._defaultColor = '#2b8cff';
|
|
1041
|
-
this._createSVG();
|
|
1042
|
-
this._initKeybindings();
|
|
1043
|
-
this._initEvents();
|
|
1044
|
-
}
|
|
1045
|
-
return _createClass(ArrowEditor2, [{
|
|
1046
|
-
key: "_createSVG",
|
|
1047
|
-
value: function _createSVG() {
|
|
1048
|
-
// 创建 SVG 元素
|
|
1049
|
-
this.svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
1050
|
-
this.svg.setAttribute('class', 'ae-d2-svg');
|
|
1051
|
-
this.container.appendChild(this.svg);
|
|
1052
|
-
|
|
1053
|
-
// 创建 defs 和 marker
|
|
1054
|
-
var defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');
|
|
1055
|
-
this.svg.appendChild(defs);
|
|
1056
|
-
var marker = document.createElementNS('http://www.w3.org/2000/svg', 'marker');
|
|
1057
|
-
marker.setAttribute('id', 'ae-arrowhead');
|
|
1058
|
-
marker.setAttribute('markerWidth', '10');
|
|
1059
|
-
marker.setAttribute('markerHeight', '10');
|
|
1060
|
-
marker.setAttribute('refX', '9');
|
|
1061
|
-
marker.setAttribute('refY', '5');
|
|
1062
|
-
marker.setAttribute('orient', 'auto');
|
|
1063
|
-
var polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');
|
|
1064
|
-
polygon.setAttribute('points', '0,0 10,5 0,10 2,5');
|
|
1065
|
-
polygon.setAttribute('fill', this._defaultColor);
|
|
1066
|
-
marker.appendChild(polygon);
|
|
1067
|
-
defs.appendChild(marker);
|
|
1068
|
-
}
|
|
1069
|
-
}, {
|
|
1070
|
-
key: "_initKeybindings",
|
|
1071
|
-
value: function _initKeybindings() {
|
|
1072
|
-
var _this = this;
|
|
1073
|
-
// 创建快捷键实例,绑定到 container 上
|
|
1074
|
-
this._kb = new Z('arrow-editor');
|
|
1075
|
-
|
|
1076
|
-
// Enter: 完成绘制
|
|
1077
|
-
this._kb.on('enter', function () {
|
|
1078
|
-
_this._handleEnter();
|
|
1079
|
-
});
|
|
1080
|
-
|
|
1081
|
-
// Esc: 结束绘制、取消选中
|
|
1082
|
-
this._kb.on('esc', function () {
|
|
1083
|
-
_this._handleEsc();
|
|
1084
|
-
});
|
|
1085
|
-
}
|
|
1086
|
-
}, {
|
|
1087
|
-
key: "_initEvents",
|
|
1088
|
-
value: function _initEvents() {
|
|
1089
|
-
var _this2 = this;
|
|
1090
|
-
// 曲线模式快捷键(Ctrl/Shift)
|
|
1091
|
-
document.addEventListener('keydown', function (e) {
|
|
1092
|
-
if (e.key === 'Control' || e.key === 'Shift') {
|
|
1093
|
-
_this2.isCurveMode = true;
|
|
1094
|
-
}
|
|
1095
|
-
});
|
|
1096
|
-
document.addEventListener('keyup', function (e) {
|
|
1097
|
-
if (e.key === 'Control' || e.key === 'Shift') {
|
|
1098
|
-
_this2.isCurveMode = false;
|
|
1099
|
-
}
|
|
1100
|
-
});
|
|
1101
|
-
this.container.onclick = function (e) {
|
|
1102
|
-
var p = _this2._mousePos(e);
|
|
1103
|
-
_this2._handleClick(p);
|
|
1104
|
-
};
|
|
1105
|
-
this.container.onmousemove = function (e) {
|
|
1106
|
-
var p = _this2._mousePos(e);
|
|
1107
|
-
_this2._handleMouseMove(e, p);
|
|
1108
|
-
};
|
|
1109
|
-
this.container.onmousedown = function () {
|
|
1110
|
-
if (_this2.selected) {
|
|
1111
|
-
_this2.mode = 'move';
|
|
1112
|
-
}
|
|
1113
|
-
};
|
|
1114
|
-
this.container.onmouseup = function () {
|
|
1115
|
-
_this2.mode = null;
|
|
1116
|
-
};
|
|
1117
|
-
}
|
|
1118
|
-
}, {
|
|
1119
|
-
key: "_mousePos",
|
|
1120
|
-
value: function _mousePos(e) {
|
|
1121
|
-
var r = this.container.getBoundingClientRect();
|
|
1122
|
-
return {
|
|
1123
|
-
x: e.clientX - r.left,
|
|
1124
|
-
y: e.clientY - r.top
|
|
1125
|
-
};
|
|
1126
|
-
}
|
|
1127
|
-
}, {
|
|
1128
|
-
key: "_generatePath",
|
|
1129
|
-
value: function _generatePath(pts, isCurve) {
|
|
1130
|
-
if (pts.length < 2) return '';
|
|
1131
|
-
if (!isCurve) {
|
|
1132
|
-
var _d = "M ".concat(pts[0].x, " ").concat(pts[0].y);
|
|
1133
|
-
for (var i = 1; i < pts.length; i++) {
|
|
1134
|
-
_d += " L ".concat(pts[i].x, " ").concat(pts[i].y);
|
|
1135
|
-
}
|
|
1136
|
-
return _d;
|
|
1137
|
-
}
|
|
1138
|
-
var d = "M ".concat(pts[0].x, " ").concat(pts[0].y);
|
|
1139
|
-
for (var _i = 1; _i < pts.length - 1; _i++) {
|
|
1140
|
-
var prev = pts[_i - 1];
|
|
1141
|
-
var curr = pts[_i];
|
|
1142
|
-
var next = pts[_i + 1];
|
|
1143
|
-
var midPrevX = (prev.x + curr.x) / 2;
|
|
1144
|
-
var midPrevY = (prev.y + curr.y) / 2;
|
|
1145
|
-
var midNextX = (curr.x + next.x) / 2;
|
|
1146
|
-
var midNextY = (curr.y + next.y) / 2;
|
|
1147
|
-
d += " L ".concat(midPrevX, " ").concat(midPrevY);
|
|
1148
|
-
d += " Q ".concat(curr.x, " ").concat(curr.y, " ").concat(midNextX, " ").concat(midNextY);
|
|
1149
|
-
}
|
|
1150
|
-
var last = pts[pts.length - 1];
|
|
1151
|
-
d += " L ".concat(last.x, " ").concat(last.y);
|
|
1152
|
-
return d;
|
|
1153
|
-
}
|
|
1154
|
-
}, {
|
|
1155
|
-
key: "_generateArrowHead",
|
|
1156
|
-
value: function _generateArrowHead(pts) {
|
|
1157
|
-
if (pts.length < 2) return '';
|
|
1158
|
-
var last = pts[pts.length - 1];
|
|
1159
|
-
var prev = pts[pts.length - 2];
|
|
1160
|
-
if (pts.length >= 3) {
|
|
1161
|
-
var dist = Math.hypot(last.x - prev.x, last.y - prev.y);
|
|
1162
|
-
if (dist < 5) {
|
|
1163
|
-
prev = pts[pts.length - 3];
|
|
1164
|
-
}
|
|
1165
|
-
}
|
|
1166
|
-
var dx = last.x - prev.x;
|
|
1167
|
-
var dy = last.y - prev.y;
|
|
1168
|
-
var len = Math.hypot(dx, dy);
|
|
1169
|
-
if (len < 1) return '';
|
|
1170
|
-
var ux = dx / len;
|
|
1171
|
-
var uy = dy / len;
|
|
1172
|
-
var notchX = last.x;
|
|
1173
|
-
var notchY = last.y;
|
|
1174
|
-
var baseLen = 40;
|
|
1175
|
-
var baseWidth = 20;
|
|
1176
|
-
var notchLen = 20;
|
|
1177
|
-
var tipX = last.x + ux * notchLen;
|
|
1178
|
-
var tipY = last.y + uy * notchLen;
|
|
1179
|
-
var baseX = last.x - ux * (baseLen - notchLen);
|
|
1180
|
-
var baseY = last.y - uy * (baseLen - notchLen);
|
|
1181
|
-
var px = -uy;
|
|
1182
|
-
var py = ux;
|
|
1183
|
-
var leftX = baseX + px * baseWidth;
|
|
1184
|
-
var leftY = baseY + py * baseWidth;
|
|
1185
|
-
var rightX = baseX - px * baseWidth;
|
|
1186
|
-
var rightY = baseY - py * baseWidth;
|
|
1187
|
-
return "M ".concat(tipX, " ").concat(tipY, " L ").concat(leftX, " ").concat(leftY, " L ").concat(notchX, " ").concat(notchY, " L ").concat(rightX, " ").concat(rightY, " Z");
|
|
1188
|
-
}
|
|
1189
|
-
}, {
|
|
1190
|
-
key: "_createArrowGroup",
|
|
1191
|
-
value: function _createArrowGroup(arrow, index) {
|
|
1192
|
-
var g = document.createElementNS('http://www.w3.org/2000/svg', 'g');
|
|
1193
|
-
g.setAttribute('data-index', index);
|
|
1194
|
-
var color = arrow.color || this._defaultColor;
|
|
1195
|
-
var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
1196
|
-
path.setAttribute('class', 'ae-arrow-path');
|
|
1197
|
-
path.setAttribute('stroke', color);
|
|
1198
|
-
path.setAttribute('d', this._generatePath(arrow.points, arrow.isCurve || false));
|
|
1199
|
-
g.appendChild(path);
|
|
1200
|
-
var arrowHead = document.createElementNS('http://www.w3.org/2000/svg', 'path');
|
|
1201
|
-
arrowHead.setAttribute('fill', color);
|
|
1202
|
-
arrowHead.setAttribute('d', this._generateArrowHead(arrow.points));
|
|
1203
|
-
g.appendChild(arrowHead);
|
|
1204
|
-
if (arrow === this.selected) {
|
|
1205
|
-
var p = arrow.points[0];
|
|
1206
|
-
var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
|
|
1207
|
-
rect.setAttribute('class', 'ae-transform-box');
|
|
1208
|
-
rect.setAttribute('x', p.x - 40);
|
|
1209
|
-
rect.setAttribute('y', p.y - 40);
|
|
1210
|
-
rect.setAttribute('width', 80);
|
|
1211
|
-
rect.setAttribute('height', 80);
|
|
1212
|
-
g.appendChild(rect);
|
|
1213
|
-
}
|
|
1214
|
-
return g;
|
|
1215
|
-
}
|
|
1216
|
-
}, {
|
|
1217
|
-
key: "render",
|
|
1218
|
-
value: function render() {
|
|
1219
|
-
var _this3 = this;
|
|
1220
|
-
this.svg.querySelectorAll('g').forEach(function (g) {
|
|
1221
|
-
return g.remove();
|
|
1222
|
-
});
|
|
1223
|
-
this.arrows.forEach(function (arrow, index) {
|
|
1224
|
-
var g = _this3._createArrowGroup(arrow, index);
|
|
1225
|
-
_this3.svg.appendChild(g);
|
|
1226
|
-
});
|
|
1227
|
-
if (this.current) {
|
|
1228
|
-
var g = this._createArrowGroup(this.current, this.arrows.length);
|
|
1229
|
-
this.svg.appendChild(g);
|
|
1230
|
-
}
|
|
1231
|
-
}
|
|
1232
|
-
}, {
|
|
1233
|
-
key: "_isDoubleClick",
|
|
1234
|
-
value: function _isDoubleClick(p) {
|
|
1235
|
-
var now = Date.now();
|
|
1236
|
-
var dt = now - this.lastClickTime;
|
|
1237
|
-
this.lastClickTime = now;
|
|
1238
|
-
if (dt < 300 && this.lastClickPos && Math.hypot(p.x - this.lastClickPos.x, p.y - this.lastClickPos.y) < 10) {
|
|
1239
|
-
this.lastClickPos = null;
|
|
1240
|
-
return true;
|
|
1241
|
-
}
|
|
1242
|
-
this.lastClickPos = p;
|
|
1243
|
-
return false;
|
|
1244
|
-
}
|
|
1245
|
-
}, {
|
|
1246
|
-
key: "_handleClick",
|
|
1247
|
-
value: function _handleClick(p) {
|
|
1248
|
-
// 如果刚才有拖拽,阻止点击事件
|
|
1249
|
-
if (this._shouldBlockClick) {
|
|
1250
|
-
this._shouldBlockClick = false;
|
|
1251
|
-
return;
|
|
1252
|
-
}
|
|
1253
|
-
if (this._isDoubleClick(p)) {
|
|
1254
|
-
if (this.drawing && this.current && this.current.points.length >= 2) {
|
|
1255
|
-
this.drawing = false;
|
|
1256
|
-
this.current.isCurve = this.isCurveMode;
|
|
1257
|
-
this.arrows.push(this.current);
|
|
1258
|
-
this.current = null;
|
|
1259
|
-
this.render();
|
|
1260
|
-
}
|
|
1261
|
-
return;
|
|
1262
|
-
}
|
|
1263
|
-
if (!this.drawing) {
|
|
1264
|
-
var _iterator = _createForOfIteratorHelper(this.arrows),
|
|
1265
|
-
_step;
|
|
1266
|
-
try {
|
|
1267
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
1268
|
-
var a = _step.value;
|
|
1269
|
-
if (this._hitArrow(a, p)) {
|
|
1270
|
-
this.selected = a;
|
|
1271
|
-
this.render();
|
|
1272
|
-
return;
|
|
1273
|
-
}
|
|
1274
|
-
}
|
|
1275
|
-
|
|
1276
|
-
// 点击空白处,取消选中
|
|
1277
|
-
} catch (err) {
|
|
1278
|
-
_iterator.e(err);
|
|
1279
|
-
} finally {
|
|
1280
|
-
_iterator.f();
|
|
1281
|
-
}
|
|
1282
|
-
this.selected = null;
|
|
1283
|
-
this.drawing = true;
|
|
1284
|
-
this.current = {
|
|
1285
|
-
points: [p, p],
|
|
1286
|
-
isCurve: false,
|
|
1287
|
-
color: this._defaultColor
|
|
1288
|
-
};
|
|
1289
|
-
} else {
|
|
1290
|
-
this.current.points.push(p);
|
|
1291
|
-
}
|
|
1292
|
-
this.render();
|
|
1293
|
-
}
|
|
1294
|
-
}, {
|
|
1295
|
-
key: "_handleEnter",
|
|
1296
|
-
value: function _handleEnter() {
|
|
1297
|
-
// 正在绘制时,按 Enter 完成绘制
|
|
1298
|
-
if (this.drawing && this.current && this.current.points.length >= 2) {
|
|
1299
|
-
this.drawing = false;
|
|
1300
|
-
this.current.isCurve = this.isCurveMode;
|
|
1301
|
-
this.arrows.push(this.current);
|
|
1302
|
-
this.current = null;
|
|
1303
|
-
this.render();
|
|
1304
|
-
}
|
|
1305
|
-
}
|
|
1306
|
-
}, {
|
|
1307
|
-
key: "_handleEsc",
|
|
1308
|
-
value: function _handleEsc() {
|
|
1309
|
-
// 按 Esc: 结束绘制、取消选中
|
|
1310
|
-
if (this.drawing) {
|
|
1311
|
-
this.drawing = false;
|
|
1312
|
-
this.current = null;
|
|
1313
|
-
}
|
|
1314
|
-
if (this.selected) {
|
|
1315
|
-
this.selected = null;
|
|
1316
|
-
}
|
|
1317
|
-
this.render();
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
|
-
// 删除选中的箭头
|
|
1321
|
-
}, {
|
|
1322
|
-
key: "deleteSelected",
|
|
1323
|
-
value: function deleteSelected() {
|
|
1324
|
-
var _this4 = this;
|
|
1325
|
-
if (this.selected) {
|
|
1326
|
-
this.arrows = this.arrows.filter(function (a) {
|
|
1327
|
-
return a !== _this4.selected;
|
|
1328
|
-
});
|
|
1329
|
-
this.selected = null;
|
|
1330
|
-
this._hideToolbar();
|
|
1331
|
-
this.render();
|
|
1332
|
-
}
|
|
1333
|
-
}
|
|
1334
|
-
}, {
|
|
1335
|
-
key: "_handleMouseMove",
|
|
1336
|
-
value: function _handleMouseMove(e, p) {
|
|
1337
|
-
if (this.drawing) {
|
|
1338
|
-
this.current.points[this.current.points.length - 1] = p;
|
|
1339
|
-
this.render();
|
|
1340
|
-
}
|
|
1341
|
-
if (this.selected && this.mode === 'move') {
|
|
1342
|
-
var dx = e.movementX;
|
|
1343
|
-
var dy = e.movementY;
|
|
1344
|
-
|
|
1345
|
-
// 如果有移动,标记需要阻止点击
|
|
1346
|
-
if (dx !== 0 || dy !== 0) {
|
|
1347
|
-
this._shouldBlockClick = true;
|
|
1348
|
-
}
|
|
1349
|
-
this.selected.points.forEach(function (pt) {
|
|
1350
|
-
pt.x += dx;
|
|
1351
|
-
pt.y += dy;
|
|
1352
|
-
});
|
|
1353
|
-
this.render();
|
|
1354
|
-
}
|
|
1355
|
-
}
|
|
1356
|
-
}, {
|
|
1357
|
-
key: "_hitArrow",
|
|
1358
|
-
value: function _hitArrow(a, p) {
|
|
1359
|
-
for (var i = 0; i < a.points.length - 1; i++) {
|
|
1360
|
-
if (this._dist(p, a.points[i], a.points[i + 1]) < 15) return true;
|
|
1361
|
-
}
|
|
1362
|
-
return false;
|
|
1363
|
-
}
|
|
1364
|
-
}, {
|
|
1365
|
-
key: "_dist",
|
|
1366
|
-
value: function _dist(p, a, b) {
|
|
1367
|
-
var dx = b.x - a.x;
|
|
1368
|
-
var dy = b.y - a.y;
|
|
1369
|
-
var t = ((p.x - a.x) * dx + (p.y - a.y) * dy) / (dx * dx + dy * dy);
|
|
1370
|
-
var tt = Math.max(0, Math.min(1, t));
|
|
1371
|
-
var px = a.x + tt * dx;
|
|
1372
|
-
var py = a.y + tt * dy;
|
|
1373
|
-
return Math.hypot(p.x - px, p.y - py);
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
// 获取所有箭头数据
|
|
1377
|
-
}, {
|
|
1378
|
-
key: "getData",
|
|
1379
|
-
value: function getData() {
|
|
1380
|
-
return this.arrows.map(function (arrow) {
|
|
1381
|
-
return {
|
|
1382
|
-
points: arrow.points,
|
|
1383
|
-
isCurve: arrow.isCurve
|
|
1384
|
-
};
|
|
1385
|
-
});
|
|
1386
|
-
}
|
|
1387
|
-
|
|
1388
|
-
// 设置箭头数据
|
|
1389
|
-
}, {
|
|
1390
|
-
key: "setData",
|
|
1391
|
-
value: function setData(data) {
|
|
1392
|
-
this.arrows = data.map(function (item) {
|
|
1393
|
-
return {
|
|
1394
|
-
points: item.points,
|
|
1395
|
-
isCurve: item.isCurve || false
|
|
1396
|
-
};
|
|
1397
|
-
});
|
|
1398
|
-
this.render();
|
|
1399
|
-
}
|
|
1400
|
-
|
|
1401
|
-
// 清空所有箭头
|
|
1402
|
-
}, {
|
|
1403
|
-
key: "clear",
|
|
1404
|
-
value: function clear() {
|
|
1405
|
-
this.arrows = [];
|
|
1406
|
-
this.drawing = false;
|
|
1407
|
-
this.current = null;
|
|
1408
|
-
this.selected = null;
|
|
1409
|
-
this.render();
|
|
1410
|
-
}
|
|
1411
|
-
}]);
|
|
1412
|
-
}();
|
|
1413
|
-
|
|
1414
|
-
exports.ArrowEditor2 = ArrowEditor2;
|
|
122
|
+
.ae-toolbar-value {
|
|
123
|
+
font-size: 10px;
|
|
124
|
+
color: #999;
|
|
125
|
+
text-align: right;
|
|
126
|
+
}
|
|
127
|
+
`;if(typeof document<"u"){const v=document.createElement("style");v.textContent=S,document.head.appendChild(v)}class M{constructor(t){this.container=typeof t=="string"?document.querySelector(t):t,this.svg=null,this.arrows=[],this.drawing=!1,this.current=null,this.selected=null,this.mode=null,this.lastClickTime=0,this.lastClickPos=null,this._shouldBlockClick=!1,this._defaultColor="#2b8cff",this._transformMode=null,this._transformHandle=null,this._transformStartPos=null,this._transformStartPoints=null,this._transformCenter=null,this._transformStartAngle=null,this._rotationOffset=0,this._toolbar=null,this._strokeWidth=8,this._curveRate=0,this._createSVG(),this._initKeybindings(),this._initEvents()}_createSVG(){this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.setAttribute("class","ae-d2-svg"),this.container.appendChild(this.svg);const t=document.createElementNS("http://www.w3.org/2000/svg","defs");this.svg.appendChild(t);const e=document.createElementNS("http://www.w3.org/2000/svg","marker");e.setAttribute("id","ae-arrowhead"),e.setAttribute("markerWidth","10"),e.setAttribute("markerHeight","10"),e.setAttribute("refX","9"),e.setAttribute("refY","5"),e.setAttribute("orient","auto");const o=document.createElementNS("http://www.w3.org/2000/svg","polygon");o.setAttribute("points","0,0 10,5 0,10 2,5"),o.setAttribute("fill",this._defaultColor),e.appendChild(o),t.appendChild(e)}_createToolbar(){this._toolbar&&this._toolbar.remove(),this._toolbar=document.createElement("div"),this._toolbar.className="ae-toolbar";const t=this.selected.color||this._defaultColor,e=this.selected.strokeWidth||this._strokeWidth,o=this.selected.curveRate??this.selected.cornerRoundness??0;this._toolbar.innerHTML=`
|
|
128
|
+
<div class="ae-toolbar-drag-handle">:::</div>
|
|
129
|
+
<div class="ae-toolbar-item">
|
|
130
|
+
<span class="ae-toolbar-label">颜色</span>
|
|
131
|
+
<input type="color" class="ae-color-input" value="${t}" />
|
|
132
|
+
</div>
|
|
133
|
+
<div class="ae-toolbar-item">
|
|
134
|
+
<span class="ae-toolbar-label">粗细</span>
|
|
135
|
+
<input type="range" class="ae-stroke-input" min="1" max="60" value="${e}" />
|
|
136
|
+
<span class="ae-toolbar-value">${e}px</span>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="ae-toolbar-item">
|
|
139
|
+
<span class="ae-toolbar-label">曲线率</span>
|
|
140
|
+
<input type="range" class="ae-round-input" min="0" max="1" step="0.1" value="${o}" />
|
|
141
|
+
</div>
|
|
142
|
+
`,this._toolbar.querySelector(".ae-color-input").addEventListener("input",n=>{this.selected&&(this.selected.color=n.target.value,this._defaultColor=n.target.value,this._updateMarkerColor(n.target.value),this.render())});const r=this._toolbar.querySelector(".ae-stroke-input"),i=this._toolbar.querySelector(".ae-stroke-input + .ae-toolbar-value");r.addEventListener("input",n=>{this.selected&&(this.selected.strokeWidth=parseInt(n.target.value),i.textContent=n.target.value+"px",this.render())}),this._toolbar.querySelector(".ae-round-input").addEventListener("input",n=>{this.selected&&(this.selected.curveRate=parseFloat(n.target.value),this.render())});const l=this._toolbar.querySelector(".ae-toolbar-drag-handle");this._setupToolbarDrag(l),this._toolbar.addEventListener("mousedown",n=>{n.stopPropagation()}),this._toolbar.addEventListener("mouseup",n=>{n.stopPropagation()}),this.container.appendChild(this._toolbar)}_setupToolbarDrag(t){let e=!1,o={x:0,y:0};t.addEventListener("mousedown",s=>{e=!0,this._toolbarDragging=!0;const r=this._toolbar.getBoundingClientRect();o.x=s.clientX-r.left,o.y=s.clientY-r.top,s.preventDefault(),s.stopPropagation();const i=l=>{if(!e)return;const n=this.container.getBoundingClientRect();let c=l.clientX-n.left-o.x,h=l.clientY-n.top-o.y;const d=this._toolbar.offsetWidth,u=this._toolbar.offsetHeight;c=Math.max(0,Math.min(c,n.width-d)),h=Math.max(0,Math.min(h,n.height-u)),this._toolbar.style.left=c+"px",this._toolbar.style.top=h+"px"},a=l=>{e=!1,this._toolbarDragging=!1,document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",a),this._toolbar.removeEventListener("mouseup",a),l.preventDefault(),l.stopPropagation()};document.addEventListener("mousemove",i),document.addEventListener("mouseup",a),this._toolbar.addEventListener("mouseup",a)})}_showToolbar(){if(this.selected){this._toolbar||this._createToolbar(),this._toolbar.style.display="flex";const t=this.selected.color||this._defaultColor,e=this.selected.strokeWidth||this._strokeWidth,o=this.selected.curveRate??this.selected.cornerRoundness??0,s=this._toolbar.querySelector(".ae-color-input"),r=this._toolbar.querySelector(".ae-stroke-input"),i=this._toolbar.querySelector(".ae-stroke-input + .ae-toolbar-value"),a=this._toolbar.querySelector(".ae-round-input");s&&(s.value=t),r&&(r.value=e,i.textContent=e+"px"),a&&(a.value=o);const l=this._getArrowBBox(this.selected),n=this._toolbar.offsetWidth||150,c=this._toolbar.offsetHeight||120;let h=l.maxX+20;h+n>this.container.offsetWidth&&(h=l.minX-n-20);let d=l.centerY-c/2;d<0&&(d=0),d+c>this.container.offsetHeight&&(d=this.container.offsetHeight-c),this._toolbar.style.left=h+"px",this._toolbar.style.top=d+"px"}}_hideToolbar(){this._toolbar&&(this._toolbar.style.display="none")}_updateMarkerColor(t){const e=this.svg.querySelector("#ae-arrowhead polygon");e&&e.setAttribute("fill",t)}_initKeybindings(){this._kb=new _.Keybinding("arrow-editor"),this._kb.on("enter",()=>{this._handleEnter()}),this._kb.on("esc",()=>{this._handleEsc()})}_initEvents(){this.container.onclick=t=>{if(this._toolbar&&(t.target===this._toolbar||this._toolbar.contains(t.target)))return;const e=this._mousePos(t);this._handleClick(e)},this.container.onmousemove=t=>{const e=this._mousePos(t);this._handleMouseMove(t,e)},this.container.onmousedown=t=>{if(!(this._toolbar&&(t.target===this._toolbar||this._toolbar.contains(t.target)))&&this.selected){const e=t.target.getAttribute("data-handle");if(e){this._transformMode=e,this._transformHandle=e;const o=this._mousePos(t);if(this._transformStartPos=o,this._transformStartPoints=this.selected.points.map(s=>({x:s.x,y:s.y})),this._transformCenter=this._getArrowBBox(this.selected),e==="rotate"){const s=this._transformCenter,r=o.x-s.centerX,i=o.y-s.centerY;this._transformStartAngle=Math.atan2(i,r),this._rotationOffset=0}t.stopPropagation();return}this.mode="move"}},this.container.onmouseup=()=>{this.mode=null,this._transformMode=null,this._transformHandle=null}}_mousePos(t){const e=this.container.getBoundingClientRect();return{x:t.clientX-e.left,y:t.clientY-e.top}}_generatePath(t,e=0){if(t.length<2)return"";if(e===0){let s=`M ${t[0].x} ${t[0].y}`;for(let r=1;r<t.length;r++)s+=` L ${t[r].x} ${t[r].y}`;return s}let o=`M ${t[0].x} ${t[0].y}`;for(let s=0;s<t.length-1;s++){const r=t[s],i=t[s+1],a=i.x-r.x,l=i.y-r.y,n=Math.hypot(a,l);if(n===0)continue;let c=a,h=l;if(s>0){const m=t[s-1];c=r.x-m.x,h=r.y-m.y}let d=a,u=l;if(s<t.length-2){const m=t[s+2];d=m.x-i.x,u=m.y-i.y}const p=Math.hypot(c,h)||1,f=Math.hypot(d,u)||1,k=c/p,C=h/p,x=d/f,y=u/f,b=n*e*.3,w=r.x+k*b,A=r.y+C*b,P=i.x-x*b,E=i.y-y*b;o+=` C ${w} ${A} ${P} ${E} ${i.x} ${i.y}`}return o}_generateArrowHead(t,e=8){if(t.length<2)return"";const o=t[t.length-1];let s=t[t.length-2];t.length>=3&&Math.hypot(o.x-s.x,o.y-s.y)<5&&(s=t[t.length-3]);const r=o.x-s.x,i=o.y-s.y,a=Math.hypot(r,i);if(a<1)return"";const l=r/a,n=i/a,c=o.x,h=o.y,d=e/8,u=40*d,p=20*d,f=20*d,k=o.x+l*f,C=o.y+n*f,x=o.x-l*(u-f),y=o.y-n*(u-f),b=-n,w=l,A=x+b*p,P=y+w*p,E=x-b*p,m=y-w*p;return`M ${k} ${C} L ${A} ${P} L ${c} ${h} L ${E} ${m} Z`}_createArrowGroup(t,e){const o=document.createElementNS("http://www.w3.org/2000/svg","g");o.setAttribute("data-index",e);const s=t.color||this._defaultColor,r=t.strokeWidth||this._strokeWidth,i=t.curveRate??t.cornerRoundness??0,a=document.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("class","ae-arrow-path"),a.style.stroke=s,a.style.strokeWidth=r+"px",a.setAttribute("d",this._generatePath(t.points,i)),o.appendChild(a);const l=document.createElementNS("http://www.w3.org/2000/svg","path");if(l.setAttribute("fill",s),l.setAttribute("d",this._generateArrowHead(t.points,r)),o.appendChild(l),t===this.selected){const n=this._getArrowBBox(t),c=document.createElementNS("http://www.w3.org/2000/svg","rect");c.setAttribute("class","ae-transform-box"),c.setAttribute("x",n.minX-10),c.setAttribute("y",n.minY-10),c.setAttribute("width",n.width+20),c.setAttribute("height",n.height+20),o.appendChild(c);const h=document.createElementNS("http://www.w3.org/2000/svg","circle");h.setAttribute("class","ae-transform-handle"),h.setAttribute("cx",n.maxX+10),h.setAttribute("cy",n.maxY+10),h.setAttribute("r",6),h.setAttribute("data-handle","scale"),o.appendChild(h);const d=n.minY-30,u=n.centerX,p=document.createElementNS("http://www.w3.org/2000/svg","line");p.setAttribute("class","ae-rotate-line"),p.setAttribute("x1",n.centerX),p.setAttribute("y1",n.minY-10),p.setAttribute("x2",u),p.setAttribute("y2",d),o.appendChild(p);const f=document.createElementNS("http://www.w3.org/2000/svg","circle");f.setAttribute("class","ae-rotate-handle"),f.setAttribute("cx",u),f.setAttribute("cy",d),f.setAttribute("r",8),f.setAttribute("data-handle","rotate"),o.appendChild(f)}return o}render(){if(this.svg.querySelectorAll("g").forEach(t=>t.remove()),this.arrows.forEach((t,e)=>{const o=this._createArrowGroup(t,e);this.svg.appendChild(o)}),this.current){const t=this._createArrowGroup(this.current,this.arrows.length);this.svg.appendChild(t)}}_isDoubleClick(t){const e=Date.now(),o=e-this.lastClickTime;return this.lastClickTime=e,o<300&&this.lastClickPos&&Math.hypot(t.x-this.lastClickPos.x,t.y-this.lastClickPos.y)<10?(this.lastClickPos=null,!0):(this.lastClickPos=t,!1)}_handleClick(t){if(this._shouldBlockClick){this._shouldBlockClick=!1;return}if(this._isDoubleClick(t)){this.drawing&&this.current&&this.current.points.length>=2&&(this.drawing=!1,this.arrows.push(this.current),this.current=null,this.render());return}if(this.selected){for(const e of this.arrows)if(this._hitArrow(e,t)){this.render();return}this.selected=null,this._hideToolbar(),this.render();return}for(const e of this.arrows)if(this._hitArrow(e,t)){this.selected=e,this._showToolbar(),this.render();return}this.drawing?this.current.points.push(t):(this.drawing=!0,this.current={points:[t,t],color:this._defaultColor}),this.render()}_handleEnter(){this.drawing&&this.current&&this.current.points.length>=2&&(this.drawing=!1,this.arrows.push(this.current),this.current=null,this.render())}_handleEsc(){this.drawing&&(this.drawing=!1,this.current=null),this.selected&&(this.selected=null),this._hideColorPicker(),this._hideToolbar(),this.render()}_showColorPicker(t){if(this._showingColorPicker){this._hideColorPicker();return}this._showingColorPicker=!0;const e=document.createElement("div");e.className="ae-color-picker-popup";const o=document.createElement("span");o.textContent="选择颜色",o.style.cssText="font-size: 12px; color: #666;";const s=document.createElement("input");s.type="color",s.value=this.selected.color||this._defaultColor,s.showPicker(),e.appendChild(o),e.appendChild(s);const r=this.container.getBoundingClientRect(),i=this._getArrowBBox(this.selected),a=r.left+i.minX-50,l=r.top+i.maxY+15;e.style.left=a+"px",e.style.top=l+"px",s.addEventListener("input",c=>{this.selected.color=c.target.value,this._defaultColor=c.target.value,this.render()});const n=c=>{e.contains(c.target)||(this._hideColorPicker(),document.removeEventListener("click",n))};document.body.appendChild(e),this._colorPickerPopup=e,document.addEventListener("click",n)}_hideColorPicker(){this._colorPickerPopup&&(this._colorPickerPopup.remove(),this._colorPickerPopup=null),this._showingColorPicker=!1}deleteSelected(){this.selected&&(this.arrows=this.arrows.filter(t=>t!==this.selected),this.selected=null,this.render())}_handleMouseMove(t,e){if(!this._toolbarDragging&&!(this._toolbar&&(t.target===this._toolbar||this._toolbar.contains(t.target)))){if(this.drawing&&(this.current.points[this.current.points.length-1]=e,this.render()),this._transformMode&&this.selected){this._transformMode==="rotate"?this._handleRotate(e):this._transformMode==="scale"&&this._handleScale(e),this.render();return}if(this.selected&&this.mode==="move"){const o=t.movementX,s=t.movementY;(o!==0||s!==0)&&(this._shouldBlockClick=!0),this.selected.points.forEach(r=>{r.x+=o,r.y+=s}),this.render()}}}_getArrowBBox(t){const e=t.points;let o=1/0,s=1/0,r=-1/0,i=-1/0;for(const a of e)o=Math.min(o,a.x),s=Math.min(s,a.y),r=Math.max(r,a.x),i=Math.max(i,a.y);return{minX:o,minY:s,maxX:r,maxY:i,width:r-o,height:i-s,centerX:(o+r)/2,centerY:(s+i)/2}}_handleRotate(t){const e=this._transformCenter,o=e.centerX,s=e.centerY,r=Math.atan2(t.y-s,t.x-o),i=Math.atan2(this._transformStartPos.y-s,this._transformStartPos.x-o),a=r-i,l=Math.cos(a),n=Math.sin(a);this.selected.points.forEach((c,h)=>{const d=this._transformStartPoints[h].x-o,u=this._transformStartPoints[h].y-s;c.x=o+d*l-u*n,c.y=s+d*n+u*l})}_handleScale(t){const e=this._transformCenter,o=e.centerX,s=e.centerY,r=this._transformStartPoints,i=this._transformStartPos,a=t.x-o,l=t.y-s,n=i.x-o,c=i.y-s,h=Math.hypot(a,l),d=Math.hypot(n,c),u=h/d;this.selected.points.forEach((p,f)=>{p.x=o+(r[f].x-o)*u,p.y=s+(r[f].y-s)*u})}_hitArrow(t,e){for(let o=0;o<t.points.length-1;o++)if(this._dist(e,t.points[o],t.points[o+1])<15)return!0;return!1}_dist(t,e,o){const s=o.x-e.x,r=o.y-e.y,i=((t.x-e.x)*s+(t.y-e.y)*r)/(s*s+r*r),a=Math.max(0,Math.min(1,i)),l=e.x+a*s,n=e.y+a*r;return Math.hypot(t.x-l,t.y-n)}getData(){return this.arrows.map(t=>({points:t.points,curveRate:t.curveRate??t.cornerRoundness??0,strokeWidth:t.strokeWidth,color:t.color}))}setData(t){this.arrows=t.map(e=>({points:e.points,curveRate:e.curveRate??0,strokeWidth:e.strokeWidth??8,color:e.color})),this.render()}clear(){this.arrows=[],this.drawing=!1,this.current=null,this.selected=null,this.render()}}g.ArrowEditor=M,Object.defineProperty(g,Symbol.toStringTag,{value:"Module"})}));
|
|
1415
143
|
//# sourceMappingURL=bundle.cjs.js.map
|