@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.
@@ -1,1415 +1,143 @@
1
-
2
- (function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35730/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document);
3
- 'use strict';
4
-
5
- function _arrayLikeToArray(r, a) {
6
- (null == a || a > r.length) && (a = r.length);
7
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
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
- function sparse(update) {
259
- return new Array(update.length);
10
+ .ae-d2-svg {
11
+ width: 100%;
12
+ height: 100%;
260
13
  }
261
14
 
262
- function selection_enter() {
263
- return new Selection(this._enter || this._groups.map(sparse), this._parents);
15
+ .ae-arrow-path {
16
+ fill: none;
17
+ stroke-linecap: round;
18
+ stroke-linejoin: round;
19
+ cursor: pointer;
264
20
  }
265
21
 
266
- function EnterNode(parent, datum) {
267
- this.ownerDocument = parent.ownerDocument;
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
- EnterNode.prototype = {
275
- constructor: EnterNode,
276
- appendChild: function(child) { return this._parent.insertBefore(child, this._next); },
277
- insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },
278
- querySelector: function(selector) { return this._parent.querySelector(selector); },
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
- function selection_node() {
500
-
501
- for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {
502
- for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {
503
- var node = group[i];
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
- function selection_size() {
512
- let size = 0;
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
- function selection_empty() {
518
- return !this.node();
44
+ .ae-rotate-handle {
45
+ fill: #fff;
46
+ stroke: #ff6600;
47
+ stroke-width: 2;
48
+ cursor: grab;
519
49
  }
520
50
 
521
- function selection_each(callback) {
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
- function attrRemove(name) {
533
- return function() {
534
- this.removeAttribute(name);
535
- };
55
+ .ae-rotate-line {
56
+ stroke: #ff6600;
57
+ stroke-width: 1;
58
+ stroke-dasharray: 4;
536
59
  }
537
60
 
538
- function attrRemoveNS(fullname) {
539
- return function() {
540
- this.removeAttributeNS(fullname.space, fullname.local);
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
- function attrConstant(name, value) {
545
- return function() {
546
- this.setAttribute(name, value);
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
- function attrConstantNS(fullname, value) {
551
- return function() {
552
- this.setAttributeNS(fullname.space, fullname.local, value);
553
- };
92
+ .ae-toolbar-drag-handle:active {
93
+ cursor: grabbing;
554
94
  }
555
95
 
556
- function attrFunction(name, value) {
557
- return function() {
558
- var v = value.apply(this, arguments);
559
- if (v == null) this.removeAttribute(name);
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
- function attrFunctionNS(fullname, value) {
565
- return function() {
566
- var v = value.apply(this, arguments);
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
- function selection_attr(name, value) {
573
- var fullname = namespace(name);
574
-
575
- if (arguments.length < 2) {
576
- var node = this.node();
577
- return fullname.local
578
- ? node.getAttributeNS(fullname.space, fullname.local)
579
- : node.getAttribute(fullname);
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
- function defaultView(node) {
589
- return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
590
- || (node.document && node) // node is a Window
591
- || node.defaultView; // node is a Document
117
+ .ae-toolbar input[type="range"] {
118
+ width: 120px;
119
+ cursor: pointer;
592
120
  }
593
121
 
594
- function styleRemove(name) {
595
- return function() {
596
- this.style.removeProperty(name);
597
- };
598
- }
599
-
600
- function styleConstant(name, value, priority) {
601
- return function() {
602
- this.style.setProperty(name, value, priority);
603
- };
604
- }
605
-
606
- function styleFunction(name, value, priority) {
607
- return function() {
608
- var v = value.apply(this, arguments);
609
- if (v == null) this.style.removeProperty(name);
610
- else this.style.setProperty(name, v, priority);
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+AEQAGgYaBhoAAHAABwAtAQEBAgECAQFICzAVEAFlBwIGAgIBBCMBHhtbCzoJCQEYBAEJAQMBBSsDOwkqGAEgNwEBAQQIBAEDBwoCHQE6AQEBAgQIAQkBCgIaAQICOQEEAgQCAgMDAR4CAwELAjkBBAUBAgQBFAIWBgEBOgEBAgEECAEHAwoCHgE7AQEBDAEJASgBAwE3AQEDBQMBBAcCCwIdAToBAgIBAQMDAQQHAgsCHAI5AgEBAgQIAQkBCgIdAUgBBAECAwEBCAFRAQIHDAhiAQIJCwdJAhsBAQEBATcOAQUBAgULASQJAWYEAQYBAgICGQIEAxAEDQECAgYBDwEAAwAEHAMdAh4CQAIBBwgBAgsJAS0DAQF1AiIBdgMEAgkBBgPbAgIBOgEBBwEBAQECCAYKAgEwHzEEMAoE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AQAARQEAAEYBAABHAQAASAEAAEoBAABLAQAATAEAAE0BAABOAQAATwEAAFABAABRAQAAUgEAAFMBAABUAQAAVQEAAFYBAABXAQAAWAEAAFkBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAABgAQAAYQEAAGIBAABjAQAAZAEAAGUBAABmAQAAZwEAAGgBAABpAQAAagEAAGsBAABsAQAAbQEAAG4BAABvAQAAcAEAAHEBAAByAQAAcwEAAHQBAAB1AQAAdgEAAHcBAAB4AQAA/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