-
Notifications
You must be signed in to change notification settings - Fork 4
/
vegascope.py
executable file
·647 lines (536 loc) · 727 KB
/
vegascope.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
#!/usr/bin/env python
# Copyright (c) 2018, DIANA-HEP
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# * Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import argparse
import errno
import getpass
import json
import os
import re
import socket
import sys
import threading
import time
import webbrowser
if sys.version_info[0] <= 2:
import SimpleHTTPServer
import SocketServer
from urllib2 import urlopen
from urlparse import urlparse
class BrokenPipeError(Exception): pass
else:
import http.server as SimpleHTTPServer
import socketserver as SocketServer
from urllib.request import urlopen
from urllib.parse import urlparse
unicode = str
__version__ = "1.0.14"
version = __version__
version_info = tuple(re.split(r"[-\.]", __version__))
class Canvas(object):
"""A general Vega canvas that can be viewed anywhere on the internet.
Args:
title (string or None): title for this canvas, can be changed, used as a file name for saved graphics.
initial (string, dict, or None; URL or JSON): first Vega graphic to display, defaults to "plot goes here".
host (string): host name to bind to, default is "0.0.0.0" for any address.
port (integer): port to bind to, default is 0 for any open port.
verbose (boolean): if True (default), print messages when web browsers connect or disconnect.
vega (string or None): Vega version to request from cdn.jsdelivr.net or None to use an standalone copy.
vegalite (string or None): Vega-Lite version to request from cdn.jsdelivr.net or None to use an standalone copy.
vegaembed (string or None): Vega-Embed version to request from cdn.jsdelivr.net or None to use an standalone copy.
Attributes:
connection (dict): web browser URL and possibly terminal command (for TunnelCanvas).
title (string): current title.
spec (string or dict; URL or JSON): current Vega graphic.
httpd (socketserver.ThreadingTCPServer): web server object.
ip (string): IP address of server as seen from outside ("localhost" for LocalCanvas and TunnelCanvas).
host (string): actual host used by web server.
port (string): actual port used by web server.
thread (threading.Thread): thread in which the web server is running.
connected (list of strings): currently connected web browser clients.
closed (boolean): True if the server has shut down, False otherwise.
"""
def __init__(self, title=None, initial=None, host="0.0.0.0", port=0, verbose=True, vega="5.4.0", vegalite="3.3.0", vegaembed="4.2.0"):
self._lock = threading.Lock()
if title is None:
self._title = "VegaScope"
else:
self._title = title
if initial is None:
self.spec = Canvas._default
else:
self.spec = initial
self._action = None
self._actionevent = threading.Event()
canvas = self
if vega == "":
vega = None
if vegalite == "":
vegalite = None
if vegaembed == "":
vegaembed = None
class FakeFile(object):
@property
def closed(self):
return True
def close(self):
pass
def flush(self):
pass
class HTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_HEAD(self):
pass
def do_GET(self):
if self.path == "/":
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
vegalibs = """<script src="{0}"></script>
<script src="{1}"></script>
<script src="{2}"></script>
""".format("vega.min.js" if vega is None else "https://cdn.jsdelivr.net/npm/vega@" + vega,
"vega-lite.min.js" if vegalite is None else "https://cdn.jsdelivr.net/npm/vega-lite@" + vegalite,
"vega-embed.min.js" if vegaembed is None else "https://cdn.jsdelivr.net/npm/vega-embed@" + vegaembed)
page = canvas._template.replace("VEGAVIEW", "#vegaview").replace("VEGALIBS", vegalibs).replace("TITLE", canvas._title).replace("SPEC", canvas._spec).encode("utf-8")
self.wfile.write(page)
elif self.path == "/update":
self.send_response(200)
self.send_header("Content-type", "text/event-stream")
self.end_headers()
client = self.client_address[0]
canvas._connected.add(client)
if canvas.verbose:
sys.stdout.write("{0} connected\n".format(client))
sys.stdout.flush()
title = canvas._title
spec = canvas._spec
try:
while not self.wfile.closed:
time.sleep(0.1)
with canvas._lock:
if canvas._spec is None:
break
elif spec != canvas._spec or title != canvas._title or canvas._action is not None:
spec = canvas._spec
title = canvas._title
self.wfile.write(b"data: " + json.dumps({"title": title, "spec": json.loads(spec), "action": canvas._action}).encode("utf-8") + b"\n\n")
canvas._action = None
canvas._actionevent.set()
else:
self.wfile.write(":\n\n".encode("utf-8"))
self.wfile.flush()
except socket.error as err:
if isinstance(err, BrokenPipeError) or err[0] == errno.EPIPE:
self.wfile = FakeFile()
else:
raise
finally:
canvas._connected.discard(client)
if canvas.verbose:
sys.stdout.write("{0} disconnected\n".format(client))
sys.stdout.flush()
elif self.path == "/vega.min.js":
self.send_response(200)
self.send_header("Content-type", "application/javascript")
self.end_headers()
self.wfile.write(canvas._vega)
elif self.path == "/vega-lite.min.js":
self.send_response(200)
self.send_header("Content-type", "application/javascript")
self.end_headers()
self.wfile.write(canvas._vegalite)
elif self.path == "/vega-embed.min.js":
self.send_response(200)
self.send_header("Content-type", "application/javascript")
self.end_headers()
self.wfile.write(canvas._vegaembed)
def log_request(self, code="-", size="-"):
pass
def log_error(self, format, *args):
pass
def log_message(self, format, *args):
pass
self._httpd = SocketServer.ThreadingTCPServer((host, port), HTTPHandler)
self._httpd.daemon_threads = True
self._host, self._port = self._httpd.server_address
self._thread = threading.Thread(name=self._title, target=self._httpd.serve_forever)
self._thread.daemon = True
self._thread.start()
self.verbose = verbose
self._connected = set()
self._launch()
def _launch(self):
if self.verbose:
self.how()
@property
def title(self):
return self._title
@title.setter
def title(self, value):
self._specify(value, None, None)
@property
def spec(self):
return self._spec
@spec.setter
def spec(self, value):
self._specify(None, value, None)
def __call__(self, spec):
"""Update the Vega graphic to spec (string or dict; URL or JSON).
"""
self._specify(None, spec, None)
def png(self, spec, title=None):
"""Update the Vega graphic to spec, optionally set a title, and make connected web clients save the image as PNG.
Note that pop-up blockers won't let remote servers save files on your computer without your permission. You will probably have to respond to the pop-up blocker's notice to enable pop-ups and try again (once per host/port combination).
This method blocks until the PNG request has been sent, so it can be called in a loop to make lots of files.
Args:
spec (string or dict; URL or JSON): new Vega graphic.
title (string or None): new title.
"""
self._specify(title, spec, "png")
self._actionevent.wait()
def svg(self, spec, title=None):
"""Update the Vega graphic to spec, optionally set a title, and make connected web clients save the image as SVG.
Note that pop-up blockers won't let remote servers save files on your computer without your permission. You will probably have to respond to the pop-up blocker's notice to enable pop-ups and try again (once per host/port combination).
This method blocks until the SVG request has been sent, so it can be called in a loop to make lots of files.
SVG files can be converted into clean, rescalable PDFs.
Args:
spec (string or dict; URL or JSON): new Vega graphic.
title (string or None): new title.
"""
self._specify(title, spec, "svg")
self._actionevent.wait()
def _specify(self, title, spec, action):
with self._lock:
if title is not None:
if isinstance(title, (unicode, str)):
self._title = title
else:
raise TypeError("title must be a string")
if spec is not None:
if isinstance(spec, bytes):
spec = spec.decode("utf-8")
if isinstance(spec, (unicode, str)):
p = urlparse(spec)
if p.scheme != "":
self._spec = json.dumps(spec) # spec is a URL; wrap it with quotes for JSON
else:
self._spec = json.dumps(json.loads(spec), allow_nan=False) # not a URL; ensure that it's JSON and a one-liner
else:
# PdVega
if spec.__class__.__module__.startswith("pdvega") and hasattr(spec, "spec"):
spec = spec.spec
# Altair
elif hasattr(spec, "to_json") and callable(spec.to_json):
spec = json.loads(spec.to_json())
self._spec = json.dumps(spec, allow_nan=False) # spec is an object; encode it as JSON
if action is not None:
self._action = action
@property
def httpd(self):
return self._httpd
@property
def host(self):
return self._host
@property
def port(self):
return self._port
@property
def thread(self):
return self._thread
@property
def connected(self):
return sorted(self._connected)
def close(self):
"""Shut down the web server, disconnecting all client browsers.
"""
self._spec = None
if hasattr(self, "_httpd"):
self._httpd.shutdown()
self._httpd.server_close()
@property
def closed(self):
return self._spec is None
def __del__(self):
if not self.closed:
self.close()
def __enter__(self, *args, **kwds):
return self
def __exit__(self, *args, **kwds):
if not self.closed:
self.close()
@property
def connection(self):
return {"browser": "http://{ip}:{port}".format(ip=self.ip, port=self._port)}
def how(self):
"""Print instructions for connecting to the web server.
Called automatically by the constructor unless verbose=False.
"""
connection = self.connection
if "terminal" in connection:
sys.stdout.write("Type into terminal: " + connection["terminal"] + "\n")
sys.stdout.write("Point web browser at: " + connection["browser"] + "\n")
sys.stdout.flush()
@property
def ip(self):
return urlopen("https://v4.ident.me").read().decode("ascii").strip()
class LocalCanvas(Canvas):
"""A Vega canvas that can only be viewed by the machine on which it is running.
"""
__doc__ += "\n".join(Canvas.__doc__.split("\n")[1:])
def __init__(self, title=None, initial=None, port=0, verbose=True, newtab=True, vega="5.4.0", vegalite="3.3.0", vegaembed="4.2.0"):
self._newtab = newtab
super(LocalCanvas, self).__init__(title=title, initial=initial, host="localhost", port=port, verbose=verbose, vega=vega, vegalite=vegalite, vegaembed=vegaembed)
def _launch(self):
if self.verbose and not self._newtab:
self.how()
if self._newtab:
webbrowser.open_new_tab(self.connection["browser"])
@property
def ip(self):
return "localhost"
class TunnelCanvas(Canvas):
"""A Vega canvas that can only be viewed by the machine on which it is running or through an ssh tunnel.
"""
__doc__ += "\n".join(Canvas.__doc__.split("\n")[1:])
def __init__(self, title=None, initial=None, port=0, verbose=True, vega="5.4.0", vegalite="3.3.0", vegaembed="4.2.0"):
super(TunnelCanvas, self).__init__(title=title, initial=initial, host="localhost", port=port, verbose=verbose, vega=vega, vegalite=vegalite, vegaembed=vegaembed)
@property
def connection(self):
return {"terminal": "ssh -L {port}:localhost:{port} {user}@{ip}".format(port=self._port, user=getpass.getuser(), ip=self.ip),
"browser": "http://localhost:{port}".format(port=self._port)}
# This is the global canvas instance used by entrypoint-based renderers
_entrypoint_renderer_canvas = None
def _vegalite_renderer_entry_point(spec, embed_options=None):
import altair
global _entrypoint_renderer_canvas
if embed_options is not None:
import warnings
warnings.warn("embed_options is not yet supported & will be ignored")
if _entrypoint_renderer_canvas is None:
_entrypoint_renderer_canvas = LocalCanvas(vega=altair.v3.VEGA_VERSION, vegalite=altair.v3.VEGALITE_VERSION, vegaembed=altair.v3.VEGAEMBED_VERSION)
_entrypoint_renderer_canvas(spec)
browser = _entrypoint_renderer_canvas.connection['browser']
return {'text/plain': 'Rendered at {0}'.format(browser)}
Canvas._default = {
"$schema": "https://vega.github.io/schema/vega-lite/v2.json",
"data": {"values": [{"x": "plot goes here"}]},
"mark": "text",
"encoding": {"text": {"field": "x"}},
"config": {"text": {"baseline": "middle", "align": "center"}}
}
Canvas._template = u"""
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
VEGALIBS
<title id="title">TITLE</title>
</head>
<body>
<div style="text-align: center">
<div style="display: inline-block; text-align: center">
<div style="display: inline-block; width: 500px; margin-top: 10px; margin-bottom: 10px;">
<button id="png" style="float: left; margin-right: 5px">Save as PNG</button>
<button id="svg" style="float: left">as SVG</button>
<button id="plus">+</button>
<input id="zoom" type="text" value="100" size="4" style="text-align: right">%
<button id="minus">\u2212</button>
<button id="editor" style="float: right; margin-left: 5px">in editor</button>
<button id="source" style="float: right">View source</button>
</div>
<div id="viewer" style="transform: scale(1.0); transform-origin: 50% 0%">
<div id="vegaview"></div>
</div>
</div>
</div>
<div id="screen" style="position: fixed; padding: 0; margin: 0; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; background: rgba(255, 255, 255, 0.0);"></div>
<script type="text/javascript">
function setzoom() {
var s = Number(document.getElementById("zoom").value);
if (isNaN(s) || s <= 0) {
document.getElementById("zoom").value = 100;
s = 100;
}
document.getElementById("viewer").style.transform = "scale(" + (s / 100.0) + ")";
}
document.getElementById("plus").addEventListener("click", function(event) {
document.getElementById("zoom").value = (Math.round(Number(document.getElementById("zoom").value) / 20.0) + 1) * 20;
setzoom();
});
document.getElementById("minus").addEventListener("click", function(event) {
document.getElementById("zoom").value = Math.max(20, (Math.round(Number(document.getElementById("zoom").value) / 20.0) - 1) * 20);
setzoom();
});
document.getElementById("zoom").addEventListener("keyup", function(event) {
event.preventDefault();
if (event.keyCode === 13) {
setzoom();
}
});
var title = document.getElementById("title").innerHTML;
var spec;
var view;
var mode;
function setspec(x) {
spec = x;
vegaEmbed("VEGAVIEW", x, {
renderer: "svg",
actions: false
}).then(function(x) {
view = x.view;
var s = x.spec.$schema.split("/")
if (s.indexOf("vega") > -1) {
mode = "vega";
}
else if (s.indexOf("vega-lite") > -1) {
mode = "vega-lite";
}
else {
mode = "unknown";
}
}).catch(function(error) { alert(error); });
}
setspec(SPEC);
function savePNG(event) {
view.toImageURL("png").then(function(url) {
var link = document.createElement("a");
link.setAttribute("href", url);
link.setAttribute("target", "_blank");
link.setAttribute("download", title + ".png");
link.dispatchEvent(new MouseEvent("click"));
}).catch(function(error) { alert(error); });
}
document.getElementById("png").addEventListener("click", savePNG);
function saveSVG(event) {
view.toImageURL("svg").then(function(url) {
var link = document.createElement("a");
link.setAttribute("href", url);
link.setAttribute("target", "_blank");
link.setAttribute("download", title + ".svg");
link.dispatchEvent(new MouseEvent("click"));
}).catch(function(error) { alert(error); });
}
document.getElementById("svg").addEventListener("click", saveSVG);
document.getElementById("source").addEventListener("click", function(event) {
var w = window.open("");
w.document.write("<html><head><title>" + title + ' (source)</title></head><body><pre><code class="json">' + JSON.stringify(spec, null, 2) + "</code></body></html>");
});
document.getElementById("editor").addEventListener("click", function(event) {
var w = window.open("https://vega.github.io/editor");
var wait = 10000;
var step = 250;
var count = ~~(wait / step);
function listen(event) {
if (event.source == w) {
count = 0;
window.removeEventListener("message", listen, false);
}
}
window.addEventListener("message", listen, false);
var specstring = JSON.stringify(spec, null, 2);
function send() {
if (count <= 0) {
return;
}
w.postMessage({"mode": mode, "spec": specstring}, "*");
setTimeout(send, step);
count -= 1;
}
setTimeout(send, step);
});
var eventSource = new EventSource("/update");
eventSource.onmessage = function(event) {
document.getElementById("screen").style.background = "rgba(255, 255, 255, 0.0)";
var data = JSON.parse(event.data);
title = data["title"];
document.getElementById("title").innerHTML = title;
setspec(data["spec"]);
if (data["action"] == "png") {
savePNG(null);
}
if (data["action"] == "svg") {
saveSVG(null);
}
};
eventSource.onerror = function(event) {
document.getElementById("screen").style.background = "rgba(255, 255, 255, 0.75)";
};
eventSource.onopen = function() {
document.getElementById("screen").style.background = "rgba(255, 255, 255, 0.0)";
};
</script>
</body>
</html>
"""
# vega-5.4.0.min.js
Canvas._vega = '!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t=t||self).vega={})}(this,function(t){"use strict";function n(t,n,e){return t.fields=n||[],t.fname=e,t}function e(t){return null==t?null:t.fname}function r(t){return null==t?null:t.fields}function i(t){throw Error(t)}function a(t){var n,e,r,a=[],u=null,o=0,s=t.length,l="";function c(){a.push(l+t.substring(n,e)),l="",n=e+1}for(t+="",n=e=0;e<s;++e)if("\\\\"===(r=t[e]))l+=t.substring(n,e),n=++e;else if(r===u)c(),u=null,o=-1;else{if(u)continue;n===o&&\'"\'===r?(n=e+1,u=r):n===o&&"\'"===r?(n=e+1,u=r):"."!==r||o?"["===r?(e>n&&c(),o=n=e+1):"]"===r&&(o||i("Access path missing open bracket: "+t),o>0&&c(),o=0,n=e+1):e>n?c():n=e+1}return o&&i("Access path missing closing bracket: "+t),u&&i("Access path missing closing quote: "+t),e>n&&(e++,c()),a}var u=Array.isArray;function o(t){return t===Object(t)}function s(t){return"string"==typeof t}function l(t){return u(t)?"["+t.map(l)+"]":o(t)||s(t)?JSON.stringify(t).replace("\\u2028","\\\\u2028").replace("\\u2029","\\\\u2029"):t}function c(t,e){var r=a(t),i="return _["+r.map(l).join("][")+"];";return n(Function("_",i),[t=1===r.length?r[0]:t],e||t)}var f=[],h=c("id"),d=n(function(t){return t},f,"identity"),p=n(function(){return 0},f,"zero"),g=n(function(){return 1},f,"one"),m=n(function(){return!0},f,"true"),v=n(function(){return!1},f,"false");function y(t,n,e){var r=[n].concat([].slice.call(e));console[t](...r)}var x=0,_=1,b=2,w=3,A=4;function M(t,n){var e=t||x;return{level:function(t){return arguments.length?(e=+t,this):e},error:function(){return e>=_&&y(n||"error","ERROR",arguments),this},warn:function(){return e>=b&&y(n||"warn","WARN",arguments),this},info:function(){return e>=w&&y(n||"log","INFO",arguments),this},debug:function(){return e>=A&&y(n||"log","DEBUG",arguments),this}}}function k(t){return t[t.length-1]}function E(t){return null==t||""===t?null:+t}function C(t){return function(n){return t*Math.exp(n)}}function D(t){return function(n){return Math.log(t*n)}}function F(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function S(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function B(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function O(t,n,e,r){var i=e(t[0]),a=e(k(t)),u=(a-i)*n;return[r(i-u),r(a-u)]}function z(t,n){return O(t,n,E,d)}function N(t,n){var e=Math.sign(t[0]);return O(t,n,D(e),C(e))}function T(t,n,e){return O(t,n,B(e),B(1/e))}function R(t,n,e){return O(t,n,F(e),S(e))}function P(t,n,e,r,i){var a=r(t[0]),u=r(k(t)),o=null!=n?r(n):(a+u)/2;return[i(o+(a-o)*e),i(o+(u-o)*e)]}function L(t,n,e){return P(t,n,e,E,d)}function q(t,n,e){var r=Math.sign(t[0]);return P(t,n,e,D(r),C(r))}function U(t,n,e,r){return P(t,n,e,B(r),B(1/r))}function j(t,n,e,r){return P(t,n,e,F(r),S(r))}function $(t){return 1+~~(new Date(t).getMonth()/3)}function I(t){return 1+~~(new Date(t).getUTCMonth()/3)}function W(t){return null!=t?u(t)?t:[t]:[]}function H(t,n,e){var r,i=t[0],a=t[1];return a<i&&(r=a,a=i,i=r),(r=a-i)>=e-n?[n,e]:[i=Math.min(Math.max(i,n),e-r),i+r]}function Y(t){return"function"==typeof t}function G(t,e){var i,u,o,s,c,f,h,d,p,g=[],m=(t=W(t)).map(function(t,n){return null==t?null:(g.push(n),Y(t)?t:a(t).map(l).join("]["))}),v=g.length-1,y=W(e),x="var u,v;return ";if(v<0)return null;for(u=0;u<=v;++u)Y(o=m[i=g[u]])?(s="(u=this."+(f="f"+i)+"(a))",c="(v=this."+f+"(b))",(h=h||{})[f]=o):(s="(u=a["+o+"])",c="(v=b["+o+"])"),f="((v=v instanceof Date?+v:v),(u=u instanceof Date?+u:u))","descending"!==y[i]?(p=1,d=-1):(p=-1,d=1),x+="("+s+"<"+c+"||u==null)&&v!=null?"+d+":(u>v||v==null)&&u!=null?"+p+":"+f+"!==u&&v===v?"+d+":v!==v&&u===u?"+p+(i<v?":":":0");return o=Function("a","b",x+";"),h&&(o=o.bind(h)),t=t.reduce(function(t,n){return Y(n)?(r(n)||[]).forEach(function(n){t[n]=1}):null!=n&&(t[n+""]=1),t},{}),n(o,Object.keys(t))}function V(t){return Y(t)?t:function(){return t}}function X(t,n){var e,r;function i(){n(r),e=r=null}return function(n){r=n,e&&clearTimeout(e),e=setTimeout(i,t)}}function Z(t){for(var n,e,r=1,i=arguments.length;r<i;++r)for(e in n=arguments[r])t[e]=n[e];return t}function J(t,n){var e,r,i,a,u=0;if(t&&(e=t.length))if(null==n){for(r=t[u];null==r||r!=r;r=t[++u]);for(i=a=r;u<e;++u)null!=(r=t[u])&&(r<i&&(i=r),r>a&&(a=r))}else{for(r=n(t[u]);null==r||r!=r;r=n(t[++u]));for(i=a=r;u<e;++u)null!=(r=n(t[u]))&&(r<i&&(i=r),r>a&&(a=r))}return[i,a]}function Q(t,n){var e,r,i,a,u,o=-1,s=t.length;if(null==n){for(;++o<s;)if(null!=(r=t[o])&&r>=r){e=i=r;break}for(a=u=o;++o<s;)null!=(r=t[o])&&(e>r&&(e=r,a=o),i<r&&(i=r,u=o))}else{for(;++o<s;)if(null!=(r=n(t[o],o,t))&&r>=r){e=i=r;break}for(a=u=o;++o<s;)null!=(r=n(t[o],o,t))&&(e>r&&(e=r,a=o),i<r&&(i=r,u=o))}return[a,u]}var K={};function tt(t){var n,e,r={};function i(t){return r.hasOwnProperty(t)&&r[t]!==K}return n={size:0,empty:0,object:r,has:i,get:function(t){return i(t)?r[t]:void 0},set:function(t,e){return i(t)||(++n.size,r[t]===K&&--n.empty),r[t]=e,this},delete:function(t){return i(t)&&(--n.size,++n.empty,r[t]=K),this},clear:function(){n.size=n.empty=0,n.object=r={}},test:function(t){return arguments.length?(e=t,n):e},clean:function(){var t,i,a={},u=0;for(t in r)(i=r[t])===K||e&&e(i)||(a[t]=i,++u);n.size=u,n.empty=0,n.object=r=a}},t&&Object.keys(t).forEach(function(e){n.set(e,t[e])}),n}function nt(t,n,e,r,i,a){if(!e&&0!==e)return a;var u,o,s=t[0],l=k(t),c=+e;return l<s&&(u=s,s=l,l=u),(u=Math.abs(n-s))<(o=Math.abs(l-n))&&u<=c?r:o<=c?i:a}function et(t,n){var e=t.prototype=Object.create(n.prototype);return e.constructor=t,e}function rt(t,n,e,r){var i,a=n[0],u=n[n.length-1];return a>u&&(i=a,a=u,u=i),r=void 0===r||r,((e=void 0===e||e)?a<=t:a<t)&&(r?t<=u:t<u)}function it(t){return"boolean"==typeof t}function at(t){return"[object Date]"===Object.prototype.toString.call(t)}function ut(t){return"number"==typeof t}function ot(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function st(t,e){return t&&(t=e?W(t).map(function(t){return t.replace(/\\\\(.)/g,"$1")}):W(t)),n(t&&t.length?Function("_","return \'\'+"+t.map(function(t){return"_["+(e?l(t):a(t).map(l).join("]["))+"]"}).join("+\'|\'+")+";"):function(){return""},t,"key")}function lt(t,n){const e=t[0],r=k(t),i=+n;return i?1===i?r:e+i*(r-e):e}function ct(t,n,e,r){var i=n.length,a=e.length;if(!a)return n;if(!i)return e;for(var u=r||new n.constructor(i+a),o=0,s=0,l=0;o<i&&s<a;++l)u[l]=t(n[o],e[s])>0?e[s++]:n[o++];for(;o<i;++o,++l)u[l]=n[o];for(;s<a;++s,++l)u[l]=e[s];return u}function ft(t,n){for(var e="";--n>=0;)e+=t;return e}function ht(t,n,e,r){var i=e||" ",a=t+"",u=n-a.length;return u<=0?a:"left"===r?ft(i,u)+a:"center"===r?ft(i,~~(u/2))+a+ft(i,Math.ceil(u/2)):a+ft(i,u)}function dt(t){return k(t)-t[0]||0}function pt(t){return null==t||""===t?null:!(!t||"false"===t||"0"===t)&&!!t}function gt(t){return ut(t)?t:at(t)?t:Date.parse(t)}function mt(t,n){return n=n||gt,null==t||""===t?null:n(t)}function vt(t){return null==t||""===t?null:t+""}function yt(t){for(var n={},e=0,r=t.length;e<r;++e)n[t[e]]=!0;return n}function xt(t,n,e,r){var i=null!=r?r:"…",a=t+"",u=a.length,o=Math.max(0,n-i.length);return u<=n?a:"left"===e?i+a.slice(u-o):"center"===e?a.slice(0,Math.ceil(o/2))+i+a.slice(u-~~(o/2)):a.slice(0,o)+i}function _t(t,n,e){if(t){var r,i=0,a=t.length;if(n)for(;i<a;++i)(r=n(t[i]))&&e(r,i,t);else t.forEach(e)}}function bt(t){var n=t||d,e=[],r={};return e.add=function(t){var i=n(t);return r[i]||(r[i]=1,e.push(t)),e},e.remove=function(t){var i,a=n(t);return r[a]&&(r[a]=0,(i=e.indexOf(t))>=0&&e.splice(i,1)),e},e}async function wt(t,n){try{await n(t)}catch(n){t.error(n)}}var At=Symbol("vega_id"),Mt=1;function kt(t){return!(!t||!Et(t))}function Et(t){return t[At]}function Ct(t,n){return t[At]=n,t}function Dt(t){var n=t===Object(t)?t:{data:t};return Et(n)?n:Ct(n,Mt++)}function Ft(t){return St(t,Dt({}))}function St(t,n){for(var e in t)n[e]=t[e];return n}function Bt(t,n){return Ct(n,Et(t))}function Ot(t){return t&&t.constructor===zt}function zt(){var t=[],n=[],e=[],r=[],i=[],a=!1;return{constructor:zt,insert:function(n){for(var e=W(n),r=0,i=e.length;r<i;++r)t.push(e[r]);return this},remove:function(t){for(var e=Y(t)?r:n,i=W(t),a=0,u=i.length;a<u;++a)e.push(i[a]);return this},modify:function(t,n,r){var a={field:n,value:V(r)};return Y(t)?(a.filter=t,i.push(a)):(a.tuple=t,e.push(a)),this},encode:function(t,n){return Y(t)?i.push({filter:t,field:n}):e.push({tuple:t,field:n}),this},reflow:function(){return a=!0,this},pulse:function(u,o){var s,l,c,f,h,d,p={},g={};for(s=0,l=o.length;s<l;++s)p[Et(o[s])]=1;for(s=0,l=n.length;s<l;++s)p[Et(h=n[s])]=-1;for(s=0,l=r.length;s<l;++s)f=r[s],o.forEach(function(t){f(t)&&(p[Et(t)]=-1)});for(s=0,l=t.length;s<l;++s)d=Et(h=t[s]),p[d]?p[d]=1:u.add.push(Dt(t[s]));for(s=0,l=o.length;s<l;++s)h=o[s],p[Et(h)]<0&&u.rem.push(h);function m(t,n,e){e?t[n]=e(t):u.encode=n,a||(g[Et(t)]=t)}for(s=0,l=e.length;s<l;++s)h=(c=e[s]).tuple,f=c.field,(d=p[Et(h)])>0&&(m(h,f,c.value),u.modifies(f));for(s=0,l=i.length;s<l;++s)c=i[s],f=c.filter,o.forEach(function(t){f(t)&&p[Et(t)]>0&&m(t,c.field,c.value)}),u.modifies(c.field);if(a)u.mod=n.length||r.length?o.filter(function(t){return p[Et(t)]>0}):o.slice();else for(d in g)u.mod.push(g[d]);return u}}}var Nt="_:mod:_";function Tt(){Object.defineProperty(this,Nt,{writable:!0,value:{}})}var Rt=Tt.prototype;Rt.set=function(t,n,e,r){var i=this,a=i[t],o=i[Nt];return null!=n&&n>=0?(a[n]!==e||r)&&(a[n]=e,o[n+":"+t]=-1,o[t]=-1):(a!==e||r)&&(i[t]=e,o[t]=u(e)?1+e.length:-1),i},Rt.modified=function(t,n){var e,r=this[Nt];if(!arguments.length){for(e in r)if(r[e])return!0;return!1}if(u(t)){for(e=0;e<t.length;++e)if(r[t[e]])return!0;return!1}return null!=n&&n>=0?n+1<r[t]||!!r[n+":"+t]:!!r[t]},Rt.clear=function(){return this[Nt]={},this};var Pt=0,Lt=new Tt;function qt(t,n,e,r){this.id=++Pt,this.value=t,this.stamp=-1,this.rank=-1,this.qrank=-1,this.flags=0,n&&(this._update=n),e&&this.parameters(e,r)}var Ut=qt.prototype;function jt(t){return function(n){var e=this.flags;return 0===arguments.length?!!(e&t):(this.flags=n?e|t:e&~t,this)}}Ut.targets=function(){return this._targets||(this._targets=bt(h))},Ut.set=function(t){return this.value!==t?(this.value=t,1):0},Ut.skip=jt(1),Ut.modified=jt(2),Ut.parameters=function(t,n,e){n=!1!==n;var r,a,o,s,l=this,c=l._argval=l._argval||new Tt,f=l._argops=l._argops||[],h=[];function d(t,e,r){r instanceof qt?(r!==l&&(n&&r.targets().add(l),h.push(r)),f.push({op:r,name:t,index:e})):c.set(t,e,r)}for(r in t)if(a=t[r],"pulse"===r)W(a).forEach(function(t){t instanceof qt?t!==l&&(t.targets().add(l),h.push(t)):i("Pulse parameters must be operator instances.")}),l.source=a;else if(u(a))for(c.set(r,-1,Array(o=a.length)),s=0;s<o;++s)d(r,s,a[s]);else d(r,-1,a);return this.marshall().clear(),e&&(f.initonly=!0),h},Ut.marshall=function(t){var n,e,r,i,a,u=this._argval||Lt,o=this._argops;if(o){for(e=0,r=o.length;e<r;++e)a=(i=(n=o[e]).op).modified()&&i.stamp===t,u.set(n.name,n.index,i.value,a);if(o.initonly){for(e=0;e<r;++e)(n=o[e]).op.targets().remove(this);this._argops=null,this._update=null}}return u},Ut.evaluate=function(t){var n=this._update;if(n){var e=this.marshall(t.stamp),r=n.call(this,e,t);if(e.clear(),r!==this.value)this.value=r;else if(!this.modified())return t.StopPropagation}},Ut.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?(this.skip(!1),n=0):n=this.evaluate(t),this.stamp=t.stamp,this.pulse=n||t);var n};var $t=0;function It(t,n,e){this.id=++$t,this.value=null,e&&(this.receive=e),t&&(this._filter=t),n&&(this._apply=n)}function Wt(t,n,e){return new It(t,n,e)}var Ht=It.prototype;Ht._filter=m,Ht._apply=d,Ht.targets=function(){return this._targets||(this._targets=bt(h))},Ht.consume=function(t){return arguments.length?(this._consume=!!t,this):!!this._consume},Ht.receive=function(t){if(this._filter(t)){for(var n=this.value=this._apply(t),e=this._targets,r=e?e.length:0,i=0;i<r;++i)e[i].receive(n);this._consume&&(t.preventDefault(),t.stopPropagation())}},Ht.filter=function(t){var n=Wt(t);return this.targets().add(n),n},Ht.apply=function(t){var n=Wt(null,t);return this.targets().add(n),n},Ht.merge=function(){var t=Wt();this.targets().add(t);for(var n=0,e=arguments.length;n<e;++n)arguments[n].targets().add(t);return t},Ht.throttle=function(t){var n=-1;return this.filter(function(){var e=Date.now();return e-n>t?(n=e,1):0})},Ht.debounce=function(t){var n=Wt();return this.targets().add(Wt(null,null,X(t,function(t){var e=t.dataflow;n.receive(t),e&&e.run&&e.run()}))),n},Ht.between=function(t,n){var e=!1;return t.targets().add(Wt(null,null,function(){e=!0})),n.targets().add(Wt(null,null,function(){e=!1})),this.filter(function(){return e})};var Yt=/^([A-Za-z]+:)?\\/\\//,Gt="file://";async function Vt(t,n){const e=await this.sanitize(t,n),r=e.href;return e.localFile?this.file(r):this.http(r,n)}async function Xt(t,n){n=Z({},this.options,n);const e=this.fileAccess,r={href:null};let a,u,o,s;return null!=t&&"string"==typeof t||i("Sanitize failure, invalid URI: "+l(t)),u=Yt.test(t),(s=n.baseURL)&&!u&&(t.startsWith("/")||"/"===s[s.length-1]||(t="/"+t),t=s+t),o=(a=t.startsWith(Gt))||"file"===n.mode||"http"!==n.mode&&!u&&e,a?t=t.slice(Gt.length):t.startsWith("//")&&("file"===n.defaultProtocol?(t=t.slice(2),o=!0):t=(n.defaultProtocol||"http")+":"+t),Object.defineProperty(r,"localFile",{value:!!o}),r.href=t,n.target&&(r.target=n.target+""),n.rel&&(r.rel=n.rel+""),r}function Zt(t){return t?function(n){return new Promise(function(e,r){t.readFile(n,function(t,n){t?r(t):e(n)})})}:Jt}async function Jt(){i("No file system access.")}function Qt(t){return t?async function(n,e){const r=Z({},this.options.http,e),a=e&&e.response,u=await t(n,r);return u.ok?Y(u[a])?u[a]():u.text():i(u.status+""+u.statusText)}:Kt}async function Kt(){i("No HTTP fetch method available.")}var tn={boolean:pt,integer:E,number:E,date:mt,string:vt,unknown:d},nn=[function(t){return"true"===t||"false"===t||!0===t||!1===t},function(t){return un(t)&&(t=+t)==~~t},un,function(t){return!isNaN(Date.parse(t))}],en=["boolean","integer","number","date"];function rn(t,n){if(!t||!t.length)return"unknown";var e,r,i,a,u=0,o=t.length,s=nn.length,l=nn.map(function(t,n){return n+1});for(r=0,o=t.length;r<o;++r)for(e=n?t[r][n]:t[r],i=0;i<s;++i)if(l[i]&&(null!=(a=e)&&a==a)&&!nn[i](e)&&(l[i]=0,++u===nn.length))return"string";return u=l.reduce(function(t,n){return 0===t?n:t},0)-1,en[u]}function an(t,n){return n.reduce(function(n,e){return n[e]=rn(t,e),n},{})}function un(t){return!(isNaN(+t)||t instanceof Date)}var on={},sn={},ln=34,cn=10,fn=13;function hn(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}")}function dn(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function pn(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function gn(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),a=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((n=t.getUTCFullYear())<0?"-"+pn(-n,6):n>9999?"+"+pn(n,6):pn(n,4))+"-"+pn(t.getUTCMonth()+1,2)+"-"+pn(t.getUTCDate(),2)+(a?"T"+pn(e,2)+":"+pn(r,2)+":"+pn(i,2)+"."+pn(a,3)+"Z":i?"T"+pn(e,2)+":"+pn(r,2)+":"+pn(i,2)+"Z":r||e?"T"+pn(e,2)+":"+pn(r,2)+"Z":"")}function mn(t){var n=new RegExp(\'["\'+t+"\\n\\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],a=t.length,u=0,o=0,s=a<=0,l=!1;function c(){if(s)return sn;if(l)return l=!1,on;var n,r,i=u;if(t.charCodeAt(i)===ln){for(;u++<a&&t.charCodeAt(u)!==ln||t.charCodeAt(++u)===ln;);return(n=u)>=a?s=!0:(r=t.charCodeAt(u++))===cn?l=!0:r===fn&&(l=!0,t.charCodeAt(u)===cn&&++u),t.slice(i+1,n-1).replace(/""/g,\'"\')}for(;u<a;){if((r=t.charCodeAt(n=u++))===cn)l=!0;else if(r===fn)l=!0,t.charCodeAt(u)===cn&&++u;else if(r!==e)continue;return t.slice(i,n)}return s=!0,t.slice(i,a)}for(t.charCodeAt(a-1)===cn&&--a,t.charCodeAt(a-1)===fn&&--a;(r=c())!==sn;){for(var f=[];r!==on&&r!==sn;)f.push(r),r=c();n&&null==(f=n(f,o++))||i.push(f)}return i}function i(n,e){return n.map(function(n){return e.map(function(t){return u(n[t])}).join(t)})}function a(n){return n.map(u).join(t)}function u(t){return null==t?"":t instanceof Date?gn(t):n.test(t+="")?\'"\'+t.replace(/"/g,\'""\')+\'"\':t}return{parse:function(t,n){var e,i,a=r(t,function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=hn(t);return function(r,i){return n(e(r),i,t)}}(t,n):hn(t)});return a.columns=i||[],a},parseRows:r,format:function(n,e){return null==e&&(e=dn(n)),[e.map(u).join(t)].concat(i(n,e)).join("\\n")},formatBody:function(t,n){return null==n&&(n=dn(t)),i(t,n).join("\\n")},formatRows:function(t){return t.map(a).join("\\n")}}}mn(","),mn("\\t");function vn(t){const n=function(n,e){const r={delimiter:t};return yn(n,e?Z(e,r):r)};return n.responseType="text",n}function yn(t,n){return n.header&&(t=n.header.map(l).join(n.delimiter)+"\\n"+t),mn(n.delimiter).parse(t+"")}function xn(t,n){const e=n&&n.property?c(n.property):d;return!o(t)||(r=t,"function"==typeof Buffer&&Y(Buffer.isBuffer)&&Buffer.isBuffer(r))?e(JSON.parse(t)):function(t,n){return n&&n.copy?JSON.parse(JSON.stringify(t)):t}(e(t));var r}function _n(t){return t}function bn(t,n){return"GeometryCollection"===n.type?{type:"FeatureCollection",features:n.geometries.map(function(n){return wn(t,n)})}:wn(t,n)}function wn(t,n){var e=n.id,r=n.bbox,i=null==n.properties?{}:n.properties,a=An(t,n);return null==e&&null==r?{type:"Feature",properties:i,geometry:a}:null==r?{type:"Feature",id:e,properties:i,geometry:a}:{type:"Feature",id:e,bbox:r,properties:i,geometry:a}}function An(t,n){var e=function(t){if(null==t)return _n;var n,e,r=t.scale[0],i=t.scale[1],a=t.translate[0],u=t.translate[1];return function(t,o){o||(n=e=0);var s=2,l=t.length,c=new Array(l);for(c[0]=(n+=t[0])*r+a,c[1]=(e+=t[1])*i+u;s<l;)c[s]=t[s],++s;return c}}(t.transform),r=t.arcs;function i(t,n){n.length&&n.pop();for(var i=r[t<0?~t:t],a=0,u=i.length;a<u;++a)n.push(e(i[a],a));t<0&&function(t,n){for(var e,r=t.length,i=r-n;i<--r;)e=t[i],t[i++]=t[r],t[r]=e}(n,u)}function a(t){return e(t)}function u(t){for(var n=[],e=0,r=t.length;e<r;++e)i(t[e],n);return n.length<2&&n.push(n[0]),n}function o(t){for(var n=u(t);n.length<4;)n.push(n[0]);return n}function s(t){return t.map(o)}return function t(n){var e,r=n.type;switch(r){case"GeometryCollection":return{type:r,geometries:n.geometries.map(t)};case"Point":e=a(n.coordinates);break;case"MultiPoint":e=n.coordinates.map(a);break;case"LineString":e=u(n.arcs);break;case"MultiLineString":e=n.arcs.map(u);break;case"Polygon":e=s(n.arcs);break;case"MultiPolygon":e=n.arcs.map(s);break;default:return null}return{type:r,coordinates:e}}(n)}function Mn(t,n){var e={},r={},i={},a=[],u=-1;function o(t,n){for(var r in t){var i=t[r];delete n[i.start],delete i.start,delete i.end,i.forEach(function(t){e[t<0?~t:t]=1}),a.push(i)}}return n.forEach(function(e,r){var i,a=t.arcs[e<0?~e:e];a.length<3&&!a[1][0]&&!a[1][1]&&(i=n[++u],n[u]=e,n[r]=i)}),n.forEach(function(n){var e,a,u=function(n){var e,r=t.arcs[n<0?~n:n],i=r[0];t.transform?(e=[0,0],r.forEach(function(t){e[0]+=t[0],e[1]+=t[1]})):e=r[r.length-1];return n<0?[e,i]:[i,e]}(n),o=u[0],s=u[1];if(e=i[o])if(delete i[e.end],e.push(n),e.end=s,a=r[s]){delete r[a.start];var l=a===e?e:e.concat(a);r[l.start=e.start]=i[l.end=a.end]=l}else r[e.start]=i[e.end]=e;else if(e=r[s])if(delete r[e.start],e.unshift(n),e.start=o,a=i[o]){delete i[a.end];var c=a===e?e:a.concat(e);r[c.start=a.start]=i[c.end=e.end]=c}else r[e.start]=i[e.end]=e;else r[(e=[n]).start=o]=i[e.end=s]=e}),o(i,r),o(r,i),n.forEach(function(t){e[t<0?~t:t]||a.push([t])}),a}function kn(t){return An(t,function(t,n,e){var r,i,a;if(arguments.length>1)r=function(t,n,e){var r,i=[],a=[];function u(t){var n=t<0?~t:t;(a[n]||(a[n]=[])).push({i:t,g:r})}function o(t){t.forEach(u)}function s(t){t.forEach(o)}return function t(n){switch(r=n,n.type){case"GeometryCollection":n.geometries.forEach(t);break;case"LineString":o(n.arcs);break;case"MultiLineString":case"Polygon":s(n.arcs);break;case"MultiPolygon":n.arcs.forEach(s)}}(n),a.forEach(null==e?function(t){i.push(t[0].i)}:function(t){e(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,n,e);else for(i=0,r=new Array(a=t.arcs.length);i<a;++i)r[i]=i;return{type:"MultiLineString",arcs:Mn(t,r)}}.apply(this,arguments))}yn.responseType="text",xn.responseType="json";const En={interior:(t,n)=>t!==n,exterior:(t,n)=>t===n};function Cn(t,n){let e,r,a,u;return t=xn(t,n),n&&n.feature?(e=bn,a=n.feature):n&&n.mesh?(e=kn,a=n.mesh,u=En[n.filter]):i("Missing TopoJSON feature or mesh parameter."),(r=(r=t.objects[a])?e(t,r,u):i("Invalid TopoJSON object: "+a))&&r.features||[r]}Cn.responseType="json";const Dn={dsv:yn,csv:vn(","),tsv:vn("\\t"),json:xn,topojson:Cn};function Fn(t,n){return arguments.length>1?(Dn[t]=n,this):Dn.hasOwnProperty(t)?Dn[t]:null}function Sn(t){const n=Fn(t);return n&&n.responseType||"text"}var Bn=new Date,On=new Date;function zn(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,a){var u,o=[];if(e=i.ceil(e),a=null==a?1:Math.floor(a),!(e<r&&a>0))return o;do{o.push(u=new Date(+e)),n(e,a),t(e)}while(u<e&&e<r);return o},i.filter=function(e){return zn(function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return Bn.setTime(+n),On.setTime(+r),t(Bn),t(On),Math.floor(e(Bn,On))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var Nn=zn(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});Nn.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?zn(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):Nn:null};var Tn=6e4,Rn=6048e5,Pn=zn(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),Ln=zn(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,n){t.setTime(+t+n*Tn)},function(t,n){return(n-t)/Tn},function(t){return t.getMinutes()}),qn=zn(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Tn)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Un=zn(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Tn)/864e5},function(t){return t.getDate()-1});function jn(t){return zn(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Tn)/Rn})}var $n=jn(0),In=jn(1),Wn=(jn(2),jn(3),jn(4)),Hn=(jn(5),jn(6),zn(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),Yn=zn(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Yn.every=function(t){return isFinite(t=Math.floor(t))&&t>0?zn(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var Gn=zn(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Tn)},function(t,n){return(n-t)/Tn},function(t){return t.getUTCMinutes()}),Vn=zn(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),Xn=zn(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1});function Zn(t){return zn(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Rn})}var Jn=Zn(0),Qn=Zn(1),Kn=(Zn(2),Zn(3),Zn(4)),te=(Zn(5),Zn(6),zn(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()})),ne=zn(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});function ee(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function re(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ie(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}ne.every=function(t){return isFinite(t=Math.floor(t))&&t>0?zn(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var ae,ue,oe,se,le,ce={"-":"",_:" ",0:"0"},fe=/^\\s*\\d+/,he=/^%/,de=/[\\\\^$*+?|[\\]().{}]/g;function pe(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<e?new Array(e-a+1).join(n)+i:i)}function ge(t){return t.replace(de,"\\\\$&")}function me(t){return new RegExp("^(?:"+t.map(ge).join("|")+")","i")}function ve(t){for(var n={},e=-1,r=t.length;++e<r;)n[t[e].toLowerCase()]=e;return n}function ye(t,n,e){var r=fe.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function xe(t,n,e){var r=fe.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function _e(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function be(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function we(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ae(t,n,e){var r=fe.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Me(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function ke(t,n,e){var r=/^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Ee(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Ce(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function De(t,n,e){var r=fe.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Fe(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Se(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Be(t,n,e){var r=fe.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function Oe(t,n,e){var r=fe.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function ze(t,n,e){var r=fe.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Ne(t,n,e){var r=he.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Te(t,n,e){var r=fe.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Re(t,n,e){var r=fe.exec(n.slice(e));return r?(t.Q=1e3*+r[0],e+r[0].length):-1}function Pe(t,n){return pe(t.getDate(),n,2)}function Le(t,n){return pe(t.getHours(),n,2)}function qe(t,n){return pe(t.getHours()%12||12,n,2)}function Ue(t,n){return pe(1+Un.count(Yn(t),t),n,3)}function je(t,n){return pe(t.getMilliseconds(),n,3)}function $e(t,n){return je(t,n)+"000"}function Ie(t,n){return pe(t.getMonth()+1,n,2)}function We(t,n){return pe(t.getMinutes(),n,2)}function He(t,n){return pe(t.getSeconds(),n,2)}function Ye(t){var n=t.getDay();return 0===n?7:n}function Ge(t,n){return pe($n.count(Yn(t),t),n,2)}function Ve(t,n){var e=t.getDay();return t=e>=4||0===e?Wn(t):Wn.ceil(t),pe(Wn.count(Yn(t),t)+(4===Yn(t).getDay()),n,2)}function Xe(t){return t.getDay()}function Ze(t,n){return pe(In.count(Yn(t),t),n,2)}function Je(t,n){return pe(t.getFullYear()%100,n,2)}function Qe(t,n){return pe(t.getFullYear()%1e4,n,4)}function Ke(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+pe(n/60|0,"0",2)+pe(n%60,"0",2)}function tr(t,n){return pe(t.getUTCDate(),n,2)}function nr(t,n){return pe(t.getUTCHours(),n,2)}function er(t,n){return pe(t.getUTCHours()%12||12,n,2)}function rr(t,n){return pe(1+Xn.count(ne(t),t),n,3)}function ir(t,n){return pe(t.getUTCMilliseconds(),n,3)}function ar(t,n){return ir(t,n)+"000"}function ur(t,n){return pe(t.getUTCMonth()+1,n,2)}function or(t,n){return pe(t.getUTCMinutes(),n,2)}function sr(t,n){return pe(t.getUTCSeconds(),n,2)}function lr(t){var n=t.getUTCDay();return 0===n?7:n}function cr(t,n){return pe(Jn.count(ne(t),t),n,2)}function fr(t,n){var e=t.getUTCDay();return t=e>=4||0===e?Kn(t):Kn.ceil(t),pe(Kn.count(ne(t),t)+(4===ne(t).getUTCDay()),n,2)}function hr(t){return t.getUTCDay()}function dr(t,n){return pe(Qn.count(ne(t),t),n,2)}function pr(t,n){return pe(t.getUTCFullYear()%100,n,2)}function gr(t,n){return pe(t.getUTCFullYear()%1e4,n,4)}function mr(){return"+0000"}function vr(){return"%"}function yr(t){return+t}function xr(t){return Math.floor(+t/1e3)}function _r(t){return ae=function(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,a=t.days,u=t.shortDays,o=t.months,s=t.shortMonths,l=me(i),c=ve(i),f=me(a),h=ve(a),d=me(u),p=ve(u),g=me(o),m=ve(o),v=me(s),y=ve(s),x={a:function(t){return u[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return s[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:Pe,e:Pe,f:$e,H:Le,I:qe,j:Ue,L:je,m:Ie,M:We,p:function(t){return i[+(t.getHours()>=12)]},Q:yr,s:xr,S:He,u:Ye,U:Ge,V:Ve,w:Xe,W:Ze,x:null,X:null,y:Je,Y:Qe,Z:Ke,"%":vr},_={a:function(t){return u[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return s[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:tr,e:tr,f:ar,H:nr,I:er,j:rr,L:ir,m:ur,M:or,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:yr,s:xr,S:sr,u:lr,U:cr,V:fr,w:hr,W:dr,x:null,X:null,y:pr,Y:gr,Z:mr,"%":vr},b={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=y[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=m[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return M(t,n,e,r)},d:Ce,e:Ce,f:ze,H:Fe,I:Fe,j:De,L:Oe,m:Ee,M:Se,p:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.p=c[r[0].toLowerCase()],e+r[0].length):-1},Q:Te,s:Re,S:Be,u:xe,U:_e,V:be,w:ye,W:we,x:function(t,n,r){return M(t,e,n,r)},X:function(t,n,e){return M(t,r,n,e)},y:Me,Y:Ae,Z:ke,"%":Ne};function w(t,n){return function(e){var r,i,a,u=[],o=-1,s=0,l=t.length;for(e instanceof Date||(e=new Date(+e));++o<l;)37===t.charCodeAt(o)&&(u.push(t.slice(s,o)),null!=(i=ce[r=t.charAt(++o)])?r=t.charAt(++o):i="e"===r?" ":"0",(a=n[r])&&(r=a(e,i)),u.push(r),s=o+1);return u.push(t.slice(s,o)),u.join("")}}function A(t,n){return function(e){var r,i,a=ie(1900);if(M(a,t,e+="",0)!=e.length)return null;if("Q"in a)return new Date(a.Q);if("p"in a&&(a.H=a.H%12+12*a.p),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=re(ie(a.y))).getUTCDay(),r=i>4||0===i?Qn.ceil(r):Qn(r),r=Xn.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=n(ie(a.y))).getDay(),r=i>4||0===i?In.ceil(r):In(r),r=Un.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?re(ie(a.y)).getUTCDay():n(ie(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,re(a)):n(a)}}function M(t,n,e,r){for(var i,a,u=0,o=n.length,s=e.length;u<o;){if(r>=s)return-1;if(37===(i=n.charCodeAt(u++))){if(i=n.charAt(u++),!(a=b[i in ce?n.charAt(u++):i])||(r=a(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return x.x=w(e,x),x.X=w(r,x),x.c=w(n,x),_.x=w(e,_),_.X=w(r,_),_.c=w(n,_),{format:function(t){var n=w(t+="",x);return n.toString=function(){return t},n},parse:function(t){var n=A(t+="",ee);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",_);return n.toString=function(){return t},n},utcParse:function(t){var n=A(t,re);return n.toString=function(){return t},n}}}(t),ue=ae.format,oe=ae.parse,se=ae.utcFormat,le=ae.utcParse,ae}_r({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||se("%Y-%m-%dT%H:%M:%S.%LZ");+new Date("2000-01-01T00:00:00.000Z")||le("%Y-%m-%dT%H:%M:%S.%LZ");function br(t,n,e){const r=Fn((n=n||{}).type||"json");return r||i("Unknown data format type: "+n.type),t=r(t,n),n.parse&&function(t,n,e){if(!t.length)return;e=e||oe;var r,i,a,u,o,s,l,c=t.columns||Object.keys(t[0]);"auto"===n&&(n=an(t,c));for(c=Object.keys(n),r=c.map(function(t){var r,i,a=n[t];if(a&&(0===a.indexOf("date:")||0===a.indexOf("utc:")))return("\'"===(i=(r=a.split(/:(.+)?/,2))[1])[0]&&"\'"===i[i.length-1]||\'"\'===i[0]&&\'"\'===i[i.length-1])&&(i=i.slice(1,-1)),"utc"===r[0]?le(i):e(i);if(!tn[a])throw Error("Illegal format pattern: "+t+":"+a);return tn[a]}),u=0,s=t.length,l=c.length;u<s;++u)for(i=t[u],o=0;o<l;++o)a=c[o],i[a]=r[o](i[a])}(t,n.parse,e),t.hasOwnProperty("columns")&&delete t.columns,t}var wr=function(t,n){return function(e){return{options:e||{},sanitize:Xt,load:Vt,fileAccess:!!n,file:Zt(n),http:Qt(t)}}}("undefined"!=typeof fetch&&fetch,null);const Ar=br;var Mr={skip:!0};function kr(t,n,e,r,i,a){var u,o,s=Z({},a,Mr);Y(e)||(e=V(e)),void 0===r?u=(n=>t.touch(e(n))):Y(r)?(o=new qt(null,r,i,!1),u=(n=>{o.evaluate(n);const r=e(n),i=o.value;Ot(i)?t.pulse(r,i,a):t.update(r,i,s)})):u=(n=>t.update(e(n),r,s)),n.apply(u)}function Er(t,n,e,r,i,a){if(void 0===r)n.targets().add(e);else{const u=a||{},o=new qt(null,function(t,n){return n=Y(n)?n:V(n),t?function(e,r){const i=n(e,r);return t.skip()||(t.skip(i!==this.value).value=i),i}:n}(e,r),i,!1);o.modified(u.force),o.rank=n.rank,n.targets().add(o),e&&(o.skip(!0),o.value=e.value,o.targets().add(e),t.connect(e,[o]))}}var Cr={};function Dr(t,n,e){this.dataflow=t,this.stamp=null==n?-1:n,this.add=[],this.rem=[],this.mod=[],this.fields=null,this.encode=e||null}var Fr=Dr.prototype;function Sr(t,n){return t?function(e,r){return t(e,r)&&n(e,r)}:n}function Br(t,n){var e=[];return _t(t,n,function(t){e.push(t)}),e}function Or(t,n){var e={};return t.visit(n,function(t){e[Et(t)]=1}),function(t){return e[Et(t)]?null:t}}function zr(t,n,e,r){var i,a,u,o,s,l=this,c=0;for(this.dataflow=t,this.stamp=n,this.fields=null,this.encode=r||null,this.pulses=e,u=0,o=e.length;u<o;++u)if((i=e[u]).stamp===n){if(i.fields)for(s in a=l.fields||(l.fields={}),i.fields)a[s]=1;i.changed(l.ADD)&&(c|=l.ADD),i.changed(l.REM)&&(c|=l.REM),i.changed(l.MOD)&&(c|=l.MOD)}this.changes=c}Fr.StopPropagation=Cr,Fr.ADD=1,Fr.REM=2,Fr.MOD=4,Fr.ADD_REM=3,Fr.ADD_MOD=5,Fr.ALL=7,Fr.REFLOW=8,Fr.SOURCE=16,Fr.NO_SOURCE=32,Fr.NO_FIELDS=64,Fr.fork=function(t){return new Dr(this.dataflow).init(this,t)},Fr.clone=function(){var t=this.fork(7);return t.add=t.add.slice(),t.rem=t.rem.slice(),t.mod=t.mod.slice(),t.source&&(t.source=t.source.slice()),t.materialize(23)},Fr.addAll=function(){var t=this;return this.source&&this.source.length!==this.add.length?((t=new Dr(this.dataflow).init(this)).add=t.source,t):t},Fr.init=function(t,n){var e=this;return e.stamp=t.stamp,e.encode=t.encode,!t.fields||64&n||(e.fields=t.fields),1&n?(e.addF=t.addF,e.add=t.add):(e.addF=null,e.add=[]),2&n?(e.remF=t.remF,e.rem=t.rem):(e.remF=null,e.rem=[]),4&n?(e.modF=t.modF,e.mod=t.mod):(e.modF=null,e.mod=[]),32&n?(e.srcF=null,e.source=null):(e.srcF=t.srcF,e.source=t.source),e},Fr.runAfter=function(t){this.dataflow.runAfter(t)},Fr.changed=function(t){var n=t||7;return 1&n&&this.add.length||2&n&&this.rem.length||4&n&&this.mod.length},Fr.reflow=function(t){if(t)return this.fork(7).reflow();var n=this.add.length,e=this.source&&this.source.length;return e&&e!==n&&(this.mod=this.source,n&&this.filter(4,Or(this,1))),this},Fr.modifies=function(t){var n=W(t),e=this.fields||(this.fields={});return n.forEach(function(t){e[t]=!0}),this},Fr.modified=function(t){var n=this.fields;return!(!this.mod.length||!n)&&(arguments.length?u(t)?t.some(function(t){return n[t]}):n[t]:!!n)},Fr.filter=function(t,n){var e=this;return 1&t&&(e.addF=Sr(e.addF,n)),2&t&&(e.remF=Sr(e.remF,n)),4&t&&(e.modF=Sr(e.modF,n)),16&t&&(e.srcF=Sr(e.srcF,n)),e},Fr.materialize=function(t){var n=this;return 1&(t=t||7)&&n.addF&&(n.add=Br(n.add,n.addF),n.addF=null),2&t&&n.remF&&(n.rem=Br(n.rem,n.remF),n.remF=null),4&t&&n.modF&&(n.mod=Br(n.mod,n.modF),n.modF=null),16&t&&n.srcF&&(n.source=n.source.filter(n.srcF),n.srcF=null),n},Fr.visit=function(t,n){var e,r,i=this,a=n;return 16&t?(_t(i.source,i.srcF,a),i):(1&t&&_t(i.add,i.addF,a),2&t&&_t(i.rem,i.remF,a),4&t&&_t(i.mod,i.modF,a),8&t&&(e=i.source)&&((r=i.add.length+i.mod.length)===e.length||_t(e,r?Or(i,5):i.srcF,a)),i)};var Nr=et(zr,Dr);function Tr(t){return t.error("Dataflow already running. Use runAsync() to chain invocations."),t}Nr.fork=function(t){var n=new Dr(this.dataflow).init(this,t&this.NO_FIELDS);return void 0!==t&&(t&n.ADD&&this.visit(n.ADD,function(t){return n.add.push(t)}),t&n.REM&&this.visit(n.REM,function(t){return n.rem.push(t)}),t&n.MOD&&this.visit(n.MOD,function(t){return n.mod.push(t)})),n},Nr.changed=function(t){return this.changes&t},Nr.modified=function(t){var n=this,e=n.fields;return e&&n.changes&n.MOD?u(t)?t.some(function(t){return e[t]}):e[t]:0},Nr.filter=function(){i("MultiPulse does not support filtering.")},Nr.materialize=function(){i("MultiPulse does not support materialization.")},Nr.visit=function(t,n){var e=this,r=e.pulses,i=r.length,a=0;if(t&e.SOURCE)for(;a<i;++a)r[a].visit(t,n);else for(;a<i;++a)r[a].stamp===e.stamp&&r[a].visit(t,n);return e};var Rr={skip:!1,force:!1};function Pr(t){var n=[];return{size:()=>n.length,peek:()=>n[0],push:e=>(n.push(e),Lr(n,0,n.length-1,t)),pop:()=>{var e,r=n.pop();return n.length?(e=n[0],n[0]=r,function(t,n,e){var r,i=n,a=t.length,u=t[n],o=1+(n<<1);for(;o<a;)(r=o+1)<a&&e(t[o],t[r])>=0&&(o=r),t[n]=t[o],o=1+((n=o)<<1);t[n]=u,Lr(t,i,n,e)}(n,0,t)):e=r,e}}}function Lr(t,n,e,r){var i,a,u;for(i=t[e];e>n&&r(i,a=t[u=e-1>>1])<0;)t[e]=a,e=u;return t[e]=i}function qr(){this.logger(M()),this.logLevel(_),this._clock=0,this._rank=0;try{this._loader=wr()}catch(t){}this._touched=bt(h),this._pulses={},this._pulse=null,this._heap=Pr((t,n)=>t.qrank-n.qrank),this._postrun=[]}var Ur=qr.prototype;function jr(t){return function(){return this._log[t].apply(this,arguments)}}function $r(t,n){qt.call(this,t,null,n)}Ur.stamp=function(){return this._clock},Ur.loader=function(t){return arguments.length?(this._loader=t,this):this._loader},Ur.cleanThreshold=1e4,Ur.add=function(t,n,e,r){var i,a=1;return t instanceof qt?i=t:t&&t.prototype instanceof qt?i=new t:Y(t)?i=new qt(null,t):(a=0,i=new qt(t,n)),this.rank(i),a&&(r=e,e=n),e&&this.connect(i,i.parameters(e,r)),this.touch(i),i},Ur.connect=function(t,n){var e,r,i=t.rank;for(e=0,r=n.length;e<r;++e)if(i<n[e].rank)return void this.rerank(t)},Ur.rank=function(t){t.rank=++this._rank},Ur.rerank=function(t){for(var n,e,r,a=[t];a.length;)if(this.rank(n=a.pop()),e=n._targets)for(r=e.length;--r>=0;)a.push(n=e[r]),n===t&&i("Cycle detected in dataflow graph.")},Ur.pulse=function(t,n,e){this.touch(t,e||Rr);var r=new Dr(this,this._clock+(this._pulse?0:1)),i=t.pulse&&t.pulse.source||[];return r.target=t,this._pulses[t.id]=n.pulse(r,i),this},Ur.touch=function(t,n){var e=n||Rr;return this._pulse?this._enqueue(t):this._touched.add(t),e.skip&&t.skip(!0),this},Ur.update=function(t,n,e){var r=e||Rr;return(t.set(n)||r.force)&&this.touch(t,r),this},Ur.changeset=zt,Ur.ingest=function(t,n,e){return this.pulse(t,this.changeset().insert(Ar(n,e)))},Ur.parse=Ar,Ur.preload=async function(t,n,e){const r=this,i=r._pending||function(t){var n,e=new Promise(function(t){n=t});return e.requests=0,e.done=function(){0==--e.requests&&(t._pending=null,n(t))},t._pending=e}(r);i.requests+=1;const a=await r.request(n,e);return r.pulse(t,r.changeset().remove(m).insert(a.data||[])),i.done(),a},Ur.request=async function(t,n){const e=this;let r,i=0;try{r=await e.loader().load(t,{context:"dataflow",response:Sn(n&&n.type)});try{r=Ar(r,n)}catch(n){i=-2,e.warn("Data ingestion failed",t,n)}}catch(n){i=-1,e.warn("Loading failed",t,n)}return{data:r,status:i}},Ur.events=function(t,n,e,r){for(var i,a=this,u=Wt(e,r),o=function(t){t.dataflow=a;try{u.receive(t)}catch(t){a.error(t)}finally{a.run()}},s=0,l=(i="string"==typeof t&&"undefined"!=typeof document?document.querySelectorAll(t):W(t)).length;s<l;++s)i[s].addEventListener(n,o);return u},Ur.on=function(t,n,e,r,i){return(t instanceof qt?Er:kr)(this,t,n,e,r,i),this},Ur.evaluate=async function(t,n,e){const r=this,i=r.logLevel();if(r._pulse)return Tr(r);if(r._pending&&await r._pending,n&&await wt(r,n),!r._touched.length)return r.info("Dataflow invoked, but nothing to do."),r;let a,u,o,s,l=++r._clock,c=0;r._pulse=new Dr(r,l,t),i>=w&&(o=Date.now(),r.debug("-- START PROPAGATION ("+l+") -----")),r._touched.forEach(function(t){r._enqueue(t,!0)}),r._touched=bt(h);try{for(;r._heap.size()>0;)(a=r._heap.pop()).rank===a.qrank?((u=a.run(r._getPulse(a,t))).then&&(u=await u),i>=A&&r.debug(a.id,u===Cr?"STOP":u,a),u!==Cr&&(r._pulse=u,a._targets&&a._targets.forEach(t=>r._enqueue(t))),++c):r._enqueue(a,!0)}catch(t){s=t}if(r._pulses={},r._pulse=null,i>=w&&(o=Date.now()-o,r.info("> Pulse "+l+": "+c+" operators; "+o+"ms")),s&&(r._postrun=[],r.error(s)),r._postrun.length){const t=r._postrun.sort((t,n)=>n.priority-t.priority);r._postrun=[];for(let n=0;n<t.length;++n)await wt(r,t[n].callback)}return e&&await wt(r,e),r},Ur.run=function(t,n,e){return this._pulse?Tr(this):(this.evaluate(t,n,e),this)},Ur.runAsync=async function(t,n,e){for(;this._running;)await this._running;const r=()=>this._running=null;return(this._running=this.evaluate(t,n,e)).then(r,r),this._running},Ur.runAfter=function(t,n,e){if(this._pulse||n)this._postrun.push({priority:e||0,callback:t});else try{t(this)}catch(t){this.error(t)}},Ur._enqueue=function(t,n){var e=!this._pulses[t.id];e&&(this._pulses[t.id]=this._pulse),(e||n)&&(t.qrank=t.rank,this._heap.push(t))},Ur._getPulse=function(t,n){var e,r=t.source,i=this._clock;return r&&u(r)?new zr(this,i,e=r.map(function(t){return t.pulse}),n):(e=this._pulses[t.id],r&&((r=r.pulse)&&r!==Cr?r.stamp===i&&e.target!==t?e=r:e.source=r.source:e.source=[]),e)},Ur.logger=function(t){return arguments.length?(this._log=t,this):this._log},Ur.error=jr("error"),Ur.warn=jr("warn"),Ur.info=jr("info"),Ur.debug=jr("debug"),Ur.logLevel=jr("level");var Ir=et($r,qt);Ir.run=function(t){return t.stamp<=this.stamp?t.StopPropagation:(this.skip()?this.skip(!1):n=this.evaluate(t),n=n||t,this.stamp=t.stamp,n.then?n=n.then(t=>this.pulse=t):n!==t.StopPropagation&&(this.pulse=n),n);var n},Ir.evaluate=function(t){var n=this.marshall(t.stamp),e=this.transform(n,t);return n.clear(),e},Ir.transform=function(){};var Wr={};function Hr(t){var n=Yr(t);return n&&n.Definition||null}function Yr(t){return t=t&&t.toLowerCase(),Wr.hasOwnProperty(t)?Wr[t]:null}function Gr(t){return t&&t.length?1===t.length?t[0]:(n=t,function(t){for(var e=n.length,r=1,i=String(n[0](t));r<e;++r)i+="|"+n[r](t);return i}):function(){return""};var n}function Vr(t,n,e){return e||t+(n?"_"+n:"")}var Xr={values:Qr({name:"values",init:"cell.store = true;",set:"cell.data.values()",idx:-1}),count:Qr({name:"count",set:"cell.num"}),__count__:Qr({name:"count",set:"this.missing + this.valid"}),missing:Qr({name:"missing",set:"this.missing"}),valid:Qr({name:"valid",set:"this.valid"}),sum:Qr({name:"sum",init:"this.sum = 0;",add:"this.sum += +v;",rem:"this.sum -= v;",set:"this.sum"}),mean:Qr({name:"mean",init:"this.mean = 0;",add:"var d = v - this.mean; this.mean += d / this.valid;",rem:"var d = v - this.mean; this.mean -= this.valid ? d / this.valid : this.mean;",set:"this.valid ? this.mean : undefined"}),average:Qr({name:"average",set:"this.valid ? this.mean : undefined",req:["mean"],idx:1}),variance:Qr({name:"variance",init:"this.dev = 0;",add:"this.dev += d * (v - this.mean);",rem:"this.dev -= d * (v - this.mean);",set:"this.valid > 1 ? this.dev / (this.valid-1) : undefined",req:["mean"],idx:1}),variancep:Qr({name:"variancep",set:"this.valid > 1 ? this.dev / this.valid : undefined",req:["variance"],idx:2}),stdev:Qr({name:"stdev",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined",req:["variance"],idx:2}),stdevp:Qr({name:"stdevp",set:"this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined",req:["variance"],idx:2}),stderr:Qr({name:"stderr",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined",req:["variance"],idx:2}),distinct:Qr({name:"distinct",set:"cell.data.distinct(this.get)",req:["values"],idx:3}),ci0:Qr({name:"ci0",set:"cell.data.ci0(this.get)",req:["values"],idx:3}),ci1:Qr({name:"ci1",set:"cell.data.ci1(this.get)",req:["values"],idx:3}),median:Qr({name:"median",set:"cell.data.q2(this.get)",req:["values"],idx:3}),q1:Qr({name:"q1",set:"cell.data.q1(this.get)",req:["values"],idx:3}),q3:Qr({name:"q3",set:"cell.data.q3(this.get)",req:["values"],idx:3}),argmin:Qr({name:"argmin",init:"this.argmin = undefined;",add:"if (v < this.min) this.argmin = t;",rem:"if (v <= this.min) this.argmin = undefined;",set:"this.argmin || cell.data.argmin(this.get)",req:["min"],str:["values"],idx:3}),argmax:Qr({name:"argmax",init:"this.argmax = undefined;",add:"if (v > this.max) this.argmax = t;",rem:"if (v >= this.max) this.argmax = undefined;",set:"this.argmax || cell.data.argmax(this.get)",req:["max"],str:["values"],idx:3}),min:Qr({name:"min",init:"this.min = undefined;",add:"if (v < this.min || this.min === undefined) this.min = v;",rem:"if (v <= this.min) this.min = NaN;",set:"this.min = (isNaN(this.min) ? cell.data.min(this.get) : this.min)",str:["values"],idx:4}),max:Qr({name:"max",init:"this.max = undefined;",add:"if (v > this.max || this.max === undefined) this.max = v;",rem:"if (v >= this.max) this.max = NaN;",set:"this.max = (isNaN(this.max) ? cell.data.max(this.get) : this.max)",str:["values"],idx:4})},Zr=Object.keys(Xr);function Jr(t,n){return Xr[t](n)}function Qr(t){return function(n){var e=Z({init:"",add:"",rem:"",idx:0},t);return e.out=n||t.name,e}}function Kr(t,n){return t.idx-n.idx}function ti(t,n){var e=n||d,r=function(t,n){var e,r=t.reduce(function t(e,r){function i(n){e[n]||t(e,e[n]=Xr[n]())}return r.req&&r.req.forEach(i),n&&r.str&&r.str.forEach(i),e},t.reduce(function(t,n){return t[n.name]=n,t},{})),i=[];for(e in r)i.push(r[e]);return i.sort(Kr)}(t,!0),i="var cell = this.cell; this.valid = 0; this.missing = 0;",a="this.cell = cell; this.init();",u="if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;",o="if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;",s="var cell = this.cell;";return r.forEach(function(t){i+=t.init,u+=t.add,o+=t.rem}),t.slice().sort(Kr).forEach(function(t){s+="t[\'"+t.out+"\']="+t.set+";"}),s+="return t;",(a=Function("cell",a)).prototype.init=Function(i),a.prototype.add=Function("v","t",u),a.prototype.rem=Function("v","t",o),a.prototype.set=Function("t",s),a.prototype.get=e,a.fields=t.map(function(t){return t.out}),a}function ni(t){var n,e,r,i,a,u,o,s,l=t.maxbins||20,c=t.base||10,f=Math.log(c),h=t.divide||[5,2],d=t.extent[0],p=t.extent[1],g=p-d||Math.abs(d)||1;if(t.step)n=t.step;else if(t.steps){for(a=g/l,u=0,o=t.steps.length;u<o&&t.steps[u]<a;++u);n=t.steps[Math.max(0,u-1)]}else{for(e=Math.ceil(Math.log(l)/f),r=t.minstep||0,n=Math.max(r,Math.pow(c,Math.round(Math.log(g)/f)-e));Math.ceil(g/n)>l;)n*=c;for(u=0,o=h.length;u<o;++u)(a=n/h[u])>=r&&g/a<=l&&(n=a)}return i=(a=Math.log(n))>=0?0:1+~~(-a/f),s=Math.pow(c,-i-1),(t.nice||void 0===t.nice)&&(d=d<(a=Math.floor(d/n+s)*n)?a-n:a,p=Math.ceil(p/n)*n),{start:d,stop:p===d?d+n:p,step:n}}function*ei(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}function ri(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function ii(t){var n;return 1===t.length&&(n=t,t=function(t,e){return ri(n(t),e)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var a=r+i>>>1;t(n[a],e)<0?r=a+1:i=a}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var a=r+i>>>1;t(n[a],e)>0?i=a:r=a+1}return r}}}t.random=Math.random;var ai=ii(ri),ui=ai.right,oi=ai.left;function si(t,n){let e,r;if(void 0===n)for(let n of t)null!=n&&n>=n&&(void 0===e?e=r=n:(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let a of t)null!=(a=n(a,++i,t))&&a>=a&&(void 0===e?e=r=a:(e>a&&(e=a),r<a&&(r=a)))}return[e,r]}function li(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),a=new Array(i);++r<i;)a[r]=t+r*e;return a}var ci=Math.sqrt(50),fi=Math.sqrt(10),hi=Math.sqrt(2);function di(t,n,e){var r,i,a,u,o=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(u=pi(t,n,e))||!isFinite(u))return[];if(u>0)for(t=Math.ceil(t/u),n=Math.floor(n/u),a=new Array(i=Math.ceil(n-t+1));++o<i;)a[o]=(t+o)*u;else for(t=Math.floor(t*u),n=Math.ceil(n*u),a=new Array(i=Math.ceil(t-n+1));++o<i;)a[o]=(t-o)/u;return r&&a.reverse(),a}function pi(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=ci?10:a>=fi?5:a>=hi?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=ci?10:a>=fi?5:a>=hi?2:1)}function gi(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=ci?i*=10:a>=fi?i*=5:a>=hi&&(i*=2),n<t?-i:i}function mi(t,n,e=function(t){return null===t?NaN:+t}){if(r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function vi(t,n,e=0,r=t.length-1,i=ri){for(;r>e;){if(r-e>600){const a=r-e+1,u=n-e+1,o=Math.log(a),s=.5*Math.exp(2*o/3),l=.5*Math.sqrt(o*s*(a-s)/a)*(u-a/2<0?-1:1);vi(t,n,Math.max(e,Math.floor(n-u*s/a+l)),Math.min(r,Math.floor(n+(a-u)*s/a+l)),i)}const a=t[n];let u=e,o=r;for(yi(t,e,n),i(t[r],a)>0&&yi(t,e,r);u<o;){for(yi(t,u,o),++u,--o;i(t[u],a)<0;)++u;for(;i(t[o],a)>0;)--o}0===i(t[e],a)?yi(t,e,o):yi(t,++o,r),o<=n&&(e=o+1),n<=o&&(r=o-1)}return t}function yi(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function xi(t,n){if(!(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,n))).length)return;const e=t.length,r=e>>1;return vi(t,r-1,0),0==(1&e)&&vi(t,r,r),mi(t,.5)}function _i(n,e,r,i){if(!n.length)return[void 0,void 0];var a,u,o,s,l=Float64Array.from(ei(n,i)),c=l.length,f=e;for(o=0,s=Array(f);o<f;++o){for(a=0,u=0;u<c;++u)a+=l[~~(t.random()*c)];s[o]=a/c}return[mi(s.sort(ri),r/2),mi(s,1-r/2)]}function bi(t,n){var e=Float64Array.from(ei(t,n));return[mi(e.sort(ri),.25),mi(e,.5),mi(e,.75)]}function wi(n,e){var r,i,a=NaN,u={mean:function(t){return arguments.length?(r=t||0,a=NaN,u):r},stdev:function(t){return arguments.length?(i=null==t?1:t,a=NaN,u):i},sample:function(){var n,e,u=0,o=0;if(a==a)return u=a,a=NaN,u;do{n=(u=2*t.random()-1)*u+(o=2*t.random()-1)*o}while(0===n||n>1);return e=Math.sqrt(-2*Math.log(n)/n),a=r+o*e*i,r+u*e*i},pdf:function(t){var n=Math.exp(Math.pow(t-r,2)/(-2*Math.pow(i,2)));return 1/(i*Math.sqrt(2*Math.PI))*n},cdf:function(t){var n,e=(t-r)/i,a=Math.abs(e);if(a>37)n=0;else{var u=Math.exp(-a*a/2);a<7.07106781186547?(n=u*((((((.0352624965998911*a+.700383064443688)*a+6.37396220353165)*a+33.912866078383)*a+112.079291497871)*a+221.213596169931)*a+220.206867912376),n/=((((((.0883883476483184*a+1.75566716318264)*a+16.064177579207)*a+86.7807322029461)*a+296.564248779674)*a+637.333633378831)*a+793.826512519948)*a+440.413735824752):n=u/(a+1/(a+2/(a+3/(a+4/(a+.65)))))/2.506628274631}return e>0?1-n:n},icdf:function(t){if(t<=0||t>=1)return NaN;var n=2*t-1,e=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),a=2/(Math.PI*e)+Math.log(1-Math.pow(n,2))/2,u=Math.log(1-n*n)/e,o=(n>0?1:-1)*Math.sqrt(Math.sqrt(a*a-u)-a);return r+i*Math.SQRT2*o}};return u.mean(n).stdev(e)}function Ai(n,e){var r=wi(),i={},a=0;return i.data=function(t){return arguments.length?(n=t,a=t?t.length:0,i.bandwidth(e)):n},i.bandwidth=function(t){return arguments.length?(!(e=t)&&n&&(a=(r=n).length,u=bi(r),o=(u[2]-u[0])/1.34,e=1.06*Math.min(Math.sqrt(function(t,n){let e,r=0,i=0,a=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(a+=(e=n-i)*(n-(i+=e/++r)));else{let u=-1;for(let o of t)null!=(o=n(o,++u,t))&&(o=+o)>=o&&(a+=(e=o-i)*(o-(i+=e/++r)))}if(r>1)return a/(r-1)}(r)),o)*Math.pow(a,-.2)),i):e;var r,a,u,o},i.sample=function(){return n[~~(t.random()*a)]+e*r.sample()},i.pdf=function(t){for(var i=0,u=0;u<a;++u)i+=r.pdf((t-n[u])/e);return i/e/a},i.cdf=function(t){for(var i=0,u=0;u<a;++u)i+=r.cdf((t-n[u])/e);return i/a},i.icdf=function(){throw Error("KDE icdf not supported.")},i.data(n)}function Mi(n,e){var r,i={},a=0;return i.weights=function(t){return arguments.length?(r=function(t){var n,e=[],r=0;for(n=0;n<a;++n)r+=e[n]=null==t[n]?1:+t[n];for(n=0;n<a;++n)e[n]/=r;return e}(e=t||[]),i):e},i.distributions=function(t){return arguments.length?(t?(a=t.length,n=t):(a=0,n=[]),i.weights(e)):n},i.sample=function(){for(var e=t.random(),i=n[a-1],u=r[0],o=0;o<a-1;u+=r[++o])if(e<u){i=n[o];break}return i.sample()},i.pdf=function(t){for(var e=0,i=0;i<a;++i)e+=r[i]*n[i].pdf(t);return e},i.cdf=function(t){for(var e=0,i=0;i<a;++i)e+=r[i]*n[i].cdf(t);return e},i.icdf=function(){throw Error("Mixture icdf not supported.")},i.distributions(n).weights(e)}function ki(n,e){null==e&&(e=null==n?1:n,n=0);var r,i,a,u={};return u.min=function(t){return arguments.length?(a=i-(r=t||0),u):r},u.max=function(t){return arguments.length?(a=(i=t||0)-r,u):i},u.sample=function(){return r+a*t.random()},u.pdf=function(t){return t>=r&&t<=i?1/a:0},u.cdf=function(t){return t<r?0:t>i?1:(t-r)/a},u.icdf=function(t){return t>=0&&t<=1?r+t*a:NaN},u.min(n).max(e)}function Ei(t,n,e,r){const i=r-t*t,a=Math.abs(i)<1e-24?0:(e-t*n)/i;return[n-a*t,a]}function Ci(t,n,e,r){t=t.filter(t=>{let r=n(t),i=e(t);return null!=r&&(r=+r)>=r&&null!=i&&(i=+i)>=i}),r&&t.sort((t,e)=>n(t)-n(e));const i=new Float64Array(t.length),a=new Float64Array(t.length);let u=0;for(let r of t)i[u]=n(r),a[u]=e(r),++u;return[i,a]}function Di(t,n,e,r){let i,a,u=-1,o=-1;for(let s of t)i=n(s,++u,t),a=e(s,u,t),null!=i&&(i=+i)>=i&&null!=a&&(a=+a)>=a&&r(i,a,++o)}function Fi(t,n,e,r,i){let a=0,u=0;return Di(t,n,e,(t,n)=>{const e=n-i(t),o=n-r;a+=e*e,u+=o*o}),1-a/u}function Si(t,n,e){let r=0,i=0,a=0,u=0,o=0;Di(t,n,e,(t,n)=>{r+=t,i+=n,a+=t*n,u+=t*t,++o});const s=Ei(r/o,i/o,a/o,u/o),l=t=>s[0]+s[1]*t;return{coef:s,predict:l,rSquared:Fi(t,n,e,i/o,l)}}function Bi(t,n,e){let r=0,i=0,a=0,u=0,o=0;Di(t,n,e,(t,n)=>{t=Math.log(t),r+=t,i+=n,a+=t*n,u+=t*t,++o});const s=Ei(r/o,i/o,a/o,u/o),l=t=>s[0]+s[1]*Math.log(t);return{coef:s,predict:l,rSquared:Fi(t,n,e,i/o,l)}}function Oi(t,n,e){let r=0,i=0,a=0,u=0,o=0,s=0;Di(t,n,e,(t,n)=>{const e=Math.log(n),l=t*n;r+=n,a+=l,o+=t*l,i+=n*e,u+=l*e,++s});const l=Ei(a/r,i/r,u/r,o/r),c=t=>l[0]*Math.exp(l[1]*t);return l[0]=Math.exp(l[0]),{coef:l,predict:c,rSquared:Fi(t,n,e,r/s,c)}}function zi(t,n,e){let r=0,i=0,a=0,u=0,o=0,s=0;Di(t,n,e,(t,n)=>{const e=Math.log(t),l=Math.log(n);r+=e,i+=l,a+=e*l,u+=e*e,o+=n,++s});const l=Ei(r/s,i/s,a/s,u/s),c=t=>l[0]*Math.pow(t,l[1]);return l[0]=Math.exp(l[0]),{coef:l,predict:c,rSquared:Fi(t,n,e,o/s,c)}}function Ni(t,n,e){let r=0,i=0,a=0,u=0,o=0,s=0,l=0,c=0;Di(t,n,e,(t,n)=>{const e=t*t;r+=t,i+=n,a+=e,u+=e*t,o+=e*e,s+=t*n,l+=e*n,++c});const f=a-r*r/c,h=u-a*r/c,d=o-a*a/c,p=f*d-h*h,g=((l-=a*(i/=c))*f-(s-=r*i)*h)/p,m=(s*d-l*h)/p,v=i-m*(r/c)-g*(a/c),y=t=>g*t*t+m*t+v;return{coef:[v,m,g],predict:y,rSquared:Fi(t,n,e,i,y)}}function Ti(t,n,e,r){if(1===r)return Si(t,n,e);if(2===r)return Ni(t,n,e);const[i,a]=Ci(t,n,e),u=i.length,o=[],s=[],l=r+1;let c,f,h,d,p,g=0;for(c=0;c<u;++c)g+=a[c];for(c=0;c<l;++c){for(h=0,d=0;h<u;++h)d+=Math.pow(i[h],c)*a[h];for(o.push(d),p=new Float64Array(l),f=0;f<l;++f){for(h=0,d=0;h<u;++h)d+=Math.pow(i[h],c+f);p[f]=d}s.push(p)}s.push(o);const m=function(t){const n=t.length-1,e=[];let r,i,a,u,o;for(r=0;r<n;++r){for(u=r,i=r+1;i<n;++i)Math.abs(t[r][i])>Math.abs(t[r][u])&&(u=i);for(a=r;a<n+1;++a)o=t[a][r],t[a][r]=t[a][u],t[a][u]=o;for(i=r+1;i<n;++i)for(a=n;a>=r;a--)t[a][i]-=t[a][r]*t[r][i]/t[r][r]}for(i=n-1;i>=0;--i){for(o=0,a=i+1;a<n;++a)o+=t[a][i]*e[a];e[i]=(t[n][i]-o)/t[i][i]}return e}(s),v=t=>{let n=0,e=0,r=m.length;for(;e<r;++e)n+=m[e]*Math.pow(t,e);return n};return{coef:m,predict:v,rSquared:Fi(t,n,e,g/u,v)}}const Ri=2,Pi=1e-12;function Li(t,n,e,r){const[i,a]=Ci(t,n,e,!0),u=i.length,o=Math.max(2,~~(r*u)),s=new Float64Array(u),l=new Float64Array(u),c=new Float64Array(u).fill(1);for(let t=-1;++t<=Ri;){const n=[0,o-1];for(let t=0;t<u;++t){const e=i[t],r=n[0],u=n[1],o=e-i[r]>i[u]-e?r:u;let f=0,h=0,d=0,p=0,g=0,m=1/Math.abs(i[o]-e||1);for(let t=r;t<=u;++t){const n=i[t],r=a[t],u=qi(Math.abs(e-n)*m)*c[t],o=n*u;f+=u,h+=o,d+=r*u,p+=r*o,g+=n*o}const[v,y]=Ei(h/f,d/f,p/f,g/f);s[t]=v+y*e,l[t]=Math.abs(a[t]-s[t]),Ui(i,t+1,n)}if(t===Ri)break;const e=xi(l);if(Math.abs(e)<Pi)break;for(let t,n,r=0;r<u;++r)t=l[r]/(6*e),c[r]=t>=1?Pi:(n=1-t*t)*n}return function(t,n){const e=t.length,r=[];for(let i,a=0,u=0,o=[];a<e;++a)i=t[a],o[0]===i?o[1]+=(n[a]-o[1])/++u:(u=0,o=[i,n[a]],r.push(o));return r}(i,s)}function qi(t){return(t=1-t*t*t)*t*t}function Ui(t,n,e){let r=t[n],i=e[0],a=e[1]+1;if(!(a>=t.length))for(;n>i&&t[a]-r<=r-t[i];)e[0]=++i,e[1]=a,++a}const ji=.1*Math.PI/180;function $i(t,n,e,r){e=e||25,r=Math.max(e,r||200);const i=n=>[n,t(n)],a=n[0],u=n[1],o=u-a,s=o/r,l=[i(a)],c=[];if(e===r){for(let t=1;t<r;++t)l.push(i(a+t/e*o));return l.push(i(u)),l}c.push(i(u));for(let t=e;--t>0;)c.push(i(a+t/e*o));let f=l[0],h=c[c.length-1];for(;h;){const t=i((f[0]+h[0])/2);t[0]-f[0]>=s&&Ii(f,t,h)>ji?c.push(t):(f=h,l.push(h),c.pop()),h=c[c.length-1]}return l}function Ii(t,n,e){const r=Math.atan2(e[1]-t[1],e[0]-t[0]),i=Math.atan2(n[1]-t[1],n[0]-t[0]);return Math.abs(r-i)}function Wi(t){this._key=t?c(t):Et,this.reset()}var Hi=Wi.prototype;function Yi(t){$r.call(this,null,t),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}Hi.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},Hi.add=function(t){this._add.push(t)},Hi.rem=function(t){this._rem.push(t)},Hi.values=function(){if(this._get=null,0===this._rem.length)return this._add;var t,n,e,r=this._add,i=this._rem,a=this._key,u=r.length,o=i.length,s=Array(u-o),l={};for(t=0;t<o;++t)l[a(i[t])]=1;for(t=0,n=0;t<u;++t)l[a(e=r[t])]?l[a(e)]=0:s[n++]=e;return this._rem=[],this._add=s},Hi.distinct=function(t){for(var n,e=this.values(),r=e.length,i={},a=0;--r>=0;)n=t(e[r])+"",i.hasOwnProperty(n)||(i[n]=1,++a);return a},Hi.extent=function(t){if(this._get!==t||!this._ext){var n=this.values(),e=Q(n,t);this._ext=[n[e[0]],n[e[1]]],this._get=t}return this._ext},Hi.argmin=function(t){return this.extent(t)[0]||{}},Hi.argmax=function(t){return this.extent(t)[1]||{}},Hi.min=function(t){var n=this.extent(t)[0];return null!=n?t(n):void 0},Hi.max=function(t){var n=this.extent(t)[1];return null!=n?t(n):void 0},Hi.quartile=function(t){return this._get===t&&this._q||(this._q=bi(this.values(),t),this._get=t),this._q},Hi.q1=function(t){return this.quartile(t)[0]},Hi.q2=function(t){return this.quartile(t)[1]},Hi.q3=function(t){return this.quartile(t)[2]},Hi.ci=function(t){return this._get===t&&this._ci||(this._ci=_i(this.values(),1e3,.05,t),this._get=t),this._ci},Hi.ci0=function(t){return this.ci(t)[0]},Hi.ci1=function(t){return this.ci(t)[1]},Yi.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Zr},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]};var Gi=et(Yi,$r);Gi.transform=function(t,n){var e,r=this,i=n.fork(n.NO_SOURCE|n.NO_FIELDS);return this.stamp=i.stamp,this.value&&((e=t.modified())||n.modified(this._inputs))?(this._prev=this.value,this.value=e?this.init(t):{},n.visit(n.SOURCE,function(t){r.add(t)})):(this.value=this.value||this.init(t),n.visit(n.REM,function(t){r.rem(t)}),n.visit(n.ADD,function(t){r.add(t)})),i.modifies(this._outputs),r._drop=!1!==t.drop,t.cross&&r._dims.length>1&&(r._drop=!1,this.cross()),r.changes(i)},Gi.cross=function(){var t=this,n=t.value,e=t._dnames,r=e.map(function(){return{}}),i=e.length;function a(t){var n,a,u,o;for(n in t)for(u=t[n].tuple,a=0;a<i;++a)r[a][o=u[e[a]]]=o}a(t._prev),a(n),function a(u,o,s){var l,c,f=e[s],h=r[s++];for(l in h)o[f]=h[l],c=u?u+"|"+l:l,s<i?a(c,o,s):n[c]||t.cell(c,o)}("",{},0)},Gi.init=function(t){var n=this._inputs=[],a=this._outputs=[],u={};function o(t){for(var e,i=W(r(t)),a=0,o=i.length;a<o;++a)u[e=i[a]]||(u[e]=1,n.push(e))}this._dims=W(t.groupby),this._dnames=this._dims.map(function(t){var n=e(t);return o(t),a.push(n),n}),this.cellkey=t.key?t.key:Gr(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];var s,l,c,f,h,d,p=t.fields||[null],g=t.ops||["count"],m=t.as||[],v=p.length,y={};for(v!==g.length&&i("Unmatched number of fields and aggregate ops."),d=0;d<v;++d)s=p[d],l=g[d],null==s&&"count"!==l&&i("Null aggregate field specified."),h=Vr(l,f=e(s),m[d]),a.push(h),"count"!==l?((c=y[f])||(o(s),(c=y[f]=[]).field=s,this._measures.push(c)),"count"!==l&&(this._countOnly=!1),c.push(Jr(l,h))):this._counts.push(h);return this._measures=this._measures.map(function(t){return ti(t,t.field)}),{}},Gi.cellkey=Gr(),Gi.cell=function(t,n){var e=this.value[t];return e?0===e.num&&this._drop&&e.stamp<this.stamp?(e.stamp=this.stamp,this._adds[this._alen++]=e):e.stamp<this.stamp&&(e.stamp=this.stamp,this._mods[this._mlen++]=e):(e=this.value[t]=this.newcell(t,n),this._adds[this._alen++]=e),e},Gi.newcell=function(t,n){var e={key:t,num:0,agg:null,tuple:this.newtuple(n,this._prev&&this._prev[t]),stamp:this.stamp,store:!1};if(!this._countOnly){var r,i=this._measures,a=i.length;for(e.agg=Array(a),r=0;r<a;++r)e.agg[r]=new i[r](e)}return e.store&&(e.data=new Wi),e},Gi.newtuple=function(t,n){var e,r,i=this._dnames,a=this._dims,u={};for(e=0,r=a.length;e<r;++e)u[i[e]]=a[e](t);return n?Bt(n.tuple,u):Dt(u)},Gi.add=function(t){var n,e,r,i=this.cellkey(t),a=this.cell(i,t);if(a.num+=1,!this._countOnly)for(a.store&&a.data.add(t),e=0,r=(n=a.agg).length;e<r;++e)n[e].add(n[e].get(t),t)},Gi.rem=function(t){var n,e,r,i=this.cellkey(t),a=this.cell(i,t);if(a.num-=1,!this._countOnly)for(a.store&&a.data.rem(t),e=0,r=(n=a.agg).length;e<r;++e)n[e].rem(n[e].get(t),t)},Gi.celltuple=function(t){var n,e,r,i=t.tuple,a=this._counts;for(t.store&&t.data.values(),e=0,r=a.length;e<r;++e)i[a[e]]=t.num;if(!this._countOnly)for(e=0,r=(n=t.agg).length;e<r;++e)n[e].set(i);return i},Gi.changes=function(t){var n,e,r,i,a=this._adds,u=this._mods,o=this._prev,s=this._drop,l=t.add,c=t.rem,f=t.mod;if(o)for(e in o)n=o[e],s&&!n.num||c.push(n.tuple);for(r=0,i=this._alen;r<i;++r)l.push(this.celltuple(a[r])),a[r]=null;for(r=0,i=this._mlen;r<i;++r)(0===(n=u[r]).num&&s?c:f).push(this.celltuple(n)),u[r]=null;return this._alen=this._mlen=0,this._prev=null,t};function Vi(t){$r.call(this,null,t)}Vi.Definition={type:"Bin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"anchor",type:"number"},{name:"maxbins",type:"number",default:20},{name:"base",type:"number",default:10},{name:"divide",type:"number",array:!0,default:[5,2]},{name:"extent",type:"number",array:!0,length:2,required:!0},{name:"step",type:"number"},{name:"steps",type:"number",array:!0},{name:"minstep",type:"number",default:0},{name:"nice",type:"boolean",default:!0},{name:"name",type:"string"},{name:"as",type:"string",array:!0,length:2,default:["bin0","bin1"]}]};var Xi=et(Vi,$r);function Zi(t,n,e){var r=t,i=n||[],a=e||[],u={},o=0;return{add:function(t){a.push(t)},remove:function(t){u[r(t)]=++o},size:function(){return i.length},data:function(t,n){return o&&(i=i.filter(function(t){return!u[r(t)]}),u={},o=0),n&&t&&i.sort(t),a.length&&(i=t?ct(t,i,a.sort(t)):i.concat(a),a=[]),i}}}function Ji(t){$r.call(this,[],t)}function Qi(t){qt.call(this,null,Ki,t)}function Ki(t){return this.value&&!t.modified()?this.value:G(t.fields,t.orders)}function ta(t){$r.call(this,null,t)}Xi.transform=function(t,n){var e,i=this._bins(t),a=i.start,u=i.step,o=t.as||["bin0","bin1"],s=o[0],l=o[1];return e=t.modified()?(n=n.reflow(!0)).SOURCE:n.modified(r(t.field))?n.ADD_MOD:n.ADD,n.visit(e,function(t){var n=i(t);t[s]=n,t[l]=null==n?null:a+u*(1+(n-a)/u)}),n.modifies(o)},Xi._bins=function(t){if(this.value&&!t.modified())return this.value;var i,a,u=t.field,o=ni(t),s=o.start,l=o.stop,c=o.step;null!=(i=t.anchor)&&(a=i-(s+c*Math.floor((i-s)/c)),s+=a,l+=a);var f=function(t){var n=u(t);return null==n?null:(n=Math.max(s,Math.min(+n,l-c)),s+c*Math.floor(1e-14+(n-s)/c))};return f.start=s,f.stop=l,f.step=c,this.value=n(f,r(u),t.name||"bin_"+e(u))},Ji.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},et(Ji,$r).transform=function(t,n){var e=n.fork(n.ALL),r=Zi(Et,this.value,e.materialize(e.ADD).add),i=t.sort,a=n.changed()||i&&(t.modified("sort")||n.modified(i.fields));return e.visit(e.REM,r.remove),this.modified(a),this.value=e.source=r.data(i,a),n.source&&n.source.root&&(this.value.root=n.source.root),e},et(Qi,qt),ta.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:\'[\\\\w"]+\'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]};var na=et(ta,$r);function ea(t){$r.call(this,null,t)}na.transform=function(t,n){function e(n){return function(e){for(var r,i=function(t,n,e){switch(n){case"upper":t=t.toUpperCase();break;case"lower":t=t.toLowerCase()}return t.match(e)}(o(e),t.case,a)||[],s=0,l=i.length;s<l;++s)u.test(r=i[s])||n(r)}}var r=this._parameterCheck(t,n),i=this._counts,a=this._match,u=this._stop,o=t.field,s=t.as||["text","count"],l=e(function(t){i[t]=1+(i[t]||0)}),c=e(function(t){i[t]-=1});return r?n.visit(n.SOURCE,l):(n.visit(n.ADD,l),n.visit(n.REM,c)),this._finish(n,s)},na._parameterCheck=function(t,n){var e=!1;return!t.modified("stopwords")&&this._stop||(this._stop=new RegExp("^"+(t.stopwords||"")+"$","i"),e=!0),!t.modified("pattern")&&this._match||(this._match=new RegExp(t.pattern||"[\\\\w\']+","g"),e=!0),(t.modified("field")||n.modified(t.field.fields))&&(e=!0),e&&(this._counts={}),e},na._finish=function(t,n){var e,r,i,a=this._counts,u=this._tuples||(this._tuples={}),o=n[0],s=n[1],l=t.fork(t.NO_SOURCE|t.NO_FIELDS);for(e in a)r=u[e],i=a[e]||0,!r&&i?(u[e]=r=Dt({}),r[o]=e,r[s]=i,l.add.push(r)):0===i?(r&&l.rem.push(r),a[e]=null,u[e]=null):r[s]!==i&&(r[s]=i,l.mod.push(r));return l.modifies(n)},ea.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]},et(ea,$r).transform=function(t,n){var e=n.fork(n.NO_SOURCE),r=this.value,i=t.as||["a","b"],a=i[0],u=i[1];return!r||n.changed(n.ADD_REM)||t.modified("as")||t.modified("filter")?(r&&(e.rem=r),r=n.materialize(n.SOURCE).source,e.add=this.value=function(t,n,e,r){for(var i,a,u=[],o={},s=t.length,l=0;l<s;++l)for(o[n]=a=t[l],i=0;i<s;++i)o[e]=t[i],r(o)&&(u.push(Dt(o)),(o={})[n]=a);return u}(r,a,u,t.filter||m)):e.mod=r,e.source=this.value,e.modifies(i)};var ra={kde:Ai,mixture:Mi,normal:wi,uniform:ki},ia="distributions",aa="function",ua="field";function oa(t){$r.call(this,null,t)}var sa=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],la={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:sa},{name:"weights",type:"number",array:!0}]};function ca(t){qt.call(this,null,fa,t),this.modified(!0)}function fa(t){var i=t.expr;return this.value&&!t.modified("expr")?this.value:n(n=>i(n,t),r(i),e(i))}function ha(t){$r.call(this,[void 0,void 0],t)}function da(t,n){qt.call(this,t),this.parent=n}oa.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:sa.concat(la)},{name:"as",type:"string",array:!0,default:["value","density"]}]},et(oa,$r).transform=function(t,n){var e=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){var r=function t(n,e){var r=n[aa];ra.hasOwnProperty(r)||i("Unknown distribution function: "+r);var a=ra[r]();for(var u in n)u===ua?a.data((n.from||e()).map(n[u])):u===ia?a[u](n[u].map(function(n){return t(n,e)})):typeof a[u]===aa&&a[u](n[u]);return a}(t.distribution,function(t){return function(){return t.materialize(t.SOURCE).source}}(n)),a=t.steps||t.minsteps||25,u=t.steps||t.maxsteps||200,o=t.method||"pdf";"pdf"!==o&&"cdf"!==o&&i("Invalid density method: "+o),t.extent||r.data||i("Missing density extent parameter."),o=r[o];var s=t.as||["value","density"],l=$i(o,t.extent||J(r.data()),a,u).map(t=>{var n={};return n[s[0]]=t[0],n[s[1]]=t[1],Dt(n)});this.value&&(e.rem=this.value),this.value=e.add=e.source=l}return e},et(ca,qt),ha.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},et(ha,$r).transform=function(t,n){var e,r=this.value,i=t.field,a=r[0],u=r[1];((e=n.changed()||n.modified(i.fields)||t.modified("field"))||null==a)&&(a=1/0,u=-1/0),n.visit(e?n.SOURCE:n.ADD,function(t){var n=i(t);null!=n&&((n=+n)<a&&(a=n),n>u&&(u=n))}),isFinite(a)&&isFinite(u)||(a=u=void 0),this.value=[a,u]};var pa=et(da,qt);function ga(t){$r.call(this,{},t),this._keys=tt();var n=this._targets=[];n.active=0,n.forEach=function(t){for(var e=0,r=n.active;e<r;++e)t(n[e],e,n)}}pa.connect=function(t){return this.targets().add(t),t.source=this},pa.add=function(t){this.value.add.push(t)},pa.rem=function(t){this.value.rem.push(t)},pa.mod=function(t){this.value.mod.push(t)},pa.init=function(t){this.value.init(t,t.NO_SOURCE)},pa.evaluate=function(){return this.value};var ma=et(ga,$r);function va(t){qt.call(this,null,ya,t)}function ya(t){return this.value&&!t.modified()?this.value:u(t.name)?W(t.name).map(function(t){return c(t)}):c(t.name,t.as)}function xa(t){$r.call(this,tt(),t)}function _a(t,n){return t?t.map(function(t,r){return n[r]||e(t)}):null}function ba(t){$r.call(this,[],t)}function wa(t){$r.call(this,[],t)}function Aa(t){$r.call(this,null,t)}function Ma(t){$r.call(this,[],t)}ma.activate=function(t){this._targets[this._targets.active++]=t},ma.subflow=function(t,n,e,r){var i,a,u=this.value,o=u.hasOwnProperty(t)&&u[t];return o?o.value.stamp<e.stamp&&(o.init(e),this.activate(o)):(a=r||(a=this._group[t])&&a.tuple,o=(i=e.dataflow).add(new da(e.fork(e.NO_SOURCE),this)).connect(n(i,t,a)),u[t]=o,this.activate(o)),o},ma.transform=function(t,n){var e=n.dataflow,r=this,i=t.key,a=t.subflow,u=this._keys,o=t.modified("key");function s(t){return r.subflow(t,a,n)}return this._group=t.group||{},this._targets.active=0,n.visit(n.REM,function(t){var n=Et(t),e=u.get(n);void 0!==e&&(u.delete(n),s(e).rem(t))}),n.visit(n.ADD,function(t){var n=i(t);u.set(Et(t),n),s(n).add(t)}),o||n.modified(i.fields)?n.visit(n.MOD,function(t){var n=Et(t),e=u.get(n),r=i(t);e===r?s(r).mod(t):(u.set(n,r),s(e).rem(t),s(r).add(t))}):n.changed(n.MOD)&&n.visit(n.MOD,function(t){s(u.get(Et(t))).mod(t)}),o&&n.visit(n.REFLOW,function(t){var n=Et(t),e=u.get(n),r=i(t);e!==r&&(u.set(n,r),s(e).rem(t),s(r).add(t))}),u.empty>e.cleanThreshold&&e.runAfter(u.clean),n},et(va,qt),xa.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},et(xa,$r).transform=function(t,n){var e=n.dataflow,r=this.value,i=n.fork(),a=i.add,u=i.rem,o=i.mod,s=t.expr,l=!0;function c(n){var e=Et(n),i=s(n,t),c=r.get(e);i&&c?(r.delete(e),a.push(n)):i||c?l&&i&&!c&&o.push(n):(r.set(e,1),u.push(n))}return n.visit(n.REM,function(t){var n=Et(t);r.has(n)?r.delete(n):u.push(t)}),n.visit(n.ADD,function(n){s(n,t)?a.push(n):r.set(Et(n),1)}),n.visit(n.MOD,c),t.modified()&&(l=!1,n.visit(n.REFLOW,c)),r.empty>e.cleanThreshold&&e.runAfter(r.clean),i},ba.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0}]},et(ba,$r).transform=function(t,n){var e=n.fork(n.NO_SOURCE),r=t.fields,i=_a(r,t.as||[]),a=i.length;return e.rem=this.value,n.visit(n.SOURCE,function(t){for(var n,u,o,s=r.map(function(n){return n(t)}),l=s.reduce(function(t,n){return Math.max(t,n.length)},0),c=0;c<l;++c){for(u=Ft(t),n=0;n<a;++n)u[i[n]]=null==(o=s[n][c])?null:o;e.add.push(u)}}),this.value=e.source=e.add,e.modifies(i)},wa.Definition={type:"Fold",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0,length:2,default:["key","value"]}]},et(wa,$r).transform=function(t,n){var r=n.fork(n.NO_SOURCE),i=t.fields,a=i.map(e),u=t.as||["key","value"],o=u[0],s=u[1],l=i.length;return r.rem=this.value,n.visit(n.SOURCE,function(t){for(var n,e=0;e<l;++e)(n=Ft(t))[o]=a[e],n[s]=i[e](t),r.add.push(n)}),this.value=r.source=r.add,r.modifies(u)},Aa.Definition={type:"Formula",metadata:{modifies:!0},params:[{name:"expr",type:"expr",required:!0},{name:"as",type:"string",required:!0},{name:"initonly",type:"boolean"}]},et(Aa,$r).transform=function(t,n){var e=t.expr,r=t.as,i=t.modified(),a=t.initonly?n.ADD:i?n.SOURCE:n.modified(e.fields)?n.ADD_MOD:n.ADD;return i&&(n=n.materialize().reflow(!0)),t.initonly||n.modifies(r),n.visit(a,function(n){n[r]=e(n,t)})},et(Ma,$r).transform=function(t,n){var e,r,i,a=this.value,u=n.fork(n.ALL),o=t.size-a.length,s=t.generator;if(o>0){for(e=[];--o>=0;)e.push(i=Dt(s(t))),a.push(i);u.add=u.add.length?u.materialize(u.ADD).add.concat(e):e}else r=a.slice(0,-o),u.rem=u.rem.length?u.materialize(u.REM).rem.concat(r):r,a=a.slice(-o);return u.source=this.value=a,u};var ka={value:"value",median:xi,mean:function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let a of t)null!=(a=n(a,++i,t))&&(a=+a)>=a&&(++e,r+=a)}if(e)return r/e},min:function(t,n){let e;if(void 0===n)for(let n of t)null!=n&&n>=n&&(void 0===e||e>n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&(void 0===e||e>i)&&(e=i)}return e},max:function(t,n){let e;if(void 0===n)for(let n of t)null!=n&&n>=n&&(void 0===e||e<n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&(void 0===e||e<i)&&(e=i)}return e}},Ea=[];function Ca(t){$r.call(this,[],t)}function Da(t){Yi.call(this,t)}Ca.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},et(Ca,$r).transform=function(t,n){var r,a,u,o,s,l,c,f,h,d,p=n.fork(n.ALL),g=function(t){var n,e=t.method||ka.value;if(null!=ka[e])return e===ka.value?(n=void 0!==t.value?t.value:0,function(){return n}):ka[e];i("Unrecognized imputation method: "+e)}(t),m=function(t){var n=t.field;return function(t){return t?n(t):NaN}}(t),v=e(t.field),y=e(t.key),x=(t.groupby||[]).map(e),_=function(t,n,e,r){var i,a,u,o,s,l,c,f,h=function(t){return t(f)},d=[],p=r?r.slice():[],g={},m={};for(p.forEach(function(t,n){g[t]=n+1}),o=0,c=t.length;o<c;++o)f=t[o],l=e(f),s=g[l]||(g[l]=p.push(l)),a=(i=n?n.map(h):Ea)+"",(u=m[a])||(u=m[a]=[],d.push(u),u.values=i),u[s-1]=f;return d.domain=p,d}(n.source,t.groupby,t.key,t.keyvals),b=[],w=this.value,A=_.domain.length;for(s=0,f=_.length;s<f;++s)for(u=(r=_[s]).values,a=NaN,c=0;c<A;++c)if(null==r[c]){for(o=_.domain[c],d={_impute:!0},l=0,h=u.length;l<h;++l)d[x[l]]=u[l];d[y]=o,d[v]=isNaN(a)?a=g(r,m):a,b.push(Dt(d))}return b.length&&(p.add=p.materialize(p.ADD).add.concat(b)),w.length&&(p.rem=p.materialize(p.REM).rem.concat(w)),this.value=b,p},Da.Definition={type:"JoinAggregate",metadata:{modifies:!0},params:[{name:"groupby",type:"field",array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"ops",type:"enum",array:!0,values:Zr},{name:"as",type:"string",null:!0,array:!0},{name:"key",type:"field"}]};var Fa=et(Da,Yi);function Sa(t){$r.call(this,null,t)}function Ba(t){qt.call(this,null,Oa,t)}function Oa(t){return this.value&&!t.modified()?this.value:st(t.fields,t.flat)}function za(t){$r.call(this,[],t)}function Na(t,n,e){e.forEach(Dt);const r=n.fork(n.NO_FIELDS&n.NO_SOURCE);return r.rem=t.value,t.value=r.add=r.source=e,r}function Ta(t){$r.call(this,{},t)}function Ra(t){qt.call(this,null,Pa,t)}function Pa(t){if(this.value&&!t.modified())return this.value;var n,e,r,i=1/0,a=-1/0,u=t.extents;for(n=0,e=u.length;n<e;++n)(r=u[n])[0]<i&&(i=r[0]),r[1]>a&&(a=r[1]);return[i,a]}function La(t){qt.call(this,null,qa,t)}function qa(t){return this.value&&!t.modified()?this.value:t.values.reduce(function(t,n){return t.concat(n)},[])}function Ua(t){$r.call(this,null,t)}function ja(t){Yi.call(this,t)}Fa.transform=function(t,n){var e,r=this,i=t.modified();return r.value&&(i||n.modified(r._inputs))?(e=r.value=i?r.init(t):{},n.visit(n.SOURCE,function(t){r.add(t)})):(e=r.value=r.value||this.init(t),n.visit(n.REM,function(t){r.rem(t)}),n.visit(n.ADD,function(t){r.add(t)})),r.changes(),n.visit(n.SOURCE,function(t){Z(t,e[r.cellkey(t)].tuple)}),n.reflow(i).modifies(this._outputs)},Fa.changes=function(){var t,n,e=this._adds,r=this._mods;for(t=0,n=this._alen;t<n;++t)this.celltuple(e[t]),e[t]=null;for(t=0,n=this._mlen;t<n;++t)this.celltuple(r[t]),r[t]=null;this._alen=this._mlen=0},Sa.Definition={type:"KDE",metadata:{generates:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"cumulative",type:"boolean",default:!1},{name:"counts",type:"boolean",default:!1},{name:"bandwidth",type:"number",default:0},{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"as",type:"string",array:!0,default:["value","density"]}]},et(Sa,$r).transform=function(t,n){var r=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){const a=function(t,n,e){var r,i,a,u,o,s,l=[],c=function(t){return t(u)};if(null==n)l.push(t.map(e));else for(r={},i=0,a=t.length;i<a;++i)u=t[i],o=n.map(c),(s=r[o])||(r[o]=s=[],s.dims=o,l.push(s)),s.push(e(u));return l}(n.materialize(n.SOURCE).source,t.groupby,t.field),u=(t.groupby||[]).map(e),o=t.bandwidth,s=t.cumulative?"cdf":"pdf",l=t.steps||t.minsteps||25,c=t.steps||t.maxsteps||200,f=t.as||["value","density"],h=[];"pdf"!==s&&"cdf"!==s&&i("Invalid density method: "+s),a.forEach(n=>{const e=Ai(n,o)[s],r=t.counts?n.length:1;$i(e,t.extent||si(n),l,c).forEach(t=>{const e={};for(let t=0;t<u.length;++t)e[u[t]]=n.dims[t];e[f[0]]=t[0],e[f[1]]=t[1]*r,h.push(Dt(e))})}),this.value&&(r.rem=this.value),this.value=r.add=r.source=h}return r},et(Ba,qt),et(za,$r).transform=function(t,n){const e=n.dataflow;return t.values?Na(this,n,e.parse(t.values,t.format)):e.request(t.url,t.format).then(t=>Na(this,n,t.data||[]))},Ta.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]},et(Ta,$r).transform=function(t,n){var r,a,u=n,o=t.as,s=t.fields,l=t.index,c=t.values,f=null==t.default?null:t.default,h=t.modified(),d=h?n.SOURCE:n.ADD,p=s.length;return c?(a=c.length,p>1&&!o&&i(\'Multi-field lookup requires explicit "as" parameter.\'),o&&o.length!==p*a&&i(\'The "as" parameter has too few output field names.\'),o=o||c.map(e),r=function(t){for(var n,e,r=0,i=0;r<p;++r)if(null==(e=l.get(s[r](t))))for(n=0;n<a;++n,++i)t[o[i]]=f;else for(n=0;n<a;++n,++i)t[o[i]]=c[n](e)}):(o||i("Missing output field names."),r=function(t){for(var n,e=0;e<p;++e)n=l.get(s[e](t)),t[o[e]]=null==n?f:n}),h?u=n.reflow(!0):d|=s.some(function(t){return n.modified(t.fields)})?n.MOD:0,n.visit(d,r),u.modifies(o)},et(Ra,qt),et(La,qt),et(Ua,$r),Ua.prototype.transform=function(t,n){return this.modified(t.modified()),this.value=t,n.fork(n.NO_SOURCE|n.NO_FIELDS)},ja.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:Zr,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]};var $a=et(ja,Yi);function Ia(t){ga.call(this,t)}function Wa(t){$r.call(this,null,t)}function Ha(t){$r.call(this,null,t)}function Ya(t){$r.call(this,null,t)}function Ga(t){$r.call(this,[],t),this.count=0}function Va(t){$r.call(this,null,t)}function Xa(t){$r.call(this,null,t),this.modified(!0)}function Za(t){$r.call(this,tt(),t)}function Ja(t){$r.call(this,null,t)}$a._transform=$a.transform,$a.transform=function(t,e){return this._transform(function(t,e){var i=t.field,a=t.value,u=("count"===t.op?"__count__":t.op)||"sum",o=r(i).concat(r(a)),s=function(t,n,e){var r={},i=[];return e.visit(e.SOURCE,function(n){var e=t(n);r[e]||(r[e]=1,i.push(e))}),i.sort(function(t,n){return(t<n||null==t)&&null!=n?-1:(t>n||null==n)&&null!=t?1:(n=n instanceof Date?+n:n,(t=t instanceof Date?+t:t)!==t&&n==n?-1:n!=n&&t==t?1:0)}),n?i.slice(0,n):i}(i,t.limit||0,e);return{key:t.key,groupby:t.groupby,ops:s.map(function(){return u}),fields:s.map(function(t){return function(t,e,r,i){return n(function(n){return e(n)===t?r(n):NaN},i,t+"")}(t,i,a,o)}),as:s.map(function(t){return t+""}),modified:t.modified.bind(t)}}(t,e),e)},et(Ia,ga).transform=function(t,n){var e=this,a=t.subflow,u=t.field;return(t.modified("field")||u&&n.modified(r(u)))&&i("PreFacet does not support field modification."),this._targets.active=0,n.visit(n.MOD,function(t){var r=e.subflow(Et(t),a,n,t);u?u(t).forEach(function(t){r.mod(t)}):r.mod(t)}),n.visit(n.ADD,function(t){var r=e.subflow(Et(t),a,n,t);u?u(t).forEach(function(t){r.add(Dt(t))}):r.add(t)}),n.visit(n.REM,function(t){var r=e.subflow(Et(t),a,n,t);u?u(t).forEach(function(t){r.rem(t)}):r.rem(t)}),n},Wa.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]},et(Wa,$r).transform=function(t,n){var e,r,i=t.fields,a=_a(t.fields,t.as||[]),u=i?function(t,n){return function(t,n,e,r){for(var i=0,a=e.length;i<a;++i)n[r[i]]=e[i](t);return n}(t,n,i,a)}:St;return this.value?r=this.value:(n=n.addAll(),r=this.value={}),e=n.fork(n.NO_SOURCE),n.visit(n.REM,function(t){var n=Et(t);e.rem.push(r[n]),r[n]=null}),n.visit(n.ADD,function(t){var n=u(t,Dt({}));r[Et(t)]=n,e.add.push(n)}),n.visit(n.MOD,function(t){e.mod.push(u(t,r[Et(t)]))}),e},et(Ha,$r).transform=function(t,n){return this.value=t.value,t.modified("value")?n.fork(n.NO_SOURCE|n.NO_FIELDS):n.StopPropagation},et(Ya,$r).transform=function(t,n){var e,r;return this.value?r=this.value:(e=n=n.addAll(),r=this.value={}),t.derive&&(e=n.fork(n.NO_SOURCE),n.visit(n.REM,function(t){var n=Et(t);e.rem.push(r[n]),r[n]=null}),n.visit(n.ADD,function(t){var n=Ft(t);r[Et(t)]=n,e.add.push(n)}),n.visit(n.MOD,function(t){e.mod.push(St(t,r[Et(t)]))})),e},Ga.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]},et(Ga,$r).transform=function(n,e){var r=e.fork(e.NO_SOURCE),i=n.modified("size"),a=n.size,u=this.value,o=this.count,s=0,l=u.reduce(function(t,n){return t[Et(n)]=1,t},{});function c(n){var e,i;u.length<a?u.push(n):(i=~~((o+1)*t.random()))<u.length&&i>=s&&(e=u[i],l[Et(e)]&&r.rem.push(e),u[i]=n),++o}if(e.rem.length&&(e.visit(e.REM,function(t){var n=Et(t);l[n]&&(l[n]=-1,r.rem.push(t)),--o}),u=u.filter(function(t){return-1!==l[Et(t)]})),(e.rem.length||i)&&u.length<a&&e.source&&(s=o=u.length,e.visit(e.SOURCE,function(t){l[Et(t)]||c(t)}),s=-1),i&&u.length>a){for(var f=0,h=u.length-a;f<h;++f)l[Et(u[f])]=-1,r.rem.push(u[f]);u=u.slice(h)}return e.mod.length&&e.visit(e.MOD,function(t){l[Et(t)]&&r.mod.push(t)}),e.add.length&&e.visit(e.ADD,c),(e.add.length||s<0)&&(r.add=u.filter(function(t){return!l[Et(t)]})),this.count=o,this.value=r.source=u,r},Va.Definition={type:"Sequence",metadata:{changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]},et(Va,$r).transform=function(t,n){if(!this.value||t.modified()){var e=n.materialize().fork(n.MOD),r=t.as||"data";return e.rem=this.value?n.rem.concat(this.value):n.rem,this.value=li(t.start,t.stop,t.step||1).map(function(t){var n={};return n[r]=t,Dt(n)}),e.add=n.add.concat(this.value),e}},et(Xa,$r).transform=function(t,n){return this.value=n.source,n.changed()?n.fork(n.NO_SOURCE|n.NO_FIELDS):n.StopPropagation},et(Za,$r).transform=function(t,n){var e=n.dataflow,r=t.field,i=this.value,a=!0;function u(t){i.set(r(t),t)}return t.modified("field")||n.modified(r.fields)?(i.clear(),n.visit(n.SOURCE,u)):n.changed()?(n.visit(n.REM,function(t){i.delete(r(t))}),n.visit(n.ADD,u)):a=!1,this.modified(a),i.empty>e.cleanThreshold&&e.runAfter(i.clean),n.fork()},et(Ja,$r).transform=function(t,n){(!this.value||t.modified("field")||t.modified("sort")||n.changed()||t.sort&&n.modified(t.sort.fields))&&(this.value=(t.sort?n.source.slice().sort(t.sort):n.source).map(t.field))};const Qa={row_number:function(){return{next:t=>t.index+1}},rank:function(){let t;return{init:()=>t=1,next:n=>{let e=n.index,r=n.data;return e&&n.compare(r[e-1],r[e])?t=e+1:t}}},dense_rank:function(){let t;return{init:()=>t=1,next:n=>{let e=n.index,r=n.data;return e&&n.compare(r[e-1],r[e])?++t:t}}},percent_rank:function(){let t=Qa.rank(),n=t.next;return{init:t.init,next:t=>(n(t)-1)/(t.data.length-1)}},cume_dist:function(){let t;return{init:()=>t=0,next:n=>{let e=n.index,r=n.data,i=n.compare;if(t<e){for(;e+1<r.length&&!i(r[e],r[e+1]);)++e;t=e}return(1+t)/r.length}}},ntile:function(t,n){(n=+n)>0||i("ntile num must be greater than zero.");let e=Qa.cume_dist(),r=e.next;return{init:e.init,next:t=>Math.ceil(n*r(t))}},lag:function(t,n){return n=+n||1,{next:e=>{let r=e.index-n;return r>=0?t(e.data[r]):null}}},lead:function(t,n){return n=+n||1,{next:e=>{let r=e.index+n,i=e.data;return r<i.length?t(i[r]):null}}},first_value:function(t){return{next:n=>t(n.data[n.i0])}},last_value:function(t){return{next:n=>t(n.data[n.i1-1])}},nth_value:function(t,n){return(n=+n)>0||i("nth_value nth must be greater than zero."),{next:e=>{let r=e.i0+(n-1);return r<e.i1?t(e.data[r]):null}}},prev_value:function(t){let n=null;return{next:e=>{let r=t(e.data[e.index]);return null!=r?n=r:n}}},next_value:function(t){let n=null,e=-1;return{next:r=>{let i=r.data;return r.index<=e?n:(e=function(t,n,e){for(let r=n.length;e<r;++e){let r=t(n[e]);if(null!=r)return e}return-1}(t,i,r.index))<0?(e=i.length,n=null):n=t(i[e])}}}};var Ka=Object.keys(Qa);function tu(t){let n=this,a=W(t.ops),u=W(t.fields),o=W(t.params),s=W(t.as),l=n.outputs=[],c=n.windows=[],f={},h={},d=!0,g=[],m=[];function v(t){W(r(t)).forEach(t=>f[t]=1)}v(t.sort),a.forEach(function(t,n){let r=u[n],a=e(r),f=Vr(t,a,s[n]);if(v(r),l.push(f),Qa.hasOwnProperty(t))c.push(function(t,n,e,r){let i=Qa[t](n,e);return{init:i.init||p,update:function(t,n){n[r]=i.next(t)}}}(t,u[n],o[n],f));else{if(null==r&&"count"!==t&&i("Null aggregate field specified."),"count"===t)return void g.push(f);d=!1;let n=h[a];n||((n=h[a]=[]).field=r,m.push(n)),n.push(Jr(t,f))}}),(g.length||m.length)&&(n.cell=function(t,n,e){t=t.map(t=>ti(t,t.field));let r={num:0,agg:null,store:!1,count:n};if(!e)for(var i=t.length,a=r.agg=Array(i),u=0;u<i;++u)a[u]=new t[u](r);if(r.store)var o=r.data=new Wi;return r.add=function(t){if(r.num+=1,!e){o&&o.add(t);for(let n=0;n<i;++n)a[n].add(a[n].get(t),t)}},r.rem=function(t){if(r.num-=1,!e){o&&o.rem(t);for(let n=0;n<i;++n)a[n].rem(a[n].get(t),t)}},r.set=function(t){let i,u;for(o&&o.values(),i=0,u=n.length;i<u;++i)t[n[i]]=r.num;if(!e)for(i=0,u=a.length;i<u;++i)a[i].set(t)},r.init=function(){r.num=0,o&&o.reset();for(let t=0;t<i;++t)a[t].init()},r}(m,g,d)),n.inputs=Object.keys(f)}const nu=tu.prototype;function eu(t){$r.call(this,{},t),this._mlen=0,this._mods=[]}nu.init=function(){this.windows.forEach(t=>t.init()),this.cell&&this.cell.init()},nu.update=function(t,n){let e,r=this.cell,i=this.windows,a=t.data,u=i&&i.length;if(r){for(e=t.p0;e<t.i0;++e)r.rem(a[e]);for(e=t.p1;e<t.i1;++e)r.add(a[e]);r.set(n)}for(e=0;e<u;++e)i[e].update(t,n)},eu.Definition={type:"Window",metadata:{modifies:!0},params:[{name:"sort",type:"compare"},{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Ka.concat(Zr)},{name:"params",type:"number",null:!0,array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"frame",type:"number",null:!0,array:!0,length:2,default:[null,0]},{name:"ignorePeers",type:"boolean",default:!1}]};var ru=et(eu,$r);function iu(t,n,e){var r=e.sort,i=r&&!e.ignorePeers,a=e.frame||[null,0],u=t.data(r),o=u.length,s=0,l=i?ii(r):null,c={i0:0,i1:0,p0:0,p1:0,index:0,data:u,compare:r||V(-1)};for(n.init();s<o;++s)au(c,a,s,o),i&&uu(c,l),n.update(c,u[s])}function au(t,n,e,r){t.p0=t.i0,t.p1=t.i1,t.i0=null==n[0]?0:Math.max(0,e-Math.abs(n[0])),t.i1=null==n[1]?r:Math.min(r,e+Math.abs(n[1])+1),t.index=e}function uu(t,n){var e=t.i0,r=t.i1-1,i=t.compare,a=t.data,u=a.length-1;e>0&&!i(a[e],a[e-1])&&(t.i0=n.left(a,a[e])),r<u&&!i(a[r],a[r+1])&&(t.i1=n.right(a,a[r]))}ru.transform=function(t,n){var e,r,i=this,a=i.state,u=t.modified();this.stamp=n.stamp,a&&!u||(a=i.state=new tu(t));var o=Gr(t.groupby);function s(t){return i.group(o(t))}for(u||n.modified(a.inputs)?(i.value={},n.visit(n.SOURCE,function(t){s(t).add(t)})):(n.visit(n.REM,function(t){s(t).remove(t)}),n.visit(n.ADD,function(t){s(t).add(t)})),e=0,r=i._mlen;e<r;++e)iu(i._mods[e],a,t);return i._mlen=0,i._mods=[],n.reflow(u).modifies(a.outputs)},ru.group=function(t){var n=this.value[t];return n||((n=this.value[t]=Zi(Et)).stamp=-1),n.stamp<this.stamp&&(n.stamp=this.stamp,this._mods[this._mlen++]=n),n};var ou=Object.freeze({aggregate:Yi,bin:Vi,collect:Ji,compare:Qi,countpattern:ta,cross:ea,density:oa,expression:ca,extent:ha,facet:ga,field:va,filter:xa,flatten:ba,fold:wa,formula:Aa,generate:Ma,impute:Ca,joinaggregate:Da,kde:Sa,key:Ba,load:za,lookup:Ta,multiextent:Ra,multivalues:La,params:Ua,pivot:ja,prefacet:Ia,project:Wa,proxy:Ha,relay:Ya,sample:Ga,sequence:Va,sieve:Xa,subflow:da,tupleindex:Za,values:Ja,window:eu});const su="top",lu="left",cu="right",fu="bottom",hu="top-left",du="top-right",pu="bottom-left",gu="bottom-right",mu="start",vu="middle",yu="end",xu="x",_u="y",bu="group",wu="axis",Au="title",Mu="frame",ku="scope",Eu="legend",Cu="row-header",Du="row-footer",Fu="row-title",Su="column-header",Bu="column-footer",Ou="column-title",zu="padding",Nu="symbol",Tu="fit",Ru="fit-x",Pu="fit-y",Lu="pad",qu="none",Uu="all",ju="each",$u="flush",Iu="column",Wu="row";function Hu(t){this.clear(),t&&this.union(t)}var Yu=Hu.prototype;Yu.clone=function(){return new Hu(this)},Yu.clear=function(){return this.x1=+Number.MAX_VALUE,this.y1=+Number.MAX_VALUE,this.x2=-Number.MAX_VALUE,this.y2=-Number.MAX_VALUE,this},Yu.empty=function(){return this.x1===+Number.MAX_VALUE&&this.y1===+Number.MAX_VALUE&&this.x2===-Number.MAX_VALUE&&this.y2===-Number.MAX_VALUE},Yu.equals=function(t){return this.x1===t.x1&&this.y1===t.y1&&this.x2===t.x2&&this.y2===t.y2},Yu.set=function(t,n,e,r){return e<t?(this.x2=t,this.x1=e):(this.x1=t,this.x2=e),r<n?(this.y2=n,this.y1=r):(this.y1=n,this.y2=r),this},Yu.add=function(t,n){return t<this.x1&&(this.x1=t),n<this.y1&&(this.y1=n),t>this.x2&&(this.x2=t),n>this.y2&&(this.y2=n),this},Yu.expand=function(t){return this.x1-=t,this.y1-=t,this.x2+=t,this.y2+=t,this},Yu.round=function(){return this.x1=Math.floor(this.x1),this.y1=Math.floor(this.y1),this.x2=Math.ceil(this.x2),this.y2=Math.ceil(this.y2),this},Yu.translate=function(t,n){return this.x1+=t,this.x2+=t,this.y1+=n,this.y2+=n,this},Yu.rotate=function(t,n,e){const r=this.rotatedPoints(t,n,e);return this.clear().add(r[0],r[1]).add(r[2],r[3]).add(r[4],r[5]).add(r[6],r[7])},Yu.rotatedPoints=function(t,n,e){var{x1:r,y1:i,x2:a,y2:u}=this,o=Math.cos(t),s=Math.sin(t),l=n-n*o+e*s,c=e-n*s-e*o;return[o*r-s*i+l,s*r+o*i+c,o*r-s*u+l,s*r+o*u+c,o*a-s*i+l,s*a+o*i+c,o*a-s*u+l,s*a+o*u+c]},Yu.union=function(t){return t.x1<this.x1&&(this.x1=t.x1),t.y1<this.y1&&(this.y1=t.y1),t.x2>this.x2&&(this.x2=t.x2),t.y2>this.y2&&(this.y2=t.y2),this},Yu.intersect=function(t){return t.x1>this.x1&&(this.x1=t.x1),t.y1>this.y1&&(this.y1=t.y1),t.x2<this.x2&&(this.x2=t.x2),t.y2<this.y2&&(this.y2=t.y2),this},Yu.encloses=function(t){return t&&this.x1<=t.x1&&this.x2>=t.x2&&this.y1<=t.y1&&this.y2>=t.y2},Yu.alignsWith=function(t){return t&&(this.x1==t.x1||this.x2==t.x2||this.y1==t.y1||this.y2==t.y2)},Yu.intersects=function(t){return t&&!(this.x2<t.x1||this.x1>t.x2||this.y2<t.y1||this.y1>t.y2)},Yu.contains=function(t,n){return!(t<this.x1||t>this.x2||n<this.y1||n>this.y2)},Yu.width=function(){return this.x2-this.x1},Yu.height=function(){return this.y2-this.y1};var Gu=0;const Vu="p_";function Xu(t){return t&&t.gradient}function Zu(t,n,e){let r=t.id,i=t.gradient,a="radial"===i?Vu:"";return r||(r=t.id="gradient_"+Gu++,"radial"===i?(t.x1=Ju(t.x1,.5),t.y1=Ju(t.y1,.5),t.r1=Ju(t.r1,0),t.x2=Ju(t.x2,.5),t.y2=Ju(t.y2,.5),t.r2=Ju(t.r2,.5),a=Vu):(t.x1=Ju(t.x1,0),t.y1=Ju(t.y1,0),t.x2=Ju(t.x2,1),t.y2=Ju(t.y2,0))),n[r]=t,"url("+(e||"")+"#"+a+r+")"}function Ju(t,n){return null!=t?t:n}function Qu(t,n){var e,r=[];return e={gradient:"linear",x1:t?t[0]:0,y1:t?t[1]:0,x2:n?n[0]:1,y2:n?n[1]:0,stops:r,stop:function(t,n){return r.push({offset:t,color:n}),e}}}function Ku(t){this.mark=t,this.bounds=this.bounds||new Hu}function to(t){Ku.call(this,t),this.items=this.items||[]}function no(t,n){if("undefined"!=typeof document&&document.createElement){var e=document.createElement("canvas");if(e&&e.getContext)return e.width=t,e.height=n,e}return null}function eo(){return"undefined"!=typeof Image?Image:null}function ro(t){this._pending=0,this._loader=t||wr()}et(to,Ku);var io=ro.prototype;function ao(t){t._pending+=1}function uo(t){t._pending-=1}io.pending=function(){return this._pending},io.sanitizeURL=function(t){var n=this;return ao(n),n._loader.sanitize(t,{context:"href"}).then(function(t){return uo(n),t}).catch(function(){return uo(n),null})},io.loadImage=function(t){var n=this,e=eo();return ao(n),n._loader.sanitize(t,{context:"image"}).then(function(t){var r=t.href;if(!r||!e)throw{url:r};var i=new e;return i.onload=function(){uo(n),i.loaded=!0},i.onerror=function(){uo(n),i.loaded=!1},i.src=r,i}).catch(function(t){return uo(n),{loaded:!1,width:0,height:0,src:t&&t.url||""}})},io.ready=function(){var t=this;return new Promise(function(n){!function e(r){t.pending()?setTimeout(function(){e(!0)},10):n(r)}(!1)})};var oo=Math.PI,so=2*oo,lo=so-1e-6;function co(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function fo(){return new co}function ho(t){return function(){return t}}co.prototype=fo.prototype={constructor:co,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,a){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var a=this._x1,u=this._y1,o=e-t,s=r-n,l=a-t,c=u-n,f=l*l+c*c;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(f>1e-6)if(Math.abs(c*o-s*l)>1e-6&&i){var h=e-a,d=r-u,p=o*o+s*s,g=h*h+d*d,m=Math.sqrt(p),v=Math.sqrt(f),y=i*Math.tan((oo-Math.acos((p+f-g)/(2*m*v)))/2),x=y/v,_=y/m;Math.abs(x-1)>1e-6&&(this._+="L"+(t+x*l)+","+(n+x*c)),this._+="A"+i+","+i+",0,0,"+ +(c*h>l*d)+","+(this._x1=t+_*o)+","+(this._y1=n+_*s)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,a){t=+t,n=+n;var u=(e=+e)*Math.cos(r),o=e*Math.sin(r),s=t+u,l=n+o,c=1^a,f=a?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+s+","+l:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-l)>1e-6)&&(this._+="L"+s+","+l),e&&(f<0&&(f=f%so+so),f>lo?this._+="A"+e+","+e+",0,1,"+c+","+(t-u)+","+(n-o)+"A"+e+","+e+",0,1,"+c+","+(this._x1=s)+","+(this._y1=l):f>1e-6&&(this._+="A"+e+","+e+",0,"+ +(f>=oo)+","+c+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var po=Math.abs,go=Math.atan2,mo=Math.cos,vo=Math.max,yo=Math.min,xo=Math.sin,_o=Math.sqrt,bo=1e-12,wo=Math.PI,Ao=wo/2,Mo=2*wo;function ko(t){return t>=1?Ao:t<=-1?-Ao:Math.asin(t)}function Eo(t){return t.innerRadius}function Co(t){return t.outerRadius}function Do(t){return t.startAngle}function Fo(t){return t.endAngle}function So(t){return t&&t.padAngle}function Bo(t,n,e,r,i,a,u){var o=t-e,s=n-r,l=(u?a:-a)/_o(o*o+s*s),c=l*s,f=-l*o,h=t+c,d=n+f,p=e+c,g=r+f,m=(h+p)/2,v=(d+g)/2,y=p-h,x=g-d,_=y*y+x*x,b=i-a,w=h*g-p*d,A=(x<0?-1:1)*_o(vo(0,b*b*_-w*w)),M=(w*x-y*A)/_,k=(-w*y-x*A)/_,E=(w*x+y*A)/_,C=(-w*y+x*A)/_,D=M-m,F=k-v,S=E-m,B=C-v;return D*D+F*F>S*S+B*B&&(M=E,k=C),{cx:M,cy:k,x01:-c,y01:-f,x11:M*(i/b-1),y11:k*(i/b-1)}}function Oo(t){this._context=t}function zo(t){return new Oo(t)}function No(t){return t[0]}function To(t){return t[1]}function Ro(){var t=No,n=To,e=ho(!0),r=null,i=zo,a=null;function u(u){var o,s,l,c=u.length,f=!1;for(null==r&&(a=i(l=fo())),o=0;o<=c;++o)!(o<c&&e(s=u[o],o,u))===f&&((f=!f)?a.lineStart():a.lineEnd()),f&&a.point(+t(s,o,u),+n(s,o,u));if(l)return a=null,l+""||null}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:ho(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:ho(+t),u):n},u.defined=function(t){return arguments.length?(e="function"==typeof t?t:ho(!!t),u):e},u.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),u):r},u}function Po(){var t=No,n=null,e=ho(0),r=To,i=ho(!0),a=null,u=zo,o=null;function s(s){var l,c,f,h,d,p=s.length,g=!1,m=new Array(p),v=new Array(p);for(null==a&&(o=u(d=fo())),l=0;l<=p;++l){if(!(l<p&&i(h=s[l],l,s))===g)if(g=!g)c=l,o.areaStart(),o.lineStart();else{for(o.lineEnd(),o.lineStart(),f=l-1;f>=c;--f)o.point(m[f],v[f]);o.lineEnd(),o.areaEnd()}g&&(m[l]=+t(h,l,s),v[l]=+e(h,l,s),o.point(n?+n(h,l,s):m[l],r?+r(h,l,s):v[l]))}if(d)return o=null,d+""||null}function l(){return Ro().defined(i).curve(u).context(a)}return s.x=function(e){return arguments.length?(t="function"==typeof e?e:ho(+e),n=null,s):t},s.x0=function(n){return arguments.length?(t="function"==typeof n?n:ho(+n),s):t},s.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:ho(+t),s):n},s.y=function(t){return arguments.length?(e="function"==typeof t?t:ho(+t),r=null,s):e},s.y0=function(t){return arguments.length?(e="function"==typeof t?t:ho(+t),s):e},s.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ho(+t),s):r},s.lineX0=s.lineY0=function(){return l().x(t).y(e)},s.lineY1=function(){return l().x(t).y(r)},s.lineX1=function(){return l().x(n).y(e)},s.defined=function(t){return arguments.length?(i="function"==typeof t?t:ho(!!t),s):i},s.curve=function(t){return arguments.length?(u=t,null!=a&&(o=u(a)),s):u},s.context=function(t){return arguments.length?(null==t?a=o=null:o=u(a=t),s):a},s}Oo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Lo={draw:function(t,n){var e=Math.sqrt(n/wo);t.moveTo(e,0),t.arc(0,0,e,0,Mo)}};function qo(){}function Uo(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function jo(t){this._context=t}function $o(t){this._context=t}function Io(t){this._context=t}function Wo(t,n){this._basis=new jo(t),this._beta=n}jo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Uo(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Uo(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},$o.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Uo(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Io.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Uo(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Wo.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],a=n[0],u=t[e]-i,o=n[e]-a,s=-1;++s<=e;)r=s/e,this._basis.point(this._beta*t[s]+(1-this._beta)*(i+r*u),this._beta*n[s]+(1-this._beta)*(a+r*o));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ho=function t(n){function e(t){return 1===n?new jo(t):new Wo(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Yo(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Go(t,n){this._context=t,this._k=(1-n)/6}Go.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Yo(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Yo(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Vo=function t(n){function e(t){return new Go(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Xo(t,n){this._context=t,this._k=(1-n)/6}Xo.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Yo(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Zo=function t(n){function e(t){return new Xo(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Jo(t,n){this._context=t,this._k=(1-n)/6}Jo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Yo(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Qo=function t(n){function e(t){return new Jo(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Ko(t,n,e){var r=t._x1,i=t._y1,a=t._x2,u=t._y2;if(t._l01_a>bo){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>bo){var l=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,c=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*l+t._x1*t._l23_2a-n*t._l12_2a)/c,u=(u*l+t._y1*t._l23_2a-e*t._l12_2a)/c}t._context.bezierCurveTo(r,i,a,u,t._x2,t._y2)}function ts(t,n){this._context=t,this._alpha=n}ts.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Ko(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var ns=function t(n){function e(t){return n?new ts(t,n):new Go(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function es(t,n){this._context=t,this._alpha=n}es.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Ko(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var rs=function t(n){function e(t){return n?new es(t,n):new Xo(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function is(t,n){this._context=t,this._alpha=n}is.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ko(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var as=function t(n){function e(t){return n?new is(t,n):new Jo(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function us(t){this._context=t}function os(t){return t<0?-1:1}function ss(t,n,e){var r=t._x1-t._x0,i=n-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),o=(a*i+u*r)/(r+i);return(os(a)+os(u))*Math.min(Math.abs(a),Math.abs(u),.5*Math.abs(o))||0}function ls(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function cs(t,n,e){var r=t._x0,i=t._y0,a=t._x1,u=t._y1,o=(a-r)/3;t._context.bezierCurveTo(r+o,i+o*n,a-o,u-o*e,a,u)}function fs(t){this._context=t}function hs(t){this._context=new ds(t)}function ds(t){this._context=t}function ps(t){this._context=t}function gs(t){var n,e,r=t.length-1,i=new Array(r),a=new Array(r),u=new Array(r);for(i[0]=0,a[0]=2,u[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,a[n]=4,u[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,a[r-1]=7,u[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/a[n-1],a[n]-=e,u[n]-=e*u[n-1];for(i[r-1]=u[r-1]/a[r-1],n=r-2;n>=0;--n)i[n]=(u[n]-i[n+1])/a[n];for(a[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)a[n]=2*t[n+1]-i[n+1];return[i,a]}function ms(t,n){this._context=t,this._t=n}us.prototype={areaStart:qo,areaEnd:qo,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},fs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:cs(this,this._t0,ls(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,cs(this,ls(this,e=ss(this,t,n)),e);break;default:cs(this,this._t0,e=ss(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(hs.prototype=Object.create(fs.prototype)).point=function(t,n){fs.prototype.point.call(this,n,t)},ds.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,a){this._context.bezierCurveTo(n,t,r,e,a,i)}},ps.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=gs(t),i=gs(n),a=0,u=1;u<e;++a,++u)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[u],n[u]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},ms.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var vs={basis:{curve:function(t){return new jo(t)}},"basis-closed":{curve:function(t){return new $o(t)}},"basis-open":{curve:function(t){return new Io(t)}},bundle:{curve:Ho,tension:"beta",value:.85},cardinal:{curve:Vo,tension:"tension",value:0},"cardinal-open":{curve:Qo,tension:"tension",value:0},"cardinal-closed":{curve:Zo,tension:"tension",value:0},"catmull-rom":{curve:ns,tension:"alpha",value:.5},"catmull-rom-closed":{curve:rs,tension:"alpha",value:.5},"catmull-rom-open":{curve:as,tension:"alpha",value:.5},linear:{curve:zo},"linear-closed":{curve:function(t){return new us(t)}},monotone:{horizontal:function(t){return new hs(t)},vertical:function(t){return new fs(t)}},natural:{curve:function(t){return new ps(t)}},step:{curve:function(t){return new ms(t,.5)}},"step-after":{curve:function(t){return new ms(t,1)}},"step-before":{curve:function(t){return new ms(t,0)}}};function ys(t,n,e){var r=vs.hasOwnProperty(t)&&vs[t],i=null;return r&&(i=r.curve||r[n||"vertical"],r.tension&&null!=e&&(i=i[r.tension](e))),i}var xs={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},_s=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\\d)([-+])/g,/\\s|,|###/];function bs(t){var n,e,r,i,a,u,o,s,l,c,f,h=[];for(s=0,c=(n=t.slice().replace(_s[0],"###$1").split(_s[1]).slice(1)).length;s<c;++s){for(r=(e=n[s]).slice(1).trim().replace(_s[2],"$1###$2").split(_s[3]),i=[u=e.charAt(0)],l=0,f=r.length;l<f;++l)(a=+r[l])===a&&i.push(a);if(o=xs[u.toLowerCase()],i.length-1>o)for(l=1,f=i.length;l<f;l+=o)h.push([u].concat(i.slice(l,l+o)));else h.push(i)}return h}var ws=Math.PI/180,As=Math.PI/2,Ms=2*Math.PI,ks=Math.sqrt(3)/2,Es={},Cs={},Ds=[].join;function Fs(t){var n=Ds.call(t);if(Cs[n])return Cs[n];var e=t[0],r=t[1],i=t[2],a=t[3],u=t[4],o=t[5],s=t[6],l=t[7],c=l*u,f=-s*o,h=s*u,d=l*o,p=Math.cos(i),g=Math.sin(i),m=Math.cos(a),v=Math.sin(a),y=.5*(a-i),x=Math.sin(.5*y),_=8/3*x*x/Math.sin(y),b=e+p-_*g,w=r+g+_*p,A=e+m,M=r+v,k=A+_*v,E=M-_*m;return Cs[n]=[c*b+f*w,h*b+d*w,c*k+f*E,h*k+d*E,c*A+f*M,h*A+d*M]}var Ss=["l",0,0,0,0,0,0,0];function Bs(t,n){var e=Ss[0]=t[0];if("a"===e||"A"===e)Ss[1]=n*t[1],Ss[2]=n*t[2],Ss[3]=t[3],Ss[4]=t[4],Ss[5]=t[5],Ss[6]=n*t[6],Ss[7]=n*t[7];else for(var r=1,i=t.length;r<i;++r)Ss[r]=n*t[r];return Ss}function Os(t,n,e,r,i){var a,u,o,s,l,c=null,f=0,h=0,d=0,p=0;null==e&&(e=0),null==r&&(r=0),null==i&&(i=1),t.beginPath&&t.beginPath();for(var g=0,m=n.length;g<m;++g){switch(a=n[g],1!==i&&(a=Bs(a,i)),a[0]){case"l":f+=a[1],h+=a[2],t.lineTo(f+e,h+r);break;case"L":f=a[1],h=a[2],t.lineTo(f+e,h+r);break;case"h":f+=a[1],t.lineTo(f+e,h+r);break;case"H":f=a[1],t.lineTo(f+e,h+r);break;case"v":h+=a[1],t.lineTo(f+e,h+r);break;case"V":h=a[1],t.lineTo(f+e,h+r);break;case"m":f+=a[1],h+=a[2],t.moveTo(f+e,h+r);break;case"M":f=a[1],h=a[2],t.moveTo(f+e,h+r);break;case"c":u=f+a[5],o=h+a[6],d=f+a[3],p=h+a[4],t.bezierCurveTo(f+a[1]+e,h+a[2]+r,d+e,p+r,u+e,o+r),f=u,h=o;break;case"C":f=a[5],h=a[6],d=a[3],p=a[4],t.bezierCurveTo(a[1]+e,a[2]+r,d+e,p+r,f+e,h+r);break;case"s":u=f+a[3],o=h+a[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+e,p+r,f+a[1]+e,h+a[2]+r,u+e,o+r),d=f+a[1],p=h+a[2],f=u,h=o;break;case"S":u=a[3],o=a[4],d=2*f-d,p=2*h-p,t.bezierCurveTo(d+e,p+r,a[1]+e,a[2]+r,u+e,o+r),f=u,h=o,d=a[1],p=a[2];break;case"q":u=f+a[3],o=h+a[4],d=f+a[1],p=h+a[2],t.quadraticCurveTo(d+e,p+r,u+e,o+r),f=u,h=o;break;case"Q":u=a[3],o=a[4],t.quadraticCurveTo(a[1]+e,a[2]+r,u+e,o+r),f=u,h=o,d=a[1],p=a[2];break;case"t":u=f+a[1],o=h+a[2],null===c[0].match(/[QqTt]/)?(d=f,p=h):"t"===c[0]?(d=2*f-s,p=2*h-l):"q"===c[0]&&(d=2*f-d,p=2*h-p),s=d,l=p,t.quadraticCurveTo(d+e,p+r,u+e,o+r),h=o,d=(f=u)+a[1],p=h+a[2];break;case"T":u=a[1],o=a[2],d=2*f-d,p=2*h-p,t.quadraticCurveTo(d+e,p+r,u+e,o+r),f=u,h=o;break;case"a":zs(t,f+e,h+r,[a[1],a[2],a[3],a[4],a[5],a[6]+f+e,a[7]+h+r]),f+=a[6],h+=a[7];break;case"A":zs(t,f+e,h+r,[a[1],a[2],a[3],a[4],a[5],a[6]+e,a[7]+r]),f=a[6],h=a[7];break;case"z":case"Z":t.closePath()}c=a}}function zs(t,n,e,r){for(var i=function(t,n,e,r,i,a,u,o,s){var l=Ds.call(arguments);if(Es[l])return Es[l];var c=u*ws,f=Math.sin(c),h=Math.cos(c),d=h*(o-t)*.5+f*(s-n)*.5,p=h*(s-n)*.5-f*(o-t)*.5,g=d*d/((e=Math.abs(e))*e)+p*p/((r=Math.abs(r))*r);g>1&&(e*=g=Math.sqrt(g),r*=g);var m=h/e,v=f/e,y=-f/r,x=h/r,_=m*o+v*s,b=y*o+x*s,w=m*t+v*n,A=y*t+x*n,M=1/((w-_)*(w-_)+(A-b)*(A-b))-.25;M<0&&(M=0);var k=Math.sqrt(M);a==i&&(k=-k);var E=.5*(_+w)-k*(A-b),C=.5*(b+A)+k*(w-_),D=Math.atan2(b-C,_-E),F=Math.atan2(A-C,w-E)-D;F<0&&1===a?F+=Ms:F>0&&0===a&&(F-=Ms);for(var S=Math.ceil(Math.abs(F/(As+.001))),B=[],O=0;O<S;++O){var z=D+O*F/S,N=D+(O+1)*F/S;B[O]=[E,C,z,N,e,r,f,h]}return Es[l]=B}(r[5],r[6],r[0],r[1],r[3],r[4],r[2],n,e),a=0;a<i.length;++a){var u=Fs(i[a]);t.bezierCurveTo(u[0],u[1],u[2],u[3],u[4],u[5])}}var Ns={circle:{draw:function(t,n){var e=Math.sqrt(n)/2;t.moveTo(e,0),t.arc(0,0,e,0,Ms)}},cross:{draw:function(t,n){var e=Math.sqrt(n)/2,r=e/2.5;t.moveTo(-e,-r),t.lineTo(-e,r),t.lineTo(-r,r),t.lineTo(-r,e),t.lineTo(r,e),t.lineTo(r,r),t.lineTo(e,r),t.lineTo(e,-r),t.lineTo(r,-r),t.lineTo(r,-e),t.lineTo(-r,-e),t.lineTo(-r,-r),t.closePath()}},diamond:{draw:function(t,n){var e=Math.sqrt(n)/2;t.moveTo(-e,0),t.lineTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.closePath()}},square:{draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},arrow:{draw:function(t,n){var e=Math.sqrt(n)/2,r=e/7,i=e/2.5,a=e/8;t.moveTo(-r,e),t.lineTo(r,e),t.lineTo(r,-a),t.lineTo(i,-a),t.lineTo(0,-e),t.lineTo(-i,-a),t.lineTo(-r,-a),t.closePath()}},wedge:{draw:function(t,n){var e=Math.sqrt(n)/2,r=ks*e,i=r-.5773502691896257*e,a=e/4;t.moveTo(0,-r-i),t.lineTo(-a,r-i),t.lineTo(a,r-i),t.closePath()}},triangle:{draw:function(t,n){var e=Math.sqrt(n)/2,r=ks*e,i=r-.5773502691896257*e;t.moveTo(0,-r-i),t.lineTo(-e,r-i),t.lineTo(e,r-i),t.closePath()}},"triangle-up":{draw:function(t,n){var e=Math.sqrt(n)/2,r=ks*e;t.moveTo(0,-r),t.lineTo(-e,r),t.lineTo(e,r),t.closePath()}},"triangle-down":{draw:function(t,n){var e=Math.sqrt(n)/2,r=ks*e;t.moveTo(0,r),t.lineTo(-e,-r),t.lineTo(e,-r),t.closePath()}},"triangle-right":{draw:function(t,n){var e=Math.sqrt(n)/2,r=ks*e;t.moveTo(r,0),t.lineTo(-r,-e),t.lineTo(-r,e),t.closePath()}},"triangle-left":{draw:function(t,n){var e=Math.sqrt(n)/2,r=ks*e;t.moveTo(-r,0),t.lineTo(r,-e),t.lineTo(r,e),t.closePath()}},stroke:{draw:function(t,n){var e=Math.sqrt(n)/2;t.moveTo(-e,0),t.lineTo(e,0)}}};function Ts(t){return Ns.hasOwnProperty(t)?Ns[t]:function(t){if(!Rs.hasOwnProperty(t)){var n=bs(t);Rs[t]={draw:function(t,e){Os(t,n,0,0,Math.sqrt(e)/2)}}}return Rs[t]}(t)}var Rs={};function Ps(t){return t.x}function Ls(t){return t.y}function qs(t){return t.width}function Us(t){return t.height}function js(t){return function(){return t}}function $s(){var t=Ps,n=Ls,e=qs,r=Us,i=js(0),a=null;function u(u,o,s){var l,c=null!=o?o:+t.call(this,u),f=null!=s?s:+n.call(this,u),h=+e.call(this,u),d=+r.call(this,u),p=+i.call(this,u);if(a||(a=l=fo()),p<=0)a.rect(c,f,h,d);else{var g=c+h,m=f+d;a.moveTo(c+p,f),a.lineTo(g-p,f),a.quadraticCurveTo(g,f,g,f+p),a.lineTo(g,m-p),a.quadraticCurveTo(g,m,g-p,m),a.lineTo(c+p,m),a.quadraticCurveTo(c,m,c,m-p),a.lineTo(c,f+p),a.quadraticCurveTo(c,f,c+p,f),a.closePath()}if(l)return a=null,l+""||null}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:js(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:js(+t),u):n},u.width=function(t){return arguments.length?(e="function"==typeof t?t:js(+t),u):e},u.height=function(t){return arguments.length?(r="function"==typeof t?t:js(+t),u):r},u.cornerRadius=function(t){return arguments.length?(i="function"==typeof t?t:js(+t),u):i},u.context=function(t){return arguments.length?(a=null==t?null:t,u):a},u}function Is(){var t,n,e,r,i,a,u,o,s=null;function l(t,n,e){var r=e/2;if(i){var l=u-n,c=t-a;if(l||c){var f=Math.sqrt(l*l+c*c),h=(l/=f)*o,d=(c/=f)*o,p=Math.atan2(c,l);s.moveTo(a-h,u-d),s.lineTo(t-l*r,n-c*r),s.arc(t,n,r,p-Math.PI,p),s.lineTo(a+h,u+d),s.arc(a,u,o,p,p+Math.PI)}else s.arc(t,n,r,0,Ms);s.closePath()}else i=1;a=t,u=n,o=r}function c(a){var u,o,c,f=a.length,h=!1;for(null==s&&(s=c=fo()),u=0;u<=f;++u)!(u<f&&r(o=a[u],u,a))===h&&(h=!h)&&(i=0),h&&l(+t(o,u,a),+n(o,u,a),+e(o,u,a));if(c)return s=null,c+""||null}return c.x=function(n){return arguments.length?(t=n,c):t},c.y=function(t){return arguments.length?(n=t,c):n},c.size=function(t){return arguments.length?(e=t,c):e},c.defined=function(t){return arguments.length?(r=t,c):r},c.context=function(t){return arguments.length?(s=null==t?null:t,c):s},c}function Ws(t){return t.x||0}function Hs(t){return t.y||0}function Ys(t){return t.cornerRadius||0}function Gs(t){return!(!1===t.defined)}var Vs=function(){var t=Eo,n=Co,e=ho(0),r=null,i=Do,a=Fo,u=So,o=null;function s(){var s,l,c,f=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Ao,p=a.apply(this,arguments)-Ao,g=po(p-d),m=p>d;if(o||(o=s=fo()),h<f&&(l=h,h=f,f=l),h>bo)if(g>Mo-bo)o.moveTo(h*mo(d),h*xo(d)),o.arc(0,0,h,d,p,!m),f>bo&&(o.moveTo(f*mo(p),f*xo(p)),o.arc(0,0,f,p,d,m));else{var v,y,x=d,_=p,b=d,w=p,A=g,M=g,k=u.apply(this,arguments)/2,E=k>bo&&(r?+r.apply(this,arguments):_o(f*f+h*h)),C=yo(po(h-f)/2,+e.apply(this,arguments)),D=C,F=C;if(E>bo){var S=ko(E/f*xo(k)),B=ko(E/h*xo(k));(A-=2*S)>bo?(b+=S*=m?1:-1,w-=S):(A=0,b=w=(d+p)/2),(M-=2*B)>bo?(x+=B*=m?1:-1,_-=B):(M=0,x=_=(d+p)/2)}var O=h*mo(x),z=h*xo(x),N=f*mo(w),T=f*xo(w);if(C>bo){var R,P=h*mo(_),L=h*xo(_),q=f*mo(b),U=f*xo(b);if(g<wo&&(R=function(t,n,e,r,i,a,u,o){var s=e-t,l=r-n,c=u-i,f=o-a,h=f*s-c*l;if(!(h*h<bo))return[t+(h=(c*(n-a)-f*(t-i))/h)*s,n+h*l]}(O,z,q,U,P,L,N,T))){var j=O-R[0],$=z-R[1],I=P-R[0],W=L-R[1],H=1/xo(((c=(j*I+$*W)/(_o(j*j+$*$)*_o(I*I+W*W)))>1?0:c<-1?wo:Math.acos(c))/2),Y=_o(R[0]*R[0]+R[1]*R[1]);D=yo(C,(f-Y)/(H-1)),F=yo(C,(h-Y)/(H+1))}}M>bo?F>bo?(v=Bo(q,U,O,z,h,F,m),y=Bo(P,L,N,T,h,F,m),o.moveTo(v.cx+v.x01,v.cy+v.y01),F<C?o.arc(v.cx,v.cy,F,go(v.y01,v.x01),go(y.y01,y.x01),!m):(o.arc(v.cx,v.cy,F,go(v.y01,v.x01),go(v.y11,v.x11),!m),o.arc(0,0,h,go(v.cy+v.y11,v.cx+v.x11),go(y.cy+y.y11,y.cx+y.x11),!m),o.arc(y.cx,y.cy,F,go(y.y11,y.x11),go(y.y01,y.x01),!m))):(o.moveTo(O,z),o.arc(0,0,h,x,_,!m)):o.moveTo(O,z),f>bo&&A>bo?D>bo?(v=Bo(N,T,P,L,f,-D,m),y=Bo(O,z,q,U,f,-D,m),o.lineTo(v.cx+v.x01,v.cy+v.y01),D<C?o.arc(v.cx,v.cy,D,go(v.y01,v.x01),go(y.y01,y.x01),!m):(o.arc(v.cx,v.cy,D,go(v.y01,v.x01),go(v.y11,v.x11),!m),o.arc(0,0,f,go(v.cy+v.y11,v.cx+v.x11),go(y.cy+y.y11,y.cx+y.x11),m),o.arc(y.cx,y.cy,D,go(y.y11,y.x11),go(y.y01,y.x01),!m))):o.arc(0,0,f,w,b,m):o.lineTo(N,T)}else o.moveTo(0,0);if(o.closePath(),s)return o=null,s+""||null}return s.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-wo/2;return[mo(r)*e,xo(r)*e]},s.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:ho(+n),s):t},s.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:ho(+t),s):n},s.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:ho(+t),s):e},s.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ho(+t),s):r},s.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:ho(+t),s):i},s.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:ho(+t),s):a},s.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:ho(+t),s):u},s.context=function(t){return arguments.length?(o=null==t?null:t,s):o},s}().startAngle(function(t){return t.startAngle||0}).endAngle(function(t){return t.endAngle||0}).padAngle(function(t){return t.padAngle||0}).innerRadius(function(t){return t.innerRadius||0}).outerRadius(function(t){return t.outerRadius||0}).cornerRadius(Ys),Xs=Po().x(Ws).y1(Hs).y0(function(t){return(t.y||0)+(t.height||0)}).defined(Gs),Zs=Po().y(Hs).x1(Ws).x0(function(t){return(t.x||0)+(t.width||0)}).defined(Gs),Js=Ro().x(Ws).y(Hs).defined(Gs),Qs=$s().x(Ws).y(Hs).width(function(t){return t.width||0}).height(function(t){return t.height||0}).cornerRadius(Ys),Ks=function(){var t=ho(Lo),n=ho(64),e=null;function r(){var r;if(e||(e=r=fo()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),r)return e=null,r+""||null}return r.type=function(n){return arguments.length?(t="function"==typeof n?n:ho(n),r):t},r.size=function(t){return arguments.length?(n="function"==typeof t?t:ho(+t),r):n},r.context=function(t){return arguments.length?(e=null==t?null:t,r):e},r}().type(function(t){return Ts(t.shape||"circle")}).size(function(t){return null==t.size?64:t.size}),tl=Is().x(Ws).y(Hs).defined(Gs).size(function(t){return t.size||1});function nl(t,n,e,r){return Qs.context(t)(n,e,r)}function el(t,n){return n.stroke&&0!==n.opacity&&0!==n.strokeOpacity&&t.expand(null!=n.strokeWidth?+n.strokeWidth:1),t}var rl,il=Ms-1e-8;function al(t){return rl=t,al}function ul(){}function ol(t,n){rl.add(t,n)}al.beginPath=ul,al.closePath=ul,al.moveTo=ol,al.lineTo=ol,al.rect=function(t,n,e,r){ol(t,n),ol(t+e,n+r)},al.quadraticCurveTo=function(t,n,e,r){ol(t,n),ol(e,r)},al.bezierCurveTo=function(t,n,e,r,i,a){ol(t,n),ol(e,r),ol(i,a)},al.arc=function(t,n,e,r,i,a){if(Math.abs(i-r)>il)return ol(t-e,n-e),void ol(t+e,n+e);var u,o,s,l,c=1/0,f=-1/0,h=1/0,d=-1/0;function p(t){s=e*Math.cos(t),l=e*Math.sin(t),s<c&&(c=s),s>f&&(f=s),l<h&&(h=l),l>d&&(d=l)}if(p(r),p(i),i!==r)if((r%=Ms)<0&&(r+=Ms),(i%=Ms)<0&&(i+=Ms),i<r&&(a=!a,u=r,r=i,i=u),a)for(i-=Ms,u=r-r%As,o=0;o<4&&u>i;++o,u-=As)p(u);else for(u=r-r%As+As,o=0;o<4&&u<i;++o,u+=As)p(u);ol(t+c,n+h),ol(t+f,n+d)};var sl=(sl=no(1,1))?sl.getContext("2d"):null;const ll=new Hu;function cl(t){return function(n,e){if(!sl)return!0;t(sl,n),ll.clear().union(n.bounds).intersect(e).round();const{x1:r,y1:i,x2:a,y2:u}=ll;for(let t=i;t<=u;++t)for(let n=r;n<=a;++n)if(sl.isPointInPath(n,t))return!0;return!1}}function fl(t,n){return n.contains(t.x||0,t.y||0)}function hl(t,n){const e=t.x||0,r=t.y||0,i=t.width||0,a=t.height||0;return n.intersects(ll.set(e,r,e+i,r+a))}function dl(t,n){const e=t.x||0,r=t.y||0;return pl(n,e,r,null!=t.x2?t.x2:e,null!=t.y2?t.y2:r)}function pl(t,n,e,r,i){const{x1:a,y1:u,x2:o,y2:s}=t,l=r-n,c=i-e;let f,h,d,p,g=0,m=1;for(p=0;p<4;++p){if(0===p&&(f=-l,h=-(a-n)),1===p&&(f=l,h=o-n),2===p&&(f=-c,h=-(u-e)),3===p&&(f=c,h=s-e),Math.abs(f)<1e-10&&h<0)return!1;if(d=h/f,f<0){if(d>m)return!1;d>g&&(g=d)}else if(f>0){if(d<g)return!1;d<m&&(m=d)}}return!0}function gl(t,n,e){return Xu(e)?function(t,n,e){const r=e.width(),i=e.height(),a=n.stops,u=a.length,o="radial"===n.gradient?t.createRadialGradient(e.x1+(n.x1||.5)*r,e.y1+(n.y1||.5)*i,Math.max(r,i)*(n.r1||0),e.x1+(n.x2||.5)*r,e.y1+(n.y2||.5)*i,Math.max(r,i)*(n.r2||.5)):t.createLinearGradient(e.x1+(n.x1||0)*r,e.y1+(n.y1||0)*i,e.x1+(n.x2||1)*r,e.y1+(n.y2||0)*i);for(let t=0;t<u;++t)o.addColorStop(a[t].offset,a[t].color);return o}(t,e,n.bounds):e}function ml(t,n,e){return(e*=null==n.fillOpacity?1:n.fillOpacity)>0&&(t.globalAlpha=e,t.fillStyle=gl(t,n,n.fill),!0)}var vl=[];function yl(t,n,e){var r=null!=(r=n.strokeWidth)?r:1;return!(r<=0)&&((e*=null==n.strokeOpacity?1:n.strokeOpacity)>0&&(t.globalAlpha=e,t.strokeStyle=gl(t,n,n.stroke),t.lineWidth=r,t.lineCap=n.strokeCap||"butt",t.lineJoin=n.strokeJoin||"miter",t.miterLimit=n.strokeMiterLimit||10,t.setLineDash&&(t.setLineDash(n.strokeDash||vl),t.lineDashOffset=n.strokeDashOffset||0),!0))}function xl(t,n){return t.zindex-n.zindex||t.index-n.index}function _l(t){if(!t.zdirty)return t.zitems;var n,e,r,i=t.items,a=[];for(e=0,r=i.length;e<r;++e)(n=i[e]).index=e,n.zindex&&a.push(n);return t.zdirty=!1,t.zitems=a.sort(xl)}function bl(t,n){var e,r,i=t.items;if(i&&i.length){var a=_l(t);if(a&&a.length){for(e=0,r=i.length;e<r;++e)i[e].zindex||n(i[e]);i=a}for(e=0,r=i.length;e<r;++e)n(i[e])}}function wl(t,n){var e,r,i=t.items;if(!i||!i.length)return null;var a=_l(t);for(a&&a.length&&(i=a),r=i.length;--r>=0;)if(e=n(i[r]))return e;if(i===a)for(r=(i=t.items).length;--r>=0;)if(!i[r].zindex&&(e=n(i[r])))return e;return null}function Al(t){return function(n,e,r){bl(e,function(e){r&&!r.intersects(e.bounds)||Ml(t,n,e,e)})}}function Ml(t,n,e,r){var i=null==e.opacity?1:e.opacity;0!==i&&(t(n,r)||(e.fill&&ml(n,e,i)&&n.fill(),e.stroke&&yl(n,e,i)&&n.stroke()))}function kl(t){return t=t||m,function(n,e,r,i,a,u){return r*=n.pixelRatio,i*=n.pixelRatio,wl(e,function(e){var o=e.bounds;if((!o||o.contains(a,u))&&o)return t(n,e,r,i,a,u)?e:void 0})}}function El(t,n){return function(e,r,i,a){var u,o,s=Array.isArray(r)?r[0]:r,l=null==n?s.fill:n,c=s.stroke&&e.isPointInStroke;return c&&(u=s.strokeWidth,o=s.strokeCap,e.lineWidth=null!=u?u:1,e.lineCap=null!=o?o:"butt"),!t(e,r)&&(l&&e.isPointInPath(i,a)||c&&e.isPointInStroke(i,a))}}function Cl(t){return kl(El(t))}function Dl(t,n){return"translate("+t+","+n+")"}function Fl(t){return"rotate("+t+")"}function Sl(t){return Dl(t.x||0,t.y||0)}function Bl(t,n,e){function r(t,e){var r=e.x||0,i=e.y||0,a=e.angle||0;t.translate(r,i),a&&t.rotate(a*=ws),t.beginPath(),n(t,e),a&&t.rotate(-a),t.translate(-r,-i)}return{type:t,tag:"path",nested:!1,attr:function(t,e){t("transform",function(t){return Dl(t.x||0,t.y||0)+(t.angle?" "+Fl(t.angle):"")}(e)),t("d",n(null,e))},bound:function(t,e){var r=e.x||0,i=e.y||0;return n(al(t),e),el(t,e).translate(r,i),e.angle&&t.rotate(e.angle*ws,r,i),t},draw:Al(r),pick:Cl(r),isect:e||cl(r)}}var Ol=Bl("arc",function(t,n){return Vs.context(t)(n)});function zl(t,n,e){function r(t,e){t.beginPath(),n(t,e)}var i,a=El(r);return{type:t,tag:"path",nested:!0,attr:function(t,e){var r=e.mark.items;r.length&&t("d",n(null,r))},bound:function(t,e){var r=e.items;return 0===r.length?t:(n(al(t),r),el(t,r[0]))},draw:(i=r,function(t,n,e){!n.items.length||e&&!e.intersects(n.bounds)||Ml(i,t,n.items[0],n.items)}),pick:function(t,n,e,r,i,u){var o=n.items,s=n.bounds;return!o||!o.length||s&&!s.contains(i,u)?null:(e*=t.pixelRatio,r*=t.pixelRatio,a(t,o,e,r)?o[0]:null)},isect:fl,tip:e}}var Nl=zl("area",function(t,n){var e=n[0],r=e.interpolate||"linear";return("horizontal"===e.orient?Zs:Xs).curve(ys(r,e.orient,e.tension)).context(t)(n)},function(t,n){for(var e,r,i="horizontal"===t[0].orient?n[1]:n[0],a="horizontal"===t[0].orient?"y":"x",u=t.length,o=1/0;--u>=0;)!1!==t[u].defined&&(r=Math.abs(t[u][a]-i))<o&&(o=r,e=t[u]);return e}),Tl=1;function Rl(t,n,e){var r=n.clip,i=t._defs,a=n.clip_id||(n.clip_id="clip"+Tl++),u=i.clipping[a]||(i.clipping[a]={id:a});return Y(r)?u.path=r(null):(u.width=e.width||0,u.height=e.height||0),"url(#"+a+")"}var Pl=.5;function Ll(t,n){var e=n.stroke?Pl:0;t.beginPath(),nl(t,n,e,e)}var ql=El(Ll);var Ul={type:"group",tag:"g",nested:!1,attr:function(t,n){t("transform",Sl(n))},bound:function(t,n){if(!n.clip&&n.items)for(var e=n.items,r=0,i=e.length;r<i;++r)t.union(e[r].bounds);return(n.clip||n.width||n.height)&&!n.noBound&&t.add(0,0).add(n.width||0,n.height||0),el(t,n),t.translate(n.x||0,n.y||0)},draw:function(t,n,e){var r=this;bl(n,function(n){var i,a=n.x||0,u=n.y||0,o=n.width||0,s=n.height||0;t.save(),t.translate(a,u),(n.stroke||n.fill)&&(i=null==n.opacity?1:n.opacity)>0&&(Ll(t,n),n.fill&&ml(t,n,i)&&t.fill(),n.stroke&&yl(t,n,i)&&t.stroke()),n.clip&&(t.beginPath(),t.rect(0,0,o,s),t.clip()),e&&e.translate(-a,-u),bl(n,function(n){r.draw(t,n,e)}),e&&e.translate(a,u),t.restore()})},pick:function(t,n,e,r,i,a){if(n.bounds&&!n.bounds.contains(i,a)||!n.items)return null;var u=this,o=e*t.pixelRatio,s=r*t.pixelRatio;return wl(n,function(l){var c,f,h,d;if(!(d=l.bounds)||d.contains(i,a))return f=l.x||0,h=l.y||0,t.save(),t.translate(f,h),f=i-f,h=a-h,!(c=wl(l,function(t){return function(t,n,e){return(!1!==t.interactive||"group"===t.marktype)&&t.bounds&&t.bounds.contains(n,e)}(t,f,h)?u.pick(t,e,r,f,h):null}))&&!1!==n.interactive&&(l.fill||l.stroke)&&ql(t,l,o,s)&&(c=l),t.restore(),c||null})},isect:hl,background:function(t,n){var e=n.stroke?Pl:0;t("class","background"),t("d",nl(null,n,e,e))},foreground:function(t,n,e){t("clip-path",n.clip?Rl(e,n,n):null)}};function jl(t,n){var e=t.image;return e&&e.url===t.url||(e={loaded:!1,width:0,height:0},n.loadImage(t.url).then(function(n){t.image=n,t.image.url=t.url})),e}function $l(t,n){return"center"===t?n/2:"right"===t?n:0}function Il(t,n){return"middle"===t?n/2:"bottom"===t?n:0}var Wl={type:"image",tag:"image",nested:!1,attr:function(t,n,e){var r=jl(n,e),i=n.x||0,a=n.y||0,u=(null!=n.width?n.width:r.width)||0,o=(null!=n.height?n.height:r.height)||0,s=!1===n.aspect?"none":"xMidYMid";i-=$l(n.align,u),a-=Il(n.baseline,o),t("href",r.src||"","http://www.w3.org/1999/xlink","xlink:href"),t("transform",Dl(i,a)),t("width",u),t("height",o),t("preserveAspectRatio",s)},bound:function(t,n){var e=n.image,r=n.x||0,i=n.y||0,a=(null!=n.width?n.width:e&&e.width)||0,u=(null!=n.height?n.height:e&&e.height)||0;return r-=$l(n.align,a),i-=Il(n.baseline,u),t.set(r,i,r+a,i+u)},draw:function(t,n,e){var r=this;bl(n,function(n){if(!e||e.intersects(n.bounds)){var i,a,u,o,s=jl(n,r),l=n.x||0,c=n.y||0,f=(null!=n.width?n.width:s.width)||0,h=(null!=n.height?n.height:s.height)||0;l-=$l(n.align,f),c-=Il(n.baseline,h),!1!==n.aspect&&(a=s.width/s.height,u=n.width/n.height,a==a&&u==u&&a!==u&&(u<a?(c+=(h-(o=f/a))/2,h=o):(l+=(f-(o=h*a))/2,f=o))),s.loaded&&(t.globalAlpha=null!=(i=n.opacity)?i:1,t.drawImage(s,l,c,f,h))}})},pick:kl(),isect:m,get:jl,xOffset:$l,yOffset:Il},Hl=zl("line",function(t,n){var e=n[0],r=e.interpolate||"linear";return Js.curve(ys(r,e.orient,e.tension)).context(t)(n)},function(t,n){for(var e,r,i=Math.pow(t[0].strokeWidth||1,2),a=t.length;--a>=0;)if(!1!==t[a].defined&&(e=t[a].x-n[0])*e+(r=t[a].y-n[1])*r<i)return t[a];return null});function Yl(t,n){var e=n.path;if(null==e)return!0;var r=n.pathCache;r&&r.path===e||((n.pathCache=r=bs(e)).path=e),Os(t,r,n.x,n.y)}var Gl={type:"path",tag:"path",nested:!1,attr:function(t,n){t("transform",Sl(n)),t("d",n.path)},bound:function(t,n){return Yl(al(t),n)?t.set(0,0,0,0):el(t,n)},draw:Al(Yl),pick:Cl(Yl),isect:cl(Yl)};function Vl(t,n){t.beginPath(),nl(t,n)}var Xl={type:"rect",tag:"path",nested:!1,attr:function(t,n){t("d",nl(null,n))},bound:function(t,n){var e,r;return el(t.set(e=n.x||0,r=n.y||0,e+n.width||0,r+n.height||0),n)},draw:Al(Vl),pick:Cl(Vl),isect:hl};function Zl(t,n,e){var r,i,a,u;return!(!n.stroke||!yl(t,n,e))&&(r=n.x||0,i=n.y||0,a=null!=n.x2?n.x2:r,u=null!=n.y2?n.y2:i,t.beginPath(),t.moveTo(r,i),t.lineTo(a,u),!0)}var Jl,Ql={type:"rule",tag:"line",nested:!1,attr:function(t,n){t("transform",Sl(n)),t("x2",null!=n.x2?n.x2-(n.x||0):0),t("y2",null!=n.y2?n.y2-(n.y||0):0)},bound:function(t,n){var e,r;return el(t.set(e=n.x||0,r=n.y||0,null!=n.x2?n.x2:e,null!=n.y2?n.y2:r),n)},draw:function(t,n,e){bl(n,function(n){if(!e||e.intersects(n.bounds)){var r=null==n.opacity?1:n.opacity;r&&Zl(t,n,r)&&t.stroke()}})},pick:kl(function(t,n,e,r){return!!t.isPointInStroke&&Zl(t,n,1)&&t.isPointInStroke(e,r)}),isect:dl},Kl=Bl("shape",function(t,n){return(n.mark.shape||n.shape).context(t)(n)}),tc=Bl("symbol",function(t,n){return Ks.context(t)(n)},fl),nc={height:uc,measureWidth:ic,estimateWidth:ec,width:ec,canvas:oc};function ec(t){return Jl=uc(t),rc(sc(t))}function rc(t){return~~(.8*t.length*Jl)}function ic(t){return uc(t)<=0?0:(sl.font=cc(t),ac(sc(t)))}function ac(t){return sl.measureText(t).width}function uc(t){return null!=t.fontSize?t.fontSize:11}function oc(t){nc.width=t&&sl?ic:ec}function sc(t){var n=t.text;return null==n?"":t.limit>0?function(t){var n,e=+t.limit,r=t.text+"";nc.width===ic?(sl.font=cc(t),n=ac):(Jl=uc(t),n=rc);if(n(r)<e)return r;var i,a=t.ellipsis||"…",u="rtl"===t.dir,o=0,s=r.length;if(e-=n(a),u){for(;o<s;)i=o+s>>>1,n(r.slice(i))>e?o=i+1:s=i;return a+r.slice(o)}for(;o<s;)i=1+(o+s>>>1),n(r.slice(0,i))<e?o=i:s=i-1;return r.slice(0,o)+a}(t):n+""}function lc(t,n){var e=t.font;return(n&&e?String(e).replace(/"/g,"\'"):e)||"sans-serif"}function cc(t,n){return(t.fontStyle?t.fontStyle+" ":"")+(t.fontVariant?t.fontVariant+" ":"")+(t.fontWeight?t.fontWeight+" ":"")+uc(t)+"px "+lc(t,n)}function fc(t){var n=t.baseline,e=uc(t);return Math.round("top"===n?.79*e:"middle"===n?.3*e:"bottom"===n?-.21*e:0)}oc(!0);var hc={left:"start",center:"middle",right:"end"},dc=new Hu;function pc(t){var n,e=t.x||0,r=t.y||0,i=t.radius||0;return i&&(n=(t.theta||0)-As,e+=i*Math.cos(n),r+=i*Math.sin(n)),dc.x1=e,dc.y1=r,dc}function gc(t,n,e){var r,i=nc.height(n),a=n.align,u=pc(n),o=u.x1,s=u.y1,l=n.dx||0,c=(n.dy||0)+fc(n)-Math.round(.8*i);if(r=nc.width(n),"center"===a?l-=r/2:"right"===a&&(l-=r),t.set(l+=o,c+=s,l+r,c+i),n.angle&&!e)t.rotate(n.angle*ws,o,s);else if(2===e)return t.rotatedPoints(n.angle*ws,o,s);return t}var mc={arc:Ol,area:Nl,group:Ul,image:Wl,line:Hl,path:Gl,rect:Xl,rule:Ql,shape:Kl,symbol:tc,text:{type:"text",tag:"text",nested:!1,attr:function(t,n){var e,r=n.dx||0,i=(n.dy||0)+fc(n),a=pc(n),u=a.x1,o=a.y1,s=n.angle||0;t("text-anchor",hc[n.align]||"start"),s?(e=Dl(u,o)+" "+Fl(s),(r||i)&&(e+=" "+Dl(r,i))):e=Dl(u+r,o+i),t("transform",e)},bound:gc,draw:function(t,n,e){bl(n,function(n){var r,i,a,u,o;e&&!e.intersects(n.bounds)||(o=sc(n))&&(0===(r=null==n.opacity?1:n.opacity)||n.fontSize<=0||(t.font=cc(n),t.textAlign=n.align||"left",a=(i=pc(n)).x1,u=i.y1,n.angle&&(t.save(),t.translate(a,u),t.rotate(n.angle*ws),a=u=0),a+=n.dx||0,u+=(n.dy||0)+fc(n),n.fill&&ml(t,n,r)&&t.fillText(o,a,u),n.stroke&&yl(t,n,r)&&t.strokeText(o,a,u),n.angle&&t.restore()))})},pick:kl(function(t,n,e,r,i,a){if(n.fontSize<=0)return!1;if(!n.angle)return!0;var u=pc(n),o=u.x1,s=u.y1,l=gc(dc,n,1),c=-n.angle*ws,f=Math.cos(c),h=Math.sin(c),d=f*i-h*a+(o-f*o+h*s),p=h*i+f*a+(s-h*o-f*s);return l.contains(d,p)}),isect:function(t,n){var e=gc(dc,t,2);return pl(n,e[0],e[1],e[2],e[3])||pl(n,e[0],e[1],e[4],e[5])||pl(n,e[4],e[5],e[6],e[7])||pl(n,e[2],e[3],e[6],e[7])}},trail:zl("trail",function(t,n){return tl.context(t)(n)},function(t,n){for(var e,r,i=t.length;--i>=0;)if(!1!==t[i].defined&&(e=t[i].x-n[0])*e+(r=t[i].y-n[1])*r<(e=t[i].size||1)*e)return t[i];return null})};function vc(t,n,e){var r=mc[t.mark.marktype],i=n||r.bound;return r.nested&&(t=t.mark),i(t.bounds||(t.bounds=new Hu),t,e)}var yc={mark:null};function xc(t,n,e){var r,i,a,u,o=mc[t.marktype],s=o.bound,l=t.items,c=l&&l.length;if(o.nested)return c?a=l[0]:(yc.mark=t,a=yc),u=vc(a,s,e),n=n&&n.union(u)||u;if(n=n||t.bounds&&t.bounds.clear()||new Hu,c)for(r=0,i=l.length;r<i;++r)n.union(vc(l[r],s,e));return t.bounds=n}var _c=["marktype","name","role","interactive","clip","items","zindex","x","y","width","height","align","baseline","fill","fillOpacity","opacity","stroke","strokeOpacity","strokeWidth","strokeCap","strokeDash","strokeDashOffset","startAngle","endAngle","innerRadius","outerRadius","cornerRadius","padAngle","interpolate","tension","orient","defined","url","path","x2","y2","size","shape","text","angle","theta","radius","dx","dy","font","fontSize","fontWeight","fontStyle","fontVariant"];function bc(t,n){return JSON.stringify(t,_c,n)}function wc(t){return function t(n){var e,r,i,a=n.marktype,u=n.items;if(u)for(r=0,i=u.length;r<i;++r)e=a?"mark":"group",u[r][e]=n,u[r].zindex&&(u[r][e].zdirty=!0),"group"===(a||e)&&t(u[r]);a&&xc(n);return n}("string"==typeof t?JSON.parse(t):t)}function Ac(t){arguments.length?this.root=wc(t):(this.root=kc({marktype:"group",name:"root",role:"frame"}),this.root.items=[new to(this.root)])}var Mc=Ac.prototype;function kc(t,n){return{bounds:new Hu,clip:!!t.clip,group:n,interactive:!1!==t.interactive,items:[],marktype:t.marktype,name:t.name||void 0,role:t.role||void 0,zindex:t.zindex||0}}function Ec(t,n,e){return!t&&"undefined"!=typeof document&&document.createElement&&(t=document),t?e?t.createElementNS(e,n):t.createElement(n):null}function Cc(t,n){n=n.toLowerCase();for(var e=t.childNodes,r=0,i=e.length;r<i;++r)if(e[r].tagName.toLowerCase()===n)return e[r]}function Dc(t,n,e,r){var i,a=t.childNodes[n];return a&&a.tagName.toLowerCase()===e.toLowerCase()||(i=a||null,a=Ec(t.ownerDocument,e,r),t.insertBefore(a,i)),a}function Fc(t,n){for(var e=t.childNodes,r=e.length;r>n;)t.removeChild(e[--r]);return t}function Sc(t){return"mark-"+t.marktype+(t.role?" role-"+t.role:"")+(t.name?" "+t.name:"")}function Bc(t,n){var e=n.getBoundingClientRect();return[t.clientX-e.left-(n.clientLeft||0),t.clientY-e.top-(n.clientTop||0)]}function Oc(t,n){this._active=null,this._handlers={},this._loader=t||wr(),this._tooltip=n||zc}function zc(t,n,e,r){t.element().setAttribute("title",r||"")}Mc.toJSON=function(t){return bc(this.root,t||0)},Mc.mark=function(t,n,e){var r=kc(t,n=n||this.root.items[0]);return n.items[e]=r,r.zindex&&(r.group.zdirty=!0),r};var Nc=Oc.prototype;function Tc(t){this._el=null,this._bgcolor=null,this._loader=new ro(t)}Nc.initialize=function(t,n,e){return this._el=t,this._obj=e||null,this.origin(n)},Nc.element=function(){return this._el},Nc.canvas=function(){return this._el&&this._el.firstChild},Nc.origin=function(t){return arguments.length?(this._origin=t||[0,0],this):this._origin.slice()},Nc.scene=function(t){return arguments.length?(this._scene=t,this):this._scene},Nc.on=function(){},Nc.off=function(){},Nc._handlerIndex=function(t,n,e){for(var r=t?t.length:0;--r>=0;)if(t[r].type===n&&(!e||t[r].handler===e))return r;return-1},Nc.handlers=function(t){var n,e=this._handlers,r=[];if(t)r.push.apply(r,e[this.eventName(t)]);else for(n in e)r.push.apply(r,e[n]);return r},Nc.eventName=function(t){var n=t.indexOf(".");return n<0?t:t.slice(0,n)},Nc.handleHref=function(t,n,e){this._loader.sanitize(e,{context:"href"}).then(function(n){var e=new MouseEvent(t.type,t),r=Ec(null,"a");for(var i in n)r.setAttribute(i,n[i]);r.dispatchEvent(e)}).catch(function(){})},Nc.handleTooltip=function(t,n,e){if(n&&null!=n.tooltip){n=function(t,n,e,r){var i,a,u=t&&t.mark;if(u&&(i=mc[u.marktype]).tip){for((a=Bc(n,e))[0]-=r[0],a[1]-=r[1];t=t.mark.group;)a[0]-=t.x||0,a[1]-=t.y||0;t=i.tip(u.items,a)}return t}(n,t,this.canvas(),this._origin);var r=e&&n&&n.tooltip||null;this._tooltip.call(this._obj,this,t,n,r)}},Nc.getItemBoundingClientRect=function(t){if(n=this.canvas()){for(var n,e=n.getBoundingClientRect(),r=this._origin,i=t.bounds,a=i.x1+r[0]+e.left,u=i.y1+r[1]+e.top,o=i.width(),s=i.height();t.mark&&(t=t.mark.group);)a+=t.x||0,u+=t.y||0;return{x:a,y:u,width:o,height:s,left:a,top:u,right:a+o,bottom:u+s}}};var Rc=Tc.prototype;Rc.initialize=function(t,n,e,r,i){return this._el=t,this.resize(n,e,r,i)},Rc.element=function(){return this._el},Rc.canvas=function(){return this._el&&this._el.firstChild},Rc.background=function(t){return 0===arguments.length?this._bgcolor:(this._bgcolor=t,this)},Rc.resize=function(t,n,e,r){return this._width=t,this._height=n,this._origin=e||[0,0],this._scale=r||1,this},Rc.dirty=function(){},Rc.render=function(t){var n=this;return n._call=function(){n._render(t)},n._call(),n._call=null,n},Rc._render=function(){},Rc.renderAsync=function(t){var n=this.render(t);return this._ready?this._ready.then(function(){return n}):Promise.resolve(n)},Rc._load=function(t,n){var e=this,r=e._loader[t](n);if(!e._ready){var i=e._call;e._ready=e._loader.ready().then(function(t){t&&i(),e._ready=null})}return r},Rc.sanitizeURL=function(t){return this._load("sanitizeURL",t)},Rc.loadImage=function(t){return this._load("loadImage",t)};var Pc="mouseout";function Lc(t,n){Oc.call(this,t,n),this._down=null,this._touch=null,this._first=!0}var qc=et(Lc,Oc);function Uc(t,n,e){return function(r){var i=this._active,a=this.pickEvent(r);a===i?this.fire(t,r):(i&&i.exit||this.fire(e,r),this._active=a,this.fire(n,r),this.fire(t,r))}}function jc(t){return function(n){this.fire(t,n),this._active=null}}qc.initialize=function(t,n,e){var r=this._canvas=t&&Cc(t,"canvas");if(r){var i=this;this.events.forEach(function(t){r.addEventListener(t,function(n){qc[t]?qc[t].call(i,n):i.fire(t,n)})})}return Oc.prototype.initialize.call(this,t,n,e)},qc.canvas=function(){return this._canvas},qc.context=function(){return this._canvas.getContext("2d")},qc.events=["keydown","keypress","keyup","dragenter","dragleave","dragover","mousedown","mouseup","mousemove","mouseout","mouseover","click","dblclick","wheel","mousewheel","touchstart","touchmove","touchend"],qc.DOMMouseScroll=function(t){this.fire("mousewheel",t)},qc.mousemove=Uc("mousemove","mouseover","mouseout"),qc.dragover=Uc("dragover","dragenter","dragleave"),qc.mouseout=jc("mouseout"),qc.dragleave=jc("dragleave"),qc.mousedown=function(t){this._down=this._active,this.fire("mousedown",t)},qc.click=function(t){this._down===this._active&&(this.fire("click",t),this._down=null)},qc.touchstart=function(t){this._touch=this.pickEvent(t.changedTouches[0]),this._first&&(this._active=this._touch,this._first=!1),this.fire("touchstart",t,!0)},qc.touchmove=function(t){this.fire("touchmove",t,!0)},qc.touchend=function(t){this.fire("touchend",t,!0),this._touch=null},qc.fire=function(t,n,e){var r,i,a=e?this._touch:this._active,u=this._handlers[t];if(n.vegaType=t,"click"===t&&a&&a.href?this.handleHref(n,a,a.href):"mousemove"!==t&&t!==Pc||this.handleTooltip(n,a,t!==Pc),u)for(r=0,i=u.length;r<i;++r)u[r].handler.call(this._obj,n,a)},qc.on=function(t,n){var e=this.eventName(t),r=this._handlers;return this._handlerIndex(r[e],t,n)<0&&(r[e]||(r[e]=[])).push({type:t,handler:n}),this},qc.off=function(t,n){var e=this.eventName(t),r=this._handlers[e],i=this._handlerIndex(r,t,n);return i>=0&&r.splice(i,1),this},qc.pickEvent=function(t){var n=Bc(t,this._canvas),e=this._origin;return this.pick(this._scene,n[0],n[1],n[0]-e[0],n[1]-e[1])},qc.pick=function(t,n,e,r,i){var a=this.context();return mc[t.marktype].pick.call(this,a,t,n,e,r,i)};var $c="undefined"!=typeof window&&window.devicePixelRatio||1;function Ic(t){Tc.call(this,t),this._redraw=!1,this._dirty=new Hu}var Wc=et(Ic,Tc),Hc=Tc.prototype,Yc=new Hu;function Gc(t,n){Oc.call(this,t,n);var e=this;e._hrefHandler=Xc(e,function(t,n){n&&n.href&&e.handleHref(t,n,n.href)}),e._tooltipHandler=Xc(e,function(t,n){e.handleTooltip(t,n,t.type!==Pc)})}Wc.initialize=function(t,n,e,r,i,a){return this._options=a,this._canvas=no(1,1,a&&a.type),t&&(Fc(t,0).appendChild(this._canvas),this._canvas.setAttribute("class","marks")),Hc.initialize.call(this,t,n,e,r,i)},Wc.resize=function(t,n,e,r){return Hc.resize.call(this,t,n,e,r),function(t,n,e,r,i,a){var u,o="undefined"!=typeof HTMLElement&&t instanceof HTMLElement&&null!=t.parentNode,s=t.getContext("2d"),l=o?$c:i;for(u in t.width=n*l,t.height=e*l,a)s[u]=a[u];o&&1!==l&&(t.style.width=n+"px",t.style.height=e+"px"),s.pixelRatio=l,s.setTransform(l,0,0,l,l*r[0],l*r[1])}(this._canvas,this._width,this._height,this._origin,this._scale,this._options&&this._options.context),this._redraw=!0,this},Wc.canvas=function(){return this._canvas},Wc.context=function(){return this._canvas?this._canvas.getContext("2d"):null},Wc.dirty=function(t){var n=function(t,n){if(null==n)return t;for(var e=Yc.clear().union(t);null!=n;n=n.mark.group)e.translate(n.x||0,n.y||0);return e}(t.bounds,t.mark.group);this._dirty.union(n)},Wc._render=function(t){var n=this.context(),e=this._origin,r=this._width,i=this._height,a=this._dirty;return n.save(),this._redraw||a.empty()?(this._redraw=!1,a=null):a=function(t,n,e){return n.expand(1).round(),n.translate(-e[0]%1,-e[1]%1),t.beginPath(),t.rect(n.x1,n.y1,n.width(),n.height()),t.clip(),n}(n,a,e),this.clear(-e[0],-e[1],r,i),this.draw(n,t,a),n.restore(),this._dirty.clear(),this},Wc.draw=function(t,n,e){var r=mc[n.marktype];n.clip&&function(t,n){var e=n.clip;if(t.save(),t.beginPath(),Y(e))e(t);else{var r=n.group;t.rect(0,0,r.width||0,r.height||0)}t.clip()}(t,n),r.draw.call(this,t,n,e),n.clip&&t.restore()},Wc.clear=function(t,n,e,r){var i=this.context();i.clearRect(t,n,e,r),null!=this._bgcolor&&(i.fillStyle=this._bgcolor,i.fillRect(t,n,e,r))};var Vc=et(Gc,Oc);function Xc(t,n){return function(e){var r=e.target.__data__;e.vegaType=e.type,r=Array.isArray(r)?r[0]:r,n.call(t._obj,e,r)}}function Zc(t,n,e){var r,i,a="<"+t;if(n)for(r in n)null!=(i=n[r])&&(a+=" "+r+\'="\'+i+\'"\');return e&&(a+=" "+e),a+">"}function Jc(t){return"</"+t+">"}Vc.initialize=function(t,n,e){var r=this._svg;return r&&(r.removeEventListener("click",this._hrefHandler),r.removeEventListener("mousemove",this._tooltipHandler),r.removeEventListener(Pc,this._tooltipHandler)),this._svg=r=t&&Cc(t,"svg"),r&&(r.addEventListener("click",this._hrefHandler),r.addEventListener("mousemove",this._tooltipHandler),r.addEventListener(Pc,this._tooltipHandler)),Oc.prototype.initialize.call(this,t,n,e)},Vc.canvas=function(){return this._svg},Vc.on=function(t,n){var e=this.eventName(t),r=this._handlers;if(this._handlerIndex(r[e],t,n)<0){var i={type:t,handler:n,listener:Xc(this,n)};(r[e]||(r[e]=[])).push(i),this._svg&&this._svg.addEventListener(e,i.listener)}return this},Vc.off=function(t,n){var e=this.eventName(t),r=this._handlers[e],i=this._handlerIndex(r,t,n);return i>=0&&(this._svg&&this._svg.removeEventListener(e,r[i].listener),r.splice(i,1)),this};var Qc={version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"},Kc={fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",strokeCap:"stroke-linecap",strokeJoin:"stroke-linejoin",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeMiterLimit:"stroke-miterlimit",opacity:"opacity"},tf=Object.keys(Kc),nf=Qc.xmlns;function ef(t){Tc.call(this,t),this._dirtyID=1,this._dirty=[],this._svg=null,this._root=null,this._defs=null}var rf=et(ef,Tc),af=Tc.prototype;function uf(t,n,e){var r,i,a;if("radial"===n.gradient){var u=Dc(t,e++,"pattern",nf);u.setAttribute("id",Vu+n.id),u.setAttribute("viewBox","0,0,1,1"),u.setAttribute("width","100%"),u.setAttribute("height","100%"),u.setAttribute("preserveAspectRatio","xMidYMid slice"),(u=Dc(u,0,"rect",nf)).setAttribute("width","1"),u.setAttribute("height","1"),u.setAttribute("fill","url("+gf()+"#"+n.id+")"),(t=Dc(t,e++,"radialGradient",nf)).setAttribute("id",n.id),t.setAttribute("fx",n.x1),t.setAttribute("fy",n.y1),t.setAttribute("fr",n.r1),t.setAttribute("cx",n.x2),t.setAttribute("cy",n.y2),t.setAttribute("r",n.r2)}else(t=Dc(t,e++,"linearGradient",nf)).setAttribute("id",n.id),t.setAttribute("x1",n.x1),t.setAttribute("x2",n.x2),t.setAttribute("y1",n.y1),t.setAttribute("y2",n.y2);for(r=0,i=n.stops.length;r<i;++r)(a=Dc(t,r,"stop",nf)).setAttribute("offset",n.stops[r].offset),a.setAttribute("stop-color",n.stops[r].color);return Fc(t,r),e}function of(t,n,e){var r;return(t=Dc(t,e,"clipPath",nf)).setAttribute("id",n.id),n.path?(r=Dc(t,0,"path",nf)).setAttribute("d",n.path):((r=Dc(t,0,"rect",nf)).setAttribute("x",0),r.setAttribute("y",0),r.setAttribute("width",n.width),r.setAttribute("height",n.height)),e+1}function sf(t,n){for(;t&&t.dirty!==n;t=t.mark.group){if(t.dirty=n,!t.mark||t.mark.dirty===n)return;t.mark.dirty=n}}function lf(t,n,e,r,i){var a,u=t._svg;if(!u&&(u=Ec(a=n.ownerDocument,r,nf),t._svg=u,t.mark&&(u.__data__=t,u.__values__={fill:"default"},"g"===r))){var o=Ec(a,"path",nf);o.setAttribute("class","background"),u.appendChild(o),o.__data__=t;var s=Ec(a,"g",nf);u.appendChild(s),s.__data__=t}return(u.ownerSVGElement!==i||function(t){var n=t.mark||t.group;return n&&n.items.length>1}(t)&&u.previousSibling!==e)&&n.insertBefore(u,e?e.nextSibling:n.firstChild),u}rf.initialize=function(t,n,e,r){return t&&(this._svg=Dc(t,0,"svg",nf),this._svg.setAttribute("class","marks"),Fc(t,1),this._root=Dc(this._svg,0,"g",nf),Fc(this._svg,1)),this._defs={gradient:{},clipping:{}},this.background(this._bgcolor),af.initialize.call(this,t,n,e,r)},rf.background=function(t){return arguments.length&&this._svg&&this._svg.style.setProperty("background-color",t),af.background.apply(this,arguments)},rf.resize=function(t,n,e,r){return af.resize.call(this,t,n,e,r),this._svg&&(this._svg.setAttribute("width",this._width*this._scale),this._svg.setAttribute("height",this._height*this._scale),this._svg.setAttribute("viewBox","0 0 "+this._width+" "+this._height),this._root.setAttribute("transform","translate("+this._origin+")")),this._dirty=[],this},rf.canvas=function(){return this._svg},rf.svg=function(){if(!this._svg)return null;var t={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var n in Qc)t[n]=Qc[n];var e=this._bgcolor?Zc("rect",{width:this._width,height:this._height,style:"fill: "+this._bgcolor+";"})+Jc("rect"):"";return Zc("svg",t)+e+this._svg.innerHTML+Jc("svg")},rf._render=function(t){return this._dirtyCheck()&&(this._dirtyAll&&this._resetDefs(),this.draw(this._root,t),Fc(this._root,1)),this.updateDefs(),this._dirty=[],++this._dirtyID,this},rf.updateDefs=function(){var t,n=this._svg,e=this._defs,r=e.el,i=0;for(t in e.gradient)r||(e.el=r=Dc(n,0,"defs",nf)),i=uf(r,e.gradient[t],i);for(t in e.clipping)r||(e.el=r=Dc(n,0,"defs",nf)),i=of(r,e.clipping[t],i);r&&(0===i?(n.removeChild(r),e.el=null):Fc(r,i))},rf._resetDefs=function(){var t=this._defs;t.gradient={},t.clipping={}},rf.dirty=function(t){t.dirty!==this._dirtyID&&(t.dirty=this._dirtyID,this._dirty.push(t))},rf.isDirty=function(t){return this._dirtyAll||!t._svg||t.dirty===this._dirtyID},rf._dirtyCheck=function(){this._dirtyAll=!0;var t=this._dirty;if(!t.length)return!0;var n,e,r,i,a,u,o,s=++this._dirtyID;for(a=0,u=t.length;a<u;++a)(e=(n=t[a]).mark).marktype!==r&&(r=e.marktype,i=mc[r]),e.zdirty&&e.dirty!==s&&(this._dirtyAll=!1,sf(n,s),e.items.forEach(function(t){t.dirty=s})),e.zdirty||(n.exit?(i.nested&&e.items.length?(o=e.items[0])._svg&&this._update(i,o._svg,o):n._svg&&(o=n._svg.parentNode)&&o.removeChild(n._svg),n._svg=null):(n=i.nested?e.items[0]:n)._update!==s&&(n._svg&&n._svg.ownerSVGElement?this._update(i,n._svg,n):(this._dirtyAll=!1,sf(n,s)),n._update=s));return!this._dirtyAll},rf.draw=function(t,n,e){if(!this.isDirty(n))return n._svg;var r,i=this,a=this._svg,u=mc[n.marktype],o=!1===n.interactive?"none":null,s="g"===u.tag,l=null,c=0;function f(t){var n=i.isDirty(t),e=lf(t,r,l,u.tag,a);n&&(i._update(u,e,t),s&&function(t,n,e){n=n.lastChild;var r,i=0;bl(e,function(e){r=t.draw(n,e,r),++i}),Fc(n,1+i)}(i,e,t)),l=e,++c}return(r=lf(n,t,e,"g",a)).setAttribute("class",Sc(n)),s||r.style.setProperty("pointer-events",o),n.clip?r.setAttribute("clip-path",Rl(i,n,n.group)):r.removeAttribute("clip-path"),u.nested?n.items.length&&f(n.items[0]):bl(n,f),Fc(r,c),r};var cf=null,ff=null,hf={group:function(t,n,e){ff=n.__values__,cf=n.childNodes[1],t.foreground(pf,e,this),cf=n.childNodes[0],t.background(pf,e,this);var r=!1===e.mark.interactive?"none":null;r!==ff.events&&(cf.style.setProperty("pointer-events",r),ff.events=r)},text:function(t,n,e){var r;(r=sc(e))!==ff.text&&(n.textContent=r,ff.text=r),df(n,"font-family",lc(e)),df(n,"font-size",uc(e)+"px"),df(n,"font-style",e.fontStyle),df(n,"font-variant",e.fontVariant),df(n,"font-weight",e.fontWeight)}};function df(t,n,e){e!==ff[n]&&(null==e?t.style.removeProperty(n):t.style.setProperty(n,e+""),ff[n]=e)}function pf(t,n,e){n!==ff[t]&&(null!=n?e?cf.setAttributeNS(e,t,n):cf.setAttribute(t,n):e?cf.removeAttributeNS(e,t):cf.removeAttribute(t),ff[t]=n)}function gf(){var t;return"undefined"==typeof window?"":(t=window.location).hash?t.href.slice(0,-t.hash.length):t.href}function mf(t){Tc.call(this,t),this._text={head:"",bg:"",root:"",foot:"",defs:"",body:""},this._defs={gradient:{},clipping:{}}}rf._update=function(t,n,e){cf=n,ff=n.__values__,t.attr(pf,e,this);var r=hf[t.type];r&&r.call(this,t,n,e),this.style(cf,e)},rf.style=function(t,n){var e,r,i,a,u;if(null!=n)for(e=0,r=tf.length;e<r;++e)u=n[i=tf[e]],"font"===i&&(u=lc(n)),u!==ff[i]&&(a=Kc[i],null==u?"fill"===a?t.style.setProperty(a,"none"):t.style.removeProperty(a):(Xu(u)&&(u=Zu(u,this._defs.gradient,gf())),t.style.setProperty(a,u+"")),ff[i]=u)};var vf,yf=et(mf,Tc),xf=Tc.prototype;function _f(t,n,e,r){vf[r||t]=n}function bf(t,n,e,r){if(null==t)return"";var i,a,u,o,s,l="";for("bgrect"===e&&!1===n.interactive&&(l+="pointer-events: none; "),"text"===e&&(l+="font-family: "+lc(t)+"; ",l+="font-size: "+uc(t)+"px; ",t.fontStyle&&(l+="font-style: "+t.fontStyle+"; "),t.fontVariant&&(l+="font-variant: "+t.fontVariant+"; "),t.fontWeight&&(l+="font-weight: "+t.fontWeight+"; ")),i=0,a=tf.length;i<a;++i)u=tf[i],o=Kc[u],null==(s=t[u])?"fill"===o&&(l+="fill: none; "):"transparent"!==s||"fill"!==o&&"stroke"!==o?(Xu(s)&&(s=Zu(s,r.gradient,"")),l+=o+": "+s+"; "):l+=o+": none; ";return l?\'style="\'+l.trim()+\'"\':null}yf.resize=function(t,n,e,r){xf.resize.call(this,t,n,e,r);var i=this._origin,a=this._text,u={class:"marks",width:this._width*this._scale,height:this._height*this._scale,viewBox:"0 0 "+this._width+" "+this._height};for(var o in Qc)u[o]=Qc[o];a.head=Zc("svg",u);var s=this._bgcolor;return"transparent"!==s&&"none"!==s||(s=null),a.bg=s?Zc("rect",{width:this._width,height:this._height,style:"fill: "+s+";"})+Jc("rect"):"",a.root=Zc("g",{transform:"translate("+i+")"}),a.foot=Jc("g")+Jc("svg"),this},yf.background=function(){var t=xf.background.apply(this,arguments);return arguments.length&&this._text.head&&this.resize(this._width,this._height,this._origin,this._scale),t},yf.svg=function(){var t=this._text;return t.head+t.bg+t.defs+t.root+t.body+t.foot},yf._render=function(t){return this._text.body=this.mark(t),this._text.defs=this.buildDefs(),this},yf.buildDefs=function(){var t,n,e,r,i,a=this._defs,u="";for(n in a.gradient){for(i=(e=a.gradient[n]).stops,"radial"===e.gradient?(u+=Zc(r="pattern",{id:Vu+n,viewBox:"0,0,1,1",width:"100%",height:"100%",preserveAspectRatio:"xMidYMid slice"}),u+=Zc("rect",{width:"1",height:"1",fill:"url(#"+n+")"})+Jc("rect"),u+=Jc(r),u+=Zc(r="radialGradient",{id:n,fx:e.x1,fy:e.y1,fr:e.r1,cx:e.x2,cy:e.y2,r:e.r2})):u+=Zc(r="linearGradient",{id:n,x1:e.x1,x2:e.x2,y1:e.y1,y2:e.y2}),t=0;t<i.length;++t)u+=Zc("stop",{offset:i[t].offset,"stop-color":i[t].color})+Jc("stop");u+=Jc(r)}for(n in a.clipping)e=a.clipping[n],u+=Zc("clipPath",{id:n}),e.path?u+=Zc("path",{d:e.path})+Jc("path"):u+=Zc("rect",{x:0,y:0,width:e.width,height:e.height})+Jc("rect"),u+=Jc("clipPath");return u.length>0?Zc("defs")+u+Jc("defs"):""},yf.attributes=function(t,n){return vf={},t(_f,n,this),vf},yf.href=function(t){var n,e=this,r=t.href;if(r){if(n=e._hrefs&&e._hrefs[r])return n;e.sanitizeURL(r).then(function(t){t["xlink:href"]=t.href,t.href=null,(e._hrefs||(e._hrefs={}))[r]=t})}return null},yf.mark=function(t){var n,e=this,r=mc[t.marktype],i=r.tag,a=this._defs,u="";function o(o){var s=e.href(o);s&&(u+=Zc("a",s)),n="g"!==i?bf(o,t,i,a):null,u+=Zc(i,e.attributes(r.attr,o),n),"text"===i?u+=sc(o).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"):"g"===i&&(u+=Zc("path",e.attributes(r.background,o),bf(o,t,"bgrect",a))+Jc("path"),u+=Zc("g",e.attributes(r.foreground,o))+e.markGroup(o)+Jc("g")),u+=Jc(i),s&&(u+=Jc("a"))}return"g"!==i&&!1===t.interactive&&(n=\'style="pointer-events: none;"\'),u+=Zc("g",{class:Sc(t),"clip-path":t.clip?Rl(e,t,t.group):null},n),r.nested?t.items&&t.items.length&&o(t.items[0]):bl(t,o),u+Jc("g")},yf.markGroup=function(t){var n=this,e="";return bl(t,function(t){e+=n.mark(t)}),e};var wf={Canvas:"canvas",PNG:"png",SVG:"svg",None:"none"},Af={};function Mf(t,n){return t=String(t||"").toLowerCase(),arguments.length>1?(Af[t]=n,this):Af[t]}function kf(t,n,e){const r=[],a=(new Hu).union(n),u=t.marktype;return u?Ef(t,a,e,r):"group"===u?Cf(t,a,e,r):i("Intersect scene must be mark node or group item.")}function Ef(t,n,e,r){if(function(t,n,e){return t.bounds&&n.intersects(t.bounds)&&("group"===t.marktype||!1!==t.interactive&&(!e||e(t)))}(t,n,e)){const i=t.items,a=t.marktype,u=i.length;let o=0;if("group"===a)for(;o<u;++o)Cf(i[o],n,e,r);else for(const t=mc[a].isect;o<u;++o){let e=i[o];Df(e,n,t)&&r.push(e)}}return r}function Cf(t,n,e,r){e&&e(t.mark)&&Df(t,n,mc.group.isect)&&r.push(t);const i=t.items,a=i&&i.length;if(a){const u=t.x||0,o=t.y||0;n.translate(-u,-o);for(let t=0;t<a;++t)Ef(i[t],n,e,r);n.translate(u,o)}return r}function Df(t,n,e){const r=t.bounds;return n.encloses(r)||n.intersects(r)&&e(t,n)}Af.canvas=Af.png={renderer:Ic,headless:Ic,handler:Lc},Af.svg={renderer:ef,headless:mf,handler:Gc},Af.none={};var Ff=new Hu;function Sf(t){var n=t.clip;if(Y(n))n(al(Ff.clear()));else{if(!n)return;Ff.set(0,0,t.group.width,t.group.height)}t.bounds.intersect(Ff)}var Bf=1e-9;function Of(t,n,e){return t===n||("path"===e?zf(t,n):t instanceof Date&&n instanceof Date?+t==+n:ut(t)&&ut(n)?Math.abs(t-n)<=Bf:t&&n&&(o(t)||o(n))?null!=t&&null!=n&&function(t,n){var e,r,i=Object.keys(t),a=Object.keys(n);if(i.length!==a.length)return!1;for(i.sort(),a.sort(),r=i.length-1;r>=0;r--)if(i[r]!=a[r])return!1;for(r=i.length-1;r>=0;r--)if(e=i[r],!Of(t[e],n[e],e))return!1;return typeof t==typeof n}(t,n):t==n)}function zf(t,n){return Of(bs(t),bs(n))}function Nf(t){$r.call(this,null,t)}function Tf(t,n,e){return n(t.bounds.clear(),t,e)}et(Nf,$r).transform=function(t,n){var e,r=n.dataflow,i=t.mark,a=i.marktype,u=mc[a],o=u.bound,s=i.bounds;return u.nested?(i.items.length&&r.dirty(i.items[0]),s=Tf(i,o),i.items.forEach(function(t){t.bounds.clear().union(s)})):a===bu||t.modified()?(n.visit(n.MOD,function(t){r.dirty(t)}),s.clear(),i.items.forEach(function(t){s.union(Tf(t,o))}),i.role===Eu&&n.reflow()):(e=n.changed(n.REM),n.visit(n.ADD,function(t){s.union(Tf(t,o))}),n.visit(n.MOD,function(t){e=e||s.alignsWith(t.bounds),r.dirty(t),s.union(Tf(t,o))}),e&&(s.clear(),i.items.forEach(function(t){s.union(t.bounds)}))),Sf(i),n.modifies("bounds")};var Rf=":vega_identifier:";function Pf(t){$r.call(this,0,t)}function Lf(t){$r.call(this,null,t)}function qf(t){$r.call(this,null,t)}Pf.Definition={type:"Identifier",metadata:{modifies:!0},params:[{name:"as",type:"string",required:!0}]},et(Pf,$r).transform=function(t,n){var e=function(t){var n=t._signals[Rf];n||(t._signals[Rf]=n=t.add(0));return n}(n.dataflow),r=e.value,i=t.as;return n.visit(n.ADD,function(t){t[i]||(t[i]=++r)}),e.set(this.value=r),n},et(Lf,$r).transform=function(t,n){var e=this.value;e||((e=n.dataflow.scenegraph().mark(t.markdef,function(t){var n=t.groups,e=t.parent;return n&&1===n.size?n.get(Object.keys(n.object)[0]):n&&e?n.lookup(e):null}(t),t.index)).group.context=t.context,t.context.group||(t.context.group=e.group),e.source=this,e.clip=t.clip,e.interactive=t.interactive,this.value=e);var r=e.marktype===bu?to:Ku;return n.visit(n.ADD,function(t){r.call(t,e)}),(t.modified("clip")||t.modified("interactive"))&&(e.clip=t.clip,e.interactive=!!t.interactive,e.zdirty=!0,n.reflow()),e.items=n.source,n};var Uf=et(qf,$r),jf={parity:function(t){return t.filter((t,n)=>n%2?t.opacity=0:1)},greedy:function(t,n){var e;return t.filter((t,r)=>r&&$f(e.bounds,t.bounds,n)?t.opacity=0:(e=t,1))}};function $f(t,n,e){return e>Math.max(n.x1-t.x2,t.x1-n.x2,n.y1-t.y2,t.y1-n.y2)}function If(t,n){for(var e,r=1,i=t.length,a=t[0].bounds;r<i;a=e,++r)if($f(a,e=t[r].bounds,n))return!0}function Wf(t){var n=t.bounds;return n.width()>1&&n.height()>1}function Hf(t){return t.forEach(t=>t.opacity=1),t}function Yf(t,n){return t.reflow(n.modified()).modifies("opacity")}function Gf(t){$r.call(this,null,t)}Uf.transform=function(t,n){var e,r,i,a=jf[t.method]||jf.parity,u=n.materialize(n.SOURCE).source,o=t.separation||0;if(u&&u.length){if(!t.method)return t.modified("method")&&(Hf(u),n=Yf(n,t)),n;if(t.sort&&(u=u.slice().sort(t.sort)),e=Hf(u=u.filter(Wf)),n=Yf(n,t),e.length>=3&&If(e,o)){do{e=a(e,o)}while(e.length>=3&&If(e,o));e.length<3&&!k(u).opacity&&(e.length>1&&(k(e).opacity=0),k(u).opacity=1)}var s,l,c,f,h;return t.boundScale&&t.boundTolerance>=0&&(s=t.boundScale,l=t.boundOrient,c=+t.boundTolerance,f=s.range(),h=new Hu,l===su||l===fu?h.set(f[0],-1/0,f[1],1/0):h.set(-1/0,f[0],1/0,f[1]),h.expand(c||1),r=(t=>h.encloses(t.bounds)),u.forEach(t=>{r(t)||(t.opacity=0)})),i=e[0].mark.bounds.clear(),u.forEach(t=>{t.opacity&&i.union(t.bounds)}),n}},et(Gf,$r).transform=function(t,n){var e=n.dataflow;if(n.visit(n.ALL,function(t){e.dirty(t)}),n.fields&&n.fields.zindex){var r=n.source&&n.source[0];r&&(r.mark.zdirty=!0)}};const Vf=new Hu;function Xf(t,n,e){return t[n]===e?0:(t[n]=e,1)}const Zf=.5;function Jf(t){var n=t.items[0].datum.orient;return n===lu||n===cu}function Qf(t,n,e,r){var i,a,u=n.items[0],o=u.datum,s=o.orient,l=function(t){var n=+t.grid;return[t.ticks?n++:-1,t.labels?n++:-1,n+ +t.domain]}(o),c=u.range,f=u.offset,h=u.position,d=u.minExtent,p=u.maxExtent,g=o.title&&u.items[l[2]].items[0],m=u.titlePadding,v=u.bounds,y=0,x=0;switch(Vf.clear().union(v),v.clear(),(i=l[0])>-1&&v.union(u.items[i].bounds),(i=l[1])>-1&&v.union(u.items[i].bounds),s){case su:y=h||0,x=-f,a=Math.max(d,Math.min(p,-v.y1)),g&&(a=Kf(g,a,m,0,-1,v)),v.add(0,-a).add(c,0);break;case lu:y=-f,x=h||0,a=Math.max(d,Math.min(p,-v.x1)),g&&(a=Kf(g,a,m,1,-1,v)),v.add(-a,0).add(0,c);break;case cu:y=e+f,x=h||0,a=Math.max(d,Math.min(p,v.x2)),g&&(a=Kf(g,a,m,1,1,v)),v.add(0,0).add(a,c);break;case fu:y=h||0,x=r+f,a=Math.max(d,Math.min(p,v.y2)),g&&(a=Kf(g,a,m,0,1,v)),v.add(0,0).add(c,a);break;default:y=u.x,x=u.y}return el(v.translate(y,x),u),Xf(u,"x",y+Zf)|Xf(u,"y",x+Zf)&&(u.bounds=Vf,t.dirty(u),u.bounds=v,t.dirty(u)),u.mark.bounds.clear().union(v)}function Kf(t,n,e,r,i,a){var u=t.bounds,o=0,s=0;return t.auto?(n+=e,r?o=(t.x||0)-(t.x=i*n):s=(t.y||0)-(t.y=i*n),u.translate(-o,-s),t.mark.bounds.set(u.x1,u.y1,u.x2,u.y2),r?(a.add(0,u.y1).add(0,u.y2),n+=u.width()):(a.add(u.x1,0).add(u.x2,0),n+=u.height())):a.union(u),n}function th(t){return(new Hu).set(0,0,t.width||0,t.height||0)}function nh(t){var n=t.bounds.clone();return n.empty()?n.set(0,0,0,0):n.translate(-(t.x||0),-(t.y||0))}function eh(t,n,e){var r=o(t)?t[n]:t;return null!=r?r:void 0!==e?e:0}function rh(t){return t<0?Math.ceil(-t):0}function ih(t,n,e){var r,i,a,u,o,s,l,c,f,h,d,p=!e.nodirty,g=e.bounds===$u?th:nh,m=Vf.set(0,0,0,0),v=eh(e.align,Iu),y=eh(e.align,Wu),x=eh(e.padding,Iu),_=eh(e.padding,Wu),b=e.columns||n.length,w=b<0?1:Math.ceil(n.length/b),A=n.length,M=Array(A),k=Array(b),E=0,C=Array(A),D=Array(w),F=0,S=Array(A),B=Array(A),O=Array(A);for(i=0;i<b;++i)k[i]=0;for(i=0;i<w;++i)D[i]=0;for(i=0;i<A;++i)s=n[i],o=O[i]=g(s),s.x=s.x||0,S[i]=0,s.y=s.y||0,B[i]=0,a=i%b,u=~~(i/b),E=Math.max(E,l=Math.ceil(o.x2)),F=Math.max(F,c=Math.ceil(o.y2)),k[a]=Math.max(k[a],l),D[u]=Math.max(D[u],c),M[i]=x+rh(o.x1),C[i]=_+rh(o.y1),p&&t.dirty(n[i]);for(i=0;i<A;++i)i%b==0&&(M[i]=0),i<b&&(C[i]=0);if(v===ju)for(a=1;a<b;++a){for(d=0,i=a;i<A;i+=b)d<M[i]&&(d=M[i]);for(i=a;i<A;i+=b)M[i]=d+k[a-1]}else if(v===Uu){for(d=0,i=0;i<A;++i)i%b&&d<M[i]&&(d=M[i]);for(i=0;i<A;++i)i%b&&(M[i]=d+E)}else for(v=!1,a=1;a<b;++a)for(i=a;i<A;i+=b)M[i]+=k[a-1];if(y===ju)for(u=1;u<w;++u){for(d=0,r=(i=u*b)+b;i<r;++i)d<C[i]&&(d=C[i]);for(i=u*b;i<r;++i)C[i]=d+D[u-1]}else if(y===Uu){for(d=0,i=b;i<A;++i)d<C[i]&&(d=C[i]);for(i=b;i<A;++i)C[i]=d+F}else for(y=!1,u=1;u<w;++u)for(r=(i=u*b)+b;i<r;++i)C[i]+=D[u-1];for(f=0,i=0;i<A;++i)f=M[i]+(i%b?f:0),S[i]+=f-n[i].x;for(a=0;a<b;++a)for(h=0,i=a;i<A;i+=b)h+=C[i],B[i]+=h-n[i].y;if(v&&eh(e.center,Iu)&&w>1)for(i=0;i<A;++i)(f=(o=v===Uu?E:k[i%b])-O[i].x2-n[i].x-S[i])>0&&(S[i]+=f/2);if(y&&eh(e.center,Wu)&&1!==b)for(i=0;i<A;++i)(h=(o=y===Uu?F:D[~~(i/b)])-O[i].y2-n[i].y-B[i])>0&&(B[i]+=h/2);for(i=0;i<A;++i)m.union(O[i].translate(S[i],B[i]));switch(f=eh(e.anchor,xu),h=eh(e.anchor,_u),eh(e.anchor,Iu)){case yu:f-=m.width();break;case vu:f-=m.width()/2}switch(eh(e.anchor,Wu)){case yu:h-=m.height();break;case vu:h-=m.height()/2}for(f=Math.round(f),h=Math.round(h),m.clear(),i=0;i<A;++i)n[i].mark.bounds.clear();for(i=0;i<A;++i)(s=n[i]).x+=S[i]+=f,s.y+=B[i]+=h,m.union(s.mark.bounds.union(s.bounds.translate(S[i],B[i]))),p&&t.dirty(s);return m}function ah(t,n,e){var r,i,a,u,o,s,l,c=function(t){for(var n,e,r=t.items,i=r.length,a=0,u={marks:[],rowheaders:[],rowfooters:[],colheaders:[],colfooters:[],rowtitle:null,coltitle:null};a<i;++a)if(e=(n=r[a]).items,n.marktype===bu)switch(n.role){case wu:case Eu:break;case Cu:u.rowheaders.push(...e);break;case Du:u.rowfooters.push(...e);break;case Su:u.colheaders.push(...e);break;case Bu:u.colfooters.push(...e);break;case Fu:u.rowtitle=e[0];break;case Ou:u.coltitle=e[0];break;default:u.marks.push(...e)}return u}(n),f=c.marks,h=e.bounds===$u?uh:oh,d=e.offset,p=e.columns||f.length,g=p<0?1:Math.ceil(f.length/p),m=g*p;const v=ih(t,f,e);c.rowheaders&&(s=eh(e.headerBand,Wu,null),r=ch(t,c.rowheaders,f,p,g,-eh(d,"rowHeader"),sh,0,h,"x1",0,p,1,s)),c.colheaders&&(s=eh(e.headerBand,Iu,null),i=ch(t,c.colheaders,f,p,p,-eh(d,"columnHeader"),sh,1,h,"y1",0,1,p,s)),c.rowfooters&&(s=eh(e.footerBand,Wu,null),a=ch(t,c.rowfooters,f,p,g,eh(d,"rowFooter"),lh,0,h,"x2",p-1,p,1,s)),c.colfooters&&(s=eh(e.footerBand,Iu,null),u=ch(t,c.colfooters,f,p,p,eh(d,"columnFooter"),lh,1,h,"y2",m-p,1,p,s)),c.rowtitle&&(o=eh(e.titleAnchor,Wu),l=eh(d,"rowTitle"),l=o===yu?a+l:r-l,s=eh(e.titleBand,Wu,.5),fh(t,c.rowtitle,l,0,v,s)),c.coltitle&&(o=eh(e.titleAnchor,Iu),l=eh(d,"columnTitle"),l=o===yu?u+l:i-l,s=eh(e.titleBand,Iu,.5),fh(t,c.coltitle,l,1,v,s))}function uh(t,n){return"x1"===n?t.x||0:"y1"===n?t.y||0:"x2"===n?(t.x||0)+(t.width||0):"y2"===n?(t.y||0)+(t.height||0):void 0}function oh(t,n){return t.bounds[n]}function sh(t,n){return Math.floor(Math.min(t,n))}function lh(t,n){return Math.ceil(Math.max(t,n))}function ch(t,n,e,r,i,a,u,o,s,l,c,f,h,d){var p,g,m,v,y,x,_,b,w,A=e.length,M=0,k=0;if(!A)return M;for(p=c;p<A;p+=f)e[p]&&(M=u(M,s(e[p],l)));if(!n.length)return M;for(n.length>i&&(t.warn("Grid headers exceed limit: "+i),n=n.slice(0,i)),M+=a,g=0,v=n.length;g<v;++g)t.dirty(n[g]),n[g].mark.bounds.clear();for(p=c,g=0,v=n.length;g<v;++g,p+=f){for(y=(x=n[g]).mark.bounds,m=p;m>=0&&null==(_=e[m]);m-=h);o?(b=null==d?_.x:Math.round(_.bounds.x1+d*_.bounds.width()),w=M):(b=M,w=null==d?_.y:Math.round(_.bounds.y1+d*_.bounds.height())),y.union(x.bounds.translate(b-(x.x||0),w-(x.y||0))),x.x=b,x.y=w,t.dirty(x),k=u(k,y[l])}return k}function fh(t,n,e,r,i,a){if(n){t.dirty(n);var u=e,o=e;r?u=Math.round(i.x1+a*i.width()):o=Math.round(i.y1+a*i.height()),n.bounds.translate(u-(n.x||0),o-(n.y||0)),n.mark.bounds.clear().union(n.bounds),n.x=u,n.y=o,t.dirty(n)}}function hh(t,n,e,r,i,a,u){const o=function(t,n){const e=t[n]||{};return(n,r)=>null!=e[n]?e[n]:null!=t[n]?t[n]:r}(e,n),s=(f=t,h=o("offset",0),d=-1/0,f.forEach(t=>{null!=t.offset&&(d=Math.max(d,t.offset))}),d>-1/0?d:h),l=o("anchor",mu),c=l===yu?1:l===vu?.5:0;var f,h,d;const p={align:ju,bounds:o("bounds",$u),columns:"vertical"===o("direction")?1:t.length,padding:o("margin",8),center:o("center"),nodirty:!0};switch(n){case lu:p.anchor={x:Math.floor(r.x1)-s,column:yu,y:c*(u||r.height()+2*r.y1),row:l};break;case cu:p.anchor={x:Math.ceil(r.x2)+s,y:c*(u||r.height()+2*r.y1),row:l};break;case su:p.anchor={y:Math.floor(i.y1)-s,row:yu,x:c*(a||i.width()+2*i.x1),column:l};break;case fu:p.anchor={y:Math.ceil(i.y2)+s,x:c*(a||i.width()+2*i.x1),column:l};break;case hu:p.anchor={x:s,y:s};break;case du:p.anchor={x:a-s,y:s,column:yu};break;case pu:p.anchor={x:s,y:u-s,row:yu};break;case gu:p.anchor={x:a-s,y:u-s,column:yu,row:yu}}return p}function dh(t,n){var e,r,i,a,u=n.items[0],o=u.datum,s=u.orient,l=u.bounds,c=u.x,f=u.y;return u._bounds?u._bounds.clear().union(l):u._bounds=l.clone(),l.clear(),function(t,n,e){var r=n.padding,i=r-e.x,a=r-e.y;if(n.datum.title){var u=n.items[1].items[0],o=u.anchor,s=n.titlePadding||0,l=r-u.x,c=r-u.y;switch(u.orient){case lu:i+=Math.ceil(u.bounds.width())+s;break;case cu:case fu:break;default:a+=u.fontSize+s}switch((i||a)&&gh(t,e,i,a),u.orient){case lu:c+=ph(n,e,u,o,0,1);break;case cu:l+=ph(n,e,u,yu,1,0)+s,c+=ph(n,e,u,o,0,1);break;case fu:l+=ph(n,e,u,o,1,0),c+=ph(n,e,u,yu,0,0,1)+s;break;default:l+=ph(n,e,u,o,1,0)}(l||c)&&gh(t,u,l,c),(l=Math.round(u.bounds.x1-r))<0&&(gh(t,e,-l,0),gh(t,u,-l,0))}else(i||a)&&gh(t,e,i,a)}(t,u,u.items[0].items[0]),l=function(t,n){return t.items.forEach(t=>n.union(t.bounds)),n.x1=t.padding,n.y1=t.padding,n}(u,l),e=2*u.padding,r=2*u.padding,l.empty()||(e=Math.ceil(l.width()+e),r=Math.ceil(l.height()+r)),o.type===Nu&&(i=u.items[0].items[0].items[0].items,a=i.reduce(function(t,n){return t[n.column]=Math.max(n.bounds.x2-n.x,t[n.column]||0),t},{}),i.forEach(function(t){t.width=a[t.column],t.height=t.bounds.y2-t.y})),s!==qu&&(u.x=c=0,u.y=f=0),u.width=e,u.height=r,el(l.set(c,f,c+e,f+r),u),u.mark.bounds.clear().union(l),u}function ph(t,n,e,r,i,a,u){const o="symbol"!==t.datum.type,s=e.datum.vgrad,l=(!o||!a&&s||u?n:n.items[0]).bounds[i?"x2":"y2"]-t.padding,c=s&&a?l:0,f=s&&a?0:l;return Math.round(r===mu?c:r===yu?f:.5*l)}function gh(t,n,e,r){n.x+=e,n.y+=r,n.bounds.translate(e,r),n.mark.bounds.translate(e,r),t.dirty(n)}function mh(t){$r.call(this,null,t)}et(mh,$r).transform=function(t,n){var e=n.dataflow;return t.mark.items.forEach(function(n){t.layout&&ah(e,n,t.layout),function(t,n,e){var r,i,a,u,o,s=n.items,l=Math.max(0,n.width||0),c=Math.max(0,n.height||0),f=(new Hu).set(0,0,l,c),h=f.clone(),d=f.clone(),p=[];for(u=0,o=s.length;u<o;++u)switch((i=s[u]).role){case wu:(Jf(i)?h:d).union(Qf(t,i,l,c));break;case Au:r=i;break;case Eu:p.push(dh(t,i));break;case Mu:case ku:case Cu:case Du:case Fu:case Su:case Bu:case Ou:h.union(i.bounds),d.union(i.bounds);break;default:f.union(i.bounds)}if(p.length){const n={};p.forEach(t=>{(a=t.orient||cu)!==qu&&(n[a]||(n[a]=[])).push(t)});for(let r in n){const i=n[r];ih(t,i,hh(i,r,e.legends,h,d,l,c))}p.forEach(n=>{const r=n.bounds;if(r.equals(n._bounds)||(n.bounds=n._bounds,t.dirty(n),n.bounds=r,t.dirty(n)),e.autosize&&e.autosize.type===Tu)switch(n.orient){case lu:case cu:f.add(r.x1,0).add(r.x2,0);break;case su:case fu:f.add(0,r.y1).add(0,r.y2)}else f.union(r)})}f.union(h).union(d),r&&f.union(function(t,n,e,r,i){var a,u=n.items[0],o=u.frame,s=u.orient,l=u.anchor,c=u.offset,f=u.bounds,h=0,d=s===lu||s===cu?r:e,p=0,g=0;switch(o!==bu?s===lu?(h=i.y2,d=i.y1):s===cu?(h=i.y1,d=i.y2):(h=i.x1,d=i.x2):s===lu&&(h=r,d=0),a=l===mu?h:l===yu?d:(h+d)/2,Vf.clear().union(f),s){case su:p=a,g=i.y1-c;break;case lu:p=i.x1-c,g=a;break;case cu:p=i.x2+c,g=a;break;case fu:p=a,g=i.y2+c;break;default:p=u.x,g=u.y}return f.translate(p-(u.x||0),g-(u.y||0)),Xf(u,"x",p)|Xf(u,"y",g)&&(u.bounds=Vf,t.dirty(u),u.bounds=f,t.dirty(u)),n.bounds.clear().union(f)}(t,r,l,c,f));!function(t,n,e,r){var i=r.autosize||{},a=i.type,u=t._width,o=t._height,s=t.padding();if(t._autosize<1||!a)return;var l=Math.max(0,n.width||0),c=Math.max(0,Math.ceil(-e.x1)),f=Math.max(0,Math.ceil(e.x2-l)),h=Math.max(0,n.height||0),d=Math.max(0,Math.ceil(-e.y1)),p=Math.max(0,Math.ceil(e.y2-h));i.contains===zu&&(u-=s.left+s.right,o-=s.top+s.bottom);a===qu?(c=0,d=0,l=u,h=o):a===Tu?(l=Math.max(0,u-c-f),h=Math.max(0,o-d-p)):a===Ru?(l=Math.max(0,u-c-f),o=h+d+p):a===Pu?(u=l+c+f,h=Math.max(0,o-d-p)):a===Lu&&(u=l+c+f,o=h+d+p);t._resizeView(u,o,l,h,[c,d],i.resize)}(t,n,f,e)}(e,n,t)}),t.modified()&&n.reflow(),n};var vh=Object.freeze({bound:Nf,identifier:Pf,mark:Lf,overlap:qf,render:Gf,viewlayout:mh});function yh(t,n,e){var r=t-n+2*e;return t?r>0?r:1:0}const xh="identity",_h="linear",bh="log",wh="pow",Ah="sqrt",Mh="symlog",kh="time",Eh="utc",Ch="sequential",Dh="diverging",Fh="quantile",Sh="quantize",Bh="threshold",Oh="ordinal",zh="point",Nh="band",Th="bin-ordinal";function Rh(t){return t===Fh}function Ph(t){return function(t){return t&&t.startsWith(Ch)}(t)||function(t){return t&&t.startsWith(Dh)}(t)}function Lh(t){return t===bh||t.endsWith("-log")}function qh(t){switch(t){case _h:case bh:case wh:case Ah:case Mh:case kh:case Eh:case Ch:return!0}return!1}function Uh(t){return t===Th||t===Oh||t===Nh||t===zh}function jh(t){return t===Th||t===Fh||t===Sh||t===Bh}var $h={millisecond:Nn,second:Pn,minute:Ln,hour:qn,day:Un,week:$n,month:Hn,year:Yn},Ih={millisecond:Nn,second:Pn,minute:Gn,hour:Vn,day:Xn,week:Jn,month:te,year:ne};function Wh(t,n){const e=n===Eh?Ih:$h;return e.hasOwnProperty(t)&&e[t]}function Hh(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function Yh(t,n){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(n).domain(t)}return this}const Gh=Symbol("implicit");function Vh(){var t=new Map,n=[],e=[],r=Gh;function i(i){var a=i+"",u=t.get(a);if(!u){if(r!==Gh)return r;t.set(a,u=n.push(i))}return e[(u-1)%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new Map;for(const r of e){const e=r+"";t.has(e)||t.set(e,n.push(r))}return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Vh(n,e).unknown(r)},Hh.apply(i,arguments),i}function Xh(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Zh(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Jh(){}var Qh="\\\\s*([+-]?\\\\d+)\\\\s*",Kh="\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*",td="\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*",nd=/^#([0-9a-f]{3})$/,ed=/^#([0-9a-f]{6})$/,rd=new RegExp("^rgb\\\\("+[Qh,Qh,Qh]+"\\\\)$"),id=new RegExp("^rgb\\\\("+[td,td,td]+"\\\\)$"),ad=new RegExp("^rgba\\\\("+[Qh,Qh,Qh,Kh]+"\\\\)$"),ud=new RegExp("^rgba\\\\("+[td,td,td,Kh]+"\\\\)$"),od=new RegExp("^hsl\\\\("+[Kh,td,td]+"\\\\)$"),sd=new RegExp("^hsla\\\\("+[Kh,td,td,Kh]+"\\\\)$"),ld={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function cd(t){var n;return t=(t+"").trim().toLowerCase(),(n=nd.exec(t))?new gd((n=parseInt(n[1],16))>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):(n=ed.exec(t))?fd(parseInt(n[1],16)):(n=rd.exec(t))?new gd(n[1],n[2],n[3],1):(n=id.exec(t))?new gd(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=ad.exec(t))?hd(n[1],n[2],n[3],n[4]):(n=ud.exec(t))?hd(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=od.exec(t))?vd(n[1],n[2]/100,n[3]/100,1):(n=sd.exec(t))?vd(n[1],n[2]/100,n[3]/100,n[4]):ld.hasOwnProperty(t)?fd(ld[t]):"transparent"===t?new gd(NaN,NaN,NaN,0):null}function fd(t){return new gd(t>>16&255,t>>8&255,255&t,1)}function hd(t,n,e,r){return r<=0&&(t=n=e=NaN),new gd(t,n,e,r)}function dd(t){return t instanceof Jh||(t=cd(t)),t?new gd((t=t.rgb()).r,t.g,t.b,t.opacity):new gd}function pd(t,n,e,r){return 1===arguments.length?dd(t):new gd(t,n,e,null==r?1:r)}function gd(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function md(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function vd(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new xd(t,n,e,r)}function yd(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof xd)return new xd(t.h,t.s,t.l,t.opacity);if(t instanceof Jh||(t=cd(t)),!t)return new xd;if(t instanceof xd)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),a=Math.max(n,e,r),u=NaN,o=a-i,s=(a+i)/2;return o?(u=n===a?(e-r)/o+6*(e<r):e===a?(r-n)/o+2:(n-e)/o+4,o/=s<.5?a+i:2-a-i,u*=60):o=s>0&&s<1?0:u,new xd(u,o,s,t.opacity)}(t):new xd(t,n,e,null==r?1:r)}function xd(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function _d(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Xh(Jh,cd,{displayable:function(){return this.rgb().displayable()},hex:function(){return this.rgb().hex()},toString:function(){return this.rgb()+""}}),Xh(gd,pd,Zh(Jh,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new gd(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new gd(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},hex:function(){return"#"+md(this.r)+md(this.g)+md(this.b)},toString:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Xh(xd,yd,Zh(Jh,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new xd(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new xd(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new gd(_d(t>=240?t-240:t+120,i,r),_d(t,i,r),_d(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var bd=Math.PI/180,wd=180/Math.PI,Ad=.96422,Md=1,kd=.82521,Ed=4/29,Cd=6/29,Dd=3*Cd*Cd,Fd=Cd*Cd*Cd;function Sd(t){if(t instanceof Od)return new Od(t.l,t.a,t.b,t.opacity);if(t instanceof Ld){if(isNaN(t.h))return new Od(t.l,0,0,t.opacity);var n=t.h*bd;return new Od(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof gd||(t=dd(t));var e,r,i=Rd(t.r),a=Rd(t.g),u=Rd(t.b),o=zd((.2225045*i+.7168786*a+.0606169*u)/Md);return i===a&&a===u?e=r=o:(e=zd((.4360747*i+.3850649*a+.1430804*u)/Ad),r=zd((.0139322*i+.0971045*a+.7141733*u)/kd)),new Od(116*o-16,500*(e-o),200*(o-r),t.opacity)}function Bd(t,n,e,r){return 1===arguments.length?Sd(t):new Od(t,n,e,null==r?1:r)}function Od(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function zd(t){return t>Fd?Math.pow(t,1/3):t/Dd+Ed}function Nd(t){return t>Cd?t*t*t:Dd*(t-Ed)}function Td(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Rd(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Pd(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Ld)return new Ld(t.h,t.c,t.l,t.opacity);if(t instanceof Od||(t=Sd(t)),0===t.a&&0===t.b)return new Ld(NaN,0,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*wd;return new Ld(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new Ld(t,n,e,null==r?1:r)}function Ld(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}Xh(Od,Bd,Zh(Jh,{brighter:function(t){return new Od(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Od(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new gd(Td(3.1338561*(n=Ad*Nd(n))-1.6168667*(t=Md*Nd(t))-.4906146*(e=kd*Nd(e))),Td(-.9787684*n+1.9161415*t+.033454*e),Td(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),Xh(Ld,Pd,Zh(Jh,{brighter:function(t){return new Ld(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Ld(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Sd(this).rgb()}}));var qd=-.14861,Ud=1.78277,jd=-.29227,$d=-.90649,Id=1.97294,Wd=Id*$d,Hd=Id*Ud,Yd=Ud*jd-$d*qd;function Gd(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Vd)return new Vd(t.h,t.s,t.l,t.opacity);t instanceof gd||(t=dd(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Yd*r+Wd*n-Hd*e)/(Yd+Wd-Hd),a=r-i,u=(Id*(e-i)-jd*a)/$d,o=Math.sqrt(u*u+a*a)/(Id*i*(1-i)),s=o?Math.atan2(u,a)*wd-120:NaN;return new Vd(s<0?s+360:s,o,i,t.opacity)}(t):new Vd(t,n,e,null==r?1:r)}function Vd(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Xd(t,n,e,r,i){var a=t*t,u=a*t;return((1-3*t+3*a-u)*n+(4-6*a+3*u)*e+(1+3*t+3*a-3*u)*r+u*i)/6}function Zd(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],a=t[r+1],u=r>0?t[r-1]:2*i-a,o=r<n-1?t[r+2]:2*a-i;return Xd((e-r/n)*n,u,i,a,o)}}function Jd(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],a=t[r%n],u=t[(r+1)%n],o=t[(r+2)%n];return Xd((e-r/n)*n,i,a,u,o)}}function Qd(t){return function(){return t}}function Kd(t,n){return function(e){return t+e*n}}function tp(t,n){var e=n-t;return e?Kd(t,e>180||e<-180?e-360*Math.round(e/360):e):Qd(isNaN(t)?n:t)}function np(t){return 1==(t=+t)?ep:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Qd(isNaN(n)?e:n)}}function ep(t,n){var e=n-t;return e?Kd(t,e):Qd(isNaN(t)?n:t)}Xh(Vd,Gd,Zh(Jh,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Vd(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Vd(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*bd,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new gd(255*(n+e*(qd*r+Ud*i)),255*(n+e*(jd*r+$d*i)),255*(n+e*(Id*r)),this.opacity)}}));var rp=function t(n){var e=np(n);function r(t,n){var r=e((t=pd(t)).r,(n=pd(n)).r),i=e(t.g,n.g),a=e(t.b,n.b),u=ep(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=a(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function ip(t){return function(n){var e,r,i=n.length,a=new Array(i),u=new Array(i),o=new Array(i);for(e=0;e<i;++e)r=pd(n[e]),a[e]=r.r||0,u[e]=r.g||0,o[e]=r.b||0;return a=t(a),u=t(u),o=t(o),r.opacity=1,function(t){return r.r=a(t),r.g=u(t),r.b=o(t),r+""}}}var ap=ip(Zd),up=ip(Jd);function op(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),u=new Array(r);for(e=0;e<i;++e)a[e]=pp(t[e],n[e]);for(;e<r;++e)u[e]=n[e];return function(t){for(e=0;e<i;++e)u[e]=a[e](t);return u}}function sp(t,n){var e=new Date;return n-=t=+t,function(r){return e.setTime(t+n*r),e}}function lp(t,n){return n-=t=+t,function(e){return t+n*e}}function cp(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=pp(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var fp=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,hp=new RegExp(fp.source,"g");function dp(t,n){var e,r,i,a=fp.lastIndex=hp.lastIndex=0,u=-1,o=[],s=[];for(t+="",n+="";(e=fp.exec(t))&&(r=hp.exec(n));)(i=r.index)>a&&(i=n.slice(a,i),o[u]?o[u]+=i:o[++u]=i),(e=e[0])===(r=r[0])?o[u]?o[u]+=r:o[++u]=r:(o[++u]=null,s.push({i:u,x:lp(e,r)})),a=hp.lastIndex;return a<n.length&&(i=n.slice(a),o[u]?o[u]+=i:o[++u]=i),o.length<2?s[0]?function(t){return function(n){return t(n)+""}}(s[0].x):function(t){return function(){return t}}(n):(n=s.length,function(t){for(var e,r=0;r<n;++r)o[(e=s[r]).i]=e.x(t);return o.join("")})}function pp(t,n){var e,r=typeof n;return null==n||"boolean"===r?Qd(n):("number"===r?lp:"string"===r?(e=cd(n))?(n=e,rp):dp:n instanceof cd?rp:n instanceof Date?sp:Array.isArray(n)?op:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?cp:lp)(t,n)}function gp(t,n){return n-=t=+t,function(e){return Math.round(t+n*e)}}var mp,vp,yp,xp,_p=180/Math.PI,bp={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function wp(t,n,e,r,i,a){var u,o,s;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(o=Math.sqrt(e*e+r*r))&&(e/=o,r/=o,s/=o),t*r<n*e&&(t=-t,n=-n,s=-s,u=-u),{translateX:i,translateY:a,rotate:Math.atan2(n,t)*_p,skewX:Math.atan(s)*_p,scaleX:u,scaleY:o}}function Ap(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(a,u){var o=[],s=[];return a=t(a),u=t(u),function(t,r,i,a,u,o){if(t!==i||r!==a){var s=u.push("translate(",null,n,null,e);o.push({i:s-4,x:lp(t,i)},{i:s-2,x:lp(r,a)})}else(i||a)&&u.push("translate("+i+n+a+e)}(a.translateX,a.translateY,u.translateX,u.translateY,o,s),function(t,n,e,a){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),a.push({i:e.push(i(e)+"rotate(",null,r)-2,x:lp(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(a.rotate,u.rotate,o,s),function(t,n,e,a){t!==n?a.push({i:e.push(i(e)+"skewX(",null,r)-2,x:lp(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(a.skewX,u.skewX,o,s),function(t,n,e,r,a,u){if(t!==e||n!==r){var o=a.push(i(a)+"scale(",null,",",null,")");u.push({i:o-4,x:lp(t,e)},{i:o-2,x:lp(n,r)})}else 1===e&&1===r||a.push(i(a)+"scale("+e+","+r+")")}(a.scaleX,a.scaleY,u.scaleX,u.scaleY,o,s),a=u=null,function(t){for(var n,e=-1,r=s.length;++e<r;)o[(n=s[e]).i]=n.x(t);return o.join("")}}}var Mp=Ap(function(t){return"none"===t?bp:(mp||(mp=document.createElement("DIV"),vp=document.documentElement,yp=document.defaultView),mp.style.transform=t,t=yp.getComputedStyle(vp.appendChild(mp),null).getPropertyValue("transform"),vp.removeChild(mp),wp(+(t=t.slice(7,-1).split(","))[0],+t[1],+t[2],+t[3],+t[4],+t[5]))},"px, ","px)","deg)"),kp=Ap(function(t){return null==t?bp:(xp||(xp=document.createElementNS("http://www.w3.org/2000/svg","g")),xp.setAttribute("transform",t),(t=xp.transform.baseVal.consolidate())?wp((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):bp)},", ",")",")"),Ep=Math.SQRT2,Cp=2,Dp=4,Fp=1e-12;function Sp(t){return((t=Math.exp(t))+1/t)/2}function Bp(t){return function(n,e){var r=t((n=yd(n)).h,(e=yd(e)).h),i=ep(n.s,e.s),a=ep(n.l,e.l),u=ep(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=a(t),n.opacity=u(t),n+""}}}var Op=Bp(tp),zp=Bp(ep);function Np(t){return function(n,e){var r=t((n=Pd(n)).h,(e=Pd(e)).h),i=ep(n.c,e.c),a=ep(n.l,e.l),u=ep(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=a(t),n.opacity=u(t),n+""}}}var Tp=Np(tp),Rp=Np(ep);function Pp(t){return function n(e){function r(n,r){var i=t((n=Gd(n)).h,(r=Gd(r)).h),a=ep(n.s,r.s),u=ep(n.l,r.l),o=ep(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=a(t),n.l=u(Math.pow(t,e)),n.opacity=o(t),n+""}}return e=+e,r.gamma=n,r}(1)}var Lp=Pp(tp),qp=Pp(ep);function Up(t,n){for(var e=0,r=n.length-1,i=n[0],a=new Array(r<0?0:r);e<r;)a[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return a[n](t-n)}}var jp=Object.freeze({interpolate:pp,interpolateArray:op,interpolateBasis:Zd,interpolateBasisClosed:Jd,interpolateDate:sp,interpolateDiscrete:function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},interpolateHue:function(t,n){var e=tp(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},interpolateNumber:lp,interpolateObject:cp,interpolateRound:gp,interpolateString:dp,interpolateTransformCss:Mp,interpolateTransformSvg:kp,interpolateZoom:function(t,n){var e,r,i=t[0],a=t[1],u=t[2],o=n[0],s=n[1],l=n[2],c=o-i,f=s-a,h=c*c+f*f;if(h<Fp)r=Math.log(l/u)/Ep,e=function(t){return[i+t*c,a+t*f,u*Math.exp(Ep*t*r)]};else{var d=Math.sqrt(h),p=(l*l-u*u+Dp*h)/(2*u*Cp*d),g=(l*l-u*u-Dp*h)/(2*l*Cp*d),m=Math.log(Math.sqrt(p*p+1)-p),v=Math.log(Math.sqrt(g*g+1)-g);r=(v-m)/Ep,e=function(t){var n,e=t*r,o=Sp(m),s=u/(Cp*d)*(o*(n=Ep*e+m,((n=Math.exp(2*n))-1)/(n+1))-function(t){return((t=Math.exp(t))-1/t)/2}(m));return[i+s*c,a+s*f,u*o/Sp(Ep*e+m)]}}return e.duration=1e3*r,e},interpolateRgb:rp,interpolateRgbBasis:ap,interpolateRgbBasisClosed:up,interpolateHsl:Op,interpolateHslLong:zp,interpolateLab:function(t,n){var e=ep((t=Bd(t)).l,(n=Bd(n)).l),r=ep(t.a,n.a),i=ep(t.b,n.b),a=ep(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=a(n),t+""}},interpolateHcl:Tp,interpolateHclLong:Rp,interpolateCubehelix:Lp,interpolateCubehelixLong:qp,piecewise:Up,quantize:function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e}});function $p(t){return+t}var Ip=[0,1];function Wp(t){return t}function Hp(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:(e=isNaN(n)?NaN:.5,function(){return e});var e}function Yp(t){var n,e=t[0],r=t[t.length-1];return e>r&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function Gp(t,n,e){var r=t[0],i=t[1],a=n[0],u=n[1];return i<r?(r=Hp(i,r),a=e(u,a)):(r=Hp(r,i),a=e(a,u)),function(t){return a(r(t))}}function Vp(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),a=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)i[u]=Hp(t[u],t[u+1]),a[u]=e(n[u],n[u+1]);return function(n){var e=ui(t,n,1,r)-1;return a[e](i[e](n))}}function Xp(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Zp(){var t,n,e,r,i,a,u=Ip,o=Ip,s=pp,l=Wp;function c(){return r=Math.min(u.length,o.length)>2?Vp:Gp,i=a=null,f}function f(n){return isNaN(n=+n)?e:(i||(i=r(u.map(t),o,s)))(t(l(n)))}return f.invert=function(e){return l(n((a||(a=r(o,u.map(t),lp)))(e)))},f.domain=function(t){return arguments.length?(u=Array.from(t,$p),l===Wp||(l=Yp(u)),c()):u.slice()},f.range=function(t){return arguments.length?(o=Array.from(t),c()):o.slice()},f.rangeRound=function(t){return o=Array.from(t),s=gp,c()},f.clamp=function(t){return arguments.length?(l=t?Yp(u):Wp,f):l!==Wp},f.interpolate=function(t){return arguments.length?(s=t,c()):s},f.unknown=function(t){return arguments.length?(e=t,f):e},function(e,r){return t=e,n=r,c()}}function Jp(t,n){return Zp()(t,n)}function Qp(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Kp(t){return(t=Qp(Math.abs(t)))?t[1]:NaN}var tg,ng=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function eg(t){return new rg(t)}function rg(t){if(!(n=ng.exec(t)))throw new Error("invalid format: "+t);var n;this.fill=n[1]||" ",this.align=n[2]||">",this.sign=n[3]||"-",this.symbol=n[4]||"",this.zero=!!n[5],this.width=n[6]&&+n[6],this.comma=!!n[7],this.precision=n[8]&&+n[8].slice(1),this.trim=!!n[9],this.type=n[10]||""}function ig(t,n){var e=Qp(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}eg.prototype=rg.prototype,rg.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ag={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return ig(100*t,n)},r:ig,s:function(t,n){var e=Qp(t,n);if(!e)return t+"";var r=e[0],i=e[1],a=i-(tg=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return a===u?r:a>u?r+new Array(a-u+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Qp(t,Math.max(0,n+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function ug(t){return t}var og,sg,lg,cg=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function fg(t){var n,e,r=t.grouping&&t.thousands?(n=t.grouping,e=t.thousands,function(t,r){for(var i=t.length,a=[],u=0,o=n[0],s=0;i>0&&o>0&&(s+o+1>r&&(o=Math.max(1,r-s)),a.push(t.substring(i-=o,i+o)),!((s+=o+1)>r));)o=n[u=(u+1)%n.length];return a.reverse().join(e)}):ug,i=t.currency,a=t.decimal,u=t.numerals?function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(t.numerals):ug,o=t.percent||"%";function s(t){var n=(t=eg(t)).fill,e=t.align,s=t.sign,l=t.symbol,c=t.zero,f=t.width,h=t.comma,d=t.precision,p=t.trim,g=t.type;"n"===g?(h=!0,g="g"):ag[g]||(null==d&&(d=12),p=!0,g="g"),(c||"0"===n&&"="===e)&&(c=!0,n="0",e="=");var m="$"===l?i[0]:"#"===l&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===l?i[1]:/[%p]/.test(g)?o:"",y=ag[g],x=/[defgprs%]/.test(g);function _(t){var i,o,l,_=m,b=v;if("c"===g)b=y(t)+b,t="";else{var w=(t=+t)<0;if(t=y(Math.abs(t),d),p&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(i>0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),w&&0==+t&&(w=!1),_=(w?"("===s?s:"-":"-"===s||"("===s?"":s)+_,b=("s"===g?cg[8+tg/3]:"")+b+(w&&"("===s?")":""),x)for(i=-1,o=t.length;++i<o;)if(48>(l=t.charCodeAt(i))||l>57){b=(46===l?a+t.slice(i+1):t.slice(i))+b,t=t.slice(0,i);break}}h&&!c&&(t=r(t,1/0));var A=_.length+t.length+b.length,M=A<f?new Array(f-A+1).join(n):"";switch(h&&c&&(t=r(M+t,M.length?f-b.length:1/0),M=""),e){case"<":t=_+t+b+M;break;case"=":t=_+M+t+b;break;case"^":t=M.slice(0,A=M.length>>1)+_+t+b+M.slice(A);break;default:t=M+_+t+b}return u(t)}return d=null==d?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),_.toString=function(){return t+""},_}return{format:s,formatPrefix:function(t,n){var e=s(((t=eg(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Kp(n)/3))),i=Math.pow(10,-r),a=cg[8+r/3];return function(t){return e(i*t)+a}}}}function hg(t){return og=fg(t),sg=og.format,lg=og.formatPrefix,og}function dg(t,n,e,r){var i,a=gi(t,n,e);switch((r=eg(null==r?",f":r)).type){case"s":var u=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Kp(n)/3)))-Kp(Math.abs(t)))}(a,u))||(r.precision=i),lg(r,u);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Kp(n)-Kp(t))+1}(a,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-Kp(Math.abs(t)))}(a))||(r.precision=i-2*("%"===r.type))}return sg(r)}function pg(t){var n=t.domain;return t.ticks=function(t){var e=n();return di(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return dg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),a=0,u=i.length-1,o=i[a],s=i[u];return s<o&&(r=o,o=s,s=r,r=a,a=u,u=r),(r=pi(o,s,e))>0?r=pi(o=Math.floor(o/r)*r,s=Math.ceil(s/r)*r,e):r<0&&(r=pi(o=Math.ceil(o*r)/r,s=Math.floor(s*r)/r,e)),r>0?(i[a]=Math.floor(o/r)*r,i[u]=Math.ceil(s/r)*r,n(i)):r<0&&(i[a]=Math.ceil(o*r)/r,i[u]=Math.floor(s*r)/r,n(i)),t},t}function gg(t,n){var e,r=0,i=(t=t.slice()).length-1,a=t[r],u=t[i];return u<a&&(e=r,r=i,i=e,e=a,a=u,u=e),t[r]=n.floor(a),t[i]=n.ceil(u),t}function mg(t){return Math.log(t)}function vg(t){return Math.exp(t)}function yg(t){return-Math.log(-t)}function xg(t){return-Math.exp(-t)}function _g(t){return isFinite(t)?+("1e"+t):t<0?0:t}function bg(t){return function(n){return-t(-n)}}function wg(t){var n,e,r=t(mg,vg),i=r.domain,a=10;function u(){return n=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}(a),e=function(t){return 10===t?_g:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}(a),i()[0]<0?(n=bg(n),e=bg(e),t(yg,xg)):t(mg,vg),r}return r.base=function(t){return arguments.length?(a=+t,u()):a},r.domain=function(t){return arguments.length?(i(t),u()):i()},r.ticks=function(t){var r,u=i(),o=u[0],s=u[u.length-1];(r=s<o)&&(h=o,o=s,s=h);var l,c,f,h=n(o),d=n(s),p=null==t?10:+t,g=[];if(!(a%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,o>0){for(;h<d;++h)for(c=1,l=e(h);c<a;++c)if(!((f=l*c)<o)){if(f>s)break;g.push(f)}}else for(;h<d;++h)for(c=a-1,l=e(h);c>=1;--c)if(!((f=l*c)<o)){if(f>s)break;g.push(f)}}else g=di(h,d,Math.min(d-h,p)).map(e);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=sg(i)),t===1/0)return i;null==t&&(t=10);var u=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/e(Math.round(n(t)));return r*a<a-.5&&(r*=a),r<=u?i(t):""}},r.nice=function(){return i(gg(i(),{floor:function(t){return e(Math.floor(n(t)))},ceil:function(t){return e(Math.ceil(n(t)))}}))},r}function Ag(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Mg(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function kg(t){var n=1,e=t(Ag(n),Mg(n));return e.constant=function(e){return arguments.length?t(Ag(n=+e),Mg(n)):n},pg(e)}function Eg(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Cg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Dg(t){return t<0?-t*t:t*t}function Fg(t){var n=t(Wp,Wp),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(Wp,Wp):.5===e?t(Cg,Dg):t(Eg(e),Eg(1/e)):e},pg(n)}function Sg(){var t=Fg(Zp());return t.copy=function(){return Xp(t,Sg()).exponent(t.exponent())},Hh.apply(t,arguments),t}hg({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Bg=1e3,Og=60*Bg,zg=60*Og,Ng=24*zg,Tg=7*Ng,Rg=30*Ng,Pg=365*Ng;function Lg(t){return new Date(t)}function qg(t){return t instanceof Date?+t:+new Date(+t)}function Ug(t,n,e,r,i,a,u,o,s){var l=Jp(Wp,Wp),c=l.invert,f=l.domain,h=s(".%L"),d=s(":%S"),p=s("%I:%M"),g=s("%I %p"),m=s("%a %d"),v=s("%b %d"),y=s("%B"),x=s("%Y"),_=[[u,1,Bg],[u,5,5*Bg],[u,15,15*Bg],[u,30,30*Bg],[a,1,Og],[a,5,5*Og],[a,15,15*Og],[a,30,30*Og],[i,1,zg],[i,3,3*zg],[i,6,6*zg],[i,12,12*zg],[r,1,Ng],[r,2,2*Ng],[e,1,Tg],[n,1,Rg],[n,3,3*Rg],[t,1,Pg]];function b(o){return(u(o)<o?h:a(o)<o?d:i(o)<o?p:r(o)<o?g:n(o)<o?e(o)<o?m:v:t(o)<o?y:x)(o)}function w(n,e,r,i){if(null==n&&(n=10),"number"==typeof n){var a=Math.abs(r-e)/n,u=ii(function(t){return t[2]}).right(_,a);u===_.length?(i=gi(e/Pg,r/Pg,n),n=t):u?(i=(u=_[a/_[u-1][2]<_[u][2]/a?u-1:u])[1],n=u[0]):(i=Math.max(gi(e,r,n),1),n=o)}return null==i?n:n.every(i)}return l.invert=function(t){return new Date(c(t))},l.domain=function(t){return arguments.length?f(Array.from(t,qg)):f().map(Lg)},l.ticks=function(t,n){var e,r=f(),i=r[0],a=r[r.length-1],u=a<i;return u&&(e=i,i=a,a=e),e=(e=w(t,i,a,n))?e.range(i,a+1):[],u?e.reverse():e},l.tickFormat=function(t,n){return null==n?b:s(n)},l.nice=function(t,n){var e=f();return(t=w(t,e[0],e[e.length-1],n))?f(gg(e,t)):l},l.copy=function(){return Xp(l,Ug(t,n,e,r,i,a,u,o,s))},l}function jg(){var t,n,e,r,i,a=0,u=1,o=Wp,s=!1;function l(n){return isNaN(n=+n)?i:o(0===e?.5:(n=(r(n)-t)*e,s?Math.max(0,Math.min(1,n)):n))}return l.domain=function(i){return arguments.length?([a,u]=i,t=r(a=+a),n=r(u=+u),e=t===n?0:1/(n-t),l):[a,u]},l.clamp=function(t){return arguments.length?(s=!!t,l):s},l.interpolator=function(t){return arguments.length?(o=t,l):o},l.unknown=function(t){return arguments.length?(i=t,l):i},function(i){return r=i,t=i(a),n=i(u),e=t===n?0:1/(n-t),l}}function $g(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Ig(){var t=pg(jg()(Wp));return t.copy=function(){return $g(t,Ig())},Yh.apply(t,arguments)}function Wg(){var t=Fg(jg());return t.copy=function(){return $g(t,Wg()).exponent(t.exponent())},Yh.apply(t,arguments)}function Hg(){var t,n,e,r,i,a,u,o=0,s=.5,l=1,c=Wp,f=!1;function h(t){return isNaN(t=+t)?u:(t=.5+((t=+a(t))-n)*(t<n?r:i),c(f?Math.max(0,Math.min(1,t)):t))}return h.domain=function(u){return arguments.length?([o,s,l]=u,t=a(o=+o),n=a(s=+s),e=a(l=+l),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h):[o,s,l]},h.clamp=function(t){return arguments.length?(f=!!t,h):f},h.interpolator=function(t){return arguments.length?(c=t,h):c},h.unknown=function(t){return arguments.length?(u=t,h):u},function(u){return a=u,t=u(o),n=u(s),e=u(l),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),h}}function Yg(){var t=Fg(Hg());return t.copy=function(){return $g(t,Yg()).exponent(t.exponent())},Yh.apply(t,arguments)}function Gg(){var t,n,e=Vh().unknown(void 0),r=e.domain,i=e.range,a=[0,1],u=!1,o=0,s=0,l=.5;function c(){var e=r().length,c=a[1]<a[0],f=a[c-0],h=a[1-c],d=yh(e,o,s);t=(h-f)/(d||1),u&&(t=Math.floor(t)),f+=(h-f-t*(e-o))*l,n=t*(1-o),u&&(f=Math.round(f),n=Math.round(n));var p=li(e).map(function(n){return f+t*n});return i(c?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),c()):r()},e.range=function(t){return arguments.length?(a=[+t[0],+t[1]],c()):a.slice()},e.rangeRound=function(t){return a=[+t[0],+t[1]],u=!0,c()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,c()):u},e.padding=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),o=s,c()):o},e.paddingInner=function(t){return arguments.length?(o=Math.max(0,Math.min(1,t)),c()):o},e.paddingOuter=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),c()):s},e.align=function(t){return arguments.length?(l=Math.max(0,Math.min(1,t)),c()):l},e.invertRange=function(t){if(null!=t[0]&&null!=t[1]){var e,u,o,s=+t[0],l=+t[1],c=a[1]<a[0],f=c?i().reverse():i(),h=f.length-1;if(s==s&&l==l&&(l<s&&(o=s,s=l,l=o),!(l<f[0]||s>a[1-c])))return e=Math.max(0,ui(f,s)-1),u=s===l?e:ui(f,l)-1,s-f[e]>n+1e-10&&++e,c&&(o=e,e=h-u,u=h-o),e>u?void 0:r().slice(e,u+1)}},e.invert=function(t){var n=e.invertRange([t,t]);return n?n[0]:n},e.copy=function(){return Gg().domain(r()).range(a).round(u).paddingInner(o).paddingOuter(s).align(l)},c()}var Vg=Array.prototype.map;var Xg=Array.prototype.slice;function Zg(t,n){return arguments.length>1?(Jg[t]=function(t,n){return function(){var e=n();return e.invertRange||(e.invertRange=e.invert?function(t){return function(n){var e,r=n[0],i=n[1];return i<r&&(e=r,r=i,i=e),[t.invert(r),t.invert(i)]}}(e):e.invertExtent?function(t){return function(n){var e,r,i,a,u=t.range(),o=n[0],s=n[1],l=-1;for(s<o&&(r=o,o=s,s=r),i=0,a=u.length;i<a;++i)u[i]>=o&&u[i]<=s&&(l<0&&(l=i),e=i);if(!(l<0))return o=t.invertExtent(u[l]),s=t.invertExtent(u[e]),[void 0===o[0]?o[1]:o[0],void 0===s[1]?s[0]:s[1]]}}(e):void 0),e.type=t,e}}(t,n),this):Jg.hasOwnProperty(t)?Jg[t]:void 0}var Jg={[xh]:function t(n){var e;function r(t){return isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,$p),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,$p):[0,1],pg(r)},[_h]:function t(){var n=Jp(Wp,Wp);return n.copy=function(){return Xp(n,t())},Hh.apply(n,arguments),pg(n)},[bh]:function t(){var n=wg(Zp()).domain([1,10]);return n.copy=function(){return Xp(n,t()).base(n.base())},Hh.apply(n,arguments),n},[wh]:Sg,[Ah]:function(){return Sg.apply(null,arguments).exponent(.5)},[Mh]:function t(){var n=kg(Zp());return n.copy=function(){return Xp(n,t()).constant(n.constant())},Hh.apply(n,arguments)},[kh]:function(){return Hh.apply(Ug(Yn,Hn,$n,Un,qn,Ln,Pn,Nn,ue).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},[Eh]:function(){return Hh.apply(Ug(ne,te,Jn,Xn,Vn,Gn,Pn,Nn,se).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},[Ch]:Ig,[Ch+"-"+_h]:Ig,[Ch+"-"+bh]:function t(){var n=wg(jg()).domain([1,10]);return n.copy=function(){return $g(n,t()).base(n.base())},Yh.apply(n,arguments)},[Ch+"-"+wh]:Wg,[Ch+"-"+Ah]:function(){return Wg.apply(null,arguments).exponent(.5)},[Ch+"-"+Mh]:function t(){var n=kg(jg());return n.copy=function(){return $g(n,t()).constant(n.constant())},Yh.apply(n,arguments)},[Dh+"-"+_h]:function t(){var n=pg(Hg()(Wp));return n.copy=function(){return $g(n,t())},Yh.apply(n,arguments)},[Dh+"-"+bh]:function t(){var n=wg(Hg()).domain([.1,1,10]);return n.copy=function(){return $g(n,t()).base(n.base())},Yh.apply(n,arguments)},[Dh+"-"+wh]:Yg,[Dh+"-"+Ah]:function(){return Yg.apply(null,arguments).exponent(.5)},[Dh+"-"+Mh]:function t(){var n=kg(Hg());return n.copy=function(){return $g(n,t()).constant(n.constant())},Yh.apply(n,arguments)},[Fh]:function t(){var n,e=[],r=[],i=[];function a(){var t=0,n=Math.max(1,r.length);for(i=new Array(n-1);++t<n;)i[t-1]=mi(e,t/n);return u}function u(t){return isNaN(t=+t)?n:r[ui(i,t)]}return u.invertExtent=function(t){var n=r.indexOf(t);return n<0?[NaN,NaN]:[n>0?i[n-1]:e[0],n<i.length?i[n]:e[e.length-1]]},u.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(ri),a()},u.range=function(t){return arguments.length?(r=Array.from(t),a()):r.slice()},u.unknown=function(t){return arguments.length?(n=t,u):n},u.quantiles=function(){return i.slice()},u.copy=function(){return t().domain(e).range(r).unknown(n)},Hh.apply(u,arguments)},[Sh]:function t(){var n,e=0,r=1,i=1,a=[.5],u=[0,1];function o(t){return t<=t?u[ui(a,t,0,i)]:n}function s(){var t=-1;for(a=new Array(i);++t<i;)a[t]=((t+1)*r-(t-i)*e)/(i+1);return o}return o.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,s()):[e,r]},o.range=function(t){return arguments.length?(i=(u=Array.from(t)).length-1,s()):u.slice()},o.invertExtent=function(t){var n=u.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,a[0]]:n>=i?[a[i-1],r]:[a[n-1],a[n]]},o.unknown=function(t){return arguments.length?(n=t,o):o},o.thresholds=function(){return a.slice()},o.copy=function(){return t().domain([e,r]).range(u).unknown(n)},Hh.apply(pg(o),arguments)},[Bh]:function t(){var n,e=[.5],r=[0,1],i=1;function a(t){return t<=t?r[ui(e,t,0,i)]:n}return a.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),a):e.slice()},a.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),a):r.slice()},a.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},a.unknown=function(t){return arguments.length?(n=t,a):n},a.copy=function(){return t().domain(e).range(r).unknown(n)},Hh.apply(a,arguments)},[Th]:function t(){var n=[],e=[];function r(t){return null==t||t!=t?void 0:e[(ui(n,t)-1)%e.length]}return r.domain=function(t){return arguments.length?(n=function(t){return Vg.call(t,function(t){return+t})}(t),r):n.slice()},r.range=function(t){return arguments.length?(e=Xg.call(t),r):e.slice()},r.tickFormat=function(t,e){return dg(n[0],k(n),null==t?10:t,e)},r.copy=function(){return t().domain(r.domain()).range(r.range())},r},[Oh]:Vh,[Nh]:Gg,[zh]:function(){return function t(n){var e=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,n.copy=function(){return t(e())},n}(Gg().paddingInner(1))}};for(var Qg in Jg)Zg(Qg,Jg[Qg]);const Kg=["clamp","base","constant","exponent"];function tm(t,n){var e=n[0],r=k(n)-e;return function(n){return t(e+n*r)}}function nm(t,n,e){return Up(im(n||"rgb",e),t)}function em(t,n){for(var e=new Array(n),r=n+1,i=0;i<n;)e[i]=t(++i/r);return e}function rm(t,n,e){var r,i,a,u=e-n;return u&&isFinite(u)?(r=(i=t.type).indexOf("-"),i=r<0?i:i.slice(r+1),a=Zg(i)().domain([n,e]).range([0,1]),Kg.forEach(n=>t[n]?a[n](t[n]()):0),a):V(.5)}function im(t,n){var e=jp[function(t){return"interpolate"+t.toLowerCase().split("-").map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("")}(t)];return null!=n&&e&&e.gamma?e.gamma(n):e}function am(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}function um(t,n){for(let e in t)sm(e,n(t[e]))}const om={};function sm(t,n){return t=t&&t.toLowerCase(),arguments.length>1?(om[t]=n,this):om[t]}function lm(t,n,e){var r;return ut(n)&&null!=e&&(n=Math.min(n,~~(dt(t.domain())/e)||1)),o(n)&&(r=n.step,n=n.interval),s(n)&&(n=Wh(n,t.type)||i("Only time and utc scales accept interval strings."),r&&(n=n.every(r))),n}function cm(t,n,e){var r=t.range(),i=Math.floor(r[0]),a=Math.ceil(k(r));if(i>a&&(r=a,a=i,i=r),n=n.filter(function(n){return n=t(n),i<=n&&n<=a}),e>0&&n.length>1){for(var u=[n[0],k(n)];n.length>e&&n.length>=3;)n=n.filter(function(t,n){return!(n%2)});n.length<3&&(n=u)}return n}function fm(t,n){return t.bins?cm(t,function(t,n){var e=t.length,r=~~(e/(n||e));return r<2?t.slice():t.filter(function(t,n){return!(n%r)})}(t.bins,n)):t.ticks?t.ticks(n):t.domain()}function hm(t,n,e,r){var i,a,u=t.tickFormat?t.tickFormat(n,e):e&&r===kh?ue(e):e?sg(e):String;if(Lh(t.type)){var o=function(t){var n=eg(t||",");if(null==n.precision){switch(n.precision=12,n.type){case"%":n.precision-=2;break;case"e":n.precision-=1}return e=sg(n),r=sg(".1f")(1)[1],function(t){var n,i,a=e(t),u=a.indexOf(r);if(u<0)return a;for(n=function(t,n){var e,r=t.lastIndexOf("e");if(r>0)return r;for(r=t.length;--r>n;)if((e=t.charCodeAt(r))>=48&&e<=57)return r+1}(a,u),i=n<a.length?a.slice(n):"";--n>u;)if("0"!==a[n]){++n;break}return a.slice(0,n)+i}}return sg(n);var e,r}(e);u=t.bins?o:(i=u,a=o,function(t){return i(t)?a(t):""})}return u}function dm(t){$r.call(this,null,t)}function pm(t){$r.call(this,null,t)}function gm(){return Dt({})}function mm(t){return t.exit}function vm(t){$r.call(this,null,t)}um({category10:"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf",category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5",accent:"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666",dark2:"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666",paired:"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928",pastel1:"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2",pastel2:"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc",set1:"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999",set2:"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3",set3:"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"},am),um({blues:"cfe1f2bed8eca8cee58fc1de74b2d75ba3cf4592c63181bd206fb2125ca40a4a90",greens:"d3eecdc0e6baabdda594d3917bc77d60ba6c46ab5e329a512089430e7735036429",greys:"e2e2e2d4d4d4c4c4c4b1b1b19d9d9d8888887575756262624d4d4d3535351e1e1e",oranges:"fdd8b3fdc998fdb87bfda55efc9244f87f2cf06b18e4580bd14904b93d029f3303",purples:"e2e1efd4d4e8c4c5e0b4b3d6a3a0cc928ec3827cb97566ae684ea25c3696501f8c",reds:"fdc9b4fcb49afc9e80fc8767fa7051f6573fec3f2fdc2a25c81b1db21218970b13",blueGreen:"d5efedc1e8e0a7ddd18bd2be70c6a958ba9144ad77319c5d2089460e7736036429",bluePurple:"ccddecbad0e4a8c2dd9ab0d4919cc98d85be8b6db28a55a6873c99822287730f71",greenBlue:"d3eecec5e8c3b1e1bb9bd8bb82cec269c2ca51b2cd3c9fc7288abd1675b10b60a1",orangeRed:"fddcaffdcf9bfdc18afdad77fb9562f67d53ee6545e24932d32d1ebf130da70403",purpleBlue:"dbdaebc8cee4b1c3de97b7d87bacd15b9fc93a90c01e7fb70b70ab056199045281",purpleBlueGreen:"dbd8eac8cee4b0c3de93b7d872acd1549fc83892bb1c88a3097f8702736b016353",purpleRed:"dcc9e2d3b3d7ce9eccd186c0da6bb2e14da0e23189d91e6fc61159ab07498f023a",redPurple:"fccfccfcbec0faa9b8f98faff571a5ec539ddb3695c41b8aa908808d0179700174",yellowGreen:"e4f4acd1eca0b9e2949ed68880c97c62bb6e47aa5e3297502083440e723b036034",yellowOrangeBrown:"feeaa1fedd84fecc63feb746fca031f68921eb7215db5e0bc54c05ab3d038f3204",yellowOrangeRed:"fee087fed16ffebd59fea849fd903efc7335f9522bee3423de1b20ca0b22af0225",blueOrange:"134b852f78b35da2cb9dcae1d2e5eff2f0ebfce0bafbbf74e8932fc5690d994a07",brownBlueGreen:"704108a0651ac79548e3c78af3e6c6eef1eac9e9e48ed1c74da79e187a72025147",purpleGreen:"5b1667834792a67fb6c9aed3e6d6e8eff0efd9efd5aedda971bb75368e490e5e29",purpleOrange:"4114696647968f83b7b9b4d6dadbebf3eeeafce0bafbbf74e8932fc5690d994a07",redBlue:"8c0d25bf363adf745ef4ae91fbdbc9f2efeed2e5ef9dcae15da2cb2f78b3134b85",redGrey:"8c0d25bf363adf745ef4ae91fcdccbfaf4f1e2e2e2c0c0c0969696646464343434",yellowGreenBlue:"eff9bddbf1b4bde5b594d5b969c5be45b4c22c9ec02182b82163aa23479c1c3185",redYellowBlue:"a50026d4322cf16e43fcac64fedd90faf8c1dcf1ecabd6e875abd04a74b4313695",redYellowGreen:"a50026d4322cf16e43fcac63fedd8df9f7aed7ee8ea4d86e64bc6122964f006837",pinkYellowGreen:"8e0152c0267edd72adf0b3d6faddedf5f3efe1f2cab6de8780bb474f9125276419",spectral:"9e0142d13c4bf0704afcac63fedd8dfbf8b0e0f3a1a9dda269bda94288b55e4fa2",viridis:"440154470e61481a6c482575472f7d443a834144873d4e8a39568c35608d31688e2d708e2a788e27818e23888e21918d1f988b1fa08822a8842ab07f35b77943bf7154c56866cc5d7ad1518fd744a5db36bcdf27d2e21be9e51afde725",magma:"0000040404130b0924150e3720114b2c11603b0f704a107957157e651a80721f817f24828c29819a2e80a8327db6377ac43c75d1426fde4968e95462f1605df76f5cfa7f5efc8f65fe9f6dfeaf78febf84fece91fddea0fcedaffcfdbf",inferno:"0000040403130c0826170c3b240c4f330a5f420a68500d6c5d126e6b176e781c6d86216b932667a12b62ae305cbb3755c73e4cd24644dd513ae65c30ed6925f3771af8850ffb9506fca50afcb519fac62df6d645f2e661f3f484fcffa4",plasma:"0d088723069033059742039d5002a25d01a66a00a87801a88405a7900da49c179ea72198b12a90ba3488c33d80cb4779d35171da5a69e16462e76e5bed7953f2834cf68f44fa9a3dfca636fdb32ffec029fcce25f9dc24f5ea27f0f921",rainbow:"6e40aa883eb1a43db3bf3cafd83fa4ee4395fe4b83ff576eff6659ff7847ff8c38f3a130e2b72fcfcc36bee044aff05b8ff4576ff65b52f6673af27828ea8d1ddfa319d0b81cbecb23abd82f96e03d82e14c6edb5a5dd0664dbf6e40aa",sinebow:"ff4040fc582af47218e78d0bd5a703bfbf00a7d5038de70b72f41858fc2a40ff402afc5818f4720be78d03d5a700bfbf03a7d50b8de71872f42a58fc4040ff582afc7218f48d0be7a703d5bf00bfd503a7e70b8df41872fc2a58ff4040",browns:"eedbbdecca96e9b97ae4a865dc9856d18954c7784cc0673fb85536ad44339f3632",tealBlues:"bce4d89dd3d181c3cb65b3c245a2b9368fae347da0306a932c5985",teals:"bbdfdfa2d4d58ac9c975bcbb61b0af4da5a43799982b8b8c1e7f7f127273006667",warmGreys:"dcd4d0cec5c1c0b8b4b3aaa7a59c9998908c8b827f7e7673726866665c5a59504e",goldGreen:"f4d166d5ca60b6c35c98bb597cb25760a6564b9c533f8f4f33834a257740146c36",goldOrange:"f4d166f8be5cf8aa4cf5983bf3852aef701be2621fd65322c54923b142239e3a26",goldRed:"f4d166f6be59f9aa51fc964ef6834bee734ae56249db5247cf4244c43141b71d3e",lightGreyRed:"efe9e6e1dad7d5cbc8c8bdb9bbaea9cd967ddc7b43e15f19df4011dc000b",lightGreyTeal:"e4eaead6dcddc8ced2b7c2c7a6b4bc64b0bf22a6c32295c11f85be1876bc",lightMulti:"e0f1f2c4e9d0b0de9fd0e181f6e072f6c053f3993ef77440ef4a3c",lightOrange:"f2e7daf7d5baf9c499fab184fa9c73f68967ef7860e8645bde515bd43d5b",lightTealBlue:"e3e9e0c0dccf9aceca7abfc859afc0389fb9328dad2f7ca0276b95255988",darkBlue:"3232322d46681a5c930074af008cbf05a7ce25c0dd38daed50f3faffffff",darkGold:"3c3c3c584b37725e348c7631ae8b2bcfa424ecc31ef9de30fff184ffffff",darkGreen:"3a3a3a215748006f4d048942489e4276b340a6c63dd2d836ffeb2cffffaa",darkMulti:"3737371f5287197d8c29a86995ce3fffe800ffffff",darkRed:"3434347036339e3c38cc4037e75d1eec8620eeab29f0ce32ffeb2c"},t=>nm(am(t))),et(dm,$r).transform=function(t,n){if(this.value&&!t.modified())return n.StopPropagation;var e=n.fork(n.NO_SOURCE|n.NO_FIELDS),r=this.value,i=t.scale,a=lm(i,null==t.count?t.values?t.values.length:10:t.count,t.minstep),u=t.format||hm(i,a,t.formatSpecifier,t.formatType),o=t.values?cm(i,t.values,a):fm(i,a);return r&&(e.rem=r),r=o.map(function(t,n){return Dt({index:n/(o.length-1||1),value:t,label:u(t)})}),t.extra&&r.length&&r.push(Dt({index:-1,extra:{value:r[0].value},label:""})),e.source=r,e.add=r,this.value=r,e},et(pm,$r).transform=function(t,n){var e=n.dataflow,r=n.fork(n.NO_SOURCE|n.NO_FIELDS),a=t.item||gm,o=t.key||Et,s=this.value;return u(r.encode)&&(r.encode=null),s&&(t.modified("key")||n.modified(o))&&i("DataJoin does not support modified key function or fields."),s||(n=n.addAll(),this.value=s=tt().test(mm),s.lookup=function(t){return s.get(o(t))}),n.visit(n.ADD,function(t){var n=o(t),e=s.get(n);e?e.exit?(s.empty--,r.add.push(e)):r.mod.push(e):(s.set(n,e=a(t)),r.add.push(e)),e.datum=t,e.exit=!1}),n.visit(n.MOD,function(t){var n=o(t),e=s.get(n);e&&(e.datum=t,r.mod.push(e))}),n.visit(n.REM,function(t){var n=o(t),e=s.get(n);t!==e.datum||e.exit||(r.rem.push(e),e.exit=!0,++s.empty)}),n.changed(n.ADD_MOD)&&r.modifies("datum"),t.clean&&s.empty>e.cleanThreshold&&e.runAfter(s.clean),r},et(vm,$r).transform=function(t,n){var e=n.fork(n.ADD_REM),r=t.mod||!1,i=t.encoders,a=n.encode;if(u(a)){if(!e.changed()&&!a.every(function(t){return i[t]}))return n.StopPropagation;a=a[0],e.encode=null}var o="enter"===a,s=i.update||v,l=i.enter||v,c=i.exit||v,f=(a&&!o?i[a]:s)||v;if(n.changed(n.ADD)&&(n.visit(n.ADD,function(n){l(n,t),s(n,t)}),e.modifies(l.output),e.modifies(s.output),f!==v&&f!==s&&(n.visit(n.ADD,function(n){f(n,t)}),e.modifies(f.output))),n.changed(n.REM)&&c!==v&&(n.visit(n.REM,function(n){c(n,t)}),e.modifies(c.output)),o||f!==v){var h=n.MOD|(t.modified()?n.REFLOW:0);o?(n.visit(h,function(n){var i=l(n,t)||r;(f(n,t)||i)&&e.mod.push(n)}),e.mod.length&&e.modifies(l.output)):n.visit(h,function(n){(f(n,t)||r)&&e.mod.push(n)}),e.mod.length&&e.modifies(f.output)}return e.changed()?e:n.StopPropagation};var ym="symbol",xm="discrete";const _m={[Fh]:"quantiles",[Sh]:"thresholds",[Bh]:"domain"},bm={[Fh]:"quantiles",[Sh]:"domain"};function wm(t,n){return t.bins?function(t){const n=t.slice(0,-1);return n.max=k(t),n}(t.bins):_m[t.type]?function(t){const n=[-1/0].concat(t);return n.max=1/0,n}(t[_m[t.type]]()):fm(t,n)}function Am(t,n,e,r,i){const a=bm[t.type]&&i!==kh?function(t,n){var e,r=t[bm[t.type]](),i=r.length,a=i>1?r[1]-r[0]:r[0];for(e=1;e<i;++e)a=Math.min(a,r[e]-r[e-1]);return dg(0,a,30,n)}(t,r):hm(t,n,r,i);return e===ym&&function(t){return _m[t.type]||t.bins}(t)?function(t){return function(n,e,r){var i=r[e+1]||r.max||1/0,a=Mm(n,t),u=Mm(i,t);return a&&u?a+"–"+u:u?"< "+u:"≥ "+a}}(a):e===xm?function(t){return function(n,e){return e?t(n):null}}(a):function(t){return function(n){return t(n)}}(a)}function Mm(t,n){return isFinite(t)?n(t):null}function km(t){$r.call(this,[],t)}et(km,$r).transform=function(t,n){if(null!=this.value&&!t.modified())return n.StopPropagation;var e,r,i,a,u=n.fork(n.NO_SOURCE|n.NO_FIELDS),o=this.value,s=t.type||ym,l=t.scale,c=lm(l,null==t.count?5:t.count,t.minstep),f=t.format||Am(l,c,s,t.formatSpecifier,t.formatType),h=t.values||wm(l,c);return o&&(u.rem=o),s===ym?(Y(i=t.size)?(t.values||0!==l(h[0])||(h=h.slice(1)),a=h.reduce(function(n,e){return Math.max(n,i(e,t))},0)):i=V(a=i||8),o=h.map(function(n,e){return Dt({index:e,label:f(n,e,h),value:n,offset:a,size:i(n,t)})})):"gradient"===s?(e=l.domain(),r=rm(l,e[0],k(e)),h.length<3&&!t.values&&e[0]!==k(e)&&(h=[e[0],k(e)]),o=h.map(function(t,n){return Dt({index:n,label:f(t,n,h),value:t,perc:r(t)})})):(i=h.length-1,r=function(t){var n=t.domain(),e=n.length-1,r=+n[0],i=+k(n),a=i-r;if(t.type===Bh){var u=e?a/e:.1;a=(i+=u)-(r-=u)}return function(t){return(t-r)/a}}(l),o=h.map(function(t,n){return Dt({index:n,label:f(t,n,h),value:t,perc:n?r(t):0,perc2:n===i?1:r(h[n+1])})})),u.source=o,u.add=o,this.value=o,u};var Em=tt({line:Om,"line-radial":function(t,n,e,r){return Om(n*Math.cos(t),n*Math.sin(t),r*Math.cos(e),r*Math.sin(e))},arc:zm,"arc-radial":function(t,n,e,r){return zm(n*Math.cos(t),n*Math.sin(t),r*Math.cos(e),r*Math.sin(e))},curve:Nm,"curve-radial":function(t,n,e,r){return Nm(n*Math.cos(t),n*Math.sin(t),r*Math.cos(e),r*Math.sin(e))},"orthogonal-horizontal":function(t,n,e,r){return"M"+t+","+n+"V"+r+"H"+e},"orthogonal-vertical":function(t,n,e,r){return"M"+t+","+n+"H"+e+"V"+r},"orthogonal-radial":function(t,n,e,r){var i=Math.cos(t),a=Math.sin(t),u=Math.cos(e),o=Math.sin(e),s=Math.abs(e-t)>Math.PI?e<=t:e>t;return"M"+n*i+","+n*a+"A"+n+","+n+" 0 0,"+(s?1:0)+" "+n*u+","+n*o+"L"+r*u+","+r*o},"diagonal-horizontal":function(t,n,e,r){var i=(t+e)/2;return"M"+t+","+n+"C"+i+","+n+" "+i+","+r+" "+e+","+r},"diagonal-vertical":function(t,n,e,r){var i=(n+r)/2;return"M"+t+","+n+"C"+t+","+i+" "+e+","+i+" "+e+","+r},"diagonal-radial":function(t,n,e,r){var i=Math.cos(t),a=Math.sin(t),u=Math.cos(e),o=Math.sin(e),s=(n+r)/2;return"M"+n*i+","+n*a+"C"+s*i+","+s*a+" "+s*u+","+s*o+" "+r*u+","+r*o}});function Cm(t){return t.source.x}function Dm(t){return t.source.y}function Fm(t){return t.target.x}function Sm(t){return t.target.y}function Bm(t){$r.call(this,{},t)}function Om(t,n,e,r){return"M"+t+","+n+"L"+e+","+r}function zm(t,n,e,r){var i=e-t,a=r-n,u=Math.sqrt(i*i+a*a)/2;return"M"+t+","+n+"A"+u+","+u+" "+180*Math.atan2(a,i)/Math.PI+" 0 1 "+e+","+r}function Nm(t,n,e,r){var i=e-t,a=r-n,u=.2*(i+a),o=.2*(a-i);return"M"+t+","+n+"C"+(t+u)+","+(n+o)+" "+(e+o)+","+(r-u)+" "+e+","+r}function Tm(t){$r.call(this,null,t)}Bm.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},et(Bm,$r).transform=function(t,n){var e=t.sourceX||Cm,r=t.sourceY||Dm,a=t.targetX||Fm,u=t.targetY||Sm,o=t.as||"path",s=t.orient||"vertical",l=t.shape||"line",c=Em.get(l+"-"+s)||Em.get(l);return c||i("LinkPath unsupported type: "+t.shape+(t.orient?"-"+t.orient:"")),n.visit(n.SOURCE,function(t){t[o]=c(e(t),r(t),a(t),u(t))}),n.reflow(t.modified()).modifies(o)},Tm.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},et(Tm,$r).transform=function(t,n){var e,r,i,a=t.as||["startAngle","endAngle"],u=a[0],o=a[1],s=t.field||g,l=t.startAngle||0,c=null!=t.endAngle?t.endAngle:2*Math.PI,f=n.source,h=f.map(s),d=h.length,p=l,m=(c-l)/function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e}(h),v=li(d);for(t.sort&&v.sort(function(t,n){return h[t]-h[n]}),e=0;e<d;++e)i=h[v[e]],(r=f[v[e]])[u]=p,r[o]=p+=i*m;return this.value=h,n.reflow(t.modified()).modifies(a)};var Rm=5;function Pm(t){return qh(t)&&t!==Ch}var Lm=yt(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function qm(t){$r.call(this,null,t),this.modified(!0)}function Um(t,n,e){Lh(t)&&(Math.abs(n.reduce(function(t,n){return t+(n<0?-1:n>0?1:0)},0))!==n.length&&e.warn("Log scale domain includes zero: "+l(n)));return n}function jm(t,n,e){return Y(t)&&(n||e)?tm(t,$m(n||[0,1],e)):t}function $m(t,n){return n?t.slice().reverse():t}function Im(t){$r.call(this,null,t)}et(qm,$r).transform=function(t,n){var e=n.dataflow,r=this.value,a=function(t){var n,e=t.type,r="";if(e===Ch)return Ch+"-"+_h;(function(t){const n=t.type;return qh(n)&&n!==kh&&n!==Eh&&(t.scheme||t.range&&t.range.length&&t.range.every(s))})(t)&&(n=t.rawDomain?t.rawDomain.length:t.domain?t.domain.length+ +(null!=t.domainMid):0,r=2===n?Ch+"-":3===n?Dh+"-":"");return(r+e||_h).toLowerCase()}(t);for(a in r&&a===r.type||(this.value=r=Zg(a)()),t)if(!Lm[a]){if("padding"===a&&Pm(r.type))continue;Y(r[a])?r[a](t[a]):e.warn("Unsupported scale property: "+a)}return function(t,n,e){var r=n.round||!1,a=n.range;if(null!=n.rangeStep)a=function(t,n,e){t!==Nh&&t!==zh&&i("Only band and point scales support rangeStep.");var r=(null!=n.paddingOuter?n.paddingOuter:n.padding)||0,a=t===zh?1:(null!=n.paddingInner?n.paddingInner:n.padding)||0;return[0,n.rangeStep*yh(e,a,r)]}(t.type,n,e);else if(n.scheme){if(a=function(t,n,e){var r,a,o=n.schemeExtent;u(n.scheme)?a=nm(n.scheme,n.interpolate,n.interpolateGamma):(r=n.scheme.toLowerCase(),(a=sm(r))||i("Unrecognized scheme name: "+n.scheme));return e=t===Bh?e+1:t===Th?e-1:t===Fh||t===Sh?+n.schemeCount||Rm:e,Ph(t)?jm(a,o,n.reverse):Y(a)?em(jm(a,o),e):t===Oh?a:a.slice(0,e)}(t.type,n,e),Y(a))return t.interpolator(a)}else if(a&&Ph(t.type))return t.interpolator(nm($m(a,n.reverse),n.interpolate,n.interpolateGamma));a&&n.interpolate&&t.interpolate?t.interpolate(im(n.interpolate,n.interpolateGamma)):Y(t.round)?t.round(r):Y(t.rangeRound)&&t.interpolate(r?gp:pp);a&&t.range($m(a,n.reverse))}(r,t,function(t,n,e){let r=n.bins;if(r&&!u(r)){const n=(null==r.start||null==r.stop)&&t.domain(),e=null==r.start?n[0]:r.start,a=null==r.stop?k(n):r.stop,u=r.step;u||i("Scale bins parameter missing step property."),r=li(e,a+u,u)}r?t.bins=r:t.bins&&delete t.bins;t.type===Th&&(r?n.domain||n.domainRaw||(t.domain(r),e=r.length):t.bins=t.domain());return e}(r,t,function(t,n,e){var r=function(t,n,e){return n?(t.domain(Um(t.type,n,e)),n.length):-1}(t,n.domainRaw,e);if(r>-1)return r;var i,a,u=n.domain,o=t.type,s=n.zero||void 0===n.zero&&function(t){const n=t.type;return!t.bins&&(n===_h||n===wh||n===Ah)}(t);if(!u)return 0;Pm(o)&&n.padding&&u[0]!==k(u)&&(u=function(t,n,e,r,i,a){var u=Math.abs(k(e)-e[0]),o=u/(u-2*r),s=t===bh?q(n,null,o):t===Ah?U(n,null,o,.5):t===wh?U(n,null,o,i||1):t===Mh?j(n,null,o,a||1):L(n,null,o);return(n=n.slice())[0]=s[0],n[n.length-1]=s[1],n}(o,u,n.range,n.padding,n.exponent,n.constant));(s||null!=n.domainMin||null!=n.domainMax||null!=n.domainMid)&&(i=(u=u.slice()).length-1||1,s&&(u[0]>0&&(u[0]=0),u[i]<0&&(u[i]=0)),null!=n.domainMin&&(u[0]=n.domainMin),null!=n.domainMax&&(u[i]=n.domainMax),null!=n.domainMid&&(((a=n.domainMid)<u[0]||a>u[i])&&e.warn("Scale domainMid exceeds domain min or max.",a),u.splice(i,0,a)));t.domain(Um(o,u,e)),o===Oh&&t.unknown(n.domainImplicit?Gh:void 0);n.nice&&t.nice&&t.nice(!0!==n.nice&&lm(t,n.nice)||null);return u.length}(r,t,e))),n.fork(n.NO_SOURCE|n.NO_FIELDS)},et(Im,$r).transform=function(t,n){var e=t.modified("sort")||n.changed(n.ADD)||n.modified(t.sort.fields)||n.modified("datum");return e&&n.source.sort(t.sort),this.modified(e),n};var Wm=["y0","y1"];function Hm(t){$r.call(this,null,t)}function Ym(t,n,e,r,i){for(var a,u=(n-t.sum)/2,o=t.length,s=0;s<o;++s)(a=t[s])[r]=u,a[i]=u+=Math.abs(e(a))}function Gm(t,n,e,r,i){for(var a,u=1/t.sum,o=0,s=t.length,l=0,c=0;l<s;++l)(a=t[l])[r]=o,a[i]=o=u*(c+=Math.abs(e(a)))}function Vm(t,n,e,r,i){for(var a,u,o=0,s=0,l=t.length,c=0;c<l;++c)(a=+e(u=t[c]))<0?(u[r]=s,u[i]=s+=a):(u[r]=o,u[i]=o+=a)}Hm.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:"zero",values:["zero","center","normalize"]},{name:"as",type:"string",array:!0,length:2,default:Wm}]},et(Hm,$r).transform=function(t,n){var e,r,i,a,u=t.as||Wm,o=u[0],s=u[1],l=t.field||g,c="center"===t.offset?Ym:"normalize"===t.offset?Gm:Vm;for(e=function(t,n,e,r){var i,a,u,o,s,l,c,f,h,d=[],p=function(t){return t(s)};if(null==n)d.push(t.slice());else for(i={},a=0,u=t.length;a<u;++a)s=t[a],l=n.map(p),(c=i[l])||(i[l]=c=[],d.push(c)),c.push(s);for(l=0,h=0,o=d.length;l<o;++l){for(c=d[l],a=0,f=0,u=c.length;a<u;++a)f+=Math.abs(r(c[a]));c.sum=f,f>h&&(h=f),e&&c.sort(e)}return d.max=h,d}(n.source,t.groupby,t.sort,l),r=0,i=e.length,a=e.max;r<i;++r)c(e[r],a,l,o,s);return n.reflow(t.modified()).modifies(u)};var Xm=Object.freeze({axisticks:dm,datajoin:pm,encode:vm,legendentries:km,linkpath:Bm,pie:Tm,scale:qm,sortitems:Im,stack:Hm,validTicks:cm});function Zm(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}!function(t){var n;1===t.length&&(n=t,t=function(t,e){return Zm(n(t),e)})}(Zm);function Jm(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),a=new Array(i);++r<i;)a[r]=t+r*e;return a}var Qm=Math.sqrt(50),Km=Math.sqrt(10),tv=Math.sqrt(2);function nv(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=Qm?i*=10:a>=Km?i*=5:a>=tv&&(i*=2),n<t?-i:i}function ev(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}var rv=Array.prototype.slice;function iv(t,n){return t-n}function av(t){return function(){return t}}function uv(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=ov(t,n[r]))return e;return 0}function ov(t,n){for(var e=n[0],r=n[1],i=-1,a=0,u=t.length,o=u-1;a<u;o=a++){var s=t[a],l=s[0],c=s[1],f=t[o],h=f[0],d=f[1];if(sv(s,f,n))return 0;c>r!=d>r&&e<(h-l)*(r-c)/(d-c)+l&&(i=-i)}return i}function sv(t,n,e){var r,i,a,u;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],a=e[r],u=n[r],i<=a&&a<=u||u<=a&&a<=i)}function lv(){}var cv=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function fv(){var t=1,n=1,e=ev,r=o;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(iv);else{var r=function(t,n){var e,r,i,a=t.length,u=-1;if(null==n){for(;++u<a;)if(null!=(e=t[u])&&e>=e)for(r=i=e;++u<a;)null!=(e=t[u])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++u<a;)if(null!=(e=n(t[u],u,t))&&e>=e)for(r=i=e;++u<a;)null!=(e=n(t[u],u,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]}(t),i=r[0],u=r[1];n=nv(i,u,n),n=Jm(Math.floor(i/n)*n,Math.floor(u/n)*n,n)}return n.map(function(n){return a(t,n)})}function a(e,i){var a=[],o=[];return function(e,r,i){var a,o,s,l,c,f,h=new Array,d=new Array;a=o=-1,l=e[0]>=r,cv[l<<1].forEach(p);for(;++a<t-1;)s=l,l=e[a+1]>=r,cv[s|l<<1].forEach(p);cv[l<<0].forEach(p);for(;++o<n-1;){for(a=-1,l=e[o*t+t]>=r,c=e[o*t]>=r,cv[l<<1|c<<2].forEach(p);++a<t-1;)s=l,l=e[o*t+t+a+1]>=r,f=c,c=e[o*t+a+1]>=r,cv[s|l<<1|c<<2|f<<3].forEach(p);cv[l|c<<3].forEach(p)}a=-1,c=e[o*t]>=r,cv[c<<2].forEach(p);for(;++a<t-1;)f=c,c=e[o*t+a+1]>=r,cv[c<<2|f<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+a,t[0][1]+o],s=[t[1][0]+a,t[1][1]+o],l=u(r),c=u(s);(n=d[l])?(e=h[c])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(s),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(s),d[n.end=c]=n):(n=h[c])?(e=d[l])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(s),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=l]=n):h[l]=d[c]={start:l,end:c,ring:[r,s]}}cv[c<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?a.push([t]):o.push(t)}),o.forEach(function(t){for(var n,e=0,r=a.length;e<r;++e)if(-1!==uv((n=a[e])[0],t))return void n.push(t)}),{type:"MultiPolygon",value:i,coordinates:a}}function u(n){return 2*n[0]+n[1]*(t+1)*4}function o(e,r,i){e.forEach(function(e){var a,u=e[0],o=e[1],s=0|u,l=0|o,c=r[l*t+s];u>0&&u<t&&s===u&&(a=r[l*t+s-1],e[0]=u+(i-a)/(c-a)-.5),o>0&&o<n&&l===o&&(a=r[(l-1)*t+s],e[1]=o+(i-a)/(c-a)-.5)})}return i.contour=a,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.ceil(e[0]),a=Math.ceil(e[1]);if(!(r>0&&a>0))throw new Error("invalid size");return t=r,n=a,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?av(rv.call(t)):av(t),i):e},i.smooth=function(t){return arguments.length?(r=t?o:lv,i):r===o},i}function hv(t,n,e){for(var r=t.width,i=t.height,a=1+(e<<1),u=0;u<i;++u)for(var o=0,s=0;o<r+e;++o)o<r&&(s+=t.data[o+u*r]),o>=e&&(o>=a&&(s-=t.data[o-a+u*r]),n.data[o-e+u*r]=s/Math.min(o+1,r-1+a-o,a))}function dv(t,n,e){for(var r=t.width,i=t.height,a=1+(e<<1),u=0;u<r;++u)for(var o=0,s=0;o<i+e;++o)o<i&&(s+=t.data[u+o*r]),o>=e&&(o>=a&&(s-=t.data[u+(o-a)*r]),n.data[u+(o-e)*r]=s/Math.min(o+1,i-1+a-o,a))}function pv(t){return t[0]}function gv(t){return t[1]}function mv(){return 1}var vv=["size","smooth"],yv=["x","y","weight","size","cellSize","bandwidth"];function xv(t){$r.call(this,null,t)}xv.Definition={type:"Contour",metadata:{generates:!0},params:[{name:"size",type:"number",array:!0,length:2,required:!0},{name:"values",type:"number",array:!0},{name:"x",type:"field"},{name:"y",type:"field"},{name:"weight",type:"field"},{name:"cellSize",type:"number"},{name:"bandwidth",type:"number"},{name:"count",type:"number"},{name:"smooth",type:"boolean"},{name:"nice",type:"boolean",default:!1},{name:"thresholds",type:"number",array:!0}]},et(xv,$r).transform=function(t,n){if(this.value&&!n.changed()&&!t.modified())return n.StopPropagation;var e,r,i,a,u=n.fork(n.NO_SOURCE|n.NO_FIELDS),o=t.count||10;return t.values?(e=fv(),r=vv,i=t.values):(e=function(){var t=pv,n=gv,e=mv,r=960,i=500,a=20,u=2,o=3*a,s=r+2*o>>u,l=i+2*o>>u,c=av(20);function f(r){var i=new Float32Array(s*l),f=new Float32Array(s*l);r.forEach(function(r,a,c){var f=+t(r,a,c)+o>>u,h=+n(r,a,c)+o>>u,d=+e(r,a,c);f>=0&&f<s&&h>=0&&h<l&&(i[f+h*s]+=d)}),hv({width:s,height:l,data:i},{width:s,height:l,data:f},a>>u),dv({width:s,height:l,data:f},{width:s,height:l,data:i},a>>u),hv({width:s,height:l,data:i},{width:s,height:l,data:f},a>>u),dv({width:s,height:l,data:f},{width:s,height:l,data:i},a>>u),hv({width:s,height:l,data:i},{width:s,height:l,data:f},a>>u),dv({width:s,height:l,data:f},{width:s,height:l,data:i},a>>u);var d=c(i);if(!Array.isArray(d)){var p=function(t,n){var e,r,i=t.length,a=-1;if(null==n){for(;++a<i;)if(null!=(e=t[a])&&e>=e)for(r=e;++a<i;)null!=(e=t[a])&&e>r&&(r=e)}else for(;++a<i;)if(null!=(e=n(t[a],a,t))&&e>=e)for(r=e;++a<i;)null!=(e=n(t[a],a,t))&&e>r&&(r=e);return r}(i);d=nv(0,p,d),(d=Jm(0,Math.floor(p/d)*d,d)).shift()}return fv().thresholds(d).size([s,l])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*u),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,u)-o,t[1]=t[1]*Math.pow(2,u)-o}function m(){return s=r+2*(o=3*a)>>u,l=i+2*o>>u,f}return f.x=function(n){return arguments.length?(t="function"==typeof n?n:av(+n),f):t},f.y=function(t){return arguments.length?(n="function"==typeof t?t:av(+t),f):n},f.weight=function(t){return arguments.length?(e="function"==typeof t?t:av(+t),f):e},f.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,m()},f.cellSize=function(t){if(!arguments.length)return 1<<u;if(!((t=+t)>=1))throw new Error("invalid cell size");return u=Math.floor(Math.log(t)/Math.LN2),m()},f.thresholds=function(t){return arguments.length?(c="function"==typeof t?t:Array.isArray(t)?av(rv.call(t)):av(t),f):c},f.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),m()},f}(),r=yv,i=n.materialize(n.SOURCE).source),e.thresholds(t.thresholds||(t.nice?o:(a=o,function(t){for(var n=si(t),e=n[0],r=n[1]-e,i=[],u=1;u<=a;++u)i.push(e+r*u/(a+1));return i}))),r.forEach(function(n){null!=t[n]&&e[n](t[n])}),this.value&&(u.rem=this.value),i=i&&i.length?e(i).map(Dt):[],this.value=u.source=u.add=i,u};var _v="Feature",bv="FeatureCollection";function wv(t){$r.call(this,null,t)}function Av(){return new Mv}function Mv(){this.reset()}wv.Definition={type:"GeoJSON",metadata:{},params:[{name:"fields",type:"field",array:!0,length:2},{name:"geojson",type:"field"}]},et(wv,$r).transform=function(t,n){var e,i=this._features,a=this._points,u=t.fields,o=u&&u[0],s=u&&u[1],l=t.geojson,c=n.ADD;e=t.modified()||n.changed(n.REM)||n.modified(r(l))||o&&n.modified(r(o))||s&&n.modified(r(s)),this.value&&!e||(c=n.SOURCE,this._features=i=[],this._points=a=[]),l&&n.visit(c,function(t){i.push(l(t))}),o&&s&&(n.visit(c,function(t){var n=o(t),e=s(t);null!=n&&null!=e&&(n=+n)===n&&(e=+e)===e&&a.push([n,e])}),i=i.concat({type:_v,geometry:{type:"MultiPoint",coordinates:a}})),this.value={type:bv,features:i}},Mv.prototype={constructor:Mv,reset:function(){this.s=this.t=0},add:function(t){Ev(kv,t,this.t),Ev(this,kv.s,this.s),this.s?this.t+=kv.t:this.s=kv.t},valueOf:function(){return this.s}};var kv=new Mv;function Ev(t,n,e){var r=t.s=n+e,i=r-n,a=r-i;t.t=n-a+(e-i)}var Cv=1e-6,Dv=1e-12,Fv=Math.PI,Sv=Fv/2,Bv=Fv/4,Ov=2*Fv,zv=180/Fv,Nv=Fv/180,Tv=Math.abs,Rv=Math.atan,Pv=Math.atan2,Lv=Math.cos,qv=Math.ceil,Uv=Math.exp,jv=Math.log,$v=Math.pow,Iv=Math.sin,Wv=Math.sign||function(t){return t>0?1:t<0?-1:0},Hv=Math.sqrt,Yv=Math.tan;function Gv(t){return t>1?0:t<-1?Fv:Math.acos(t)}function Vv(t){return t>1?Sv:t<-1?-Sv:Math.asin(t)}function Xv(){}function Zv(t,n){t&&Qv.hasOwnProperty(t.type)&&Qv[t.type](t,n)}var Jv={Feature:function(t,n){Zv(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Zv(e[r].geometry,n)}},Qv={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Kv(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Kv(e[r],n,0)},Polygon:function(t,n){ty(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)ty(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Zv(e[r],n)}};function Kv(t,n,e){var r,i=-1,a=t.length-e;for(n.lineStart();++i<a;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function ty(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Kv(t[e],n,1);n.polygonEnd()}function ny(t,n){t&&Jv.hasOwnProperty(t.type)?Jv[t.type](t,n):Zv(t,n)}var ey,ry,iy,ay,uy,oy=Av(),sy=Av(),ly={point:Xv,lineStart:Xv,lineEnd:Xv,polygonStart:function(){oy.reset(),ly.lineStart=cy,ly.lineEnd=fy},polygonEnd:function(){var t=+oy;sy.add(t<0?Ov+t:t),this.lineStart=this.lineEnd=this.point=Xv},sphere:function(){sy.add(Ov)}};function cy(){ly.point=hy}function fy(){dy(ey,ry)}function hy(t,n){ly.point=dy,ey=t,ry=n,iy=t*=Nv,ay=Lv(n=(n*=Nv)/2+Bv),uy=Iv(n)}function dy(t,n){var e=(t*=Nv)-iy,r=e>=0?1:-1,i=r*e,a=Lv(n=(n*=Nv)/2+Bv),u=Iv(n),o=uy*u,s=ay*a+o*Lv(i),l=o*r*Iv(i);oy.add(Pv(l,s)),iy=t,ay=a,uy=u}function py(t){return[Pv(t[1],t[0]),Vv(t[2])]}function gy(t){var n=t[0],e=t[1],r=Lv(e);return[r*Lv(n),r*Iv(n),Iv(e)]}function my(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function vy(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function yy(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function xy(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function _y(t){var n=Hv(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var by,wy,Ay,My,ky,Ey,Cy,Dy,Fy,Sy,By,Oy,zy,Ny,Ty,Ry,Py,Ly,qy,Uy,jy,$y,Iy,Wy,Hy,Yy,Gy=Av(),Vy={point:Xy,lineStart:Jy,lineEnd:Qy,polygonStart:function(){Vy.point=Ky,Vy.lineStart=tx,Vy.lineEnd=nx,Gy.reset(),ly.polygonStart()},polygonEnd:function(){ly.polygonEnd(),Vy.point=Xy,Vy.lineStart=Jy,Vy.lineEnd=Qy,oy<0?(by=-(Ay=180),wy=-(My=90)):Gy>Cv?My=90:Gy<-Cv&&(wy=-90),Sy[0]=by,Sy[1]=Ay}};function Xy(t,n){Fy.push(Sy=[by=t,Ay=t]),n<wy&&(wy=n),n>My&&(My=n)}function Zy(t,n){var e=gy([t*Nv,n*Nv]);if(Dy){var r=vy(Dy,e),i=vy([r[1],-r[0],0],r);_y(i),i=py(i);var a,u=t-ky,o=u>0?1:-1,s=i[0]*zv*o,l=Tv(u)>180;l^(o*ky<s&&s<o*t)?(a=i[1]*zv)>My&&(My=a):l^(o*ky<(s=(s+360)%360-180)&&s<o*t)?(a=-i[1]*zv)<wy&&(wy=a):(n<wy&&(wy=n),n>My&&(My=n)),l?t<ky?ex(by,t)>ex(by,Ay)&&(Ay=t):ex(t,Ay)>ex(by,Ay)&&(by=t):Ay>=by?(t<by&&(by=t),t>Ay&&(Ay=t)):t>ky?ex(by,t)>ex(by,Ay)&&(Ay=t):ex(t,Ay)>ex(by,Ay)&&(by=t)}else Fy.push(Sy=[by=t,Ay=t]);n<wy&&(wy=n),n>My&&(My=n),Dy=e,ky=t}function Jy(){Vy.point=Zy}function Qy(){Sy[0]=by,Sy[1]=Ay,Vy.point=Xy,Dy=null}function Ky(t,n){if(Dy){var e=t-ky;Gy.add(Tv(e)>180?e+(e>0?360:-360):e)}else Ey=t,Cy=n;ly.point(t,n),Zy(t,n)}function tx(){ly.lineStart()}function nx(){Ky(Ey,Cy),ly.lineEnd(),Tv(Gy)>Cv&&(by=-(Ay=180)),Sy[0]=by,Sy[1]=Ay,Dy=null}function ex(t,n){return(n-=t)<0?n+360:n}function rx(t,n){return t[0]-n[0]}function ix(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var ax={sphere:Xv,point:ux,lineStart:sx,lineEnd:fx,polygonStart:function(){ax.lineStart=hx,ax.lineEnd=dx},polygonEnd:function(){ax.lineStart=sx,ax.lineEnd=fx}};function ux(t,n){t*=Nv;var e=Lv(n*=Nv);ox(e*Lv(t),e*Iv(t),Iv(n))}function ox(t,n,e){zy+=(t-zy)/++By,Ny+=(n-Ny)/By,Ty+=(e-Ty)/By}function sx(){ax.point=lx}function lx(t,n){t*=Nv;var e=Lv(n*=Nv);Wy=e*Lv(t),Hy=e*Iv(t),Yy=Iv(n),ax.point=cx,ox(Wy,Hy,Yy)}function cx(t,n){t*=Nv;var e=Lv(n*=Nv),r=e*Lv(t),i=e*Iv(t),a=Iv(n),u=Pv(Hv((u=Hy*a-Yy*i)*u+(u=Yy*r-Wy*a)*u+(u=Wy*i-Hy*r)*u),Wy*r+Hy*i+Yy*a);Oy+=u,Ry+=u*(Wy+(Wy=r)),Py+=u*(Hy+(Hy=i)),Ly+=u*(Yy+(Yy=a)),ox(Wy,Hy,Yy)}function fx(){ax.point=ux}function hx(){ax.point=px}function dx(){gx($y,Iy),ax.point=ux}function px(t,n){$y=t,Iy=n,t*=Nv,n*=Nv,ax.point=gx;var e=Lv(n);Wy=e*Lv(t),Hy=e*Iv(t),Yy=Iv(n),ox(Wy,Hy,Yy)}function gx(t,n){t*=Nv;var e=Lv(n*=Nv),r=e*Lv(t),i=e*Iv(t),a=Iv(n),u=Hy*a-Yy*i,o=Yy*r-Wy*a,s=Wy*i-Hy*r,l=Hv(u*u+o*o+s*s),c=Vv(l),f=l&&-c/l;qy+=f*u,Uy+=f*o,jy+=f*s,Oy+=c,Ry+=c*(Wy+(Wy=r)),Py+=c*(Hy+(Hy=i)),Ly+=c*(Yy+(Yy=a)),ox(Wy,Hy,Yy)}function mx(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function vx(t,n){return[Tv(t)>Fv?t+Math.round(-t/Ov)*Ov:t,n]}function yx(t,n,e){return(t%=Ov)?n||e?mx(_x(t),bx(n,e)):_x(t):n||e?bx(n,e):vx}function xx(t){return function(n,e){return[(n+=t)>Fv?n-Ov:n<-Fv?n+Ov:n,e]}}function _x(t){var n=xx(t);return n.invert=xx(-t),n}function bx(t,n){var e=Lv(t),r=Iv(t),i=Lv(n),a=Iv(n);function u(t,n){var u=Lv(n),o=Lv(t)*u,s=Iv(t)*u,l=Iv(n),c=l*e+o*r;return[Pv(s*i-c*a,o*e-l*r),Vv(c*i+s*a)]}return u.invert=function(t,n){var u=Lv(n),o=Lv(t)*u,s=Iv(t)*u,l=Iv(n),c=l*i-s*a;return[Pv(s*i+l*a,o*e+c*r),Vv(c*e-o*r)]},u}function wx(t,n){(n=gy(n))[0]-=t,_y(n);var e=Gv(-n[1]);return((-n[2]<0?-e:e)+Ov-Cv)%Ov}function Ax(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:Xv,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function Mx(t,n){return Tv(t[0]-n[0])<Cv&&Tv(t[1]-n[1])<Cv}function kx(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Ex(t,n,e,r,i){var a,u,o=[],s=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],u=t[n];if(Mx(r,u)){for(i.lineStart(),a=0;a<n;++a)i.point((r=t[a])[0],r[1]);i.lineEnd()}else o.push(e=new kx(r,t,null,!0)),s.push(e.o=new kx(r,null,e,!1)),o.push(e=new kx(u,t,null,!1)),s.push(e.o=new kx(u,null,e,!0))}}),o.length){for(s.sort(n),Cx(o),Cx(s),a=0,u=s.length;a<u;++a)s[a].e=e=!e;for(var l,c,f=o[0];;){for(var h=f,d=!0;h.v;)if((h=h.n)===f)return;l=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(a=0,u=l.length;a<u;++a)i.point((c=l[a])[0],c[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(l=h.p.z,a=l.length-1;a>=0;--a)i.point((c=l[a])[0],c[1]);else r(h.x,h.p.x,-1,i);h=h.p}l=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function Cx(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}vx.invert=vx;var Dx=Av();function Fx(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}!function(t){var n;1===t.length&&(n=t,t=function(t,e){return Fx(n(t),e)})}(Fx);function Sx(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),a=new Array(i);++r<i;)a[r]=t+r*e;return a}function Bx(t){for(var n,e,r,i=t.length,a=-1,u=0;++a<i;)u+=t[a].length;for(e=new Array(u);--i>=0;)for(n=(r=t[i]).length;--n>=0;)e[--u]=r[n];return e}function Ox(t,n,e,r){return function(i){var a,u,o,s=n(i),l=Ax(),c=n(l),f=!1,h={point:d,lineStart:g,lineEnd:m,polygonStart:function(){h.point=v,h.lineStart=y,h.lineEnd=x,u=[],a=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=m,u=Bx(u);var t=function(t,n){var e=n[0],r=n[1],i=Iv(r),a=[Iv(e),-Lv(e),0],u=0,o=0;Dx.reset(),1===i?r=Sv+Cv:-1===i&&(r=-Sv-Cv);for(var s=0,l=t.length;s<l;++s)if(f=(c=t[s]).length)for(var c,f,h=c[f-1],d=h[0],p=h[1]/2+Bv,g=Iv(p),m=Lv(p),v=0;v<f;++v,d=x,g=b,m=w,h=y){var y=c[v],x=y[0],_=y[1]/2+Bv,b=Iv(_),w=Lv(_),A=x-d,M=A>=0?1:-1,k=M*A,E=k>Fv,C=g*b;if(Dx.add(Pv(C*M*Iv(k),m*w+C*Lv(k))),u+=E?A+M*Ov:A,E^d>=e^x>=e){var D=vy(gy(h),gy(y));_y(D);var F=vy(a,D);_y(F);var S=(E^A>=0?-1:1)*Vv(F[2]);(r>S||r===S&&(D[0]||D[1]))&&(o+=E^A>=0?1:-1)}}return(u<-Cv||u<Cv&&Dx<-Cv)^1&o}(a,r);u.length?(f||(i.polygonStart(),f=!0),Ex(u,Nx,t,e,i)):t&&(f||(i.polygonStart(),f=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),f&&(i.polygonEnd(),f=!1),u=a=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){s.point(t,n)}function g(){h.point=p,s.lineStart()}function m(){h.point=d,s.lineEnd()}function v(t,n){o.push([t,n]),c.point(t,n)}function y(){c.lineStart(),o=[]}function x(){v(o[0][0],o[0][1]),c.lineEnd();var t,n,e,r,s=c.clean(),h=l.result(),d=h.length;if(o.pop(),a.push(o),o=null,d)if(1&s){if((n=(e=h[0]).length-1)>0){for(f||(i.polygonStart(),f=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&s&&h.push(h.pop().concat(h.shift())),u.push(h.filter(zx))}return h}}function zx(t){return t.length>1}function Nx(t,n){return((t=t.x)[0]<0?t[1]-Sv-Cv:Sv-t[1])-((n=n.x)[0]<0?n[1]-Sv-Cv:Sv-n[1])}var Tx=Ox(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(a,u){var o=a>0?Fv:-Fv,s=Tv(a-e);Tv(s-Fv)<Cv?(t.point(e,r=(r+u)/2>0?Sv:-Sv),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(o,r),t.point(a,r),n=0):i!==o&&s>=Fv&&(Tv(e-i)<Cv&&(e-=i*Cv),Tv(a-o)<Cv&&(a-=o*Cv),r=function(t,n,e,r){var i,a,u=Iv(t-e);return Tv(u)>Cv?Rv((Iv(n)*(a=Lv(r))*Iv(e)-Iv(r)*(i=Lv(n))*Iv(t))/(i*a*u)):(n+r)/2}(e,r,a,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(o,r),n=0),t.point(e=a,r=u),i=o},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*Sv,r.point(-Fv,i),r.point(0,i),r.point(Fv,i),r.point(Fv,0),r.point(Fv,-i),r.point(0,-i),r.point(-Fv,-i),r.point(-Fv,0),r.point(-Fv,i);else if(Tv(t[0]-n[0])>Cv){var a=t[0]<n[0]?Fv:-Fv;i=e*a/2,r.point(-a,i),r.point(0,i),r.point(a,i)}else r.point(n[0],n[1])},[-Fv,-Sv]);function Rx(t){var n=Lv(t),e=6*Nv,r=n>0,i=Tv(n)>Cv;function a(t,e){return Lv(t)*Lv(e)>n}function u(t,e,r){var i=[1,0,0],a=vy(gy(t),gy(e)),u=my(a,a),o=a[0],s=u-o*o;if(!s)return!r&&t;var l=n*u/s,c=-n*o/s,f=vy(i,a),h=xy(i,l);yy(h,xy(a,c));var d=f,p=my(h,d),g=my(d,d),m=p*p-g*(my(h,h)-1);if(!(m<0)){var v=Hv(m),y=xy(d,(-p-v)/g);if(yy(y,h),y=py(y),!r)return y;var x,_=t[0],b=e[0],w=t[1],A=e[1];b<_&&(x=_,_=b,b=x);var M=b-_,k=Tv(M-Fv)<Cv;if(!k&&A<w&&(x=w,w=A,A=x),k||M<Cv?k?w+A>0^y[1]<(Tv(y[0]-_)<Cv?w:A):w<=y[1]&&y[1]<=A:M>Fv^(_<=y[0]&&y[0]<=b)){var E=xy(d,(-p+v)/g);return yy(E,h),[y,py(E)]}}}function o(n,e){var i=r?t:Fv-t,a=0;return n<-i?a|=1:n>i&&(a|=2),e<-i?a|=4:e>i&&(a|=8),a}return Ox(a,function(t){var n,e,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var d,p=[f,h],g=a(f,h),m=r?g?0:o(f,h):g?o(f+(f<0?Fv:-Fv),h):0;if(!n&&(l=s=g)&&t.lineStart(),g!==s&&(!(d=u(n,p))||Mx(n,d)||Mx(p,d))&&(p[0]+=Cv,p[1]+=Cv,g=a(p[0],p[1])),g!==s)c=0,g?(t.lineStart(),d=u(p,n),t.point(d[0],d[1])):(d=u(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;m&e||!(v=u(p,n,!0))||(c=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!g||n&&Mx(n,p)||t.point(p[0],p[1]),n=p,s=g,e=m},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}},function(n,r,i,a){!function(t,n,e,r,i,a){if(e){var u=Lv(n),o=Iv(n),s=r*e;null==i?(i=n+r*Ov,a=n-s/2):(i=wx(u,i),a=wx(u,a),(r>0?i<a:i>a)&&(i+=r*Ov));for(var l,c=i;r>0?c>a:c<a;c-=s)l=py([u,-o*Lv(c),-o*Iv(c)]),t.point(l[0],l[1])}}(a,t,e,i,n,r)},r?[0,-t]:[-Fv,t-Fv])}var Px=1e9,Lx=-Px;function qx(t,n,e,r){function i(i,a){return t<=i&&i<=e&&n<=a&&a<=r}function a(i,a,o,l){var c=0,f=0;if(null==i||(c=u(i,o))!==(f=u(a,o))||s(i,a)<0^o>0)do{l.point(0===c||3===c?t:e,c>1?r:n)}while((c=(c+o+4)%4)!==f);else l.point(a[0],a[1])}function u(r,i){return Tv(r[0]-t)<Cv?i>0?0:3:Tv(r[0]-e)<Cv?i>0?2:1:Tv(r[1]-n)<Cv?i>0?1:0:i>0?3:2}function o(t,n){return s(t.x,n.x)}function s(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){var s,l,c,f,h,d,p,g,m,v,y,x=u,_=Ax(),b={point:w,lineStart:function(){b.point=A,l&&l.push(c=[]);v=!0,m=!1,p=g=NaN},lineEnd:function(){s&&(A(f,h),d&&m&&_.rejoin(),s.push(_.result()));b.point=w,m&&x.lineEnd()},polygonStart:function(){x=_,s=[],l=[],y=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=l.length;e<i;++e)for(var a,u,o=l[e],s=1,c=o.length,f=o[0],h=f[0],d=f[1];s<c;++s)a=h,u=d,f=o[s],h=f[0],d=f[1],u<=r?d>r&&(h-a)*(r-u)>(d-u)*(t-a)&&++n:d<=r&&(h-a)*(r-u)<(d-u)*(t-a)&&--n;return n}(),e=y&&n,i=(s=Bx(s)).length;(e||i)&&(u.polygonStart(),e&&(u.lineStart(),a(null,null,1,u),u.lineEnd()),i&&Ex(s,o,n,a,u),u.polygonEnd());x=u,s=l=c=null}};function w(t,n){i(t,n)&&x.point(t,n)}function A(a,u){var o=i(a,u);if(l&&c.push([a,u]),v)f=a,h=u,d=o,v=!1,o&&(x.lineStart(),x.point(a,u));else if(o&&m)x.point(a,u);else{var s=[p=Math.max(Lx,Math.min(Px,p)),g=Math.max(Lx,Math.min(Px,g))],_=[a=Math.max(Lx,Math.min(Px,a)),u=Math.max(Lx,Math.min(Px,u))];!function(t,n,e,r,i,a){var u,o=t[0],s=t[1],l=0,c=1,f=n[0]-o,h=n[1]-s;if(u=e-o,f||!(u>0)){if(u/=f,f<0){if(u<l)return;u<c&&(c=u)}else if(f>0){if(u>c)return;u>l&&(l=u)}if(u=i-o,f||!(u<0)){if(u/=f,f<0){if(u>c)return;u>l&&(l=u)}else if(f>0){if(u<l)return;u<c&&(c=u)}if(u=r-s,h||!(u>0)){if(u/=h,h<0){if(u<l)return;u<c&&(c=u)}else if(h>0){if(u>c)return;u>l&&(l=u)}if(u=a-s,h||!(u<0)){if(u/=h,h<0){if(u>c)return;u>l&&(l=u)}else if(h>0){if(u<l)return;u<c&&(c=u)}return l>0&&(t[0]=o+l*f,t[1]=s+l*h),c<1&&(n[0]=o+c*f,n[1]=s+c*h),!0}}}}}(s,_,t,n,e,r)?o&&(x.lineStart(),x.point(a,u),y=!1):(m||(x.lineStart(),x.point(s[0],s[1])),x.point(_[0],_[1]),o||x.lineEnd(),y=!1)}p=a,g=u,m=o}return b}}Av();function Ux(t,n,e){var r=Sx(t,n-Cv,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function jx(t,n,e){var r=Sx(t,n-Cv,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function $x(t){return t}var Ix,Wx,Hx,Yx,Gx=Av(),Vx=Av(),Xx={point:Xv,lineStart:Xv,lineEnd:Xv,polygonStart:function(){Xx.lineStart=Zx,Xx.lineEnd=Kx},polygonEnd:function(){Xx.lineStart=Xx.lineEnd=Xx.point=Xv,Gx.add(Tv(Vx)),Vx.reset()},result:function(){var t=Gx/2;return Gx.reset(),t}};function Zx(){Xx.point=Jx}function Jx(t,n){Xx.point=Qx,Ix=Hx=t,Wx=Yx=n}function Qx(t,n){Vx.add(Yx*t-Hx*n),Hx=t,Yx=n}function Kx(){Qx(Ix,Wx)}var t_=1/0,n_=t_,e_=-t_,r_=e_,i_={point:function(t,n){t<t_&&(t_=t);t>e_&&(e_=t);n<n_&&(n_=n);n>r_&&(r_=n)},lineStart:Xv,lineEnd:Xv,polygonStart:Xv,polygonEnd:Xv,result:function(){var t=[[t_,n_],[e_,r_]];return e_=r_=-(n_=t_=1/0),t}};var a_,u_,o_,s_,l_=0,c_=0,f_=0,h_=0,d_=0,p_=0,g_=0,m_=0,v_=0,y_={point:x_,lineStart:__,lineEnd:A_,polygonStart:function(){y_.lineStart=M_,y_.lineEnd=k_},polygonEnd:function(){y_.point=x_,y_.lineStart=__,y_.lineEnd=A_},result:function(){var t=v_?[g_/v_,m_/v_]:p_?[h_/p_,d_/p_]:f_?[l_/f_,c_/f_]:[NaN,NaN];return l_=c_=f_=h_=d_=p_=g_=m_=v_=0,t}};function x_(t,n){l_+=t,c_+=n,++f_}function __(){y_.point=b_}function b_(t,n){y_.point=w_,x_(o_=t,s_=n)}function w_(t,n){var e=t-o_,r=n-s_,i=Hv(e*e+r*r);h_+=i*(o_+t)/2,d_+=i*(s_+n)/2,p_+=i,x_(o_=t,s_=n)}function A_(){y_.point=x_}function M_(){y_.point=E_}function k_(){C_(a_,u_)}function E_(t,n){y_.point=C_,x_(a_=o_=t,u_=s_=n)}function C_(t,n){var e=t-o_,r=n-s_,i=Hv(e*e+r*r);h_+=i*(o_+t)/2,d_+=i*(s_+n)/2,p_+=i,g_+=(i=s_*t-o_*n)*(o_+t),m_+=i*(s_+n),v_+=3*i,x_(o_=t,s_=n)}function D_(t){this._context=t}D_.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,Ov)}},result:Xv};var F_,S_,B_,O_,z_,N_=Av(),T_={point:Xv,lineStart:function(){T_.point=R_},lineEnd:function(){F_&&P_(S_,B_),T_.point=Xv},polygonStart:function(){F_=!0},polygonEnd:function(){F_=null},result:function(){var t=+N_;return N_.reset(),t}};function R_(t,n){T_.point=P_,S_=O_=t,B_=z_=n}function P_(t,n){O_-=t,z_-=n,N_.add(Hv(O_*O_+z_*z_)),O_=t,z_=n}function L_(){this._string=[]}function q_(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function U_(t,n){var e,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),ny(t,e(r))),r.result()}return a.area=function(t){return ny(t,e(Xx)),Xx.result()},a.measure=function(t){return ny(t,e(T_)),T_.result()},a.bounds=function(t){return ny(t,e(i_)),i_.result()},a.centroid=function(t){return ny(t,e(y_)),y_.result()},a.projection=function(n){return arguments.length?(e=null==n?(t=null,$x):(t=n).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(n=null,new L_):new D_(n=t),"function"!=typeof i&&r.pointRadius(i),a):n},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(n)}function j_(t){return function(n){var e=new $_;for(var r in t)e[r]=t[r];return e.stream=n,e}}function $_(){}function I_(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),ny(e,t.stream(i_)),n(i_.result()),null!=r&&t.clipExtent(r),t}function W_(t,n,e){return I_(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],a=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),u=+n[0][0]+(r-a*(e[1][0]+e[0][0]))/2,o=+n[0][1]+(i-a*(e[1][1]+e[0][1]))/2;t.scale(150*a).translate([u,o])},e)}function H_(t,n,e){return W_(t,[[0,0],n],e)}function Y_(t,n,e){return I_(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),a=(r-i*(e[1][0]+e[0][0]))/2,u=-i*e[0][1];t.scale(150*i).translate([a,u])},e)}function G_(t,n,e){return I_(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),a=-i*e[0][0],u=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([a,u])},e)}L_.prototype={_radius:4.5,_circle:q_(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=q_(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},$_.prototype={constructor:$_,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var V_=16,X_=Lv(30*Nv);function Z_(t,n){return+n?function(t,n){function e(r,i,a,u,o,s,l,c,f,h,d,p,g,m){var v=l-r,y=c-i,x=v*v+y*y;if(x>4*n&&g--){var _=u+h,b=o+d,w=s+p,A=Hv(_*_+b*b+w*w),M=Vv(w/=A),k=Tv(Tv(w)-1)<Cv||Tv(a-f)<Cv?(a+f)/2:Pv(b,_),E=t(k,M),C=E[0],D=E[1],F=C-r,S=D-i,B=y*F-v*S;(B*B/x>n||Tv((v*F+y*S)/x-.5)>.3||u*h+o*d+s*p<X_)&&(e(r,i,a,u,o,s,C,D,k,_/=A,b/=A,w,g,m),m.point(C,D),e(C,D,k,_,b,w,l,c,f,h,d,p,g,m))}}return function(n){var r,i,a,u,o,s,l,c,f,h,d,p,g={point:m,lineStart:v,lineEnd:x,polygonStart:function(){n.polygonStart(),g.lineStart=_},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function m(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){c=NaN,g.point=y,n.lineStart()}function y(r,i){var a=gy([r,i]),u=t(r,i);e(c,f,l,h,d,p,c=u[0],f=u[1],l=r,h=a[0],d=a[1],p=a[2],V_,n),n.point(c,f)}function x(){g.point=m,n.lineEnd()}function _(){v(),g.point=b,g.lineEnd=w}function b(t,n){y(r=t,n),i=c,a=f,u=h,o=d,s=p,g.point=y}function w(){e(c,f,l,h,d,p,i,a,r,u,o,s,V_,n),g.lineEnd=x,x()}return g}}(t,n):function(t){return j_({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var J_=j_({point:function(t,n){this.stream.point(t*Nv,n*Nv)}});function Q_(t,n,e,r){var i=Lv(r),a=Iv(r),u=i*t,o=a*t,s=i/t,l=a/t,c=(a*e-i*n)/t,f=(a*n+i*e)/t;function h(t,r){return[u*t-o*r+n,e-o*t-u*r]}return h.invert=function(t,n){return[s*t-l*n+c,f-l*t-s*n]},h}function K_(t){return tb(function(){return t})()}function tb(t){var n,e,r,i,a,u,o,s,l,c,f=150,h=480,d=250,p=0,g=0,m=0,v=0,y=0,x=0,_=null,b=Tx,w=null,A=$x,M=.5;function k(t){return s(t[0]*Nv,t[1]*Nv)}function E(t){return(t=s.invert(t[0],t[1]))&&[t[0]*zv,t[1]*zv]}function C(){var t=Q_(f,0,0,x).apply(null,n(p,g)),r=(x?Q_:function(t,n,e){function r(r,i){return[n+t*r,e-t*i]}return r.invert=function(r,i){return[(r-n)/t,(e-i)/t]},r})(f,h-t[0],d-t[1],x);return e=yx(m,v,y),o=mx(n,r),s=mx(e,o),u=Z_(o,M),D()}function D(){return l=c=null,k}return k.stream=function(t){return l&&c===t?l:l=J_(function(t){return j_({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(b(u(A(c=t)))))},k.preclip=function(t){return arguments.length?(b=t,_=void 0,D()):b},k.postclip=function(t){return arguments.length?(A=t,w=r=i=a=null,D()):A},k.clipAngle=function(t){return arguments.length?(b=+t?Rx(_=t*Nv):(_=null,Tx),D()):_*zv},k.clipExtent=function(t){return arguments.length?(A=null==t?(w=r=i=a=null,$x):qx(w=+t[0][0],r=+t[0][1],i=+t[1][0],a=+t[1][1]),D()):null==w?null:[[w,r],[i,a]]},k.scale=function(t){return arguments.length?(f=+t,C()):f},k.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],C()):[h,d]},k.center=function(t){return arguments.length?(p=t[0]%360*Nv,g=t[1]%360*Nv,C()):[p*zv,g*zv]},k.rotate=function(t){return arguments.length?(m=t[0]%360*Nv,v=t[1]%360*Nv,y=t.length>2?t[2]%360*Nv:0,C()):[m*zv,v*zv,y*zv]},k.angle=function(t){return arguments.length?(x=t%360*Nv,C()):x*zv},k.precision=function(t){return arguments.length?(u=Z_(o,M=t*t),D()):Hv(M)},k.fitExtent=function(t,n){return W_(k,t,n)},k.fitSize=function(t,n){return H_(k,t,n)},k.fitWidth=function(t,n){return Y_(k,t,n)},k.fitHeight=function(t,n){return G_(k,t,n)},function(){return n=t.apply(this,arguments),k.invert=n.invert&&E,C()}}function nb(t){var n=0,e=Fv/3,r=tb(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*Nv,e=t[1]*Nv):[n*zv,e*zv]},i}function eb(t,n){var e=Iv(t),r=(e+Iv(n))/2;if(Tv(r)<Cv)return function(t){var n=Lv(t);function e(t,e){return[t*n,Iv(e)/n]}return e.invert=function(t,e){return[t/n,Vv(e*n)]},e}(t);var i=1+e*(2*r-e),a=Hv(i)/r;function u(t,n){var e=Hv(i-2*r*Iv(n))/r;return[e*Iv(t*=r),a-e*Lv(t)]}return u.invert=function(t,n){var e=a-n;return[Pv(t,Tv(e))/r*Wv(e),Vv((i-(t*t+e*e)*r*r)/(2*r))]},u}function rb(){return nb(eb).scale(155.424).center([0,33.6442])}function ib(){return rb().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function ab(t){return function(n,e){var r=Lv(n),i=Lv(e),a=t(r*i);return[a*i*Iv(n),a*Iv(e)]}}function ub(t){return function(n,e){var r=Hv(n*n+e*e),i=t(r),a=Iv(i),u=Lv(i);return[Pv(n*a,r*u),Vv(r&&e*a/r)]}}var ob=ab(function(t){return Hv(2/(1+t))});ob.invert=ub(function(t){return 2*Vv(t/2)});var sb=ab(function(t){return(t=Gv(t))&&t/Iv(t)});function lb(t,n){return[t,jv(Yv((Sv+n)/2))]}function cb(t){var n,e,r,i=K_(t),a=i.center,u=i.scale,o=i.translate,s=i.clipExtent,l=null;function c(){var a=Fv*u(),o=i(function(t){function n(n){return(n=t(n[0]*Nv,n[1]*Nv))[0]*=zv,n[1]*=zv,n}return t=yx(t[0]*Nv,t[1]*Nv,t.length>2?t[2]*Nv:0),n.invert=function(n){return(n=t.invert(n[0]*Nv,n[1]*Nv))[0]*=zv,n[1]*=zv,n},n}(i.rotate()).invert([0,0]));return s(null==l?[[o[0]-a,o[1]-a],[o[0]+a,o[1]+a]]:t===lb?[[Math.max(o[0]-a,l),n],[Math.min(o[0]+a,e),r]]:[[l,Math.max(o[1]-a,n)],[e,Math.min(o[1]+a,r)]])}return i.scale=function(t){return arguments.length?(u(t),c()):u()},i.translate=function(t){return arguments.length?(o(t),c()):o()},i.center=function(t){return arguments.length?(a(t),c()):a()},i.clipExtent=function(t){return arguments.length?(null==t?l=n=e=r=null:(l=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),c()):null==l?null:[[l,n],[e,r]]},c()}function fb(t){return Yv((Sv+t)/2)}function hb(t,n){var e=Lv(t),r=t===n?Iv(t):jv(e/Lv(n))/jv(fb(n)/fb(t)),i=e*$v(fb(t),r)/r;if(!r)return lb;function a(t,n){i>0?n<-Sv+Cv&&(n=-Sv+Cv):n>Sv-Cv&&(n=Sv-Cv);var e=i/$v(fb(n),r);return[e*Iv(r*t),i-e*Lv(r*t)]}return a.invert=function(t,n){var e=i-n,a=Wv(r)*Hv(t*t+e*e);return[Pv(t,Tv(e))/r*Wv(e),2*Rv($v(i/a,1/r))-Sv]},a}function db(t,n){return[t,n]}function pb(t,n){var e=Lv(t),r=t===n?Iv(t):(e-Lv(n))/(n-t),i=e/r+t;if(Tv(r)<Cv)return db;function a(t,n){var e=i-n,a=r*t;return[e*Iv(a),i-e*Lv(a)]}return a.invert=function(t,n){var e=i-n;return[Pv(t,Tv(e))/r*Wv(e),i-Wv(r)*Hv(t*t+e*e)]},a}function gb(t,n){var e=Lv(n),r=Lv(t)*e;return[e*Iv(t)/r,Iv(n)/r]}function mb(t,n,e,r){return 1===t&&1===n&&0===e&&0===r?$x:j_({point:function(i,a){this.stream.point(i*t+e,a*n+r)}})}function vb(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function yb(t,n){return[Lv(n)*Iv(t),Iv(n)]}function xb(t,n){var e=Lv(n),r=1+Lv(t)*e;return[e*Iv(t)/r,Iv(n)/r]}function _b(t,n){return[jv(Yv((Sv+n)/2)),-t]}sb.invert=ub(function(t){return t}),lb.invert=function(t,n){return[t,2*Rv(Uv(n))-Sv]},db.invert=db,gb.invert=ub(Rv),vb.invert=function(t,n){var e,r=n,i=25;do{var a=r*r,u=a*a;r-=e=(r*(1.007226+a*(.015085+u*(.028874*a-.044475-.005916*u)))-n)/(1.007226+a*(.045255+u*(.259866*a-.311325-.005916*11*u)))}while(Tv(e)>Cv&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]},yb.invert=ub(Vv),xb.invert=ub(function(t){return 2*Rv(t)}),_b.invert=function(t,n){return[-n,2*Rv(Uv(t))-Sv]};var bb=U_(),wb=["clipAngle","clipExtent","scale","translate","center","rotate","parallels","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];function Ab(t,n){if(!t||"string"!=typeof t)throw new Error("Projection type must be a name string.");return t=t.toLowerCase(),arguments.length>1?(kb[t]=function(t,n){return function e(){var r=n();return r.type=t,r.path=U_().projection(r),r.copy=r.copy||function(){var t=e();return wb.forEach(function(n){r.hasOwnProperty(n)&&t[n](r[n]())}),t.path.pointRadius(r.path.pointRadius()),t},r}}(t,n),this):kb.hasOwnProperty(t)?kb[t]:null}function Mb(t){return t&&t.path||bb}var kb={albers:ib,albersusa:function(){var t,n,e,r,i,a,u=ib(),o=rb().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=rb().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){a=[t,n]}};function c(t){var n=t[0],u=t[1];return a=null,e.point(n,u),a||(r.point(n,u),a)||(i.point(n,u),a)}function f(){return t=n=null,c}return c.invert=function(t){var n=u.scale(),e=u.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?o:i>=.166&&i<.234&&r>=-.214&&r<-.115?s:u).invert(t)},c.stream=function(e){return t&&n===e?t:(r=[u.stream(n=e),o.stream(e),s.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},c.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),s.precision(t),f()):u.precision()},c.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),s.scale(t),c.translate(u.translate())):u.scale()},c.translate=function(t){if(!arguments.length)return u.translate();var n=u.scale(),a=+t[0],c=+t[1];return e=u.translate(t).clipExtent([[a-.455*n,c-.238*n],[a+.455*n,c+.238*n]]).stream(l),r=o.translate([a-.307*n,c+.201*n]).clipExtent([[a-.425*n+Cv,c+.12*n+Cv],[a-.214*n-Cv,c+.234*n-Cv]]).stream(l),i=s.translate([a-.205*n,c+.212*n]).clipExtent([[a-.214*n+Cv,c+.166*n+Cv],[a-.115*n-Cv,c+.234*n-Cv]]).stream(l),f()},c.fitExtent=function(t,n){return W_(c,t,n)},c.fitSize=function(t,n){return H_(c,t,n)},c.fitWidth=function(t,n){return Y_(c,t,n)},c.fitHeight=function(t,n){return G_(c,t,n)},c.scale(1070)},azimuthalequalarea:function(){return K_(ob).scale(124.75).clipAngle(179.999)},azimuthalequidistant:function(){return K_(sb).scale(79.4188).clipAngle(179.999)},conicconformal:function(){return nb(hb).scale(109.5).parallels([30,30])},conicequalarea:rb,conicequidistant:function(){return nb(pb).scale(131.154).center([0,13.9389])},equirectangular:function(){return K_(db).scale(152.63)},gnomonic:function(){return K_(gb).scale(144.049).clipAngle(60)},identity:function(){var t,n,e,r,i,a,u=1,o=0,s=0,l=1,c=1,f=$x,h=null,d=$x;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=f(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=n=e=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=n=e=null,$x):qx(h=+r[0][0],t=+r[0][1],n=+r[1][0],e=+r[1][1]),p()):null==h?null:[[h,t],[n,e]]},scale:function(t){return arguments.length?(f=mb((u=+t)*l,u*c,o,s),p()):u},translate:function(t){return arguments.length?(f=mb(u*l,u*c,o=+t[0],s=+t[1]),p()):[o,s]},reflectX:function(t){return arguments.length?(f=mb(u*(l=t?-1:1),u*c,o,s),p()):l<0},reflectY:function(t){return arguments.length?(f=mb(u*l,u*(c=t?-1:1),o,s),p()):c<0},fitExtent:function(t,n){return W_(a,t,n)},fitSize:function(t,n){return H_(a,t,n)},fitWidth:function(t,n){return Y_(a,t,n)},fitHeight:function(t,n){return G_(a,t,n)}}},mercator:function(){return cb(lb).scale(961/Ov)},naturalEarth1:function(){return K_(vb).scale(175.295)},orthographic:function(){return K_(yb).scale(249.5).clipAngle(90+Cv)},stereographic:function(){return K_(xb).scale(250).clipAngle(142)},transversemercator:function(){var t=cb(_b),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)}};for(var Eb in kb)Ab(Eb,kb[Eb]);function Cb(t){$r.call(this,null,t)}function Db(t){$r.call(this,null,t)}function Fb(t){$r.call(this,null,t)}function Sb(t){$r.call(this,[],t),this.generator=function(){var t,n,e,r,i,a,u,o,s,l,c,f,h=10,d=h,p=90,g=360,m=2.5;function v(){return{type:"MultiLineString",coordinates:y()}}function y(){return Sx(qv(r/p)*p,e,p).map(c).concat(Sx(qv(o/g)*g,u,g).map(f)).concat(Sx(qv(n/h)*h,t,h).filter(function(t){return Tv(t%p)>Cv}).map(s)).concat(Sx(qv(a/d)*d,i,d).filter(function(t){return Tv(t%g)>Cv}).map(l))}return v.lines=function(){return y().map(function(t){return{type:"LineString",coordinates:t}})},v.outline=function(){return{type:"Polygon",coordinates:[c(r).concat(f(u).slice(1),c(e).reverse().slice(1),f(o).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],o=+t[0][1],u=+t[1][1],r>e&&(t=r,r=e,e=t),o>u&&(t=o,o=u,u=t),v.precision(m)):[[r,o],[e,u]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],a=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),a>i&&(e=a,a=i,i=e),v.precision(m)):[[n,a],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(m=+h,s=Ux(a,i,90),l=jx(n,t,m),c=Ux(o,u,90),f=jx(r,e,m),v):m},v.extentMajor([[-180,-90+Cv],[180,90-Cv]]).extentMinor([[-180,-80-Cv],[180,80+Cv]])}()}function Bb(t){$r.call(this,null,t),this.modified(!0)}function Ob(t,n,e){Y(t[n])&&t[n](e)}Cb.Definition={type:"GeoPath",metadata:{modifies:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"path"}]},et(Cb,$r).transform=function(t,n){var e=n.fork(n.ALL),r=this.value,i=t.field||d,a=t.as||"path",u=e.SOURCE;!r||t.modified()?(this.value=r=Mb(t.projection),e.materialize().reflow()):u=i===d||n.modified(i.fields)?e.ADD_MOD:e.ADD;var o=function(t,n){var e=t.pointRadius();t.context(null),null!=n&&t.pointRadius(n);return e}(r,t.pointRadius);return e.visit(u,function(t){t[a]=r(i(t))}),r.pointRadius(o),e.modifies(a)},Db.Definition={type:"GeoPoint",metadata:{modifies:!0},params:[{name:"projection",type:"projection",required:!0},{name:"fields",type:"field",array:!0,required:!0,length:2},{name:"as",type:"string",array:!0,length:2,default:["x","y"]}]},et(Db,$r).transform=function(t,n){var e,r=t.projection,i=t.fields[0],a=t.fields[1],u=t.as||["x","y"],o=u[0],s=u[1];function l(t){var n=r([i(t),a(t)]);n?(t[o]=n[0],t[s]=n[1]):(t[o]=void 0,t[s]=void 0)}return t.modified()?n=n.materialize().reflow(!0).visit(n.SOURCE,l):(e=n.modified(i.fields)||n.modified(a.fields),n.visit(e?n.ADD_MOD:n.ADD,l)),n.modifies(u)},Fb.Definition={type:"GeoShape",metadata:{modifies:!0,nomod:!0},params:[{name:"projection",type:"projection"},{name:"field",type:"field",default:"datum"},{name:"pointRadius",type:"number",expr:!0},{name:"as",type:"string",default:"shape"}]},et(Fb,$r).transform=function(t,n){var e=n.fork(n.ALL),r=this.value,i=t.as||"shape",a=e.ADD;return r&&!t.modified()||(this.value=r=function(t,n,e){var r=null==e?function(e){return t(n(e))}:function(r){var i=t.pointRadius(),a=t.pointRadius(e)(n(r));return t.pointRadius(i),a};return r.context=function(n){return t.context(n),r},r}(Mb(t.projection),t.field||c("datum"),t.pointRadius),e.materialize().reflow(),a=e.SOURCE),e.visit(a,function(t){t[i]=r}),e.modifies(i)},Sb.Definition={type:"Graticule",metadata:{changes:!0},params:[{name:"extent",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMajor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"extentMinor",type:"array",array:!0,length:2,content:{type:"number",array:!0,length:2}},{name:"step",type:"number",array:!0,length:2},{name:"stepMajor",type:"number",array:!0,length:2,default:[90,360]},{name:"stepMinor",type:"number",array:!0,length:2,default:[10,10]},{name:"precision",type:"number",default:2.5}]},et(Sb,$r).transform=function(t,n){var e,r=this.value,i=this.generator;if(!r.length||t.modified())for(var a in t)Y(i[a])&&i[a](t[a]);return e=i(),r.length?n.mod.push(Bt(r[0],e)):n.add.push(Dt(e)),r[0]=e,n},et(Bb,$r).transform=function(t,n){var e=this.value;return!e||t.modified("type")?(this.value=e=function(t){var n=Ab((t||"mercator").toLowerCase());n||i("Unrecognized projection type: "+t);return n()}(t.type),wb.forEach(function(n){null!=t[n]&&Ob(e,n,t[n])})):wb.forEach(function(n){t.modified(n)&&Ob(e,n,t[n])}),null!=t.pointRadius&&e.path.pointRadius(t.pointRadius),t.fit&&function(t,n){var e=function(t){return 1===(t=W(t)).length?t[0]:{type:bv,features:t.reduce((t,n)=>t.concat(function(t){return t.type===bv?t.features:W(t).filter(t=>null!=t).map(t=>t.type===_v?t:{type:_v,geometry:t})}(n)),[])}}(n.fit);n.extent?t.fitExtent(n.extent,e):n.size&&t.fitSize(n.size,e)}(e,t),n.fork(n.NO_SOURCE|n.NO_FIELDS)};var zb=Object.freeze({contour:xv,geojson:wv,geopath:Cb,geopoint:Db,geoshape:Fb,graticule:Sb,projection:Bb});function Nb(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,a,u,o,s,l,c,f,h,d=t._root,p={data:r},g=t._x0,m=t._y0,v=t._x1,y=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((l=n>=(a=(g+v)/2))?g=a:v=a,(c=e>=(u=(m+y)/2))?m=u:y=u,i=d,!(d=d[f=c<<1|l]))return i[f]=p,t;if(o=+t._x.call(null,d.data),s=+t._y.call(null,d.data),n===o&&e===s)return p.next=d,i?i[f]=p:t._root=p,t;do{i=i?i[f]=new Array(4):t._root=new Array(4),(l=n>=(a=(g+v)/2))?g=a:v=a,(c=e>=(u=(m+y)/2))?m=u:y=u}while((f=c<<1|l)==(h=(s>=u)<<1|o>=a));return i[h]=d,i[f]=p,t}function Tb(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Rb(t){return t[0]}function Pb(t){return t[1]}function Lb(t,n,e){var r=new qb(null==n?Rb:n,null==e?Pb:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function qb(t,n,e,r,i,a){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function Ub(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var jb=Lb.prototype=qb.prototype;function $b(t){return function(){return t}}function Ib(){return 1e-6*(Math.random()-.5)}function Wb(t){return t.x+t.vx}function Hb(t){return t.y+t.vy}function Yb(t){return t.index}function Gb(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}jb.copy=function(){var t,n,e=new qb(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Ub(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Ub(n));return e},jb.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return Nb(this.cover(n,e),n,e,t)},jb.addAll=function(t){var n,e,r,i,a=t.length,u=new Array(a),o=new Array(a),s=1/0,l=1/0,c=-1/0,f=-1/0;for(e=0;e<a;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(u[e]=r,o[e]=i,r<s&&(s=r),r>c&&(c=r),i<l&&(l=i),i>f&&(f=i));if(s>c||l>f)return this;for(this.cover(s,l).cover(c,f),e=0;e<a;++e)Nb(this,u[e],o[e],t[e]);return this},jb.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,a=(r=Math.floor(n))+1;else{for(var u,o,s=i-e,l=this._root;e>t||t>=i||r>n||n>=a;)switch(o=(n<r)<<1|t<e,(u=new Array(4))[o]=l,l=u,s*=2,o){case 0:i=e+s,a=r+s;break;case 1:e=i-s,a=r+s;break;case 2:i=e+s,r=a-s;break;case 3:e=i-s,r=a-s}this._root&&this._root.length&&(this._root=l)}return this._x0=e,this._y0=r,this._x1=i,this._y1=a,this},jb.data=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},jb.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},jb.find=function(t,n,e){var r,i,a,u,o,s,l,c=this._x0,f=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Tb(g,c,f,h,d)),null==e?e=1/0:(c=t-e,f=n-e,h=t+e,d=n+e,e*=e);s=p.pop();)if(!(!(g=s.node)||(i=s.x0)>h||(a=s.y0)>d||(u=s.x1)<c||(o=s.y1)<f))if(g.length){var m=(i+u)/2,v=(a+o)/2;p.push(new Tb(g[3],m,v,u,o),new Tb(g[2],i,v,m,o),new Tb(g[1],m,a,u,v),new Tb(g[0],i,a,m,v)),(l=(n>=v)<<1|t>=m)&&(s=p[p.length-1],p[p.length-1]=p[p.length-1-l],p[p.length-1-l]=s)}else{var y=t-+this._x.call(null,g.data),x=n-+this._y.call(null,g.data),_=y*y+x*x;if(_<e){var b=Math.sqrt(e=_);c=t-b,f=n-b,h=t+b,d=n+b,r=g.data}}return r},jb.remove=function(t){if(isNaN(a=+this._x.call(null,t))||isNaN(u=+this._y.call(null,t)))return this;var n,e,r,i,a,u,o,s,l,c,f,h,d=this._root,p=this._x0,g=this._y0,m=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((l=a>=(o=(p+m)/2))?p=o:m=o,(c=u>=(s=(g+v)/2))?g=s:v=s,n=d,!(d=d[f=c<<1|l]))return this;if(!d.length)break;(n[f+1&3]||n[f+2&3]||n[f+3&3])&&(e=n,h=f)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[f]=i:delete n[f],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},jb.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},jb.root=function(){return this._root},jb.size=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},jb.visit=function(t){var n,e,r,i,a,u,o=[],s=this._root;for(s&&o.push(new Tb(s,this._x0,this._y0,this._x1,this._y1));n=o.pop();)if(!t(s=n.node,r=n.x0,i=n.y0,a=n.x1,u=n.y1)&&s.length){var l=(r+a)/2,c=(i+u)/2;(e=s[3])&&o.push(new Tb(e,l,c,a,u)),(e=s[2])&&o.push(new Tb(e,r,c,l,u)),(e=s[1])&&o.push(new Tb(e,l,i,a,c)),(e=s[0])&&o.push(new Tb(e,r,i,l,c))}return this},jb.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Tb(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var a,u=n.x0,o=n.y0,s=n.x1,l=n.y1,c=(u+s)/2,f=(o+l)/2;(a=i[0])&&e.push(new Tb(a,u,o,c,f)),(a=i[1])&&e.push(new Tb(a,c,o,s,f)),(a=i[2])&&e.push(new Tb(a,u,f,c,l)),(a=i[3])&&e.push(new Tb(a,c,f,s,l))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},jb.x=function(t){return arguments.length?(this._x=t,this):this._x},jb.y=function(t){return arguments.length?(this._y=t,this):this._y};var Vb={value:function(){}};function Xb(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new Zb(r)}function Zb(t){this._=t}function Jb(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function Qb(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Vb,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}Zb.prototype=Xb.prototype={constructor:Zb,on:function(t,n){var e,r,i=this._,a=(r=i,(t+"").trim().split(/^|\\s+/).map(function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}})),u=-1,o=a.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++u<o;)if(e=(t=a[u]).type)i[e]=Qb(i[e],t.name,n);else if(null==n)for(e in i)i[e]=Qb(i[e],t.name,null);return this}for(;++u<o;)if((e=(t=a[u]).type)&&(e=Jb(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new Zb(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),a=0;a<e;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,e=(r=this._[t]).length;a<e;++a)r[a].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(n,e)}};var Kb,tw,nw=0,ew=0,rw=0,iw=1e3,aw=0,uw=0,ow=0,sw="object"==typeof performance&&performance.now?performance:Date,lw="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function cw(){return uw||(lw(fw),uw=sw.now()+ow)}function fw(){uw=0}function hw(){this._call=this._time=this._next=null}function dw(t,n,e){var r=new hw;return r.restart(t,n,e),r}function pw(){uw=(aw=sw.now())+ow,nw=ew=0;try{!function(){cw(),++nw;for(var t,n=Kb;n;)(t=uw-n._time)>=0&&n._call.call(null,t),n=n._next;--nw}()}finally{nw=0,function(){var t,n,e=Kb,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Kb=n);tw=t,mw(r)}(),uw=0}}function gw(){var t=sw.now(),n=t-aw;n>iw&&(ow-=n,aw=t)}function mw(t){nw||(ew&&(ew=clearTimeout(ew)),t-uw>24?(t<1/0&&(ew=setTimeout(pw,t-sw.now()-ow)),rw&&(rw=clearInterval(rw))):(rw||(aw=sw.now(),rw=setInterval(gw,iw)),nw=1,lw(pw)))}function vw(t){return t.x}function yw(t){return t.y}hw.prototype=dw.prototype={constructor:hw,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?cw():+e)+(null==n?0:+n),this._next||tw===this||(tw?tw._next=this:Kb=this,tw=this),this._call=t,this._time=e,mw()},stop:function(){this._call&&(this._call=null,this._time=1/0,mw())}};var xw=10,_w=Math.PI*(3-Math.sqrt(5));var bw={center:function(t,n){var e;function r(){var r,i,a=e.length,u=0,o=0;for(r=0;r<a;++r)u+=(i=e[r]).x,o+=i.y;for(u=u/a-t,o=o/a-n,r=0;r<a;++r)(i=e[r]).x-=u,i.y-=o}return null==t&&(t=0),null==n&&(n=0),r.initialize=function(t){e=t},r.x=function(n){return arguments.length?(t=+n,r):t},r.y=function(t){return arguments.length?(n=+t,r):n},r},collide:function(t){var n,e,r=1,i=1;function a(){for(var t,a,o,s,l,c,f,h=n.length,d=0;d<i;++d)for(a=Lb(n,Wb,Hb).visitAfter(u),t=0;t<h;++t)o=n[t],c=e[o.index],f=c*c,s=o.x+o.vx,l=o.y+o.vy,a.visit(p);function p(t,n,e,i,a){var u=t.data,h=t.r,d=c+h;if(!u)return n>s+d||i<s-d||e>l+d||a<l-d;if(u.index>o.index){var p=s-u.x-u.vx,g=l-u.y-u.vy,m=p*p+g*g;m<d*d&&(0===p&&(m+=(p=Ib())*p),0===g&&(m+=(g=Ib())*g),m=(d-(m=Math.sqrt(m)))/m*r,o.vx+=(p*=m)*(d=(h*=h)/(f+h)),o.vy+=(g*=m)*d,u.vx-=p*(d=1-d),u.vy-=g*d)}}}function u(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function o(){if(n){var r,i,a=n.length;for(e=new Array(a),r=0;r<a;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=$b(null==t?1:+t)),a.initialize=function(t){n=t,o()},a.iterations=function(t){return arguments.length?(i=+t,a):i},a.strength=function(t){return arguments.length?(r=+t,a):r},a.radius=function(n){return arguments.length?(t="function"==typeof n?n:$b(+n),o(),a):t},a},nbody:function(){var t,n,e,r,i=$b(-30),a=1,u=1/0,o=.81;function s(r){var i,a=t.length,u=Lb(t,vw,yw).visitAfter(c);for(e=r,i=0;i<a;++i)n=t[i],u.visit(f)}function l(){if(t){var n,e,a=t.length;for(r=new Array(a),n=0;n<a;++n)e=t[n],r[e.index]=+i(e,n,t)}}function c(t){var n,e,i,a,u,o=0,s=0;if(t.length){for(i=a=u=0;u<4;++u)(n=t[u])&&(e=Math.abs(n.value))&&(o+=n.value,s+=e,i+=e*n.x,a+=e*n.y);t.x=i/s,t.y=a/s}else{(n=t).x=n.data.x,n.y=n.data.y;do{o+=r[n.data.index]}while(n=n.next)}t.value=o}function f(t,i,s,l){if(!t.value)return!0;var c=t.x-n.x,f=t.y-n.y,h=l-i,d=c*c+f*f;if(h*h/o<d)return d<u&&(0===c&&(d+=(c=Ib())*c),0===f&&(d+=(f=Ib())*f),d<a&&(d=Math.sqrt(a*d)),n.vx+=c*t.value*e/d,n.vy+=f*t.value*e/d),!0;if(!(t.length||d>=u)){(t.data!==n||t.next)&&(0===c&&(d+=(c=Ib())*c),0===f&&(d+=(f=Ib())*f),d<a&&(d=Math.sqrt(a*d)));do{t.data!==n&&(h=r[t.data.index]*e/d,n.vx+=c*h,n.vy+=f*h)}while(t=t.next)}}return s.initialize=function(n){t=n,l()},s.strength=function(t){return arguments.length?(i="function"==typeof t?t:$b(+t),l(),s):i},s.distanceMin=function(t){return arguments.length?(a=t*t,s):Math.sqrt(a)},s.distanceMax=function(t){return arguments.length?(u=t*t,s):Math.sqrt(u)},s.theta=function(t){return arguments.length?(o=t*t,s):Math.sqrt(o)},s},link:function(t){var n,e,r,i,a,u=Yb,o=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},s=$b(30),l=1;function c(r){for(var i=0,u=t.length;i<l;++i)for(var o,s,c,f,h,d,p,g=0;g<u;++g)s=(o=t[g]).source,f=(c=o.target).x+c.vx-s.x-s.vx||Ib(),h=c.y+c.vy-s.y-s.vy||Ib(),f*=d=((d=Math.sqrt(f*f+h*h))-e[g])/d*r*n[g],h*=d,c.vx-=f*(p=a[g]),c.vy-=h*p,s.vx+=f*(p=1-p),s.vy+=h*p}function f(){if(r){var o,s,l=r.length,c=t.length,f=new Map(r.map((t,n)=>[u(t,n,r),t]));for(o=0,i=new Array(l);o<c;++o)(s=t[o]).index=o,"object"!=typeof s.source&&(s.source=Gb(f,s.source)),"object"!=typeof s.target&&(s.target=Gb(f,s.target)),i[s.source.index]=(i[s.source.index]||0)+1,i[s.target.index]=(i[s.target.index]||0)+1;for(o=0,a=new Array(c);o<c;++o)s=t[o],a[o]=i[s.source.index]/(i[s.source.index]+i[s.target.index]);n=new Array(c),h(),e=new Array(c),d()}}function h(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+o(t[e],e,t)}function d(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+s(t[n],n,t)}return null==t&&(t=[]),c.initialize=function(t){r=t,f()},c.links=function(n){return arguments.length?(t=n,f(),c):t},c.id=function(t){return arguments.length?(u=t,c):u},c.iterations=function(t){return arguments.length?(l=+t,c):l},c.strength=function(t){return arguments.length?(o="function"==typeof t?t:$b(+t),h(),c):o},c.distance=function(t){return arguments.length?(s="function"==typeof t?t:$b(+t),d(),c):s},c},x:function(t){var n,e,r,i=$b(.1);function a(t){for(var i,a=0,u=n.length;a<u;++a)(i=n[a]).vx+=(r[a]-i.x)*e[a]*t}function u(){if(n){var a,u=n.length;for(e=new Array(u),r=new Array(u),a=0;a<u;++a)e[a]=isNaN(r[a]=+t(n[a],a,n))?0:+i(n[a],a,n)}}return"function"!=typeof t&&(t=$b(null==t?0:+t)),a.initialize=function(t){n=t,u()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:$b(+t),u(),a):i},a.x=function(n){return arguments.length?(t="function"==typeof n?n:$b(+n),u(),a):t},a},y:function(t){var n,e,r,i=$b(.1);function a(t){for(var i,a=0,u=n.length;a<u;++a)(i=n[a]).vy+=(r[a]-i.y)*e[a]*t}function u(){if(n){var a,u=n.length;for(e=new Array(u),r=new Array(u),a=0;a<u;++a)e[a]=isNaN(r[a]=+t(n[a],a,n))?0:+i(n[a],a,n)}}return"function"!=typeof t&&(t=$b(null==t?0:+t)),a.initialize=function(t){n=t,u()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:$b(+t),u(),a):i},a.y=function(n){return arguments.length?(t="function"==typeof n?n:$b(+n),u(),a):t},a}},ww="forces",Aw=["alpha","alphaMin","alphaTarget","velocityDecay","forces"],Mw=["static","iterations"],kw=["x","y","vx","vy"];function Ew(t){$r.call(this,null,t)}Ew.Definition={type:"Force",metadata:{modifies:!0},params:[{name:"static",type:"boolean",default:!1},{name:"restart",type:"boolean",default:!1},{name:"iterations",type:"number",default:300},{name:"alpha",type:"number",default:1},{name:"alphaMin",type:"number",default:.001},{name:"alphaTarget",type:"number",default:0},{name:"velocityDecay",type:"number",default:.4},{name:"forces",type:"param",array:!0,params:[{key:{force:"center"},params:[{name:"x",type:"number",default:0},{name:"y",type:"number",default:0}]},{key:{force:"collide"},params:[{name:"radius",type:"number",expr:!0},{name:"strength",type:"number",default:.7},{name:"iterations",type:"number",default:1}]},{key:{force:"nbody"},params:[{name:"strength",type:"number",default:-30},{name:"theta",type:"number",default:.9},{name:"distanceMin",type:"number",default:1},{name:"distanceMax",type:"number"}]},{key:{force:"link"},params:[{name:"links",type:"data"},{name:"id",type:"field"},{name:"distance",type:"number",default:30,expr:!0},{name:"strength",type:"number",expr:!0},{name:"iterations",type:"number",default:1}]},{key:{force:"x"},params:[{name:"strength",type:"number",default:.1},{name:"x",type:"field"}]},{key:{force:"y"},params:[{name:"strength",type:"number",default:.1},{name:"y",type:"field"}]}]},{name:"as",type:"string",array:!0,modify:!1,default:kw}]};var Cw=et(Ew,$r);function Dw(t,n,e,r){var i,a,u,o,s=W(n.forces);for(i=0,a=Aw.length;i<a;++i)(u=Aw[i])!==ww&&n.modified(u)&&t[u](n[u]);for(i=0,a=s.length;i<a;++i)o=ww+i,(u=e||n.modified(ww,i)?Sw(s[i]):r&&Fw(s[i],r)?t.force(o):null)&&t.force(o,u);for(a=t.numForces||0;i<a;++i)t.force(ww+i,null);return t.numForces=s.length,t}function Fw(t,n){var e,i;for(e in t)if(Y(i=t[e])&&n.modified(r(i)))return 1;return 0}function Sw(t){var n,e;for(e in bw.hasOwnProperty(t.force)||i("Unrecognized force: "+t.force),n=bw[t.force](),t)Y(n[e])&&Bw(n[e],t[e],t);return n}function Bw(t,n,e){t(Y(n)?function(t){return n(t,e)}:n)}Cw.transform=function(t,n){var e,r,i=this.value,a=n.changed(n.ADD_REM),u=t.modified(Aw),o=t.iterations||300;if(i?(a&&(n.modifies("index"),i.nodes(n.source)),(u||n.changed(n.MOD))&&Dw(i,t,0,n)):(this.value=i=function(t,n){var e=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),a=0,u=.6,o=new Map,s=dw(c),l=Xb("tick","end");function c(){f(),l.call("tick",n),e<r&&(s.stop(),l.call("end",n))}function f(r){var s,l,c=t.length;void 0===r&&(r=1);for(var f=0;f<r;++f)for(e+=(a-e)*i,o.forEach(function(t){t(e)}),s=0;s<c;++s)null==(l=t[s]).fx?l.x+=l.vx*=u:(l.x=l.fx,l.vx=0),null==l.fy?l.y+=l.vy*=u:(l.y=l.fy,l.vy=0);return n}function h(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=xw*Math.sqrt(e),a=e*_w;n.x=i*Math.cos(a),n.y=i*Math.sin(a)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function d(n){return n.initialize&&n.initialize(t),n}return null==t&&(t=[]),h(),n={tick:f,restart:function(){return s.restart(c),n},stop:function(){return s.stop(),n},nodes:function(e){return arguments.length?(t=e,h(),o.forEach(d),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(a=+t,n):a},velocityDecay:function(t){return arguments.length?(u=1-t,n):1-u},force:function(t,e){return arguments.length>1?(null==e?o.delete(t):o.set(t,d(e)),n):o.get(t)},find:function(n,e,r){var i,a,u,o,s,l=0,c=t.length;for(null==r?r=1/0:r*=r,l=0;l<c;++l)(u=(i=n-(o=t[l]).x)*i+(a=e-o.y)*a)<r&&(s=o,r=u);return s},on:function(t,e){return arguments.length>1?(l.on(t,e),n):l.on(t)}}}(t),r=!1,i=e.stop,a=e.restart;return e.stopped=function(){return r},e.restart=function(){return r=!1,a()},e.stop=function(){return r=!0,i()},Dw(e,n,!0).on("end",function(){r=!0})}(n.source,t),i.on("tick",(e=n.dataflow,r=this,function(){e.touch(r).run()})),t.static||(a=!0,i.tick()),n.modifies("index")),u||a||t.modified(Mw)||n.changed()&&t.restart)if(i.alpha(Math.max(i.alpha(),t.alpha||1)).alphaDecay(1-Math.pow(i.alphaMin(),1/o)),t.static)for(i.stop();--o>=0;)i.tick();else if(i.stopped()&&i.restart(),!a)return n.StopPropagation;return this.finish(t,n)},Cw.finish=function(t,n){for(var e,r=n.dataflow,i=this._argops,a=0,u=i.length;a<u;++a)if((e=i[a]).name===ww&&"link"===e.op._argval.force)for(var o,s=e.op._argops,l=0,c=s.length;l<c;++l)if("links"===s[l].name&&(o=s[l].op.source)){r.pulse(o,r.changeset().reflow());break}return n.reflow(t.modified()).modifies(kw)};var Ow=Object.freeze({force:Ew});function zw(t,n,e){var r={};return t.each(function(t){var i=t.data;e(i)&&(r[n(i)]=t)}),t.lookup=r,t}function Nw(t,n){return t.parent===n.parent?1:2}function Tw(t,n){return t+n.x}function Rw(t,n){return Math.max(t,n.y)}function Pw(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Lw(t,n){var e,r,i,a,u,o=new $w(t),s=+t.value&&(o.value=t.value),l=[o];for(null==n&&(n=qw);e=l.pop();)if(s&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),a=u-1;a>=0;--a)l.push(r=e.children[a]=new $w(i[a])),r.parent=e,r.depth=e.depth+1;return o.eachBefore(jw)}function qw(t){return t.children}function Uw(t){t.data=t.data.data}function jw(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function $w(t){this.data=t,this.depth=this.height=0,this.parent=null}$w.prototype=Lw.prototype={constructor:$w,count:function(){return this.eachAfter(Pw)},each:function(t){var n,e,r,i,a=this,u=[a];do{for(n=u.reverse(),u=[];a=n.pop();)if(t(a),e=a.children)for(r=0,i=e.length;r<i;++r)u.push(e[r])}while(u.length);return this},eachAfter:function(t){for(var n,e,r,i=this,a=[i],u=[];i=a.pop();)if(u.push(i),n=i.children)for(e=0,r=n.length;e<r;++e)a.push(n[e]);for(;i=u.pop();)t(i);return this},eachBefore:function(t){for(var n,e,r=this,i=[r];r=i.pop();)if(t(r),n=r.children)for(e=n.length-1;e>=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return Lw(this).eachBefore(Uw)}};var Iw=Array.prototype.slice;function Ww(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Iw.call(t))).length,a=[];r<i;)n=t[r],e&&Gw(e,n)?++r:(e=Xw(a=Hw(a,n)),r=0);return e}function Hw(t,n){var e,r;if(Vw(n,t))return[n];for(e=0;e<t.length;++e)if(Yw(n,t[e])&&Vw(Zw(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(Yw(Zw(t[e],t[r]),n)&&Yw(Zw(t[e],n),t[r])&&Yw(Zw(t[r],n),t[e])&&Vw(Jw(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function Yw(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function Gw(t,n){var e=t.r-n.r+1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function Vw(t,n){for(var e=0;e<n.length;++e)if(!Gw(t,n[e]))return!1;return!0}function Xw(t){switch(t.length){case 1:return{x:(n=t[0]).x,y:n.y,r:n.r};case 2:return Zw(t[0],t[1]);case 3:return Jw(t[0],t[1],t[2])}var n}function Zw(t,n){var e=t.x,r=t.y,i=t.r,a=n.x,u=n.y,o=n.r,s=a-e,l=u-r,c=o-i,f=Math.sqrt(s*s+l*l);return{x:(e+a+s/f*c)/2,y:(r+u+l/f*c)/2,r:(f+i+o)/2}}function Jw(t,n,e){var r=t.x,i=t.y,a=t.r,u=n.x,o=n.y,s=n.r,l=e.x,c=e.y,f=e.r,h=r-u,d=r-l,p=i-o,g=i-c,m=s-a,v=f-a,y=r*r+i*i-a*a,x=y-u*u-o*o+s*s,_=y-l*l-c*c+f*f,b=d*p-h*g,w=(p*_-g*x)/(2*b)-r,A=(g*m-p*v)/b,M=(d*x-h*_)/(2*b)-i,k=(h*v-d*m)/b,E=A*A+k*k-1,C=2*(a+w*A+M*k),D=w*w+M*M-a*a,F=-(E?(C+Math.sqrt(C*C-4*E*D))/(2*E):D/C);return{x:r+w+A*F,y:i+M+k*F,r:F}}function Qw(t,n,e){var r,i,a,u,o=t.x-n.x,s=t.y-n.y,l=o*o+s*s;l?(i=n.r+e.r,i*=i,u=t.r+e.r,i>(u*=u)?(r=(l+u-i)/(2*l),a=Math.sqrt(Math.max(0,u/l-r*r)),e.x=t.x-r*o-a*s,e.y=t.y-r*s+a*o):(r=(l+i-u)/(2*l),a=Math.sqrt(Math.max(0,i/l-r*r)),e.x=n.x+r*o-a*s,e.y=n.y+r*s+a*o)):(e.x=n.x+e.r,e.y=n.y)}function Kw(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function tA(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,a=(n.y*e.r+e.y*n.r)/r;return i*i+a*a}function nA(t){this._=t,this.next=null,this.previous=null}function eA(t){if("function"!=typeof t)throw new Error;return t}function rA(){return 0}function iA(t){return function(){return t}}function aA(t){return Math.sqrt(t.value)}function uA(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function oA(t,n){return function(e){if(r=e.children){var r,i,a,u=r.length,o=t(e)*n||0;if(o)for(i=0;i<u;++i)r[i].r+=o;if(a=function(t){if(!(i=t.length))return 0;var n,e,r,i,a,u,o,s,l,c,f;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Qw(e,n,r=t[2]),n=new nA(n),e=new nA(e),r=new nA(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(o=3;o<i;++o){Qw(n._,e._,r=t[o]),r=new nA(r),s=e.next,l=n.previous,c=e._.r,f=n._.r;do{if(c<=f){if(Kw(s._,r._)){e=s,n.next=e,e.previous=n,--o;continue t}c+=s._.r,s=s.next}else{if(Kw(l._,r._)){(n=l).next=e,e.previous=n,--o;continue t}f+=l._.r,l=l.previous}}while(s!==l.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,a=tA(n);(r=r.next)!==e;)(u=tA(r))<a&&(n=r,a=u);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=Ww(n),o=0;o<i;++o)(n=t[o]).x-=r.x,n.y-=r.y;return r.r}(r),o)for(i=0;i<u;++i)r[i].r-=o;e.r=a+o}}}function sA(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function lA(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function cA(t,n,e,r,i){for(var a,u=t.children,o=-1,s=u.length,l=t.value&&(r-n)/t.value;++o<s;)(a=u[o]).y0=e,a.y1=i,a.x0=n,a.x1=n+=a.value*l}var fA="$",hA={depth:-1},dA={};function pA(t){return t.id}function gA(t){return t.parentId}function mA(){var t=pA,n=gA;function e(e){var r,i,a,u,o,s,l,c=e.length,f=new Array(c),h={};for(i=0;i<c;++i)r=e[i],o=f[i]=new $w(r),null!=(s=t(r,i,e))&&(s+="")&&(h[l=fA+(o.id=s)]=l in h?dA:o);for(i=0;i<c;++i)if(o=f[i],null!=(s=n(e[i],i,e))&&(s+="")){if(!(u=h[fA+s]))throw new Error("missing: "+s);if(u===dA)throw new Error("ambiguous: "+s);u.children?u.children.push(o):u.children=[o],o.parent=u}else{if(a)throw new Error("multiple roots");a=o}if(!a)throw new Error("no root");if(a.parent=hA,a.eachBefore(function(t){t.depth=t.parent.depth+1,--c}).eachBefore(jw),a.parent=null,c>0)throw new Error("cycle");return a}return e.id=function(n){return arguments.length?(t=eA(n),e):t},e.parentId=function(t){return arguments.length?(n=eA(t),e):n},e}function vA(t,n){return t.parent===n.parent?1:2}function yA(t){var n=t.children;return n?n[0]:t.t}function xA(t){var n=t.children;return n?n[n.length-1]:t.t}function _A(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function bA(t,n,e){return t.a.parent===n.parent?t.a:e}function wA(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function AA(t,n,e,r,i){for(var a,u=t.children,o=-1,s=u.length,l=t.value&&(i-e)/t.value;++o<s;)(a=u[o]).x0=n,a.x1=r,a.y0=e,a.y1=e+=a.value*l}wA.prototype=Object.create($w.prototype);var MA=(1+Math.sqrt(5))/2;function kA(t,n,e,r,i,a){for(var u,o,s,l,c,f,h,d,p,g,m,v=[],y=n.children,x=0,_=0,b=y.length,w=n.value;x<b;){s=i-e,l=a-r;do{c=y[_++].value}while(!c&&_<b);for(f=h=c,m=c*c*(g=Math.max(l/s,s/l)/(w*t)),p=Math.max(h/m,m/f);_<b;++_){if(c+=o=y[_].value,o<f&&(f=o),o>h&&(h=o),m=c*c*g,(d=Math.max(h/m,m/f))>p){c-=o;break}p=d}v.push(u={value:c,dice:s<l,children:y.slice(x,_)}),u.dice?cA(u,e,r,i,w?r+=l*c/w:a):AA(u,e,r,w?e+=s*c/w:i,a),w-=c,x=_}return v}var EA=function t(n){function e(t,e,r,i,a){kA(n,t,e,r,i,a)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(MA);var CA=function t(n){function e(t,e,r,i,a){if((u=t._squarify)&&u.ratio===n)for(var u,o,s,l,c,f=-1,h=u.length,d=t.value;++f<h;){for(s=(o=u[f]).children,l=o.value=0,c=s.length;l<c;++l)o.value+=s[l].value;o.dice?cA(o,e,r,i,r+=(a-r)*o.value/d):AA(o,e,r,e+=(i-e)*o.value/d,a),d-=o.value}else t._squarify=u=kA(n,t,e,r,i,a),u.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(MA);function DA(t){$r.call(this,null,t)}function FA(t){return t.values}function SA(){var t,n=[];return t={entries:function(t){return function t(e,r){if(++r>n.length)return e;var i,a=[];for(i in e)a.push({key:i,values:t(e[i],r)});return a}(function t(e,r){if(r>=n.length)return e;for(var i,a,u,o=-1,s=e.length,l=n[r++],c={},f={};++o<s;)(u=c[i=l(a=e[o])+""])?u.push(a):c[i]=[a];for(i in c)f[i]=t(c[i],r);return f}(t,0),0)},key:function(e){return n.push(e),t}}}function BA(t){$r.call(this,null,t)}function OA(t,n){return t.parent===n.parent?1:2}DA.Definition={type:"Nest",metadata:{treesource:!0,changes:!0},params:[{name:"keys",type:"field",array:!0},{name:"generate",type:"boolean"}]},et(DA,$r).transform=function(t,n){n.source||i("Nest transform requires an upstream data source.");var e=t.generate,r=t.modified(),a=n.clone(),u=this.value;return(!u||r||n.changed())&&(u&&u.each(function(t){t.children&&kt(t.data)&&a.rem.push(t.data)}),this.value=u=Lw({values:W(t.keys).reduce(function(t,n){return t.key(n),t},SA()).entries(a.source)},FA),e&&u.each(function(t){t.children&&(t=Dt(t.data),a.add.push(t),a.source.push(t))}),zw(u,Et,Et)),a.source.root=u,a},et(BA,$r).transform=function(t,n){n.source&&n.source.root||i(this.constructor.name+" transform requires a backing tree data source.");var e=this.layout(t.method),r=this.fields,a=n.source.root,u=t.as||r;t.field&&a.sum(t.field),t.sort&&a.sort(t.sort),function(t,n,e){for(var r,i=0,a=n.length;i<a;++i)(r=n[i])in e&&t[r](e[r])}(e,this.params,t),e.separation&&e.separation(!1!==t.separation?OA:g);try{this.value=e(a)}catch(t){i(t)}return a.each(function(t){!function(t,n,e){for(var r=t.data,i=0,a=n.length-1;i<a;++i)r[e[i]]=t[n[i]];r[e[a]]=t.children?t.children.length:0}(t,r,u)}),n.reflow(t.modified()).modifies(u).modifies("leaf")};var zA=["x","y","r","depth","children"];function NA(t){BA.call(this,t)}NA.Definition={type:"Pack",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"radius",type:"field",default:null},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:zA.length,default:zA}]};var TA=et(NA,BA);TA.layout=function(){var t=null,n=1,e=1,r=rA;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(uA(t)).eachAfter(oA(r,.5)).eachBefore(sA(1)):i.eachBefore(uA(aA)).eachAfter(oA(rA,1)).eachAfter(oA(r,i.r/Math.min(n,e))).eachBefore(sA(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=null==(e=n)?null:eA(e),i):t;var e},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:iA(+t),i):r},i},TA.params=["size","padding"],TA.fields=zA;var RA=["x0","y0","x1","y1","depth","children"];function PA(t){BA.call(this,t)}PA.Definition={type:"Partition",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"padding",type:"number",default:0},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:RA.length,default:RA}]};var LA=et(PA,BA);function qA(t){$r.call(this,null,t)}LA.layout=function(){var t=1,n=1,e=0,r=!1;function i(i){var a=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/a,i.eachBefore(function(t,n){return function(r){r.children&&cA(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,a=r.y0,u=r.x1-e,o=r.y1-e;u<i&&(i=u=(i+u)/2),o<a&&(a=o=(a+o)/2),r.x0=i,r.y0=a,r.x1=u,r.y1=o}}(n,a)),r&&i.eachBefore(lA),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},LA.params=["size","round","padding"],LA.fields=RA,qA.Definition={type:"Stratify",metadata:{treesource:!0},params:[{name:"key",type:"field",required:!0},{name:"parentKey",type:"field",required:!0}]},et(qA,$r).transform=function(t,n){n.source||i("Stratify transform requires an upstream data source.");var e=this.value,r=t.modified(),a=n.fork(n.ALL).materialize(n.SOURCE),u=!this.value||r||n.changed(n.ADD_REM)||n.modified(t.key.fields)||n.modified(t.parentKey.fields);return a.source=a.source.slice(),u&&(e=a.source.length?zw(mA().id(t.key).parentId(t.parentKey)(a.source),t.key,m):zw(mA()([{}]),t.key,t.key)),a.source.root=this.value=e,a};var UA={tidy:function(){var t=vA,n=1,e=1,r=null;function i(i){var s=function(t){for(var n,e,r,i,a,u=new wA(t,0),o=[u];n=o.pop();)if(r=n._.children)for(n.children=new Array(a=r.length),i=a-1;i>=0;--i)o.push(e=n.children[i]=new wA(r[i],i)),e.parent=n;return(u.parent=new wA(null,0)).children=[u],u}(i);if(s.eachAfter(a),s.parent.m=-s.z,s.eachBefore(u),r)i.eachBefore(o);else{var l=i,c=i,f=i;i.eachBefore(function(t){t.x<l.x&&(l=t),t.x>c.x&&(c=t),t.depth>f.depth&&(f=t)});var h=l===c?1:t(l,c)/2,d=h-l.x,p=n/(c.x+h+d),g=e/(f.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*g})}return i}function a(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,a=i.length;--a>=0;)(n=i[a]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var a=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-a):n.z=a}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,a=n,u=n,o=e,s=a.parent.children[0],l=a.m,c=u.m,f=o.m,h=s.m;o=xA(o),a=yA(a),o&&a;)s=yA(s),(u=xA(u)).a=n,(i=o.z+f-a.z-l+t(o._,a._))>0&&(_A(bA(o,n,r),n,i),l+=i,c+=i),f+=o.m,l+=a.m,h+=s.m,c+=u.m;o&&!xA(u)&&(u.t=o,u.m+=f-c),a&&!yA(s)&&(s.t=a,s.m+=l-h,r=n)}return r}(n,i,n.parent.A||r[0])}function u(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function o(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},cluster:function(){var t=Nw,n=1,e=1,r=!1;function i(i){var a,u=0;i.eachAfter(function(n){var e=n.children;e?(n.x=function(t){return t.reduce(Tw,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Rw,0)}(e)):(n.x=a?u+=t(n,a):0,n.y=0,a=n)});var o=function(t){for(var n;n=t.children;)t=n[0];return t}(i),s=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),l=o.x-t(o,s)/2,c=s.x+t(s,o)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-l)/(c-l)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i}},jA=["x","y","depth","children"];function $A(t){BA.call(this,t)}$A.Definition={type:"Tree",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"tidy",values:["tidy","cluster"]},{name:"size",type:"number",array:!0,length:2},{name:"nodeSize",type:"number",array:!0,length:2},{name:"separation",type:"boolean",default:!0},{name:"as",type:"string",array:!0,length:jA.length,default:jA}]};var IA=et($A,BA);function WA(t){$r.call(this,[],t)}IA.layout=function(t){var n=t||"tidy";if(UA.hasOwnProperty(n))return UA[n]();i("Unrecognized Tree layout method: "+n)},IA.params=["size","nodeSize"],IA.fields=jA,WA.Definition={type:"TreeLinks",metadata:{tree:!0,generates:!0,changes:!0},params:[]},et(WA,$r).transform=function(t,n){var e=this.value,r=n.source&&n.source.root,a=n.fork(n.NO_SOURCE),u={};return r||i("TreeLinks transform requires a tree data source."),n.changed(n.ADD_REM)?(a.rem=e,n.visit(n.SOURCE,function(t){u[Et(t)]=1}),r.each(function(t){var n=t.data,e=t.parent&&t.parent.data;e&&u[Et(n)]&&u[Et(e)]&&a.add.push(Dt({source:e,target:n}))}),this.value=a.add):n.changed(n.MOD)&&(n.visit(n.MOD,function(t){u[Et(t)]=1}),e.forEach(function(t){(u[Et(t.source)]||u[Et(t.target)])&&a.mod.push(t)})),a};var HA={binary:function(t,n,e,r,i){var a,u,o=t.children,s=o.length,l=new Array(s+1);for(l[0]=u=a=0;a<s;++a)l[a+1]=u+=o[a].value;!function t(n,e,r,i,a,u,s){if(n>=e-1){var c=o[n];return c.x0=i,c.y0=a,c.x1=u,void(c.y1=s)}for(var f=l[n],h=r/2+f,d=n+1,p=e-1;d<p;){var g=d+p>>>1;l[g]<h?d=g+1:p=g}h-l[d-1]<l[d]-h&&n+1<d&&--d;var m=l[d]-f,v=r-m;if(u-i>s-a){var y=(i*v+u*m)/r;t(n,d,m,i,a,y,s),t(d,e,v,y,a,u,s)}else{var x=(a*v+s*m)/r;t(n,d,m,i,a,u,x),t(d,e,v,i,x,u,s)}}(0,s,t.value,n,e,r,i)},dice:cA,slice:AA,slicedice:function(t,n,e,r,i){(1&t.depth?AA:cA)(t,n,e,r,i)},squarify:EA,resquarify:CA},YA=["x0","y0","x1","y1","depth","children"];function GA(t){BA.call(this,t)}GA.Definition={type:"Treemap",metadata:{tree:!0,modifies:!0},params:[{name:"field",type:"field"},{name:"sort",type:"compare"},{name:"method",type:"enum",default:"squarify",values:["squarify","resquarify","binary","dice","slice","slicedice"]},{name:"padding",type:"number",default:0},{name:"paddingInner",type:"number",default:0},{name:"paddingOuter",type:"number",default:0},{name:"paddingTop",type:"number",default:0},{name:"paddingRight",type:"number",default:0},{name:"paddingBottom",type:"number",default:0},{name:"paddingLeft",type:"number",default:0},{name:"ratio",type:"number",default:1.618033988749895},{name:"round",type:"boolean",default:!1},{name:"size",type:"number",array:!0,length:2},{name:"as",type:"string",array:!0,length:YA.length,default:YA}]};var VA=et(GA,BA);VA.layout=function(){var t=function(){var t=EA,n=!1,e=1,r=1,i=[0],a=rA,u=rA,o=rA,s=rA,l=rA;function c(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(f),i=[0],n&&t.eachBefore(lA),t}function f(n){var e=i[n.depth],r=n.x0+e,c=n.y0+e,f=n.x1-e,h=n.y1-e;f<r&&(r=f=(r+f)/2),h<c&&(c=h=(c+h)/2),n.x0=r,n.y0=c,n.x1=f,n.y1=h,n.children&&(e=i[n.depth+1]=a(n)/2,r+=l(n)-e,c+=u(n)-e,(f-=o(n)-e)<r&&(r=f=(r+f)/2),(h-=s(n)-e)<c&&(c=h=(c+h)/2),t(n,r,c,f,h))}return c.round=function(t){return arguments.length?(n=!!t,c):n},c.size=function(t){return arguments.length?(e=+t[0],r=+t[1],c):[e,r]},c.tile=function(n){return arguments.length?(t=eA(n),c):t},c.padding=function(t){return arguments.length?c.paddingInner(t).paddingOuter(t):c.paddingInner()},c.paddingInner=function(t){return arguments.length?(a="function"==typeof t?t:iA(+t),c):a},c.paddingOuter=function(t){return arguments.length?c.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):c.paddingTop()},c.paddingTop=function(t){return arguments.length?(u="function"==typeof t?t:iA(+t),c):u},c.paddingRight=function(t){return arguments.length?(o="function"==typeof t?t:iA(+t),c):o},c.paddingBottom=function(t){return arguments.length?(s="function"==typeof t?t:iA(+t),c):s},c.paddingLeft=function(t){return arguments.length?(l="function"==typeof t?t:iA(+t),c):l},c}();return t.ratio=function(n){var e=t.tile();e.ratio&&t.tile(e.ratio(n))},t.method=function(n){HA.hasOwnProperty(n)?t.tile(HA[n]):i("Unrecognized Treemap layout method: "+n)},t},VA.params=["method","ratio","size","round","padding","paddingInner","paddingOuter","paddingTop","paddingRight","paddingBottom","paddingLeft"],VA.fields=YA;var XA=Object.freeze({nest:DA,pack:NA,partition:PA,stratify:qA,tree:$A,treelinks:WA,treemap:GA});function ZA(t,n){var e,r,i,a,u,o,s=[],l=function(t){return t(a)};if(null==n)s.push(t);else for(e={},r=0,i=t.length;r<i;++r)a=t[r],(o=e[u=n.map(l)])||(e[u]=o=[],o.dims=u,s.push(o)),o.push(a);return s}function JA(t){$r.call(this,null,t)}JA.Definition={type:"Loess",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"bandwidth",type:"number",default:.3},{name:"as",type:"string",array:!0}]},et(JA,$r).transform=function(t,n){var r=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){const i=ZA(n.materialize(n.SOURCE).source,t.groupby),a=(t.groupby||[]).map(e),u=a.length,o=t.as||[e(t.x),e(t.y)],s=[];i.forEach(n=>{Li(n,t.x,t.y,t.bandwidth||.3).forEach(t=>{const e={};for(let t=0;t<u;++t)e[a[t]]=n.dims[t];e[o[0]]=t[0],e[o[1]]=t[1],s.push(Dt(e))})}),this.value&&(r.rem=this.value),this.value=r.add=r.source=s}return r};const QA={linear:Si,log:Bi,exp:Oi,pow:zi,quad:Ni,poly:Ti};function KA(t){$r.call(this,null,t)}KA.Definition={type:"Regression",metadata:{generates:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"string",default:"linear",values:Object.keys(QA)},{name:"order",type:"number",default:3},{name:"extent",type:"number",array:!0,length:2},{name:"params",type:"boolean",default:!1},{name:"as",type:"string",array:!0}]},et(KA,$r).transform=function(t,n){var r=n.fork(n.NO_SOURCE|n.NO_FIELDS);if(!this.value||n.changed()||t.modified()){const a=ZA(n.materialize(n.SOURCE).source,t.groupby),u=(t.groupby||[]).map(e),o=t.method||"linear",s=t.order||3,l=function(t,n){return"poly"===t?n:"quad"===t?2:1}(o,s),c=t.as||[e(t.x),e(t.y)],f=QA[o],h=[];let d=t.extent;QA.hasOwnProperty(o)||i("Invalid regression method: "+o),null!=d&&"log"===o&&d[0]<=0&&(n.dataflow.warn("Ignoring extent with values <= 0 for log regression."),d=null),a.forEach(e=>{if(e.length<=l)return void n.dataflow.warn("Skipping regression with more parameters than data points.");const r=f(e,t.x,t.y,s);if(t.params)return void h.push(Dt({keys:e.dims,coef:r.coef,rSquared:r.rSquared}));const i=d||J(e,t.x),a=t=>{const n={};for(let t=0;t<u.length;++t)n[u[t]]=e.dims[t];n[c[0]]=t[0],n[c[1]]=t[1],h.push(Dt(n))};"linear"===o?i.forEach(t=>a([t,r.predict(t)])):$i(r.predict,i,25,200).forEach(a)}),this.value&&(r.rem=this.value),this.value=r.add=r.source=h}return r};var tM=Object.freeze({loess:JA,regression:KA});function nM(t){return function(){return t}}function eM(t){return t[0]}function rM(t){return t[1]}function iM(){this._=null}function aM(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function uM(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function oM(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function sM(t){for(;t.L;)t=t.L;return t}function lM(t,n,e,r){var i=[null,null],a=zM.push(i)-1;return i.left=t,i.right=n,e&&fM(i,t,n,e),r&&fM(i,n,t,r),BM[t.index].halfedges.push(a),BM[n.index].halfedges.push(a),i}function cM(t,n,e){var r=[n,e];return r.left=t,r}function fM(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function hM(t,n,e,r,i){var a,u=t[0],o=t[1],s=u[0],l=u[1],c=0,f=1,h=o[0]-s,d=o[1]-l;if(a=n-s,h||!(a>0)){if(a/=h,h<0){if(a<c)return;a<f&&(f=a)}else if(h>0){if(a>f)return;a>c&&(c=a)}if(a=r-s,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>c&&(c=a)}else if(h>0){if(a<c)return;a<f&&(f=a)}if(a=e-l,d||!(a>0)){if(a/=d,d<0){if(a<c)return;a<f&&(f=a)}else if(d>0){if(a>f)return;a>c&&(c=a)}if(a=i-l,d||!(a<0)){if(a/=d,d<0){if(a>f)return;a>c&&(c=a)}else if(d>0){if(a<c)return;a<f&&(f=a)}return!(c>0||f<1)||(c>0&&(t[0]=[s+c*h,l+c*d]),f<1&&(t[1]=[s+f*h,l+f*d]),!0)}}}}}function dM(t,n,e,r,i){var a=t[1];if(a)return!0;var u,o,s=t[0],l=t.left,c=t.right,f=l[0],h=l[1],d=c[0],p=c[1],g=(f+d)/2,m=(h+p)/2;if(p===h){if(g<n||g>=r)return;if(f>d){if(s){if(s[1]>=i)return}else s=[g,e];a=[g,i]}else{if(s){if(s[1]<e)return}else s=[g,i];a=[g,e]}}else if(o=m-(u=(f-d)/(p-h))*g,u<-1||u>1)if(f>d){if(s){if(s[1]>=i)return}else s=[(e-o)/u,e];a=[(i-o)/u,i]}else{if(s){if(s[1]<e)return}else s=[(i-o)/u,i];a=[(e-o)/u,e]}else if(h<p){if(s){if(s[0]>=r)return}else s=[n,u*n+o];a=[r,u*r+o]}else{if(s){if(s[0]<n)return}else s=[r,u*r+o];a=[n,u*n+o]}return t[0]=s,t[1]=a,!0}function pM(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function gM(t,n){return n[+(n.left!==t.site)]}function mM(t,n){return n[+(n.left===t.site)]}iM.prototype={constructor:iM,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=sM(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(uM(this,e),e=(t=e).U),e.C=!1,r.C=!0,oM(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(oM(this,e),e=(t=e).U),e.C=!1,r.C=!0,uM(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,a=t.L,u=t.R;if(e=a?u?sM(u):a:u,i?i.L===t?i.L=e:i.R=e:this._=e,a&&u?(r=e.C,e.C=t.C,e.L=a,a.U=e,e!==u?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=u,u.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,uM(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,oM(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,uM(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,oM(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,uM(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,oM(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var vM,yM=[];function xM(){aM(this),this.x=this.y=this.arc=this.site=this.cy=null}function _M(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,a=e.site;if(r!==a){var u=i[0],o=i[1],s=r[0]-u,l=r[1]-o,c=a[0]-u,f=a[1]-o,h=2*(s*f-l*c);if(!(h>=-TM)){var d=s*s+l*l,p=c*c+f*f,g=(f*d-l*p)/h,m=(s*p-c*d)/h,v=yM.pop()||new xM;v.arc=t,v.site=i,v.x=g+u,v.y=(v.cy=m+o)+Math.sqrt(g*g+m*m),t.circle=v;for(var y=null,x=OM._;x;)if(v.y<x.y||v.y===x.y&&v.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}OM.insert(y,v),y||(vM=v)}}}}function bM(t){var n=t.circle;n&&(n.P||(vM=n.N),OM.remove(n),yM.push(n),aM(n),t.circle=null)}var wM=[];function AM(){aM(this),this.edge=this.site=this.circle=null}function MM(t){var n=wM.pop()||new AM;return n.site=t,n}function kM(t){bM(t),SM.remove(t),wM.push(t),aM(t)}function EM(t){var n=t.circle,e=n.x,r=n.cy,i=[e,r],a=t.P,u=t.N,o=[t];kM(t);for(var s=a;s.circle&&Math.abs(e-s.circle.x)<NM&&Math.abs(r-s.circle.cy)<NM;)a=s.P,o.unshift(s),kM(s),s=a;o.unshift(s),bM(s);for(var l=u;l.circle&&Math.abs(e-l.circle.x)<NM&&Math.abs(r-l.circle.cy)<NM;)u=l.N,o.push(l),kM(l),l=u;o.push(l),bM(l);var c,f=o.length;for(c=1;c<f;++c)l=o[c],s=o[c-1],fM(l.edge,s.site,l.site,i);s=o[0],(l=o[f-1]).edge=lM(s.site,l.site,null,i),_M(s),_M(l)}function CM(t){for(var n,e,r,i,a=t[0],u=t[1],o=SM._;o;)if((r=DM(o,u)-a)>NM)o=o.L;else{if(!((i=a-FM(o,u))>NM)){r>-NM?(n=o.P,e=o):i>-NM?(n=o,e=o.N):n=e=o;break}if(!o.R){n=o;break}o=o.R}!function(t){BM[t.index]={site:t,halfedges:[]}}(t);var s=MM(t);if(SM.insert(n,s),n||e){if(n===e)return bM(n),e=MM(n.site),SM.insert(s,e),s.edge=e.edge=lM(n.site,s.site),_M(n),void _M(e);if(e){bM(n),bM(e);var l=n.site,c=l[0],f=l[1],h=t[0]-c,d=t[1]-f,p=e.site,g=p[0]-c,m=p[1]-f,v=2*(h*m-d*g),y=h*h+d*d,x=g*g+m*m,_=[(m*y-d*x)/v+c,(h*x-g*y)/v+f];fM(e.edge,l,p,_),s.edge=lM(l,t,null,_),e.edge=lM(t,p,null,_),_M(n),_M(e)}else s.edge=lM(n.site,s.site)}}function DM(t,n){var e=t.site,r=e[0],i=e[1],a=i-n;if(!a)return r;var u=t.P;if(!u)return-1/0;var o=(e=u.site)[0],s=e[1],l=s-n;if(!l)return o;var c=o-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+i-a/2)))/f+r:(r+o)/2}function FM(t,n){var e=t.N;if(e)return DM(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var SM,BM,OM,zM,NM=1e-6,TM=1e-12;function RM(t,n){return n[1]-t[1]||n[0]-t[0]}function PM(t,n){var e,r,i,a=t.sort(RM).pop();for(zM=[],BM=new Array(t.length),SM=new iM,OM=new iM;;)if(i=vM,a&&(!i||a[1]<i.y||a[1]===i.y&&a[0]<i.x))a[0]===e&&a[1]===r||(CM(a),e=a[0],r=a[1]),a=t.pop();else{if(!i)break;EM(i.arc)}if(function(){for(var t,n,e,r,i=0,a=BM.length;i<a;++i)if((t=BM[i])&&(r=(n=t.halfedges).length)){var u=new Array(r),o=new Array(r);for(e=0;e<r;++e)u[e]=e,o[e]=pM(t,zM[n[e]]);for(u.sort(function(t,n){return o[n]-o[t]}),e=0;e<r;++e)o[e]=n[u[e]];for(e=0;e<r;++e)n[e]=o[e]}}(),n){var u=+n[0][0],o=+n[0][1],s=+n[1][0],l=+n[1][1];!function(t,n,e,r){for(var i,a=zM.length;a--;)dM(i=zM[a],t,n,e,r)&&hM(i,t,n,e,r)&&(Math.abs(i[0][0]-i[1][0])>NM||Math.abs(i[0][1]-i[1][1])>NM)||delete zM[a]}(u,o,s,l),function(t,n,e,r){var i,a,u,o,s,l,c,f,h,d,p,g,m=BM.length,v=!0;for(i=0;i<m;++i)if(a=BM[i]){for(u=a.site,o=(s=a.halfedges).length;o--;)zM[s[o]]||s.splice(o,1);for(o=0,l=s.length;o<l;)p=(d=mM(a,zM[s[o]]))[0],g=d[1],f=(c=gM(a,zM[s[++o%l]]))[0],h=c[1],(Math.abs(p-f)>NM||Math.abs(g-h)>NM)&&(s.splice(o,0,zM.push(cM(u,d,Math.abs(p-t)<NM&&r-g>NM?[t,Math.abs(f-t)<NM?h:r]:Math.abs(g-r)<NM&&e-p>NM?[Math.abs(h-r)<NM?f:e,r]:Math.abs(p-e)<NM&&g-n>NM?[e,Math.abs(f-e)<NM?h:n]:Math.abs(g-n)<NM&&p-t>NM?[Math.abs(h-n)<NM?f:t,n]:null))-1),++l);l&&(v=!1)}if(v){var y,x,_,b=1/0;for(i=0,v=null;i<m;++i)(a=BM[i])&&(_=(y=(u=a.site)[0]-t)*y+(x=u[1]-n)*x)<b&&(b=_,v=a);if(v){var w=[t,n],A=[t,r],M=[e,r],k=[e,n];v.halfedges.push(zM.push(cM(u=v.site,w,A))-1,zM.push(cM(u,A,M))-1,zM.push(cM(u,M,k))-1,zM.push(cM(u,k,w))-1)}}for(i=0;i<m;++i)(a=BM[i])&&(a.halfedges.length||delete BM[i])}(u,o,s,l)}this.edges=zM,this.cells=BM,SM=OM=zM=BM=null}function LM(t){$r.call(this,null,t)}PM.prototype={constructor:PM,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return gM(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(a=(i=e.halfedges).length)for(var i,a,u,o,s,l,c=e.site,f=-1,h=n[i[a-1]],d=h.left===c?h.right:h.left;++f<a;)u=d,d=(h=n[i[f]]).left===c?h.right:h.left,u&&d&&r<u.index&&r<d.index&&(s=u,l=d,((o=c)[0]-l[0])*(s[1]-o[1])-(o[0]-s[0])*(l[1]-o[1])<0)&&t.push([c.data,u.data,d.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,n,e){for(var r,i,a=this,u=a._found||0,o=a.cells.length;!(i=a.cells[u]);)if(++u>=o)return null;var s=t-i.site[0],l=n-i.site[1],c=s*s+l*l;do{i=a.cells[r=u],u=null,i.halfedges.forEach(function(e){var r=a.edges[e],o=r.left;if(o!==i.site&&o||(o=r.right)){var s=t-o[0],l=n-o[1],f=s*s+l*l;f<c&&(c=f,u=o.index)}})}while(null!==u);return a._found=r,null==e||c<=e*e?i.site:null}},LM.Definition={type:"Voronoi",metadata:{modifies:!0},params:[{name:"x",type:"field",required:!0},{name:"y",type:"field",required:!0},{name:"size",type:"number",array:!0,length:2},{name:"extent",type:"array",array:!0,length:2,default:[[-1e5,-1e5],[1e5,1e5]],content:{type:"number",array:!0,length:2}},{name:"as",type:"string",default:"path"}]};var qM=et(LM,$r),UM=[[-1e5,-1e5],[1e5,1e5]];qM.transform=function(t,n){var e,r,i,a,u=t.as||"path",o=n.source;for(e=function(){var t=eM,n=rM,e=null;function r(r){return new PM(r.map(function(e,i){var a=[Math.round(t(e,i,r)/NM)*NM,Math.round(n(e,i,r)/NM)*NM];return a.index=i,a.data=e,a}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:nM(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:nM(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r}().x(t.x).y(t.y),t.size?e.size(t.size):e.extent(t.extent||UM),this.value=e=e(o),r=e.polygons(),i=0,a=o.length;i<a;++i)o[i][u]=r[i]?"M"+r[i].join("L")+"Z":null;return n.reflow(t.modified()).modifies(u)};var jM=Object.freeze({voronoi:LM}),$M=Math.PI/180,IM=64,WM=2048;function HM(){var t,n,e,r,i,a,u,o=[256,256],s=XM,l=[],c=Math.random,f={};function h(t,n,e){for(var r,i,a,u,l,f=n.x,h=n.y,d=Math.sqrt(o[0]*o[0]+o[1]*o[1]),p=s(o),g=c()<.5?1:-1,m=-g;(r=p(m+=g))&&(i=~~r[0],a=~~r[1],!(Math.min(Math.abs(i),Math.abs(a))>=d));)if(n.x=f+i,n.y=h+a,!(n.x+n.x0<0||n.y+n.y0<0||n.x+n.x1>o[0]||n.y+n.y1>o[1]||e&&GM(n,t,o[0])||e&&(l=e,!((u=n).x+u.x1>l[0].x&&u.x+u.x0<l[1].x&&u.y+u.y1>l[0].y&&u.y+u.y0<l[1].y)))){for(var v,y=n.sprite,x=n.width>>5,_=o[0]>>5,b=n.x-(x<<4),w=127&b,A=32-w,M=n.y1-n.y0,k=(n.y+n.y0)*_+(b>>5),E=0;E<M;E++){v=0;for(var C=0;C<=x;C++)t[k+C]|=v<<A|(C<x?(v=y[E*x+C])>>>w:0);k+=_}return n.sprite=null,!0}return!1}return f.layout=function(){for(var s=function(t){t.width=t.height=1;var n=Math.sqrt(t.getContext("2d").getImageData(0,0,1,1).data.length>>2);t.width=(IM<<5)/n,t.height=WM/n;var e=t.getContext("2d");return e.fillStyle=e.strokeStyle="red",e.textAlign="center",{context:e,ratio:n}}(no()),f=function(t){var n=[],e=-1;for(;++e<t;)n[e]=0;return n}((o[0]>>5)*o[1]),d=null,p=l.length,g=-1,m=[],v=l.map(function(o){return{text:t(o),font:n(o),style:r(o),weight:i(o),rotate:a(o),size:~~e(o),padding:u(o),xoff:0,yoff:0,x1:0,y1:0,x0:0,y0:0,hasText:!1,sprite:null,datum:o}}).sort(function(t,n){return n.size-t.size});++g<p;){var y=v[g];y.x=o[0]*(c()+.5)>>1,y.y=o[1]*(c()+.5)>>1,YM(s,y,v,g),y.hasText&&h(f,y,d)&&(m.push(y),d?VM(d,y):d=[{x:y.x+y.x0,y:y.y+y.y0},{x:y.x+y.x1,y:y.y+y.y1}],y.x-=o[0]>>1,y.y-=o[1]>>1)}return m},f.words=function(t){return arguments.length?(l=t,f):l},f.size=function(t){return arguments.length?(o=[+t[0],+t[1]],f):o},f.font=function(t){return arguments.length?(n=ZM(t),f):n},f.fontStyle=function(t){return arguments.length?(r=ZM(t),f):r},f.fontWeight=function(t){return arguments.length?(i=ZM(t),f):i},f.rotate=function(t){return arguments.length?(a=ZM(t),f):a},f.text=function(n){return arguments.length?(t=ZM(n),f):t},f.spiral=function(t){return arguments.length?(s=JM[t]||t,f):s},f.fontSize=function(t){return arguments.length?(e=ZM(t),f):e},f.padding=function(t){return arguments.length?(u=ZM(t),f):u},f.random=function(t){return arguments.length?(c=t,f):c},f}function YM(t,n,e,r){if(!n.sprite){var i=t.context,a=t.ratio;i.clearRect(0,0,(IM<<5)/a,WM/a);var u,o,s,l,c,f=0,h=0,d=0,p=e.length;for(--r;++r<p;){if(n=e[r],i.save(),i.font=n.style+" "+n.weight+" "+~~((n.size+1)/a)+"px "+n.font,u=i.measureText(n.text+"m").width*a,s=n.size<<1,n.rotate){var g=Math.sin(n.rotate*$M),m=Math.cos(n.rotate*$M),v=u*m,y=u*g,x=s*m,_=s*g;u=Math.max(Math.abs(v+_),Math.abs(v-_))+31>>5<<5,s=~~Math.max(Math.abs(y+x),Math.abs(y-x))}else u=u+31>>5<<5;if(s>d&&(d=s),f+u>=IM<<5&&(f=0,h+=d,d=0),h+s>=WM)break;i.translate((f+(u>>1))/a,(h+(s>>1))/a),n.rotate&&i.rotate(n.rotate*$M),i.fillText(n.text,0,0),n.padding&&(i.lineWidth=2*n.padding,i.strokeText(n.text,0,0)),i.restore(),n.width=u,n.height=s,n.xoff=f,n.yoff=h,n.x1=u>>1,n.y1=s>>1,n.x0=-n.x1,n.y0=-n.y1,n.hasText=!0,f+=u}for(var b=i.getImageData(0,0,(IM<<5)/a,WM/a).data,w=[];--r>=0;)if((n=e[r]).hasText){for(o=(u=n.width)>>5,s=n.y1-n.y0,l=0;l<s*o;l++)w[l]=0;if(null==(f=n.xoff))return;h=n.yoff;var A=0,M=-1;for(c=0;c<s;c++){for(l=0;l<u;l++){var k=o*c+(l>>5),E=b[(h+c)*(IM<<5)+(f+l)<<2]?1<<31-l%32:0;w[k]|=E,A|=E}A?M=c:(n.y0++,s--,c--,h++)}n.y1=n.y0+M,n.sprite=w.slice(0,(n.y1-n.y0)*o)}}}function GM(t,n,e){e>>=5;for(var r,i=t.sprite,a=t.width>>5,u=t.x-(a<<4),o=127&u,s=32-o,l=t.y1-t.y0,c=(t.y+t.y0)*e+(u>>5),f=0;f<l;f++){r=0;for(var h=0;h<=a;h++)if((r<<s|(h<a?(r=i[f*a+h])>>>o:0))&n[c+h])return!0;c+=e}return!1}function VM(t,n){var e=t[0],r=t[1];n.x+n.x0<e.x&&(e.x=n.x+n.x0),n.y+n.y0<e.y&&(e.y=n.y+n.y0),n.x+n.x1>r.x&&(r.x=n.x+n.x1),n.y+n.y1>r.y&&(r.y=n.y+n.y1)}function XM(t){var n=t[0]/t[1];return function(t){return[n*(t*=.1)*Math.cos(t),t*Math.sin(t)]}}function ZM(t){return"function"==typeof t?t:function(){return t}}var JM={archimedean:XM,rectangular:function(t){var n=4*t[0]/t[1],e=0,r=0;return function(t){var i=t<0?-1:1;switch(Math.sqrt(1+4*i*t)-i&3){case 0:e+=n;break;case 1:r+=4;break;case 2:e-=n;break;default:r-=4}return[e,r]}}},QM=["x","y","font","fontSize","fontStyle","fontWeight","angle"],KM=["text","font","rotate","fontSize","fontStyle","fontWeight"];function tk(t){$r.call(this,HM(),t)}tk.Definition={type:"Wordcloud",metadata:{modifies:!0},params:[{name:"size",type:"number",array:!0,length:2},{name:"font",type:"string",expr:!0,default:"sans-serif"},{name:"fontStyle",type:"string",expr:!0,default:"normal"},{name:"fontWeight",type:"string",expr:!0,default:"normal"},{name:"fontSize",type:"number",expr:!0,default:14},{name:"fontSizeRange",type:"number",array:"nullable",default:[10,50]},{name:"rotate",type:"number",expr:!0,default:0},{name:"text",type:"field"},{name:"spiral",type:"string",values:["archimedean","rectangular"]},{name:"padding",type:"number",expr:!0},{name:"as",type:"string",array:!0,length:7,default:QM}]},et(tk,$r).transform=function(n,e){!n.size||n.size[0]&&n.size[1]||i("Wordcloud size dimensions must be non-zero.");var r=n.modified();if(r||e.changed(e.ADD_REM)||KM.some(function(t){var r=n[t];return Y(r)&&e.modified(r.fields)})){var a,u=e.materialize(e.SOURCE).source,o=this.value,s=n.as||QM,l=n.fontSize||14;if(Y(l)?a=n.fontSizeRange:l=V(l),a){var c=l,f=Zg("sqrt")().domain(function(t,n){for(var e,r=1/0,i=-1/0,a=0,u=n.length;a<u;++a)(e=t(n[a]))<r&&(r=e),e>i&&(i=e);return[r,i]}(c,u)).range(a);l=function(t){return f(c(t))}}u.forEach(function(t){t[s[0]]=NaN,t[s[1]]=NaN,t[s[3]]=0});for(var h,d,p=o.words(u).text(n.text).size(n.size||[500,500]).padding(n.padding||1).spiral(n.spiral||"archimedean").rotate(n.rotate||0).font(n.font||"sans-serif").fontStyle(n.fontStyle||"normal").fontWeight(n.fontWeight||"normal").fontSize(l).random(t.random).layout(),g=o.size(),m=g[0]>>1,v=g[1]>>1,y=0,x=p.length;y<x;++y)(d=(h=p[y]).datum)[s[0]]=h.x+m,d[s[1]]=h.y+v,d[s[2]]=h.font,d[s[3]]=h.size,d[s[4]]=h.style,d[s[5]]=h.weight,d[s[6]]=h.rotate;return e.reflow(r).modifies(s)}};var nk=Object.freeze({wordcloud:tk});function ek(t){return new Uint32Array(t)}function rk(t,n,e){var r=(n<257?function(t){return new Uint8Array(t)}:n<65537?function(t){return new Uint16Array(t)}:ek)(t);return e&&r.set(e),r}function ik(t,n,e){var r=1<<n;return{one:r,zero:~r,range:e.slice(),bisect:t.bisect,index:t.index,size:t.size,onAdd:function(t,n){var e,i=this.bisect(this.range,t.value),a=t.index,u=i[0],o=i[1],s=a.length;for(e=0;e<u;++e)n[a[e]]|=r;for(e=o;e<s;++e)n[a[e]]|=r;return this}}}function ak(){var t=ek(0),n=[],e=0;return{insert:function(r,i,a){if(!i.length)return[];var u,o,s,l=e,c=i.length,f=Array(c),h=ek(c);for(s=0;s<c;++s)f[s]=r(i[s]),h[s]=s;if(f=function(t,n){return t.sort.call(n,function(n,e){var r=t[n],i=t[e];return r<i?-1:r>i?1:0}),function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r}(t,n)}(f,h),l)u=n,o=t,n=Array(l+c),t=ek(l+c),function(t,n,e,r,i,a,u,o,s){var l,c=0,f=0;for(l=0;c<r&&f<u;++l)n[c]<i[f]?(o[l]=n[c],s[l]=e[c++]):(o[l]=i[f],s[l]=a[f++]+t);for(;c<r;++c,++l)o[l]=n[c],s[l]=e[c];for(;f<u;++f,++l)o[l]=i[f],s[l]=a[f]+t}(a,u,o,l,f,h,c,n,t);else{if(a>0)for(s=0;s<c;++s)h[s]+=a;n=f,t=h}return e=l+c,{index:h,value:f}},remove:function(r,i){var a,u,o,s=e;for(u=0;!i[t[u]]&&u<s;++u);for(o=u;u<s;++u)i[a=t[u]]||(t[o]=a,n[o]=n[u],++o);e=s-r},bisect:function(t,r){var i;return r?i=r.length:(r=n,i=e),[oi(r,t[0],0,i),ui(r,t[1],0,i)]},reindex:function(n){for(var r=0,i=e;r<i;++r)t[r]=n[t[r]]},index:function(){return t},size:function(){return e}}}function uk(t){var n,e,r,i,a;$r.call(this,(n=8,e=[],r=ek(0),i=rk(0,n),a=rk(0,n),{data:function(){return e},seen:function(){return t=r,n=e.length,r=t.length>=n?t:((i=i||new t.constructor(n)).set(t),i);var t,n,i},add:function(t){for(var n,r=0,i=e.length,a=t.length;r<a;++r)(n=t[r])._index=i++,e.push(n)},remove:function(t,n){var r,u,o,s=e.length,l=Array(s-t),c=e;for(u=0;!n[u]&&u<s;++u)l[u]=e[u],c[u]=u;for(o=u;u<s;++u)r=e[u],n[u]?c[u]=-1:(c[u]=o,i[o]=i[u],a[o]=a[u],l[o]=r,r._index=o++),i[u]=0;return e=l,c},size:function(){return e.length},curr:function(){return i},prev:function(){return a},reset:function(t){a[t]=i[t]},all:function(){return n<257?255:n<65537?65535:4294967295},set:function(t,n){i[t]|=n},clear:function(t,n){i[t]&=~n},resize:function(t,e){(t>i.length||e>n)&&(n=Math.max(e,n),i=rk(t,n,i),a=rk(t,n))}}),t),this._indices=null,this._dims=null}uk.Definition={type:"CrossFilter",metadata:{},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"query",type:"array",array:!0,required:!0,content:{type:"number",array:!0,length:2}}]};var ok=et(uk,$r);function sk(t){$r.call(this,null,t)}ok.transform=function(t,n){return this._dims?t.modified("fields")||t.fields.some(function(t){return n.modified(t.fields)})?this.reinit(t,n):this.eval(t,n):this.init(t,n)},ok.init=function(t,n){for(var e,r,i=t.fields,a=t.query,u=this._indices={},o=this._dims=[],s=a.length,l=0;l<s;++l)r=u[e=i[l].fname]||(u[e]=ak()),o.push(ik(r,l,a[l]));return this.eval(t,n)},ok.reinit=function(t,n){var e,r,i,a,u,o,s,l,c,f=n.materialize().fork(),h=t.fields,d=t.query,p=this._indices,g=this._dims,m=this.value,v=m.curr(),y=m.prev(),x=m.all(),_=f.rem=f.add,b=f.mod,w=d.length,A={};if(y.set(v),n.rem.length&&(u=this.remove(t,n,f)),n.add.length&&m.add(n.add),n.mod.length)for(o={},s=0,l=(a=n.mod).length;s<l;++s)o[a[s]._index]=1;for(s=0;s<w;++s)c=h[s],(!g[s]||t.modified("fields",s)||n.modified(c.fields))&&((e=A[i=c.fname])||(p[i]=r=ak(),A[i]=e=r.insert(c,n.source,0)),g[s]=ik(r,s,d[s]).onAdd(e,v));for(s=0,l=m.data().length;s<l;++s)u[s]||(y[s]!==v[s]?_.push(s):o[s]&&v[s]!==x&&b.push(s));return m.mask=(1<<w)-1,f},ok.eval=function(t,n){var e=n.materialize().fork(),r=this._dims.length,i=0;return n.rem.length&&(this.remove(t,n,e),i|=(1<<r)-1),t.modified("query")&&!t.modified("fields")&&(i|=this.update(t,n,e)),n.add.length&&(this.insert(t,n,e),i|=(1<<r)-1),n.mod.length&&(this.modify(n,e),i|=(1<<r)-1),this.value.mask=i,e},ok.insert=function(t,n,e){var r,i,a,u=n.add,o=this.value,s=this._dims,l=this._indices,c=t.fields,f={},h=e.add,d=o.size(),p=d+u.length,g=s.length;o.resize(p,g),o.add(u);var m=o.curr(),v=o.prev(),y=o.all();for(r=0;r<g;++r)a=f[i=c[r].fname]||(f[i]=l[i].insert(c[r],u,d)),s[r].onAdd(a,m);for(;d<p;++d)v[d]=y,m[d]!==y&&h.push(d)},ok.modify=function(t,n){var e,r,i,a=n.mod,u=this.value,o=u.curr(),s=u.all(),l=t.mod;for(e=0,r=l.length;e<r;++e)o[i=l[e]._index]!==s&&a.push(i)},ok.remove=function(t,n,e){var r,i,a,u,o=this._indices,s=this.value,l=s.curr(),c=s.prev(),f=s.all(),h={},d=e.rem,p=n.rem;for(r=0,i=p.length;r<i;++r)h[a=p[r]._index]=1,c[a]=u=l[a],l[a]=f,u!==f&&d.push(a);for(a in o)o[a].remove(i,h);return this.reindex(n,i,h),h},ok.reindex=function(t,n,e){var r=this._indices,i=this.value;t.runAfter(function(){var t=i.remove(n,e);for(var a in r)r[a].reindex(t)})},ok.update=function(t,n,e){var r,i,a=this._dims,u=t.query,o=n.stamp,s=a.length,l=0;for(e.filters=0,i=0;i<s;++i)t.modified("query",i)&&(r=i,++l);if(1===l)l=a[r].one,this.incrementOne(a[r],u[r],e.add,e.rem);else for(i=0,l=0;i<s;++i)t.modified("query",i)&&(l|=a[i].one,this.incrementAll(a[i],u[i],o,e.add),e.rem=e.add);return l},ok.incrementAll=function(t,n,e,r){var i,a,u,o=this.value,s=o.seen(),l=o.curr(),c=o.prev(),f=t.index(),h=t.bisect(t.range),d=t.bisect(n),p=d[0],g=d[1],m=h[0],v=h[1],y=t.one;if(p<m)for(i=p,a=Math.min(m,g);i<a;++i)s[u=f[i]]!==e&&(c[u]=l[u],s[u]=e,r.push(u)),l[u]^=y;else if(p>m)for(i=m,a=Math.min(p,v);i<a;++i)s[u=f[i]]!==e&&(c[u]=l[u],s[u]=e,r.push(u)),l[u]^=y;if(g>v)for(i=Math.max(p,v),a=g;i<a;++i)s[u=f[i]]!==e&&(c[u]=l[u],s[u]=e,r.push(u)),l[u]^=y;else if(g<v)for(i=Math.max(m,g),a=v;i<a;++i)s[u=f[i]]!==e&&(c[u]=l[u],s[u]=e,r.push(u)),l[u]^=y;t.range=n.slice()},ok.incrementOne=function(t,n,e,r){var i,a,u,o=this.value.curr(),s=t.index(),l=t.bisect(t.range),c=t.bisect(n),f=c[0],h=c[1],d=l[0],p=l[1],g=t.one;if(f<d)for(i=f,a=Math.min(d,h);i<a;++i)o[u=s[i]]^=g,e.push(u);else if(f>d)for(i=d,a=Math.min(f,p);i<a;++i)o[u=s[i]]^=g,r.push(u);if(h>p)for(i=Math.max(f,p),a=h;i<a;++i)o[u=s[i]]^=g,e.push(u);else if(h<p)for(i=Math.max(d,h),a=p;i<a;++i)o[u=s[i]]^=g,r.push(u);t.range=n.slice()},sk.Definition={type:"ResolveFilter",metadata:{},params:[{name:"ignore",type:"number",required:!0,description:"A bit mask indicating which filters to ignore."},{name:"filter",type:"object",required:!0,description:"Per-tuple filter bitmaps from a CrossFilter transform."}]},et(sk,$r).transform=function(t,n){var e=~(t.ignore||0),r=t.filter,i=r.mask;if(0==(i&e))return n.StopPropagation;var a=n.fork(n.ALL),u=r.data(),o=r.curr(),s=r.prev(),l=function(t){return o[t]&e?null:u[t]};return a.filter(a.MOD,l),i&i-1?(a.filter(a.ADD,function(t){var n=o[t]&e;return!n&&n^s[t]&e?u[t]:null}),a.filter(a.REM,function(t){var n=o[t]&e;return n&&!(n^n^s[t]&e)?u[t]:null})):(a.filter(a.ADD,l),a.filter(a.REM,function(t){return(o[t]&e)===i?u[t]:null})),a.filter(a.SOURCE,function(t){return l(t._index)})};var lk=Object.freeze({crossfilter:uk,resolvefilter:sk}),ck="default";function fk(t){var n=t._signals.cursor;n||(t._signals.cursor=n=t.add({user:ck,item:null})),t.on(t.events("view","mousemove"),n,function(t,e){var r=n.value,i=r?s(r)?r:r.user:ck,a=e.item&&e.item.cursor||null;return r&&i===r.user&&a==r.item?r:{user:i,item:a}}),t.add(null,function(t){var n,e=t.cursor,r=this.value;return s(e)||(r=e.item,e=e.user),n=e&&e!==ck?e:r||e,"undefined"!=typeof document&&document.body&&(document.body.style.cursor=n),r},{cursor:n})}function hk(t,n){var e=t._runtime.data;return e.hasOwnProperty(n)||i("Unrecognized data set: "+n),e[n]}function dk(t,n){Ot(n)||i("Second argument to changes must be a changeset.");var e=hk(this,t);return e.modified=!0,this.pulse(e.input,n)}function pk(t){var n=t.padding();return Math.max(0,t._viewWidth+n.left+n.right)}function gk(t){var n=t.padding();return Math.max(0,t._viewHeight+n.top+n.bottom)}function mk(t){var n=t.padding(),e=t._origin;return[n.left+e[0],n.top+e[1]]}function vk(t,n,e){var r,i,a=t._renderer,u=a&&a.canvas();return u&&(i=mk(t),(r=Bc(n.changedTouches?n.changedTouches[0]:n,u))[0]-=i[0],r[1]-=i[1]),n.dataflow=t,n.item=e,n.vega=function(t,n,e){var r=n?"group"===n.mark.marktype?n:n.mark.group:null;function i(t){var e,i=r;if(t)for(e=n;e;e=e.mark.group)if(e.mark.name===t){i=e;break}return i&&i.mark&&i.mark.interactive?i:{}}function a(t){if(!t)return e;s(t)&&(t=i(t));for(var n=e.slice();t;)n[0]-=t.x||0,n[1]-=t.y||0,t=t.mark&&t.mark.group;return n}return{view:V(t),item:V(n||{}),group:i,xy:a,x:function(t){return a(t)[0]},y:function(t){return a(t)[1]}}}(t,e,r),n}var yk="view",xk="timer",_k="window",bk={trap:!1};function wk(t){return t.item}function Ak(t){var n=t.item.mark.source;return n.source||n}function Mk(t){return function(n,e){return e.vega.view().changeset().encode(e.item,t)}}function kk(t,n,e){var r=document.createElement(t);for(var i in n)r.setAttribute(i,n[i]);return null!=e&&(r.textContent=e),r}var Ek="vega-bind",Ck="vega-bind-name",Dk="vega-bind-radio",Fk="vega-option-";function Sk(t,n,e){if(n){var r=e.param,i=e.state;return i||(i=e.state={elements:null,active:!1,set:null,update:function(n){n!==t.signal(r.signal)&&t.runAsync(null,function(){i.source=!0,t.signal(r.signal,n)})}},r.debounce&&(i.update=X(r.debounce,i.update))),function(t,n,e,r){var i=kk("div",{class:Ek});i.appendChild(kk("span",{class:Ck},e.name||e.signal)),n.appendChild(i);var a=Bk;switch(e.input){case"checkbox":a=Ok;break;case"select":a=zk;break;case"radio":a=Nk;break;case"range":a=Tk}a(t,i,e,r)}(i,n,r,t.signal(r.signal)),i.active||(t.on(t._signals[r.signal],null,function(){i.source?i.source=!1:i.set(t.signal(r.signal))}),i.active=!0),i}}function Bk(t,n,e,r){var i=kk("input");for(var a in e)"signal"!==a&&"element"!==a&&i.setAttribute("input"===a?"type":a,e[a]);i.setAttribute("name",e.signal),i.value=r,n.appendChild(i),i.addEventListener("input",function(){t.update(i.value)}),t.elements=[i],t.set=function(t){i.value=t}}function Ok(t,n,e,r){var i={type:"checkbox",name:e.signal};r&&(i.checked=!0);var a=kk("input",i);n.appendChild(a),a.addEventListener("change",function(){t.update(a.checked)}),t.elements=[a],t.set=function(t){a.checked=!!t||null}}function zk(t,n,e,r){var i=kk("select",{name:e.signal});e.options.forEach(function(t){var n={value:t};Rk(t,r)&&(n.selected=!0),i.appendChild(kk("option",n,t+""))}),n.appendChild(i),i.addEventListener("change",function(){t.update(e.options[i.selectedIndex])}),t.elements=[i],t.set=function(t){for(var n=0,r=e.options.length;n<r;++n)if(Rk(e.options[n],t))return void(i.selectedIndex=n)}}function Nk(t,n,e,r){var i=kk("span",{class:Dk});n.appendChild(i),t.elements=e.options.map(function(n){var a=Fk+e.signal+"-"+n,u={id:a,type:"radio",name:e.signal,value:n};Rk(n,r)&&(u.checked=!0);var o=kk("input",u);return o.addEventListener("change",function(){t.update(n)}),i.appendChild(o),i.appendChild(kk("label",{for:a},n+"")),o}),t.set=function(n){for(var e=t.elements,r=0,i=e.length;r<i;++r)Rk(e[r].value,n)&&(e[r].checked=!0)}}function Tk(t,n,e,r){r=void 0!==r?r:(+e.max+ +e.min)/2;var i=e.min||Math.min(0,+r)||0,a=e.max||Math.max(100,+r)||100,u=e.step||gi(i,a,100),o=kk("input",{type:"range",name:e.signal,min:i,max:a,step:u});o.value=r;var s=kk("label",{},+r);function l(){s.textContent=o.value,t.update(+o.value)}n.appendChild(o),n.appendChild(s),o.addEventListener("input",l),o.addEventListener("change",l),t.elements=[o],t.set=function(t){o.value=t,s.textContent=t}}function Rk(t,n){return t===n||t+""==n+""}function Pk(t,n,e,r,i,a){return(n=n||new r(t.loader())).initialize(e,pk(t),gk(t),mk(t),i,a).background(t._background)}function Lk(t,n){return n?function(){try{n.apply(this,arguments)}catch(n){t.error(n)}}:null}function qk(t,n){if("string"==typeof n){if("undefined"==typeof document)return t.error("DOM document instance not found."),null;if(!(n=document.querySelector(n)))return t.error("Signal bind element not found: "+n),null}if(n)try{n.innerHTML=""}catch(e){n=null,t.error(e)}return n}async function Uk(t,n,e,r){const a=Mf(n),u=a&&a.headless;return u||i("Unrecognized renderer type: "+n),await t.runAsync(),Pk(t,null,null,u,e,r).renderAsync(t._scenegraph.root)}var jk,$k,Ik,Wk,Hk,Yk="RawCode",Gk="Literal",Vk="Property",Xk="Identifier",Zk="ArrayExpression",Jk="BinaryExpression",Qk="CallExpression",Kk="ConditionalExpression",tE="LogicalExpression",nE="MemberExpression",eE="ObjectExpression",rE="UnaryExpression";function iE(t){this.type=t}iE.prototype.visit=function(t){var n,e,r;if(t(this))return 1;for(e=0,r=(n=function(t){switch(t.type){case Zk:return t.elements;case Jk:case tE:return[t.left,t.right];case Qk:var n=t.arguments.slice();return n.unshift(t.callee),n;case Kk:return[t.test,t.consequent,t.alternate];case nE:return[t.object,t.property];case eE:return t.properties;case Vk:return[t.key,t.value];case rE:return[t.argument];case Xk:case Gk:case Yk:default:return[]}}(this)).length;e<r;++e)if(n[e].visit(t))return 1};var aE=1,uE=2,oE=3,sE=4,lE=5,cE=6,fE=7,hE=8;(jk={})[aE]="Boolean",jk[uE]="<end>",jk[oE]="Identifier",jk[sE]="Keyword",jk[lE]="Null",jk[cE]="Numeric",jk[fE]="Punctuator",jk[hE]="String",jk[9]="RegularExpression";var dE="ArrayExpression",pE="BinaryExpression",gE="CallExpression",mE="ConditionalExpression",vE="Identifier",yE="Literal",xE="LogicalExpression",_E="MemberExpression",bE="ObjectExpression",wE="Property",AE="UnaryExpression",ME="Unexpected token %0",kE="Unexpected number",EE="Unexpected string",CE="Unexpected identifier",DE="Unexpected reserved word",FE="Unexpected end of input",SE="Invalid regular expression",BE="Invalid regular expression: missing /",OE="Octal literals are not allowed in strict mode.",zE="Duplicate data property in object literal not allowed in strict mode",NE="ILLEGAL",TE="Disabled.",RE=new RegExp("[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]"),PE=new RegExp("[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]");function LE(t,n){if(!t)throw new Error("ASSERT: "+n)}function qE(t){return t>=48&&t<=57}function UE(t){return"0123456789abcdefABCDEF".indexOf(t)>=0}function jE(t){return"01234567".indexOf(t)>=0}function $E(t){return 32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0}function IE(t){return 10===t||13===t||8232===t||8233===t}function WE(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&RE.test(String.fromCharCode(t))}function HE(t){return 36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&PE.test(String.fromCharCode(t))}var YE={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function GE(){for(var t;Ik<Wk&&($E(t=$k.charCodeAt(Ik))||IE(t));)++Ik}function VE(t){var n,e,r,i=0;for(e="u"===t?4:2,n=0;n<e;++n)Ik<Wk&&UE($k[Ik])?(r=$k[Ik++],i=16*i+"0123456789abcdef".indexOf(r.toLowerCase())):cC({},ME,NE);return String.fromCharCode(i)}function XE(){var t,n,e,r;for(n=0,"}"===(t=$k[Ik])&&cC({},ME,NE);Ik<Wk&&UE(t=$k[Ik++]);)n=16*n+"0123456789abcdef".indexOf(t.toLowerCase());return(n>1114111||"}"!==t)&&cC({},ME,NE),n<=65535?String.fromCharCode(n):(e=55296+(n-65536>>10),r=56320+(n-65536&1023),String.fromCharCode(e,r))}function ZE(){var t,n;for(t=$k.charCodeAt(Ik++),n=String.fromCharCode(t),92===t&&(117!==$k.charCodeAt(Ik)&&cC({},ME,NE),++Ik,(t=VE("u"))&&"\\\\"!==t&&WE(t.charCodeAt(0))||cC({},ME,NE),n=t);Ik<Wk&&HE(t=$k.charCodeAt(Ik));)++Ik,n+=String.fromCharCode(t),92===t&&(n=n.substr(0,n.length-1),117!==$k.charCodeAt(Ik)&&cC({},ME,NE),++Ik,(t=VE("u"))&&"\\\\"!==t&&HE(t.charCodeAt(0))||cC({},ME,NE),n+=t);return n}function JE(){var t,n;return t=Ik,{type:1===(n=92===$k.charCodeAt(Ik)?ZE():function(){var t,n;for(t=Ik++;Ik<Wk;){if(92===(n=$k.charCodeAt(Ik)))return Ik=t,ZE();if(!HE(n))break;++Ik}return $k.slice(t,Ik)}()).length?oE:YE.hasOwnProperty(n)?sE:"null"===n?lE:"true"===n||"false"===n?aE:oE,value:n,start:t,end:Ik}}function QE(){var t,n,e,r,i=Ik,a=$k.charCodeAt(Ik),u=$k[Ik];switch(a){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++Ik,{type:fE,value:String.fromCharCode(a),start:i,end:Ik};default:if(61===(t=$k.charCodeAt(Ik+1)))switch(a){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return Ik+=2,{type:fE,value:String.fromCharCode(a)+String.fromCharCode(t),start:i,end:Ik};case 33:case 61:return Ik+=2,61===$k.charCodeAt(Ik)&&++Ik,{type:fE,value:$k.slice(i,Ik),start:i,end:Ik}}}return">>>="===(r=$k.substr(Ik,4))?{type:fE,value:r,start:i,end:Ik+=4}:">>>"===(e=r.substr(0,3))||"<<="===e||">>="===e?{type:fE,value:e,start:i,end:Ik+=3}:u===(n=e.substr(0,2))[1]&&"+-<>&|".indexOf(u)>=0||"=>"===n?{type:fE,value:n,start:i,end:Ik+=2}:"<>=!+-*%&|^/".indexOf(u)>=0?{type:fE,value:u,start:i,end:++Ik}:void cC({},ME,NE)}function KE(){var t,n,e;if(LE(qE((e=$k[Ik]).charCodeAt(0))||"."===e,"Numeric literal must start with a decimal digit or a decimal point"),n=Ik,t="","."!==e){if(t=$k[Ik++],e=$k[Ik],"0"===t){if("x"===e||"X"===e)return++Ik,function(t){for(var n="";Ik<Wk&&UE($k[Ik]);)n+=$k[Ik++];return 0===n.length&&cC({},ME,NE),WE($k.charCodeAt(Ik))&&cC({},ME,NE),{type:cE,value:parseInt("0x"+n,16),start:t,end:Ik}}(n);if(jE(e))return function(t){for(var n="0"+$k[Ik++];Ik<Wk&&jE($k[Ik]);)n+=$k[Ik++];return(WE($k.charCodeAt(Ik))||qE($k.charCodeAt(Ik)))&&cC({},ME,NE),{type:cE,value:parseInt(n,8),octal:!0,start:t,end:Ik}}(n);e&&qE(e.charCodeAt(0))&&cC({},ME,NE)}for(;qE($k.charCodeAt(Ik));)t+=$k[Ik++];e=$k[Ik]}if("."===e){for(t+=$k[Ik++];qE($k.charCodeAt(Ik));)t+=$k[Ik++];e=$k[Ik]}if("e"===e||"E"===e)if(t+=$k[Ik++],"+"!==(e=$k[Ik])&&"-"!==e||(t+=$k[Ik++]),qE($k.charCodeAt(Ik)))for(;qE($k.charCodeAt(Ik));)t+=$k[Ik++];else cC({},ME,NE);return WE($k.charCodeAt(Ik))&&cC({},ME,NE),{type:cE,value:parseFloat(t),start:n,end:Ik}}function tC(){var t,n,e,r;return Hk=null,GE(),t=Ik,n=function(){var t,n,e,r;for(LE("/"===(t=$k[Ik]),"Regular expression literal must start with a slash"),n=$k[Ik++],e=!1,r=!1;Ik<Wk;)if(n+=t=$k[Ik++],"\\\\"===t)IE((t=$k[Ik++]).charCodeAt(0))&&cC({},BE),n+=t;else if(IE(t.charCodeAt(0)))cC({},BE);else if(e)"]"===t&&(e=!1);else{if("/"===t){r=!0;break}"["===t&&(e=!0)}return r||cC({},BE),{value:n.substr(1,n.length-2),literal:n}}(),e=function(){var t,n,e;for(n="",e="";Ik<Wk&&HE((t=$k[Ik]).charCodeAt(0));)++Ik,"\\\\"===t&&Ik<Wk?cC({},ME,NE):(e+=t,n+=t);return e.search(/[^gimuy]/g)>=0&&cC({},SE,e),{value:e,literal:n}}(),r=function(t,n){var e=t;n.indexOf("u")>=0&&(e=e.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g,function(t,n){if(parseInt(n,16)<=1114111)return"x";cC({},SE)}).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,"x"));try{return new RegExp(t,n)}catch(t){return null}}(n.value,e.value),{literal:n.literal+e.literal,value:r,regex:{pattern:n.value,flags:e.value},start:t,end:Ik}}function nC(){var t;return GE(),Ik>=Wk?{type:uE,start:Ik,end:Ik}:WE(t=$k.charCodeAt(Ik))?JE():40===t||41===t||59===t?QE():39===t||34===t?function(){var t,n,e,r,i="",a=!1;for(LE("\'"===(t=$k[Ik])||\'"\'===t,"String literal must starts with a quote"),n=Ik,++Ik;Ik<Wk;){if((e=$k[Ik++])===t){t="";break}if("\\\\"===e)if((e=$k[Ik++])&&IE(e.charCodeAt(0)))"\\r"===e&&"\\n"===$k[Ik]&&++Ik;else switch(e){case"u":case"x":"{"===$k[Ik]?(++Ik,i+=XE()):i+=VE(e);break;case"n":i+="\\n";break;case"r":i+="\\r";break;case"t":i+="\\t";break;case"b":i+="\\b";break;case"f":i+="\\f";break;case"v":i+="\\v";break;default:jE(e)?(0!==(r="01234567".indexOf(e))&&(a=!0),Ik<Wk&&jE($k[Ik])&&(a=!0,r=8*r+"01234567".indexOf($k[Ik++]),"0123".indexOf(e)>=0&&Ik<Wk&&jE($k[Ik])&&(r=8*r+"01234567".indexOf($k[Ik++]))),i+=String.fromCharCode(r)):i+=e}else{if(IE(e.charCodeAt(0)))break;i+=e}}return""!==t&&cC({},ME,NE),{type:hE,value:i,octal:a,start:n,end:Ik}}():46===t?qE($k.charCodeAt(Ik+1))?KE():QE():qE(t)?KE():QE()}function eC(){var t;return Ik=(t=Hk).end,Hk=nC(),Ik=t.end,t}function rC(){var t;t=Ik,Hk=nC(),Ik=t}function iC(t,n,e){var r=new iE("||"===t||"&&"===t?xE:pE);return r.operator=t,r.left=n,r.right=e,r}function aC(t,n){var e=new iE(gE);return e.callee=t,e.arguments=n,e}function uC(t){var n=new iE(vE);return n.name=t,n}function oC(t){var n=new iE(yE);return n.value=t.value,n.raw=$k.slice(t.start,t.end),t.regex&&("//"===n.raw&&(n.raw="/(?:)/"),n.regex=t.regex),n}function sC(t,n,e){var r=new iE(_E);return r.computed="["===t,r.object=n,r.property=e,r.computed||(e.member=!0),r}function lC(t,n,e){var r=new iE(wE);return r.key=n,r.value=e,r.kind=t,r}function cC(t,n){var e,r=Array.prototype.slice.call(arguments,2),i=n.replace(/%(\\d)/g,function(t,n){return LE(n<r.length,"Message reference must be in range"),r[n]});throw(e=new Error(i)).index=Ik,e.description=i,e}function fC(t){t.type===uE&&cC(t,FE),t.type===cE&&cC(t,kE),t.type===hE&&cC(t,EE),t.type===oE&&cC(t,CE),t.type===sE&&cC(t,DE),cC(t,ME,t.value)}function hC(t){var n=eC();n.type===fE&&n.value===t||fC(n)}function dC(t){return Hk.type===fE&&Hk.value===t}function pC(t){return Hk.type===sE&&Hk.value===t}function gC(){var t=[];for(Ik=Hk.start,hC("[");!dC("]");)dC(",")?(eC(),t.push(null)):(t.push(CC()),dC("]")||hC(","));return eC(),function(t){var n=new iE(dE);return n.elements=t,n}(t)}function mC(){var t;return Ik=Hk.start,(t=eC()).type===hE||t.type===cE?(t.octal&&cC(t,OE),oC(t)):uC(t.value)}function vC(){var t,n,e;return Ik=Hk.start,(t=Hk).type===oE?(e=mC(),hC(":"),lC("init",e,CC())):t.type!==uE&&t.type!==fE?(n=mC(),hC(":"),lC("init",n,CC())):void fC(t)}function yC(){var t,n,e=[],r={},i=String;for(Ik=Hk.start,hC("{");!dC("}");)n="$"+((t=vC()).key.type===vE?t.key.name:i(t.key.value)),Object.prototype.hasOwnProperty.call(r,n)?cC({},zE):r[n]=!0,e.push(t),dC("}")||hC(",");return hC("}"),function(t){var n=new iE(bE);return n.properties=t,n}(e)}var xC={if:1,this:1};function _C(){var t,n,e;if(dC("("))return function(){var t;return hC("("),t=DC(),hC(")"),t}();if(dC("["))return gC();if(dC("{"))return yC();if(t=Hk.type,Ik=Hk.start,t===oE||xC[Hk.value])e=uC(eC().value);else if(t===hE||t===cE)Hk.octal&&cC(Hk,OE),e=oC(eC());else{if(t===sE)throw new Error(TE);t===aE?((n=eC()).value="true"===n.value,e=oC(n)):t===lE?((n=eC()).value=null,e=oC(n)):dC("/")||dC("/=")?(e=oC(tC()),rC()):fC(eC())}return e}function bC(){var t=[];if(hC("("),!dC(")"))for(;Ik<Wk&&(t.push(CC()),!dC(")"));)hC(",");return hC(")"),t}function wC(){var t;return Ik=Hk.start,function(t){return t.type===oE||t.type===sE||t.type===aE||t.type===lE}(t=eC())||fC(t),uC(t.value)}function AC(){var t;return hC("["),t=DC(),hC("]"),t}function MC(){var t=function(){var t;for(t=_C();;)if(dC("."))hC("."),t=sC(".",t,wC());else if(dC("("))t=aC(t,bC());else{if(!dC("["))break;t=sC("[",t,AC())}return t}();if(Hk.type===fE&&(dC("++")||dC("--")))throw new Error(TE);return t}function kC(){var t,n,e,r,i;if(Hk.type!==fE&&Hk.type!==sE)n=MC();else{if(dC("++")||dC("--"))throw new Error(TE);if(dC("+")||dC("-")||dC("~")||dC("!"))t=eC(),n=kC(),e=t.value,r=n,(i=new iE(AE)).operator=e,i.argument=r,i.prefix=!0,n=i;else{if(pC("delete")||pC("void")||pC("typeof"))throw new Error(TE);n=MC()}}return n}function EC(t){var n=0;if(t.type!==fE&&t.type!==sE)return 0;switch(t.value){case"||":n=1;break;case"&&":n=2;break;case"|":n=3;break;case"^":n=4;break;case"&":n=5;break;case"==":case"!=":case"===":case"!==":n=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":n=7;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function CC(){var t,n;return t=function(){var t,n,e,r,i,a,u,o,s,l;if(t=Hk,s=kC(),0===(i=EC(r=Hk)))return s;for(r.prec=i,eC(),n=[t,Hk],a=[s,r,u=kC()];(i=EC(Hk))>0;){for(;a.length>2&&i<=a[a.length-2].prec;)u=a.pop(),o=a.pop().value,s=a.pop(),n.pop(),e=iC(o,s,u),a.push(e);(r=eC()).prec=i,a.push(r),n.push(Hk),e=kC(),a.push(e)}for(e=a[l=a.length-1],n.pop();l>1;)n.pop(),e=iC(a[l-1].value,a[l-2],e),l-=2;return e}(),dC("?")&&(eC(),n=CC(),hC(":"),t=function(t,n,e){var r=new iE(mE);return r.test=t,r.consequent=n,r.alternate=e,r}(t,n,CC())),t}function DC(){var t=CC();if(dC(","))throw new Error(TE);return t}var FC={NaN:"NaN",E:"Math.E",LN2:"Math.LN2",LN10:"Math.LN10",LOG2E:"Math.LOG2E",LOG10E:"Math.LOG10E",PI:"Math.PI",SQRT1_2:"Math.SQRT1_2",SQRT2:"Math.SQRT2",MIN_VALUE:"Number.MIN_VALUE",MAX_VALUE:"Number.MAX_VALUE"};function SC(t){function n(n,e,r){return function(i){return function(n,e,r,i){var a=t(e[0]);return r&&(a=r+"("+a+")",0===r.lastIndexOf("new ",0)&&(a="("+a+")")),a+"."+n+(i<0?"":0===i?"()":"("+e.slice(1).map(t).join(",")+")")}(n,i,e,r)}}var e="new Date";return{isNaN:"isNaN",isFinite:"isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(n){n.length<3&&i("Missing arguments to clamp function."),n.length>3&&i("Too many arguments to clamp function.");var e=n.map(t);return"Math.max("+e[1]+", Math.min("+e[2]+","+e[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:e,date:n("getDate",e,0),day:n("getDay",e,0),year:n("getFullYear",e,0),month:n("getMonth",e,0),hours:n("getHours",e,0),minutes:n("getMinutes",e,0),seconds:n("getSeconds",e,0),milliseconds:n("getMilliseconds",e,0),time:n("getTime",e,0),timezoneoffset:n("getTimezoneOffset",e,0),utcdate:n("getUTCDate",e,0),utcday:n("getUTCDay",e,0),utcyear:n("getUTCFullYear",e,0),utcmonth:n("getUTCMonth",e,0),utchours:n("getUTCHours",e,0),utcminutes:n("getUTCMinutes",e,0),utcseconds:n("getUTCSeconds",e,0),utcmilliseconds:n("getUTCMilliseconds",e,0),length:n("length",null,-1),join:n("join",null),indexof:n("indexOf",null),lastindexof:n("lastIndexOf",null),slice:n("slice",null),reverse:function(n){return"("+t(n[0])+").slice().reverse()"},parseFloat:"parseFloat",parseInt:"parseInt",upper:n("toUpperCase","String",0),lower:n("toLowerCase","String",0),substring:n("substring","String"),split:n("split","String"),replace:n("replace","String"),trim:n("trim","String",0),regexp:"RegExp",test:n("test","RegExp"),if:function(n){n.length<3&&i("Missing arguments to if function."),n.length>3&&i("Too many arguments to if function.");var e=n.map(t);return"("+e[0]+"?"+e[1]+":"+e[2]+")"}}}const BC="intersect",OC="union";var zC="E",NC="R",TC="R-E",RC="R-LE",PC="R-RE",LC="index:unit";function qC(t,n){for(var e,r,i=n.fields,a=n.values,o=i.length,s=0;s<o;++s)if((r=i[s]).getter=c.getter||c(r.field),at(e=r.getter(t))&&(e=E(e)),at(a[s])&&(a[s]=E(a[s])),at(a[s][0])&&(a[s]=a[s].map(E)),r.type===zC){if(u(a[s])?a[s].indexOf(e)<0:e!==a[s])return!1}else if(r.type===NC){if(!rt(e,a[s]))return!1}else if(r.type===PC){if(!rt(e,a[s],!0,!1))return!1}else if(r.type===TC){if(!rt(e,a[s],!1,!1))return!1}else if(r.type===RC&&!rt(e,a[s],!1,!0))return!1;return!0}var UC={E_union:function(t,n){if(!t.length)return n;for(var e=0,r=n.length;e<r;++e)t.indexOf(n[e])<0&&t.push(n[e]);return t},E_intersect:function(t,n){return t.length?t.filter(function(t){return n.indexOf(t)>=0}):n},R_union:function(t,n){var e=E(n[0]),r=E(n[1]);return e>r&&(e=n[1],r=n[0]),t.length?(t[0]>e&&(t[0]=e),t[1]<r&&(t[1]=r),t):[e,r]},R_intersect:function(t,n){var e=E(n[0]),r=E(n[1]);return e>r&&(e=n[1],r=n[0]),t.length?r<t[0]||t[1]<e?[]:(t[0]<e&&(t[0]=e),t[1]>r&&(t[1]=r),t):[e,r]}};const jC=":",$C="@";function IC(t,n,e,r){n[0].type!==Gk&&i("First argument to selection functions must be a string literal.");const a=n[0].value,u=n.length>=2&&k(n).value,o=$C+"unit",s=jC+a;u!==BC||r.hasOwnProperty(o)||(r[o]=e.getData(a).indataRef(e,"unit")),r.hasOwnProperty(s)||(r[s]=e.getData(a).tuplesRef())}function WC(t){const n=this.context.data[t];return n?n.values.value:[]}const HC={};function YC(t,n,e){let r=t+":"+e,i=HC[r];return i&&i[0]===n||(HC[r]=i=[n,n(e)]),i[1]}function GC(t,n){return YC("timeFormat",ue,n)(t)}var VC=new Date(2e3,0,1);function XC(t,n,e){return VC.setMonth(t),VC.setDate(n),GC(VC,e)}function ZC(t,n){let e;return Y(t)?t:s(t)?(e=n.scales[t])&&e.value:void 0}function JC(t,n){return function(e,r,i){if(e){const n=ZC(e,(i||this).context);return n&&n.path[t](r)}return n(r)}}const QC=JC("area",function(t){return sy.reset(),ny(t,ly),2*sy}),KC=JC("bounds",function(t){var n,e,r,i,a,u,o;if(My=Ay=-(by=wy=1/0),Fy=[],ny(t,Vy),e=Fy.length){for(Fy.sort(rx),n=1,a=[r=Fy[0]];n<e;++n)ix(r,(i=Fy[n])[0])||ix(r,i[1])?(ex(r[0],i[1])>ex(r[0],r[1])&&(r[1]=i[1]),ex(i[0],r[1])>ex(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(u=-1/0,n=0,r=a[e=a.length-1];n<=e;r=i,++n)i=a[n],(o=ex(r[1],i[0]))>u&&(u=o,by=i[0],Ay=r[1])}return Fy=Sy=null,by===1/0||wy===1/0?[[NaN,NaN],[NaN,NaN]]:[[by,wy],[Ay,My]]}),tD=JC("centroid",function(t){By=Oy=zy=Ny=Ty=Ry=Py=Ly=qy=Uy=jy=0,ny(t,ax);var n=qy,e=Uy,r=jy,i=n*n+e*e+r*r;return i<Dv&&(n=Ry,e=Py,r=Ly,Oy<Cv&&(n=zy,e=Ny,r=Ty),(i=n*n+e*e+r*r)<Dv)?[NaN,NaN]:[Pv(e,n)*zv,Vv(r/Hv(i))*zv]});function nD(t,n,e){try{t[n].apply(t,["EXPRESSION"].concat([].slice.call(e)))}catch(n){t.warn(n)}return e[e.length-1]}function eD(t,n){return t===n||t!=t&&n!=n||!(!u(t)||!u(n)||t.length!==n.length)&&function(t,n){for(let e=0,r=t.length;e<r;++e)if(!eD(t[e],n[e]))return!1;return!0}(t,n)}function rD(t){return function(n){for(let e in t)if(!eD(n[e],t[e]))return!1;return!0}}const iD={};function aD(t){return t.data}function uD(t,n){const e=WC.call(n,t);return e.root&&e.root.lookup||iD}const oD="undefined"!=typeof window&&window||null;const sD=":",lD="@",cD="%",fD="$";function hD(t,n,e,r){n[0].type!==Gk&&i("First argument to data functions must be a string literal.");const a=n[0].value,u=sD+a;r.hasOwnProperty(u)||(r[u]=e.getData(a).tuplesRef())}function dD(t,n,e,r){if(n[0].type===Gk)pD(e,r,n[0].value);else if(n[0].type===Xk)for(t in e.scales)pD(e,r,t)}function pD(t,n,e){const r=cD+e;if(!n.hasOwnProperty(r))try{n[r]=t.scaleRef(e)}catch(t){}}const gD={random:function(){return t.random()},isArray:u,isBoolean:it,isDate:at,isDefined:function(t){return void 0!==t},isNumber:ut,isObject:o,isRegExp:ot,isString:s,isTuple:kt,isValid:function(t){return null!=t&&t==t},toBoolean:pt,toDate:mt,toNumber:E,toString:vt,flush:nt,lerp:lt,merge:function(){var t=[].slice.call(arguments);return t.unshift({}),Z.apply(null,t)},pad:ht,peek:k,span:dt,inrange:rt,truncate:xt,rgb:pd,lab:Bd,hcl:Pd,hsl:yd,sequence:li,format:function(t,n){return YC("format",sg,n)(t)},utcFormat:function(t,n){return YC("utcFormat",se,n)(t)},utcParse:function(t,n){return YC("utcParse",le,n)(t)},timeFormat:GC,timeParse:function(t,n){return YC("timeParse",oe,n)(t)},monthFormat:function(t){return XC(t,1,"%B")},monthAbbrevFormat:function(t){return XC(t,1,"%b")},dayFormat:function(t){return XC(0,2+t,"%A")},dayAbbrevFormat:function(t){return XC(0,2+t,"%a")},quarter:$,utcquarter:I,warn:function(){return nD(this.context.dataflow,"warn",arguments)},info:function(){return nD(this.context.dataflow,"info",arguments)},debug:function(){return nD(this.context.dataflow,"debug",arguments)},extent:J,inScope:function(t){let n=this.context.group,e=!1;if(n)for(;t;){if(t===n){e=!0;break}t=t.mark.group}return e},intersect:function(t,n,e){if(!t)return[];const[r,i]=t,a=(new Hu).set(r[0],r[1],i[0],i[1]);return kf(e||this.context.dataflow.scenegraph().root,a,function(t){let n=null;if(t){const e=W(t.marktype),r=W(t.markname);n=(t=>(!e.length||e.some(n=>t.marktype===n))&&(!r.length||r.some(n=>t.name===n)))}return n}(n))},clampRange:H,pinchDistance:function(t){const n=t.touches,e=n[0].clientX-n[1].clientX,r=n[0].clientY-n[1].clientY;return Math.sqrt(e*e+r*r)},pinchAngle:function(t){const n=t.touches;return Math.atan2(n[0].clientY-n[1].clientY,n[0].clientX-n[1].clientX)},screen:function(){return oD?oD.screen:{}},containerSize:function(){const t=this.context.dataflow,n=t.container&&t.container();return n?[n.clientWidth,n.clientHeight]:[void 0,void 0]},windowSize:function(){return oD?[oD.innerWidth,oD.innerHeight]:[void 0,void 0]},bandspace:function(t,n,e){return yh(t||0,n||0,e||0)},setdata:function(t,n){const e=this.context.dataflow,r=this.context.data[t].input;return e.pulse(r,e.changeset().remove(m).insert(n)),1},pathShape:function(t){let n=null;return function(e){return e?Os(e,n=n||bs(t)):t}},panLinear:z,panLog:N,panPow:T,panSymlog:R,zoomLinear:L,zoomLog:q,zoomPow:U,zoomSymlog:j,encode:function(t,n,e){if(t){const e=this.context.dataflow,r=t.mark.source;e.pulse(r,e.changeset().encode(t,n))}return void 0!==e?e:t},modify:function(t,n,e,r,i,a){let o,s,l=this.context.dataflow,c=this.context.data[t],f=c.input,h=c.changes,d=l.stamp();if(!1===l._trigger||!(f.value.length||n||r))return 0;if((!h||h.stamp<d)&&(c.changes=h=l.changeset(),h.stamp=d,l.runAfter(function(){c.modified=!0,l.pulse(f,h).run()},!0,1)),e&&(o=!0===e?m:u(e)||kt(e)?e:rD(e),h.remove(o)),n&&h.insert(n),r&&(o=rD(r),f.value.some(o)?h.remove(o):h.insert(r)),i)for(s in a)h.modify(i,s,a[s]);return 1}},mD=["view","item","group","xy","x","y"],vD="event.vega.",yD="this.",xD={};function _D(t,n,e){return 1===arguments.length?gD[t]:(gD[t]=n,e&&(xD[t]=e),wD&&(wD.functions[t]=yD+t),this)}_D("bandwidth",function(t,n){const e=ZC(t,(n||this).context);return e&&e.bandwidth?e.bandwidth():0},dD),_D("copy",function(t,n){const e=ZC(t,(n||this).context);return e?e.copy():void 0},dD),_D("domain",function(t,n){const e=ZC(t,(n||this).context);return e?e.domain():[]},dD),_D("range",function(t,n){const e=ZC(t,(n||this).context);return e&&e.range?e.range():[]},dD),_D("invert",function(t,n,e){const r=ZC(t,(e||this).context);return r?u(n)?(r.invertRange||r.invert)(n):(r.invert||r.invertExtent)(n):void 0},dD),_D("scale",function(t,n,e){const r=ZC(t,(e||this).context);return r&&void 0!==n?r(n):void 0},dD),_D("gradient",function(t,n,e,r,i){t=ZC(t,(i||this).context);const a=Qu(n,e);let u=t.domain(),o=u[0],s=k(u),l=d;return s-o?l=rm(t,o,s):t=(t.interpolator?Zg("sequential")().interpolator(t.interpolator()):Zg("linear")().interpolate(t.interpolate()).range(t.range())).domain([o=0,s=1]),t.ticks&&(o!==(u=t.ticks(+r||15))[0]&&u.unshift(o),s!==k(u)&&u.push(s)),u.forEach(n=>a.stop(l(n),t(n))),a},dD),_D("geoArea",QC,dD),_D("geoBounds",KC,dD),_D("geoCentroid",tD,dD),_D("geoShape",function(t,n,e){const r=ZC(t,(e||this).context);return function(t){return r?r.path.context(t)(n):""}},dD),_D("indata",function(t,n,e){const r=this.context.data[t]["index:"+n],i=r?r.value.get(e):void 0;return i?i.count:i},function(t,n,e,r){n[0].type!==Gk&&i("First argument to indata must be a string literal."),n[1].type!==Gk&&i("Second argument to indata must be a string literal.");const a=n[0].value,u=n[1].value,o=lD+u;r.hasOwnProperty(o)||(r[o]=e.getData(a).indataRef(e,u))}),_D("data",WC,hD),_D("treePath",function(t,n,e){const r=uD(t,this),i=r[n],a=r[e];return i&&a?i.path(a).map(aD):void 0},hD),_D("treeAncestors",function(t,n){const e=uD(t,this)[n];return e?e.ancestors().map(aD):void 0},hD),_D("vlSelectionTest",function(t,n,e){for(var r,i,a,u,o,s=this.context.data[t],l=s?s.values.value:[],c=s?s[LC]&&s[LC].value:void 0,f=e===BC,h=l.length,d=0;d<h;++d)if(r=l[d],c&&f){if(-1===(a=(i=i||{})[u=r.unit]||0))continue;if(o=qC(n,r),i[u]=o?-1:++a,o&&1===c.size)return!0;if(!o&&a===c.get(u).count)return!1}else if(f^(o=qC(n,r)))return o;return h&&f},IC),_D("vlSelectionResolve",function(t,n){for(var e,r,i,a,u,o,s,l,c,f,h,d=this.context.data[t],p=d?d.values.value:[],g={},m={},v=p.length,y=0;y<v;++y)for(a=(e=p[y]).unit,r=e.fields,i=e.values,f=0,h=r.length;f<h;++f)u=r[f],s=(o=g[u.field]||(g[u.field]={}))[a]||(o[a]=[]),m[u.field]=l=u.type.charAt(0),c=UC[l+"_union"],o[a]=c(s,W(i[f]));return n=n||OC,Object.keys(g).forEach(function(t){g[t]=Object.keys(g[t]).map(function(n){return g[t][n]}).reduce(function(e,r){return void 0===e?r:UC[m[t]+"_"+n](e,r)})}),g},IC);const bD={blacklist:["_"],whitelist:["datum","event","item"],fieldvar:"datum",globalvar:function(t){return"_["+l(fD+t)+"]"},functions:function(t){const n=SC(t);mD.forEach(t=>n[t]=vD+t);for(let t in gD)n[t]=yD+t;return n},constants:FC,visitors:xD};var wD=function(t){var n=(t=t||{}).whitelist?yt(t.whitelist):{},e=t.blacklist?yt(t.blacklist):{},r=t.constants||FC,a=(t.functions||SC)(d),u=t.globalvar,o=t.fieldvar,l={},c={},f=0,h=Y(u)?u:function(t){return u+\'["\'+t+\'"]\'};function d(t){if(s(t))return t;var n=p[t.type];return null==n&&i("Unsupported type: "+t.type),n(t)}var p={Literal:function(t){return t.raw},Identifier:function(t){var a=t.name;return f>0?a:e.hasOwnProperty(a)?i("Illegal identifier: "+a):r.hasOwnProperty(a)?r[a]:n.hasOwnProperty(a)?a:(l[a]=1,h(a))},MemberExpression:function(t){var n=!t.computed,e=d(t.object);n&&(f+=1);var r=d(t.property);return e===o&&(c[function(t){var n=t&&t.length-1;return n&&(\'"\'===t[0]&&\'"\'===t[n]||"\'"===t[0]&&"\'"===t[n])?t.slice(1,-1):t}(r)]=1),n&&(f-=1),e+(n?"."+r:"["+r+"]")},CallExpression:function(t){"Identifier"!==t.callee.type&&i("Illegal callee type: "+t.callee.type);var n=t.callee.name,e=t.arguments,r=a.hasOwnProperty(n)&&a[n];return r||i("Unrecognized function: "+n),Y(r)?r(e):r+"("+e.map(d).join(",")+")"},ArrayExpression:function(t){return"["+t.elements.map(d).join(",")+"]"},BinaryExpression:function(t){return"("+d(t.left)+t.operator+d(t.right)+")"},UnaryExpression:function(t){return"("+t.operator+d(t.argument)+")"},ConditionalExpression:function(t){return"("+d(t.test)+"?"+d(t.consequent)+":"+d(t.alternate)+")"},LogicalExpression:function(t){return"("+d(t.left)+t.operator+d(t.right)+")"},ObjectExpression:function(t){return"{"+t.properties.map(d).join(",")+"}"},Property:function(t){f+=1;var n=d(t.key);return f-=1,n+":"+d(t.value)}};function g(t){var n={code:d(t),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},n}return g.functions=a,g.constants=r,g}(bD);function AD(t,n,e){";"!==n[n.length-1]&&(n="return("+n+");");var r=Function.apply(null,t.concat(n));return e&&e.functions?r.bind(e.functions):r}function MD(t,n){return AD(["event"],t,n)}function kD(t,n){return AD(["item","_"],t,n)}function ED(t,n,e){var r,i;for(r in e=e||{},t)i=t[r],e[r]=u(i)?i.map(function(t){return CD(t,n,e)}):CD(i,n,e);return e}function CD(t,n,e){if(!t||!o(t))return t;for(var r,i=0,a=DD.length;i<a;++i)if(r=DD[i],t.hasOwnProperty(r.key))return r.parse(t,n,e);return t}var DD=[{key:"$ref",parse:function(t,n){return n.get(t.$ref)||i("Operator not defined: "+t.$ref)}},{key:"$key",parse:function(t,n){var e="k:"+t.$key+"_"+!!t.$flat;return n.fn[e]||(n.fn[e]=st(t.$key,t.$flat))}},{key:"$expr",parse:function(t,e,r){t.$params&&ED(t.$params,e,r);var i="e:"+t.$expr+"_"+t.$name;return e.fn[i]||(e.fn[i]=n(function(t,n){return AD(["datum","_"],t,n)}(t.$expr,e),t.$fields,t.$name))}},{key:"$field",parse:function(t,n){if(!t.$field)return null;var e="f:"+t.$field+"_"+t.$name;return n.fn[e]||(n.fn[e]=c(t.$field,t.$name))}},{key:"$encode",parse:function(t,e){var r,i,a=t.$encode,u={};for(r in a)i=a[r],u[r]=n(kD(i.$expr,e),i.$fields),u[r].output=i.$output;return u}},{key:"$compare",parse:function(t,n){var e="c:"+t.$compare+"_"+t.$order,r=W(t.$compare).map(function(t){return t&&t.$tupleid?Et:t});return n.fn[e]||(n.fn[e]=G(r,t.$order))}},{key:"$context",parse:function(t,n){return n}},{key:"$subflow",parse:function(t,n){var e=t.$subflow;return function(t,r,i){var a=OD(e,n.fork()),u=a.get(e.operators[0].id),o=a.signals.parent;return o&&o.set(i),u}}},{key:"$tupleid",parse:function(){return Et}}];function FD(t){return(t+"").toLowerCase()}function SD(t,n){"operator"!==FD(t.type)&&t.type?n.transform(t,t.type):n.operator(t,t.update?function(t,n){return AD(["_"],t,n)}(t.update,n):null)}function BD(t,n){var e=o(e=t.source)?e.$ref:e,r=n.get(e),a=null,u=t.update,s=void 0;r||i("Source not defined: "+t.source),a=t.target&&t.target.$expr?MD(t.target.$expr,n):n.get(t.target),u&&u.$expr&&(u.$params&&(s=ED(u.$params,n)),u=function(t,n){return AD(["_","event"],t,n)}(u.$expr,n)),n.update(t,r,a,u,s)}function OD(t,n){var e=t.operators||[];return t.background&&(n.background=t.background),t.eventConfig&&(n.eventConfig=t.eventConfig),e.forEach(function(t){SD(t,n)}),e.forEach(function(t){!function(t,n){if(t.params){var e=n.get(t.id);e||i("Invalid operator id: "+t.id),n.dataflow.connect(e,e.parameters(ED(t.params,n),t.react,t.initonly))}}(t,n)}),(t.streams||[]).forEach(function(t){!function(t,n){var e,r=null!=t.filter?MD(t.filter,n):void 0,a=null!=t.stream?n.get(t.stream):void 0;t.source?a=n.events(t.source,t.type,r):t.merge&&(a=(e=t.merge.map(n.get.bind(n)))[0].merge.apply(e[0],e.slice(1))),t.between&&(e=t.between.map(n.get.bind(n)),a=a.between(e[0],e[1])),t.filter&&(a=a.filter(r)),null!=t.throttle&&(a=a.throttle(+t.throttle)),null!=t.debounce&&(a=a.debounce(+t.debounce)),null==a&&i("Invalid stream definition: "+JSON.stringify(t)),t.consume&&a.consume(!0),n.stream(t,a)}(t,n)}),(t.updates||[]).forEach(function(t){BD(t,n)}),n.resolve()}var zD={skip:!0};function ND(t,n,e){return new TD(t,n,e)}function TD(t,n,e){this.dataflow=t,this.transforms=n,this.events=t.events.bind(t),this.signals={},this.scales={},this.nodes={},this.data={},this.fn={},e&&(this.functions=Object.create(e),this.functions.context=this)}function RD(t){this.dataflow=t.dataflow,this.transforms=t.transforms,this.functions=t.functions,this.events=t.events,this.signals=Object.create(t.signals),this.scales=Object.create(t.scales),this.nodes=Object.create(t.nodes),this.data=Object.create(t.data),this.fn=Object.create(t.fn),t.functions&&(this.functions=Object.create(t.functions),this.functions.context=this)}TD.prototype=RD.prototype={fork:function(){var t=new RD(this);return(this.subcontext||(this.subcontext=[])).push(t),t},get:function(t){return this.nodes[t]},set:function(t,n){return this.nodes[t]=n},add:function(t,n){var e,r=this,i=r.dataflow;if(r.set(t.id,n),"collect"===FD(t.type)&&(e=t.value)&&(e.$ingest?i.ingest(n,e.$ingest,e.$format):e.$request?i.preload(n,e.$request,e.$format):i.pulse(n,i.changeset().insert(e))),t.root&&(r.root=n),t.parent){var a=r.get(t.parent.$ref);a?(i.connect(a,[n]),n.targets().add(a)):(r.unresolved=r.unresolved||[]).push(function(){a=r.get(t.parent.$ref),i.connect(a,[n]),n.targets().add(a)})}if(t.signal&&(r.signals[t.signal]=n),t.scale&&(r.scales[t.scale]=n),t.data)for(var u in t.data)e=r.data[u]||(r.data[u]={}),t.data[u].forEach(function(t){e[t]=n})},resolve:function(){return(this.unresolved||[]).forEach(function(t){t()}),delete this.unresolved,this},operator:function(t,n){this.add(t,this.dataflow.add(t.value,n))},transform:function(t,n){this.add(t,this.dataflow.add(this.transforms[FD(n)]))},stream:function(t,n){this.set(t.id,n)},update:function(t,n,e,r,i){this.dataflow.on(n,e,r,i,t.options)},getState:function(t){var n=this,e={};if(t.signals){var r=e.signals={};Object.keys(n.signals).forEach(function(e){var i=n.signals[e];t.signals(e,i)&&(r[e]=i.value)})}if(t.data){var i=e.data={};Object.keys(n.data).forEach(function(e){var r=n.data[e];t.data(e,r)&&(i[e]=r.input.value)})}return n.subcontext&&!1!==t.recurse&&(e.subcontext=n.subcontext.map(function(n){return n.getState(t)})),e},setState:function(t){var n=this,e=n.dataflow,r=t.data,i=t.signals;Object.keys(i||{}).forEach(function(t){e.update(n.signals[t],i[t],zD)}),Object.keys(r||{}).forEach(function(t){e.pulse(n.data[t].input,e.changeset().remove(m).insert(r[t]))}),(t.subcontext||[]).forEach(function(t,e){var r=n.subcontext[e];r&&r.setState(t)})}};var PD="width",LD="height",qD="padding",UD={skip:!0};function jD(t,n){var e=t.autosize(),r=t.padding();return n-(e&&e.contains===qD?r.left+r.right:0)}function $D(t,n){var e=t.autosize(),r=t.padding();return n-(e&&e.contains===qD?r.top+r.bottom:0)}function ID(t,n){return n.modified&&u(n.input.value)&&t.indexOf("_:vega:_")}function WD(t,n){return!("parent"===t||n instanceof Wr.proxy)}function HD(t,n,e,r){var i=t.element();i&&i.setAttribute("title",function(t){return null==t?"":u(t)?YD(t):o(t)&&!at(t)?(n=t,Object.keys(n).map(function(t){var e=n[t];return t+": "+(u(e)?YD(e):GD(e))}).join("\\n")):t+"";var n}(r))}function YD(t){return"["+t.map(GD).join(", ")+"]"}function GD(t){return u(t)?"[…]":o(t)&&!at(t)?"{…}":t}function VD(t,n){n=n||{},qr.call(this),n.loader&&this.loader(n.loader),n.logger&&this.logger(n.logger),null!=n.logLevel&&this.logLevel(n.logLevel),this._el=null,this._elBind=null,this._renderType=n.renderer||wf.Canvas,this._scenegraph=new Ac;var e=this._scenegraph.root;this._renderer=null,this._tooltip=n.tooltip||HD,this._redraw=!0,this._handler=(new Lc).scene(e),this._preventDefault=!1,this._timers=[],this._eventListeners=[],this._resizeListeners=[];var r,i,a=function(t,n,e){return OD(n,ND(t,Wr,e||gD))}(this,t,n.functions);this._runtime=a,this._signals=a.signals,this._bind=(t.bindings||[]).map(function(t){return{state:null,param:Z({},t)}}),a.root&&a.root.set(e),e.source=a.data.root.input,this.pulse(a.data.root.input,this.changeset().insert(e.items)),this._background=n.background||a.background||null,this._eventConfig=(r=a.eventConfig,(i=(r=Z({},r)).defaults)&&(u(i.prevent)&&(i.prevent=yt(i.prevent)),u(i.allow)&&(i.allow=yt(i.allow))),r),this._width=this.width(),this._height=this.height(),this._viewWidth=jD(this,this._width),this._viewHeight=$D(this,this._height),this._origin=[0,0],this._resize=0,this._autosize=1,function(t){var n=t._signals,e=n[PD],r=n[LD],i=n[qD];function a(){t._autosize=t._resize=1}t._resizeWidth=t.add(null,function(n){t._width=n.size,t._viewWidth=jD(t,n.size),a()},{size:e}),t._resizeHeight=t.add(null,function(n){t._height=n.size,t._viewHeight=$D(t,n.size),a()},{size:r});var u=t.add(null,a,{pad:i});t._resizeWidth.rank=e.rank+1,t._resizeHeight.rank=r.rank+1,u.rank=i.rank+1}(this),fk(this),n.hover&&this.hover(),n.container&&this.initialize(n.container,n.bind)}var XD=et(VD,qr);function ZD(t,n){return t._signals.hasOwnProperty(n)?t._signals[n]:i("Unrecognized signal name: "+l(n))}function JD(t,n){var e=(t._targets||[]).filter(function(t){var e=t._update;return e&&e.handler===n});return e.length?e[0]:null}function QD(t,n,e,r){var i=JD(e,r);return i||((i=Lk(this,function(){r(n,e.value)})).handler=r,t.on(e,null,i)),t}function KD(t,n,e){var r=JD(n,e);return r&&n._targets.remove(r),t}function tF(t){return+t||0}XD.evaluate=async function(t,n,e){if(await qr.prototype.evaluate.call(this,t,n),this._redraw||this._resize)try{this._renderer&&(this._resize&&(this._resize=0,i=mk(r=this),a=pk(r),u=gk(r),r._renderer.background(r._background),r._renderer.resize(a,u,i),r._handler.origin(i),r._resizeListeners.forEach(function(t){try{t(a,u)}catch(t){r.error(t)}})),await this._renderer.renderAsync(this._scenegraph.root)),this._redraw=!1}catch(t){this.error(t)}var r,i,a,u;return e&&wt(this,e),this},XD.dirty=function(t){this._redraw=!0,this._renderer&&this._renderer.dirty(t)},XD.container=function(){return this._el},XD.scenegraph=function(){return this._scenegraph},XD.origin=function(){return this._origin.slice()},XD.signal=function(t,n,e){var r=ZD(this,t);return 1===arguments.length?r.value:this.update(r,n,e)},XD.background=function(t){return arguments.length?(this._background=t,this._resize=1,this):this._background},XD.width=function(t){return arguments.length?this.signal("width",t):this.signal("width")},XD.height=function(t){return arguments.length?this.signal("height",t):this.signal("height")},XD.padding=function(t){return arguments.length?this.signal("padding",t):this.signal("padding")},XD.autosize=function(t){return arguments.length?this.signal("autosize",t):this.signal("autosize")},XD.renderer=function(t){return arguments.length?(Mf(t)||i("Unrecognized renderer type: "+t),t!==this._renderType&&(this._renderType=t,this._resetRenderer()),this):this._renderType},XD.tooltip=function(t){return arguments.length?(t!==this._tooltip&&(this._tooltip=t,this._resetRenderer()),this):this._tooltip},XD.loader=function(t){return arguments.length?(t!==this._loader&&(qr.prototype.loader.call(this,t),this._resetRenderer()),this):this._loader},XD.resize=function(){return this._autosize=1,this.touch(ZD(this,"autosize"))},XD._resetRenderer=function(){this._renderer&&(this._renderer=null,this.initialize(this._el,this._elBind))},XD._resizeView=function(t,n,e,r,i,a){this.runAfter(function(u){var o=0;u._autosize=0,u.width()!==e&&(o=1,u.signal(PD,e,UD),u._resizeWidth.skip(!0)),u.height()!==r&&(o=1,u.signal(LD,r,UD),u._resizeHeight.skip(!0)),u._viewWidth!==t&&(u._resize=1,u._viewWidth=t),u._viewHeight!==n&&(u._resize=1,u._viewHeight=n),u._origin[0]===i[0]&&u._origin[1]===i[1]||(u._resize=1,u._origin=i),o&&u.run("enter"),a&&u.runAfter(t=>t.resize())},!1,1)},XD.addEventListener=function(t,n,e){var r=n;return e&&!1===e.trap||((r=Lk(this,n)).raw=n),this._handler.on(t,r),this},XD.removeEventListener=function(t,n){for(var e,r,i=this._handler.handlers(t),a=i.length;--a>=0;)if(r=i[a].type,e=i[a].handler,t===r&&(n===e||n===e.raw)){this._handler.off(r,e);break}return this},XD.addResizeListener=function(t){var n=this._resizeListeners;return n.indexOf(t)<0&&n.push(t),this},XD.removeResizeListener=function(t){var n=this._resizeListeners,e=n.indexOf(t);return e>=0&&n.splice(e,1),this},XD.addSignalListener=function(t,n){return QD(this,t,ZD(this,t),n)},XD.removeSignalListener=function(t,n){return KD(this,ZD(this,t),n)},XD.addDataListener=function(t,n){return QD(this,t,hk(this,t).values,n)},XD.removeDataListener=function(t,n){return KD(this,hk(this,t).values,n)},XD.preventDefault=function(t){return arguments.length?(this._preventDefault=t,this):this._preventDefault},XD.timer=function(t,n){this._timers.push(function(t,n,e){var r=new hw,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?cw():+e,r.restart(function a(u){u+=i,r.restart(a,i+=n,e),t(u)},n,e),r)}(function(n){t({timestamp:Date.now(),elapsed:n})},n))},XD.events=function(t,n,e){var r,i=this,a=new It(e),u=function(e,r){i.runAsync(null,()=>{t===yk&&function(t,n){var e=t._eventConfig.defaults,r=e&&e.prevent,i=e&&e.allow;return!1!==r&&!0!==i&&(!0===r||!1===i||(r?r[n]:i?!i[n]:t.preventDefault()))}(i,n)&&e.preventDefault(),a.receive(vk(i,e,r))})};if(t===xk)i.timer(u,n);else if(t===yk)i.addEventListener(n,u,bk);else if(t===_k?"undefined"!=typeof window&&(r=[window]):"undefined"!=typeof document&&(r=document.querySelectorAll(t)),r){for(var o=0,s=r.length;o<s;++o)r[o].addEventListener(n,u);i._eventListeners.push({type:n,sources:r,handler:u})}else i.warn("Can not resolve event source: "+t);return a},XD.finalize=function(){var t,n,e,r=this._tooltip,i=this._timers,a=this._eventListeners;for(t=i.length;--t>=0;)i[t].stop();for(t=a.length;--t>=0;)for(n=(e=a[t]).sources.length;--n>=0;)e.sources[n].removeEventListener(e.type,e.handler);return r&&r.call(this,this._handler,null,null,null),this},XD.hover=function(t,n){return n=[n||"update",(t=[t||"hover"])[0]],this.on(this.events("view","mouseover",wk),Ak,Mk(t)),this.on(this.events("view","mouseout",wk),Ak,Mk(n)),this},XD.data=function(t){return hk(this,t).values.value},XD.change=dk,XD.insert=function(t,n){return dk.call(this,t,zt().insert(n))},XD.remove=function(t,n){return dk.call(this,t,zt().remove(n))},XD.scale=function(t){var n=this._runtime.scales;return n.hasOwnProperty(t)||i("Unrecognized scale or projection: "+t),n[t].value},XD.initialize=function(t,n){var e,r,i=this,a=i._renderType,u=Mf(a);return t=i._el=t?qk(i,t):null,u||i.error("Unrecognized renderer type: "+a),e=u.handler||Lc,r=t?u.renderer:u.headless,i._renderer=r?Pk(i,i._renderer,t,r):null,i._handler=function(t,n,e,r){var i=new r(t.loader(),Lk(t,t.tooltip())).scene(t.scenegraph().root).initialize(e,mk(t),t);return n&&n.handlers().forEach(function(t){i.on(t.type,t.handler)}),i}(i,i._handler,t,e),i._redraw=!0,t&&(n=n?i._elBind=qk(i,n):t.appendChild(kk("div",{class:"vega-bindings"})),i._bind.forEach(function(t){t.param.element&&(t.element=qk(i,t.param.element))}),i._bind.forEach(function(t){Sk(i,t.element||n,t)})),i},XD.toImageURL=async function(t,n){t!==wf.Canvas&&t!==wf.SVG&&t!==wf.PNG&&i("Unrecognized image type: "+t);const e=await Uk(this,t,n);return t===wf.SVG?(r=e.svg(),a=new Blob([r],{type:"image/svg+xml"}),window.URL.createObjectURL(a)):e.canvas().toDataURL("image/png");var r,a},XD.toCanvas=async function(t,n){return(await Uk(this,wf.Canvas,t,n)).canvas()},XD.toSVG=async function(t){return(await Uk(this,wf.SVG,t)).svg()},XD.getState=function(t){return this._runtime.getState(t||{data:ID,signals:WD,recurse:!0})},XD.setState=function(t){return this.runAsync(null,n=>{n._trigger=!1,n._runtime.setState(t)},t=>{t._trigger=!0}),this};var nF="outer",eF=["value","update","init","react","bind"];function rF(t,n){i(t+\' for "outer" push: \'+l(n))}function iF(t,n){var e=t.name;if(t.push===nF)n.signals[e]||rF("No prior signal definition",e),eF.forEach(function(n){void 0!==t[n]&&rF("Invalid property ",n)});else{var r=n.addSignal(e,t.value);!1===t.react&&(r.react=!1),t.bind&&n.addBinding(e,t.bind)}}function aF(t,n,e){var r,a,u={};try{r=function(t){Ik=0,Wk=($k=t).length,Hk=null,rC();var n=DC();if(Hk.type!==uE)throw new Error("Unexpect token after expression.");return n}(t=s(t)?t:l(t)+"")}catch(n){i("Expression parse error: "+t)}return r.visit(function(t){if(t.type===Qk){var e=t.callee.name,r=bD.visitors[e];r&&r(e,t.arguments,n,u)}}),(a=wD(r)).globals.forEach(function(t){var e=fD+t;!u.hasOwnProperty(e)&&n.getSignal(t)&&(u[e]=n.signalRef(t))}),{$expr:e?e+"return("+a.code+");":a.code,$fields:a.fields,$params:u}}function uF(t,n,e,r){this.id=-1,this.type=t,this.value=n,this.params=e,r&&(this.parent=r)}function oF(t,n,e,r){return new uF(t,n,e,r)}function sF(t,n){return oF("operator",t,n)}function lF(t){var n={$ref:t.id};return t.id<0&&(t.refs=t.refs||[]).push(n),n}var cF={$tupleid:1,toString:function(){return":_tupleid_:"}};function fF(t,n){return n?{$field:t,$name:n}:{$field:t}}var hF=fF("key");function dF(t,n){return{$compare:t,$order:n}}var pF="descending";function gF(t,n){return(t&&t.signal?"$"+t.signal:t||"")+(t&&n?"_":"")+(n&&n.signal?"$"+n.signal:n||"")}var mF="scope",vF="view";function yF(t){return t&&t.signal}function xF(t){if(yF(t))return!0;if(o(t))for(var n in t)if(xF(t[n]))return!0;return!1}function _F(t,n){return null!=t?t:n}function bF(t){return t&&t.signal||t}var wF="timer";function AF(t,n){return(t.merge?MF:t.stream?kF:t.type?EF:i("Invalid stream specification: "+l(t)))(t,n)}function MF(t,n){var e=CF({merge:t.merge.map(t=>AF(t,n))},t,n);return n.addStream(e).id}function kF(t,n){var e=CF({stream:AF(t.stream,n)},t,n);return n.addStream(e).id}function EF(t,n){var e,r,i;return t.type===wF?(e=n.event(wF,t.throttle),t={between:t.between,filter:t.filter}):e=n.event((i=t.source)===mF?vF:i||vF,t.type),r=CF({stream:e},t,n),1===Object.keys(r).length?e:n.addStream(r).id}function CF(t,n,e){var r,a,u,o,s=n.between;return s&&(2!==s.length&&i(\'Stream "between" parameter must have 2 entries: \'+l(n)),t.between=[AF(s[0],e),AF(s[1],e)]),s=n.filter?[].concat(n.filter):[],(n.marktype||n.markname||n.markrole)&&s.push((r=n.marktype,a=n.markname,u=n.markrole,(o="event.item")+(r&&"*"!==r?"&&"+o+".mark.marktype===\'"+r+"\'":"")+(u?"&&"+o+".mark.role===\'"+u+"\'":"")+(a?"&&"+o+".mark.name===\'"+a+"\'":""))),n.source===mF&&s.push("inScope(event.item)"),s.length&&(t.filter=aF("("+s.join(")&&(")+")").$expr),null!=(s=n.throttle)&&(t.throttle=+s),null!=(s=n.debounce)&&(t.debounce=+s),n.consume&&(t.consume=!0),t}var DF,FF,SF="view",BF="[",OF="]",zF="{",NF="}",TF=":",RF=",",PF="@",LF=">",qF=/[[\\]{}]/,UF={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function jF(t,n,e,r,i){for(var a,u=0,o=t.length;n<o;++n){if(a=t[n],!u&&a===e)return n;i&&i.indexOf(a)>=0?--u:r&&r.indexOf(a)>=0&&++u}return n}function $F(t){for(var n=[],e=0,r=t.length,i=0;i<r;)i=jF(t,i,RF,BF+zF,OF+NF),n.push(t.substring(e,i).trim()),e=++i;if(0===n.length)throw"Empty event selector: "+t;return n}function IF(t){return"["===t[0]?function(t){var n,e,r=t.length,i=1;if((i=jF(t,i,OF,BF,OF))===r)throw"Empty between selector: "+t;if(2!==(n=$F(t.substring(1,i))).length)throw"Between selector must have two elements: "+t;if((t=t.slice(i+1).trim())[0]!==LF)throw"Expected \'>\' after between selector: "+t;if(n=n.map(IF),(e=IF(t.slice(1).trim())).between)return{between:n,stream:e};e.between=n;return e}(t):function(t){var n,e,r={source:DF},i=[],a=[0,0],u=0,o=0,s=t.length,l=0;if(t[s-1]===NF){if(!((l=t.lastIndexOf(zF))>=0))throw"Unmatched right brace: "+t;try{a=function(t){var n=t.split(RF);if(!t.length||n.length>2)throw t;return n.map(function(n){var e=+n;if(e!=e)throw t;return e})}(t.substring(l+1,s-1))}catch(n){throw"Invalid throttle specification: "+t}t=t.slice(0,l).trim(),s=t.length,l=0}if(!s)throw t;t[0]===PF&&(u=++l);(n=jF(t,l,TF))<s&&(i.push(t.substring(o,n).trim()),o=l=++n);if((l=jF(t,l,BF))===s)i.push(t.substring(o,s).trim());else if(i.push(t.substring(o,l).trim()),e=[],(o=++l)===s)throw"Unmatched left bracket: "+t;for(;l<s;){if((l=jF(t,l,OF))===s)throw"Unmatched left bracket: "+t;if(e.push(t.substring(o,l).trim()),l<s-1&&t[++l]!==BF)throw"Expected left bracket: "+t;o=++l}if(!(s=i.length)||qF.test(i[s-1]))throw"Invalid event selector: "+t;s>1?(r.type=i[1],u?r.markname=i[0].slice(1):(c=i[0],FF.hasOwnProperty(c)?r.marktype=i[0]:r.source=i[0])):r.type=i[0];var c;"!"===r.type.slice(-1)&&(r.consume=!0,r.type=r.type.slice(0,-1));null!=e&&(r.filter=e);a[0]&&(r.throttle=a[0]);a[1]&&(r.debounce=a[1]);return r}(t)}var WF="var datum=event.item&&event.item.datum;";function HF(t,n,e){var r=t.events,a=t.update,u=t.encode,o=[],c={target:e};r||i("Signal update missing events specification."),s(r)&&(r=function(t,n,e){return DF=n||SF,FF=e||UF,$F(t.trim()).map(IF)}(r,n.isSubscope()?mF:vF)),r=W(r).filter(t=>t.signal||t.scale?(o.push(t),0):1),o.length>1&&(o=[YF(o)]),r.length&&o.push(r.length>1?{merge:r}:r[0]),null!=u&&(a&&i("Signal encode and update are mutually exclusive."),a="encode(item(),"+l(u)+")"),c.update=s(a)?aF(a,n,WF):null!=a.expr?aF(a.expr,n,WF):null!=a.value?a.value:null!=a.signal?{$expr:"_.value",$params:{value:n.signalRef(a.signal)}}:i("Invalid signal update specification."),t.force&&(c.options={force:!0}),o.forEach(function(t){n.addUpdate(Z(function(t,n){return{source:t.signal?n.signalRef(t.signal):t.scale?n.scaleRef(t.scale):AF(t,n)}}(t,n),c))})}function YF(t){return{signal:"["+t.map(t=>t.scale?\'scale("\'+t.scale+\'")\':t.signal)+"]"}}function GF(t){return function(n,e,r){return oF(t,e,n||void 0,r)}}var VF=GF("aggregate"),XF=GF("axisticks"),ZF=GF("bound"),JF=GF("collect"),QF=GF("compare"),KF=GF("datajoin"),tS=GF("encode"),nS=GF("expression"),eS=GF("facet"),rS=GF("field"),iS=GF("key"),aS=GF("legendentries"),uS=GF("load"),oS=GF("mark"),sS=GF("multiextent"),lS=GF("multivalues"),cS=GF("overlap"),fS=GF("params"),hS=GF("prefacet"),dS=GF("projection"),pS=GF("proxy"),gS=GF("relay"),mS=GF("render"),vS=GF("scale"),yS=GF("sieve"),xS=GF("sortitems"),_S=GF("viewlayout"),bS=GF("values"),wS=0;function AS(t,n){var e=t.type||"linear";(function(t){switch(t){case xh:case _h:case bh:case wh:case Ah:case Mh:case kh:case Eh:case Ch:case Fh:case Sh:case Bh:case Oh:case zh:case Nh:case Th:return!0}return!1})(e)||i("Unrecognized scale type: "+l(e)),n.addScale(t.name,{type:e,domain:void 0})}function MS(t,n){var e,r,a=n.getScale(t.name).params;for(e in a.domain=DS(t.domain,t,n),null!=t.range&&(a.range=function t(n,e,r){var a=n.range,o=e.config.range;if(a.signal)return e.signalRef(a.signal);if(s(a)){if(o&&o.hasOwnProperty(a))return n=Z({},n,{range:o[a]}),t(n,e,r);"width"===a?a=[0,{signal:"width"}]:"height"===a?a=Uh(n.type)?[0,{signal:"height"}]:[{signal:"height"},0]:i("Unrecognized scale range value: "+l(a))}else{if(a.scheme)return r.scheme=u(a.scheme)?ES(a.scheme,e):kS(a.scheme,e),a.extent&&(r.schemeExtent=ES(a.extent,e)),void(a.count&&(r.schemeCount=kS(a.count,e)));if(a.step)return void(r.rangeStep=kS(a.step,e));if(Uh(n.type)&&!u(a))return DS(a,n,e);u(a)||i("Unsupported range type: "+l(a))}return a.map(t=>(u(t)?ES:kS)(t,e))}(t,n,a)),null!=t.interpolate&&function(t,n){n.interpolate=kS(t.type||t),null!=t.gamma&&(n.interpolateGamma=kS(t.gamma))}(t.interpolate,a),null!=t.nice&&(a.nice=o(r=t.nice)?{interval:kS(r.interval),step:kS(r.step)}:kS(r)),null!=t.bins&&(a.bins=function(t,n){return t.signal||u(t)?ES(t,n):n.objectProperty(t)}(t.bins,n)),t)a.hasOwnProperty(e)||"name"===e||(a[e]=kS(t[e],n))}function kS(t,n){return o(t)?t.signal?n.signalRef(t.signal):i("Unsupported object: "+l(t)):t}function ES(t,n){return t.signal?n.signalRef(t.signal):t.map(t=>kS(t,n))}function CS(t){i("Can not find data set: "+l(t))}function DS(t,n,e){if(t)return t.signal?e.signalRef(t.signal):(u(t)?function(t,n,e){return t.map(function(t){return kS(t,e)})}:t.fields?function(t,n,e){var r=t.data,i=t.fields.reduce(function(t,n){return n=s(n)?{data:r,field:n}:u(n)||n.signal?function(t,n){var e="_:vega:_"+wS++,r=JF({});if(u(t))r.value={$ingest:t};else if(t.signal){var i="setdata("+l(e)+","+t.signal+")";r.params.input=n.signalRef(i)}return n.addDataPipeline(e,[r,yS({})]),{data:e,field:"data"}}(n,e):n,t.push(n),t},[]);return(Uh(n.type)?function(t,n,e){var r,i,a,u;return r=e.map(function(t){var e=n.getData(t.data);return e||CS(t.data),e.countsRef(n,t.field)}),i=n.add(VF({groupby:hF,ops:["sum"],fields:[n.fieldRef("count")],as:["count"],pulse:r})),a=n.add(JF({pulse:lF(i)})),u=n.add(bS({field:hF,sort:n.sortRef(FS(t.sort,!0)),pulse:lF(a)})),lF(u)}:Rh(n.type)?function(t,n,e){var r=e.map(function(t){var e=n.getData(t.data);return e||CS(t.data),e.domainRef(n,t.field)});return lF(n.add(lS({values:r})))}:function(t,n,e){var r=e.map(function(t){var e=n.getData(t.data);return e||CS(t.data),e.extentRef(n,t.field)});return lF(n.add(sS({extents:r})))})(t,e,i)}:function(t,n,e){var r=e.getData(t.data);r||CS(t.data);return Uh(n.type)?r.valuesRef(e,t.field,FS(t.sort,!1)):Rh(n.type)?r.domainRef(e,t.field):r.extentRef(e,t.field)})(t,n,e);null==n.domainMin&&null==n.domainMax||i("No scale domain defined for domainMin/domainMax to override.")}function FS(t,n){return t&&(t.field||t.op?t.field||"count"===t.op?n&&t.field?i("Multiple domain scales can not sort by field."):n&&t.op&&"count"!==t.op&&i("Multiple domain scales support op count only."):i("No field provided for sort aggregate op: "+t.op):o(t)?t.field="key":t={field:"key"}),t}function SS(t,n,e){return u(t)?t.map(function(t){return SS(t,n,e)}):o(t)?t.signal?e.signalRef(t.signal):"fit"===n?t:i("Unsupported parameter object: "+l(t)):t}const BS="top",OS="left",zS="right",NS="bottom",TS="vertical",RS="start",PS="end",LS="index",qS="label",US="offset",jS="perc",$S="perc2",IS="size",WS="value",HS="guide-label",YS="guide-title",GS="group-title",VS="symbol",XS="gradient",ZS="discrete",JS=["size","shape","fill","stroke","strokeWidth","strokeDash","opacity"],QS={name:1,interactive:1},KS={value:0},tB={value:1};var nB=yt(["rule"]),eB=yt(["group","image","rect"]);function rB(t,n,e,r){var i=aF(t,n);return i.$fields.forEach(function(t){r[t]=1}),Z(e,i.$params),i.$expr}function iB(t,n,e,r){return function t(n,e,r,u){var o,c,f;if(n.signal)o="datum",f=rB(n.signal,e,r,u);else if(n.group||n.parent){for(c=Math.max(1,n.level||1),o="item";c-- >0;)o+=".mark.group";n.parent?(f=n.parent,o+=".datum"):f=n.group}else n.datum?(o="datum",f=n.datum):i("Invalid field reference: "+l(n));n.signal||(s(f)?(u[f]=1,f=a(f).map(l).join("][")):f=t(f,e,r,u));return o+"["+f+"]"}(o(t)?t:{datum:t},n,e,r)}function aB(t,n,e,r,i){var a,u,o,l=uB(t.scale,e,r,i);return null!=t.range?(u=l+".range()",n=0===(a=+t.range)?u+"[0]":"($="+u+","+(1===a?"$[$.length-1]":"$[0]+"+a+"*($[$.length-1]-$[0])")+")"):(void 0!==n&&(n=l+"("+n+")"),t.band&&(o=function(t,n){if(!s(t))return-1;var e=n.scaleType(t);return"band"===e||"point"===e?1:0}(t.scale,e))&&(a=(u=l+".bandwidth")+"()"+(1===(a=+t.band)?"":"*"+a),o<0&&(a="("+u+"?"+a+":0)"),n=(n?n+"+":"")+a,t.extra&&(n="(datum.extra?"+l+"(datum.extra.value):"+n+")")),null==n&&(n="0")),n}function uB(t,n,e,r){var i;if(s(t))i=cD+t,e.hasOwnProperty(i)||(e[i]=n.scaleRef(t)),i=l(i);else{for(i in n.scales)e[cD+i]=n.scaleRef(i);i=l(cD)+"+"+(t.signal?"("+rB(t.signal,n,e,r)+")":iB(t,n,e,r))}return"_["+i+"]"}function oB(t,n,e,r){return o(t)?"("+sB(null,t,n,e,r)+")":t}function sB(t,n,e,r,i){if(null!=n.gradient)return function(t,n,e,r){return"this.gradient("+uB(t.gradient,n,e,r)+","+l(t.start)+","+l(t.stop)+","+l(t.count)+")"}(n,e,r,i);var a=n.signal?rB(n.signal,e,r,i):n.color?function(t,n,e,r){function i(t,i,a,u){return"this."+t+"("+[sB(null,i,n,e,r),sB(null,a,n,e,r),sB(null,u,n,e,r)].join(",")+").toString()"}return t.c?i("hcl",t.h,t.c,t.l):t.h||t.s?i("hsl",t.h,t.s,t.l):t.l||t.a?i("lab",t.l,t.a,t.b):t.r||t.g||t.b?i("rgb",t.r,t.g,t.b):null}(n.color,e,r,i):null!=n.field?iB(n.field,e,r,i):void 0!==n.value?l(n.value):void 0;return null!=n.scale&&(a=aB(n,a,e,r,i)),void 0===a&&(a=null),null!=n.exponent&&(a="Math.pow("+a+","+oB(n.exponent,e,r,i)+")"),null!=n.mult&&(a+="*"+oB(n.mult,e,r,i)),null!=n.offset&&(a+="+"+oB(n.offset,e,r,i)),n.round&&(a="Math.round("+a+")"),a}function lB(t,n,e){const r=t+"["+l(n)+"]";return`$=${e};if(${r}!==$)${r}=$,m=1;`}function cB(t,n,e,r,i){var a="";return n.forEach(function(t){var n=sB(0,t,e,r,i);a+=t.test?rB(t.test,e,r,i)+"?"+n+":":n}),":"===k(a)&&(a+="null"),lB("o",t,a)}function fB(t,n,e,r){var i,a,o={},s="var o=item,datum=o.datum,m=0,$;";for(i in t)a=t[i],u(a)?s+=cB(i,a,r,e,o):s+=lB("o",i,sB(0,a,r,e,o));return s+=function(t,n){var e="";return nB[n]?e:(t.x2&&(t.x?(eB[n]&&(e+="if(o.x>o.x2)$=o.x,o.x=o.x2,o.x2=$;"),e+="o.width=o.x2-o.x;"):e+="o.x=o.x2-(o.width||0);"),t.xc&&(e+="o.x=o.xc-(o.width||0)/2;"),t.y2&&(t.y?(eB[n]&&(e+="if(o.y>o.y2)$=o.y,o.y=o.y2,o.y2=$;"),e+="o.height=o.y2-o.y;"):e+="o.y=o.y2-(o.height||0);"),t.yc&&(e+="o.y=o.yc-(o.height||0)/2;"),e)}(t,n),{$expr:s+="return m;",$fields:Object.keys(o),$output:Object.keys(t)}}var hB="mark",dB="frame",pB="scope",gB="axis",mB="axis-domain",vB="axis-grid",yB="axis-label",xB="axis-tick",_B="axis-title",bB="legend",wB="legend-band",AB="legend-entry",MB="legend-gradient",kB="legend-label",EB="legend-symbol",CB="legend-title",DB="title";function FB(t){return o(t)?Z({},t):{value:t}}function SB(t,n,e,r){return null!=e?(o(e)&&!u(e)?t.update[n]=e:t[r||"enter"][n]={value:e},1):0}function BB(t,n,e){for(let e in n)SB(t,e,n[e]);for(let n in e)SB(t,n,e[n],"update")}function OB(t,n,e){for(var r in n)e&&e.hasOwnProperty(r)||(t[r]=Z(t[r]||{},n[r]));return t}function zB(t,n,e,r,i,a){var u,o;for(o in(a=a||{}).encoders={$encode:u={}},t=function(t,n,e,r,i){var a,u,o={};"legend"!=e&&0!==String(e).indexOf("axis")||(e=null);for(a in u=e===dB?i.group:e===hB?Z({},i.mark,i[n]):null)TB(a,t)||("fill"===a||"stroke"===a)&&(TB("fill",t)||TB("stroke",t))||(o[a]=NB(u[a]));return W(r).forEach(function(n){var e=i.style&&i.style[n];for(var r in e)TB(r,t)||(o[r]=NB(e[r]))}),(t=Z({},t)).enter=Z(o,t.enter),t}(t,n,e,r,i.config))u[o]=fB(t[o],n,a,i);return a}function NB(t){return t&&t.signal?{signal:t.signal}:{value:t}}function TB(t,n){return n&&(n.enter&&n.enter[t]||n.update&&n.update[t])}function RB(t,n,e,r,i,a,u){return{type:t,name:u?u.name:void 0,role:n,style:u&&u.style||e,key:r,from:i,interactive:!(!u||!u.interactive),encode:OB(a,u,QS)}}function PB(t,n){const e=e=>_F(t[e],n[e]);return e.isVertical=(e=>TS===_F(t.direction,n.direction||(e?n.symbolDirection:n.gradientDirection))),e.gradientLength=(()=>_F(t.gradientLength,n.gradientLength||n.gradientWidth)),e.gradientThickness=(()=>_F(t.gradientThickness,n.gradientThickness||n.gradientHeight)),e.entryColumns=(()=>_F(t.columns,_F(n.columns,+e.isVertical(!0)))),e}function LB(t,n){var e=n&&(n.update&&n.update[t]||n.enter&&n.enter[t]);return e&&e.signal?e:e?e.value:null}function qB(t,n,e){return`item.anchor === "${RS}" ? ${t} : item.anchor === "${PS}" ? ${n} : ${e}`}const UB=qB(l(OS),l(zS),l("center"));var jB="group",$B="rect",IB="rule",WB="symbol",HB="text";function YB(t,n,e,r){var i,a,u,o,s,l,c=PB(t,e),f=c.isVertical(),h=c.gradientThickness(),d=c.gradientLength();return f?(u=[0,1],o=[0,0],s=h,l=d):(u=[0,0],o=[1,0],s=d,l=h),BB(i={enter:a={opacity:KS,x:KS,y:KS,width:FB(s),height:FB(l)},update:Z({},a,{opacity:tB,fill:{gradient:n,start:u,stop:o}}),exit:{opacity:KS}},{stroke:c("gradientStrokeColor"),strokeWidth:c("gradientStrokeWidth")},{opacity:c("gradientOpacity")}),RB($B,MB,null,void 0,void 0,i,r)}function GB(t,n,e,r,i){var a,u,o,s,l,c,f=PB(t,e),h=f.isVertical(),d=f.gradientThickness(),p=f.gradientLength(),g="";return h?(o="y",l="y2",s="x",c="width",g="1-"):(o="x",l="x2",s="y",c="height"),(u={opacity:KS,fill:{scale:n,field:WS}})[o]={signal:g+"datum."+jS,mult:p},u[s]=KS,u[l]={signal:g+"datum."+$S,mult:p},u[c]=FB(d),BB(a={enter:u,update:Z({},u,{opacity:tB}),exit:{opacity:KS}},{stroke:f("gradientStrokeColor"),strokeWidth:f("gradientStrokeWidth")},{opacity:f("gradientOpacity")}),RB($B,wB,null,WS,i,a,r)}const VB=`datum.${jS}<=0?"${OS}":datum.${jS}>=1?"${zS}":"center"`,XB=`datum.${jS}<=0?"${NS}":datum.${jS}>=1?"${BS}":"middle"`;function ZB(t,n,e,r){var i,a,u,o,s,l=PB(t,n),c=l.isVertical(),f=FB(l.gradientThickness()),h=l.gradientLength(),d=l("labelOverlap"),p=l("labelSeparation"),g="";return BB(i={enter:a={opacity:KS},update:u={opacity:tB,text:{field:qS}},exit:{opacity:KS}},{fill:l("labelColor"),fillOpacity:l("labelOpacity"),font:l("labelFont"),fontSize:l("labelFontSize"),fontStyle:l("labelFontStyle"),fontWeight:l("labelFontWeight"),limit:_F(t.labelLimit,n.gradientLabelLimit)}),c?(a.align={value:"left"},a.baseline=u.baseline={signal:XB},o="y",s="x",g="1-"):(a.align=u.align={signal:VB},a.baseline={value:"top"},o="x",s="y"),a[o]=u[o]={signal:g+"datum."+jS,mult:h},a[s]=u[s]=f,f.offset=_F(t.labelOffset,n.gradientLabelOffset)||0,t=RB(HB,kB,HS,WS,r,i,e),d&&(t.overlap={separation:p,method:d,order:"datum."+LS}),t}function JB(t,n,e,r,i,a,u,o){return{type:jB,name:e,role:t,style:n,from:r,interactive:i||!1,encode:a,marks:u,layout:o}}function QB(t,n,e,r,i){var a,u,o,s,l,c,f,h=PB(t,n),d=e.entries,p=!(!d||!d.interactive),g=d?d.name:void 0,m=h("clipHeight"),v=h("symbolOffset"),y={data:"value"},x={},_=`${i} ? datum.${US} : datum.${IS}`,b=m?FB(m):{field:IS},w=`datum.${LS}`,A=`max(1, ${i})`;return b.mult=.5,x={enter:a={opacity:KS,x:{signal:_,mult:.5,offset:v},y:b},update:u={opacity:tB,x:a.x,y:a.y},exit:{opacity:KS}},t.fill||BB(x,{fill:n.symbolBaseFillColor,stroke:n.symbolBaseStrokeColor}),BB(x,{fill:h("symbolFillColor"),shape:h("symbolType"),size:h("symbolSize"),stroke:h("symbolStrokeColor"),strokeDash:h("symbolDash"),strokeDashOffset:h("symbolDashOffset"),strokeWidth:h("symbolStrokeWidth")},{opacity:h("symbolOpacity")}),JS.forEach(function(n){t[n]&&(u[n]=a[n]={scale:t[n],field:WS})}),s=RB(WB,EB,null,WS,y,x,e.symbols),m&&(s.clip=!0),(o=FB(v)).offset=h("labelOffset"),BB(x={enter:a={opacity:KS,x:{signal:_,offset:o},y:b},update:u={opacity:tB,text:{field:qS},x:a.x,y:a.y},exit:{opacity:KS}},{align:h("labelAlign"),baseline:h("labelBaseline"),fill:h("labelColor"),fillOpacity:h("labelOpacity"),font:h("labelFont"),fontSize:h("labelFontSize"),fontStyle:h("labelFontStyle"),fontWeight:h("labelFontWeight"),limit:h("labelLimit")}),l=RB(HB,kB,HS,WS,y,x,e.labels),x={enter:{noBound:{value:!m},width:KS,height:m?FB(m):KS,opacity:KS},exit:{opacity:KS},update:u={opacity:tB,row:{signal:null},column:{signal:null}}},h.isVertical(!0)?(c=`ceil(item.mark.items.length / ${A})`,u.row.signal=`${w}%${c}`,u.column.signal=`floor(${w} / ${c})`,f={field:["row",w]}):(u.row.signal=`floor(${w} / ${A})`,u.column.signal=`${w} % ${A}`,f={field:w}),u.column.signal=`${i}?${u.column.signal}:${w}`,(t=JB(pB,null,g,r={facet:{data:r,name:"value",groupby:LS}},p,OB(x,d,QS),[s,l])).sort=f,t}const KB=\'item.orient === "left"\',tO=\'item.orient === "right"\',nO=`(${KB} || ${tO})`,eO=`datum.vgrad && ${nO}`,rO=qB(\'"top"\',\'"bottom"\',\'"middle"\'),iO=`datum.vgrad && ${tO} ? (${qB(\'"right"\',\'"left"\',\'"center"\')}) : (${nO} && !(datum.vgrad && ${KB})) ? "left" : ${UB}`,aO=`item._anchor || (${nO} ? "middle" : "start")`,uO=`${eO} ? (${KB} ? -90 : 90) : 0`,oO=`${nO} ? (datum.vgrad ? (${tO} ? "bottom" : "top") : ${rO}) : "top"`;function sO(t,n){var e;return o(t)&&(t.signal?e=t.signal:t.path?e="pathShape("+lO(t.path)+")":t.sphere&&(e="geoShape("+lO(t.sphere)+\', {type: "Sphere"})\')),e?n.signalRef(e):!!t}function lO(t){return o(t)&&t.signal?t.signal:l(t)}function cO(t){var n=t.role||"";return n.indexOf("axis")&&n.indexOf("legend")?t.type===jB?pB:n||hB:n}function fO(t){return{marktype:t.type,name:t.name||void 0,role:t.role||cO(t),zindex:+t.zindex||void 0}}function hO(t,n){return t&&t.signal?n.signalRef(t.signal):!1!==t}function dO(t,n){var e=Hr(t.type);e||i("Unrecognized transform type: "+l(t.type));var r=oF(e.type.toLowerCase(),null,pO(e,t,n));return t.signal&&n.addSignal(t.signal,n.proxy(r)),r.metadata=e.metadata||{},r}function pO(t,n,e){var r,i,a,u={};for(i=0,a=t.params.length;i<a;++i)u[(r=t.params[i]).name]=gO(r,n,e);return u}function gO(t,n,e){var r=t.type,a=n[t.name];return"index"===r?function(t,n,e){s(n.from)||i(\'Lookup "from" parameter must be a string literal.\');return e.getData(n.from).lookupRef(e,n.key)}(0,n,e):void 0!==a?"param"===r?function(t,n,e){var r=n[t.name];return t.array?(u(r)||i("Expected an array of sub-parameters. Instead: "+l(r)),r.map(function(n){return vO(t,n,e)})):vO(t,r,e)}(t,n,e):"projection"===r?e.projectionRef(n[t.name]):t.array&&!yF(a)?a.map(function(n){return mO(t,n,e)}):mO(t,a,e):void(t.required&&i("Missing required "+l(n.type)+" parameter: "+l(t.name)))}function mO(t,n,e){var r=t.type;if(yF(n))return yO(r)?i("Expression references can not be signals."):xO(r)?e.fieldRef(n):_O(r)?e.compareRef(n):e.signalRef(n.signal);var a,u=t.expr||xO(r);return u&&((a=n)&&a.expr)?e.exprRef(n.expr,n.as):u&&function(t){return t&&t.field}(n)?fF(n.field,n.as):yO(r)?aF(n,e):function(t){return"data"===t}(r)?lF(e.getData(n).values):xO(r)?fF(n):_O(r)?e.compareRef(n):n}function vO(t,n,e){var r,a,u,o,s;for(o=0,s=t.params.length;o<s;++o){for(u in(a=t.params[o]).key)if(a.key[u]!==n[u]){a=null;break}if(a)break}return a||i("Unsupported parameter: "+l(n)),r=Z(pO(a,n,e),a.key),lF(e.add(fS(r)))}function yO(t){return"expr"===t}function xO(t){return"field"===t}function _O(t){return"compare"===t}function bO(t,n){return t.$ref?t:t.data&&t.data.$ref?t.data:lF(n.getData(t.data).output)}function wO(t,n,e,r,i){this.scope=t,this.input=n,this.output=e,this.values=r,this.aggregate=i,this.index={}}wO.fromEntries=function(t,n){var e=n.length,r=1,i=n[0],a=n[e-1],u=n[e-2],o=null;for(i&&"load"===i.type&&(i=n[1]),t.add(n[0]);r<e;++r)n[r].params.pulse=lF(n[r-1]),t.add(n[r]),"aggregate"===n[r].type&&(o=n[r]);return new wO(t,i,u,a,o)};var AO=wO.prototype;function MO(t){return s(t)?t:null}function kO(t,n,e){var r,i=gF(e.op,e.field);if(n.ops){for(var a=0,u=n.as.length;a<u;++a)if(n.as[a]===i)return}else n.ops=["count"],n.fields=[null],n.as=["count"];e.op&&(n.ops.push((r=e.op.signal)?t.signalRef(r):e.op),n.fields.push(t.fieldRef(e.field)),n.as.push(i))}function EO(t,n,e,r,i,a,u){var s,l,c=n[e]||(n[e]={}),f=function(t){return o(t)?(t.order===pF?"-":"+")+gF(t.op,t.field):""}(a),h=MO(i);if(null!=h&&(t=n.scope,s=c[h+=f?"|"+f:""]),!s){var d=a?{field:hF,pulse:n.countsRef(t,i,a)}:{field:t.fieldRef(i),pulse:lF(n.output)};f&&(d.sort=t.sortRef(a)),l=t.add(oF(r,void 0,d)),u&&(n.index[i]=l),s=lF(l),null!=h&&(c[h]=s)}return s}function CO(t,n,e){var r,i=t.remove,a=t.insert,u=t.toggle,o=t.modify,s=t.values,l=n.add(sF());r=aF("if("+t.trigger+\',modify("\'+e+\'",\'+[a,i,u,o,s].map(function(t){return null==t?"null":t}).join(",")+"),0)",n),l.update=r.$expr,l.params=r.$params}function DO(t,n){var e,r,a,u,o,s,c,f,h,d,p,g,m,v,y=cO(t),x=t.type===jB,_=t.from&&t.from.facet,b=t.layout||y===pB||y===dB,w=y===hB||b||_,A=t.overlap;a=function(t,n,e){var r,a,u,o,s;return t?(r=t.facet)&&(n||i("Only group marks can be faceted."),null!=r.field?o=s=bO(r,e):(t.data?s=lF(e.getData(t.data).aggregate):((u=dO(Z({type:"aggregate",groupby:W(r.groupby)},r.aggregate),e)).params.key=e.keyRef(r.groupby),u.params.pulse=bO(r,e),o=s=lF(e.add(u))),a=e.keyRef(r.groupby,!0))):o=lF(e.add(JF(null,[{}]))),o||(o=bO(t,e)),{key:a,pulse:o,parent:s}}(t.from,x,n),d=lF(r=n.add(KF({key:a.key||(t.key?fF(t.key):void 0),pulse:a.pulse,clean:!x}))),r=u=n.add(JF({pulse:d})),r=n.add(oS({markdef:fO(t),interactive:hO(t.interactive,n),clip:sO(t.clip,n),context:{$context:!0},groups:n.lookup(),parent:n.signals.parent?n.signalRef("parent"):null,index:n.markpath(),pulse:lF(r)})),p=lF(r),(r=o=n.add(tS(zB(t.encode,t.type,y,t.style,n,{mod:!1,pulse:p})))).params.parent=n.encode(),t.transform&&t.transform.forEach(function(t){const e=dO(t,n),a=e.metadata;(a.generates||a.changes)&&i("Mark transforms should not generate new data."),a.nomod||(o.params.mod=!0),e.params.pulse=lF(r),n.add(r=e)}),t.sort&&(r=n.add(xS({sort:n.compareRef(t.sort,!0),pulse:lF(r)}))),g=lF(r),(_||b)&&(m=lF(b=n.add(_S({layout:n.objectProperty(t.layout),legends:n.legends,mark:p,pulse:g})))),v=lF(s=n.add(ZF({mark:p,pulse:m||g}))),x&&(w&&((e=n.operators).pop(),b&&e.pop()),n.pushState(g,m||v,d),_?function(t,n,e){var r,a,u,o,s=t.from.facet,c=s.name,f=bO(s,n);s.name||i("Facet must have a name: "+l(s)),s.data||i("Facet must reference a data set: "+l(s)),s.field?o=n.add(hS({field:n.fieldRef(s.field),pulse:f})):s.groupby?o=n.add(eS({key:n.keyRef(s.groupby),group:lF(n.proxy(e.parent)),pulse:f})):i("Facet must specify groupby or field: "+l(s)),a=(r=n.fork()).add(JF()),u=r.add(yS({pulse:lF(a)})),r.addData(c,new wO(r,a,a,u)),r.addSignal("parent",null),o.params.subflow={$subflow:jO(t,r).toRuntime()}}(t,n,a):w?function(t,n,e){var r=n.add(hS({pulse:e.pulse})),i=n.fork();i.add(yS()),i.addSignal("parent",null),r.params.subflow={$subflow:jO(t,i).toRuntime()}}(t,n,a):jO(t,n),n.popState(),w&&(b&&e.push(b),e.push(s))),A&&(v=function(t,n,e){var r,i=t.method,a=t.bound,u=t.separation,o={separation:yF(u)?e.signalRef(u.signal):u,method:yF(i)?e.signalRef(i.signal):i,pulse:n};t.order&&(o.sort=e.compareRef({field:t.order}));a&&(r=a.tolerance,o.boundTolerance=yF(r)?e.signalRef(r.signal):+r,o.boundScale=e.scaleRef(a.scale),o.boundOrient=a.orient);return lF(e.add(cS(o)))}(A,v,n)),c=n.add(mS({pulse:v})),f=n.add(yS({pulse:lF(c)},void 0,n.parent())),null!=t.name&&(h=t.name,n.addData(h,new wO(n,u,c,f)),t.on&&t.on.forEach(function(t){(t.insert||t.remove||t.toggle)&&i("Marks only support modify triggers."),CO(t,n,h)}))}function FO(t,n){var e,r,a,u,o,s,l,c,f,h=n.config.legend,d=t.encode||{},p=d.legend||{},g=p.name||void 0,m=p.interactive,v=p.style,y=PB(t,h),x=JS.reduce(function(n,e){return n||t[e]},0);return x||i("Missing valid scale for legend."),o=function(t,n){var e=t.type||VS;t.type||1!==function(t){return JS.reduce(function(n,e){return n+(t[e]?1:0)},0)}(t)||!t.fill&&!t.stroke||(e=qh(n)?XS:jh(n)?ZS:VS);return e!==XS?e:jh(n)?ZS:XS}(t,n.scaleType(x)),s={title:null!=t.title,type:o,vgrad:"symbol"!==o&&y.isVertical()},l=lF(n.add(JF(null,[s]))),p=OB(function(t,n){var e={enter:{},update:{}};return BB(e,{orient:t("orient"),offset:t("offset"),padding:t("padding"),titlePadding:t("titlePadding"),cornerRadius:t("cornerRadius"),fill:t("fillColor"),stroke:t("strokeColor"),strokeWidth:n.strokeWidth,strokeDash:n.strokeDash,x:t("legendX"),y:t("legendY")}),e}(y,h),p,QS),e={enter:{x:{value:0},y:{value:0}}},c=lF(n.add(aS(a={type:o,scale:n.scaleRef(x),count:n.objectProperty(t.tickCount),values:n.objectProperty(t.values),minstep:n.property(t.tickMinStep),formatType:n.property(t.formatType),formatSpecifier:n.property(t.format)}))),o===XS?(u=[YB(t,x,h,d.gradient),ZB(t,h,d.labels,c)],a.count=a.count||n.signalRef(`max(2,2*floor((${bF(y.gradientLength())})/100))`)):o===ZS?u=[GB(t,x,h,d.gradient,c),ZB(t,h,d.labels,c)]:(r=function(t,n){const e=PB(t,n);return{align:e("gridAlign"),columns:e.entryColumns(),center:{row:!0,column:!1},padding:{row:e("rowPadding"),column:e("columnPadding")}}}(t,h),u=[QB(t,h,d,c,bF(r.columns))],a.size=function(t,n,e){var r=bF(SO("size",t,e)),i=bF(SO("strokeWidth",t,e)),a=bF(function(t,n,e){return LB("fontSize",t)||function(t,n,e){var r=n.config.style[e];return r&&r[t]}("fontSize",n,e)}(e[1].encode,n,HS));return aF(`max(ceil(sqrt(${r})+${i}),${a})`,n)}(t,n,u[0].marks)),u=[JB(AB,null,null,l,m,e,u,r)],s.title&&u.push(function(t,n,e,r){var i,a=PB(t,n);return BB(i={enter:{opacity:KS},update:{opacity:tB,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:KS}},{orient:a("titleOrient"),_anchor:a("titleAnchor"),anchor:{signal:aO},angle:{signal:uO},align:{signal:iO},baseline:{signal:oO},text:t.title,fill:a("titleColor"),fillOpacity:a("titleOpacity"),font:a("titleFont"),fontSize:a("titleFontSize"),fontStyle:a("titleFontStyle"),fontWeight:a("titleFontWeight"),limit:a("titleLimit")},{align:a("titleAlign"),baseline:a("titleBaseline")}),RB(HB,CB,YS,null,r,i,e)}(t,h,d.title,l)),f=JB(bB,v,g,l,m,p,u),t.zindex&&(f.zindex=t.zindex),DO(f,n)}function SO(t,n,e){return n[t]?`scale("${n[t]}",datum)`:LB(t,e[0].encode)}AO.countsRef=function(t,n,e){var r,i,a,u=this.counts||(this.counts={}),o=MO(n);return null!=o&&(t=this.scope,r=u[o]),r?e&&e.field&&kO(t,r.agg.params,e):(a={groupby:t.fieldRef(n,"key"),pulse:lF(this.output)},e&&e.field&&kO(t,a,e),i=t.add(VF(a)),r=t.add(JF({pulse:lF(i)})),r={agg:i,ref:lF(r)},null!=o&&(u[o]=r)),r.ref},AO.tuplesRef=function(){return lF(this.values)},AO.extentRef=function(t,n){return EO(t,this,"extent","extent",n,!1)},AO.domainRef=function(t,n){return EO(t,this,"domain","values",n,!1)},AO.valuesRef=function(t,n,e){return EO(t,this,"vals","values",n,e||!0)},AO.lookupRef=function(t,n){return EO(t,this,"lookup","tupleindex",n,!1)},AO.indataRef=function(t,n){return EO(t,this,"indata","tupleindex",n,!0,!0)};const BO=`item.orient==="${OS}"?-90:item.orient==="${zS}"?90:0`,OO=`item.orient==="${NS}"?"${BS}":"${NS}"`;function zO(t,n){t=s(t)?{text:t}:t;var e,r,i=n.config.title,a=Z({},t.encode);return e=lF(n.add(JF(null,[{}]))),a.name=t.name,a.interactive=t.interactive,r=function(t,n,e,r){var i,a=PB(t,n),u={value:0},o=t.text;return BB(i={enter:{opacity:u},update:{opacity:{value:1}},exit:{opacity:u}},{text:o,orient:a("orient"),anchor:a("anchor"),align:{signal:UB},angle:{signal:BO},baseline:{signal:OO},dx:a("dx"),dy:a("dy"),fill:a("color"),font:a("font"),fontSize:a("fontSize"),fontStyle:a("fontStyle"),fontWeight:a("fontWeight"),frame:a("frame"),limit:a("limit"),offset:a("offset")||0},{align:a("align"),angle:a("angle"),baseline:a("baseline")}),RB(HB,DB,t.style||GS,null,r,i,e)}(t,i,a,e),t.zindex&&(r.zindex=t.zindex),DO(r,n)}function NO(t,n){var e=[];t.transform&&t.transform.forEach(function(t){e.push(dO(t,n))}),t.on&&t.on.forEach(function(e){CO(e,n,t.name)}),n.addDataPipeline(t.name,function(t,n,e){var r,i,a,u,o,s=[],l=null,c=!1,f=!1;t.values?xF(t.values)||xF(t.format)?(s.push(RO(n,t)),s.push(l=TO())):s.push(l=TO({$ingest:t.values,$format:t.format})):t.url?xF(t.url)||xF(t.format)?(s.push(RO(n,t)),s.push(l=TO())):s.push(l=TO({$request:t.url,$format:t.format})):t.source&&(l=r=W(t.source).map(function(t){return lF(n.getData(t).output)}),s.push(null));for(i=0,a=e.length;i<a;++i)u=e[i],o=u.metadata,l||o.source||s.push(l=TO()),s.push(u),o.generates&&(f=!0),o.modifies&&!f&&(c=!0),o.source?l=u:o.changes&&(l=null);r&&(a=r.length-1,s[0]=gS({derive:c,pulse:a?r:r[0]}),(c||a)&&s.splice(1,0,TO()));l||s.push(TO());return s.push(yS({})),s}(t,n,e))}function TO(t){var n=JF({},t);return n.metadata={source:!0},n}function RO(t,n){return uS({url:n.url?t.property(n.url):void 0,values:n.values?t.property(n.values):void 0,format:t.objectProperty(n.format)})}function PO(t,n){return{scale:t.scale,range:n}}function LO(t,n,e,r){var i,a,u,s,l,c,f,h,d,p=PB(t,n),g=t.orient,m=t.gridScale,v=g===OS||g===BS?1:-1,y=function(t,n){if(1===n);else if(o(t)){for(var e=t=Z({},t);null!=e.mult;){if(!o(e.mult))return e.mult*=n,t;e=e.mult=Z({},e.mult)}e.mult=n}else t=n*(t||0);return t}(t.offset,v);return BB(i={enter:a={opacity:KS},update:s={opacity:tB},exit:u={opacity:KS}},{stroke:p("gridColor"),strokeDash:p("gridDash"),strokeDashOffset:p("gridDashOffset"),strokeOpacity:p("gridOpacity"),strokeWidth:p("gridWidth")}),l={scale:t.scale,field:WS,band:p("bandPosition"),round:p("tickRound"),extra:p("tickExtra"),offset:p("tickOffset")},g===BS||g===NS?(c="x",f="y",d="height"):(c="y",f="x",d="width"),h=f+"2",s[c]=a[c]=u[c]=l,m?(s[f]=a[f]={scale:m,range:0,mult:v,offset:y},s[h]=a[h]={scale:m,range:1,mult:v,offset:y}):(s[f]=a[f]={value:0,offset:y},s[h]=a[h]={signal:d,mult:v,offset:y}),RB(IB,vB,null,WS,r,i,e)}function qO(t,n,e,r,i){return{signal:\'flush(range("\'+t+\'"), scale("\'+t+\'", datum.value), \'+n+","+e+","+r+","+i+")"}}function UO(t,n){var e,r,i,a,u,o,s=function(t,n){var e=n.config,r=t.orient,i=r===BS||r===NS?e.axisX:e.axisY,a=e["axis"+r[0].toUpperCase()+r.slice(1)],u="band"===n.scaleType(t.scale)&&e.axisBand;return i||a||u?Z({},e.axis,i,a,u):e.axis}(t,n),l=t.encode||{},c=l.axis||{},f=c.name||void 0,h=c.interactive,d=c.style,p=PB(t,s);return e={orient:t.orient,ticks:!!p("ticks"),labels:!!p("labels"),grid:!!p("grid"),domain:!!p("domain"),title:null!=t.title},r=lF(n.add(JF({},[e]))),c=OB({update:{offset:FB(p("offset")||0),position:FB(_F(t.position,0)),titlePadding:FB(p("titlePadding")),minExtent:FB(p("minExtent")),maxExtent:FB(p("maxExtent")),range:{signal:`abs(span(range("${t.scale}")))`}}},l.axis,QS),i=lF(n.add(XF({scale:n.scaleRef(t.scale),extra:n.property(p("tickExtra")),count:n.objectProperty(t.tickCount),values:n.objectProperty(t.values),minstep:n.property(t.tickMinStep),formatType:n.property(t.formatType),formatSpecifier:n.property(t.format)}))),o=[],e.grid&&o.push(LO(t,s,l.grid,i)),e.ticks&&(a=p("tickSize"),o.push(function(t,n,e,r,i){var a,u,o,s,l,c,f=PB(t,n),h=t.orient,d=h===OS||h===BS?-1:1;return BB(a={enter:u={opacity:KS},update:s={opacity:tB},exit:o={opacity:KS}},{stroke:f("tickColor"),strokeDash:f("tickDash"),strokeDashOffset:f("tickDashOffset"),strokeOpacity:f("tickOpacity"),strokeWidth:f("tickWidth")}),(l=FB(i)).mult=d,c={scale:t.scale,field:WS,band:f("bandPosition"),round:f("tickRound"),extra:f("tickExtra"),offset:f("tickOffset")},h===BS||h===NS?(s.y=u.y=KS,s.y2=u.y2=l,s.x=u.x=o.x=c):(s.x=u.x=KS,s.x2=u.x2=l,s.y=u.y=o.y=c),RB(IB,xB,null,WS,r,a,e)}(t,s,l.ticks,i,a))),e.labels&&(a=e.ticks?a:0,o.push(function(t,n,e,r,i){var a,u,o,s,l,c,f,h,d,p,g=PB(t,n),m=t.orient,v=m===OS||m===BS?-1:1,y=m===BS||m===NS,x=t.scale,_=bF(g("labelFlush")),b=bF(g("labelFlushOffset")),w=0===_||!!_,A=g("labelAlign"),M=g("labelBaseline");return(o=FB(i)).mult=v,o.offset=FB(g("labelPadding")||0),o.offset.mult=v,s={scale:x,field:WS,band:.5,offset:g("tickOffset")},y?(l=A||(w?qO(x,_,\'"left"\',\'"right"\',\'"center"\'):"center"),c=M||(m===BS?"bottom":"top"),f=!A):(l=A||(m===zS?"left":"right"),c=M||(w?qO(x,_,\'"top"\',\'"bottom"\',\'"middle"\'):"middle"),f=!M),f=f&&w&&b?qO(x,_,"-"+b,b,0):null,BB(a={enter:u={opacity:KS,x:y?s:o,y:y?o:s},update:{opacity:tB,text:{field:qS},x:u.x,y:u.y},exit:{opacity:KS,x:u.x,y:u.y}},{[y?"dx":"dy"]:f,align:l,baseline:c,angle:g("labelAngle"),fill:g("labelColor"),fillOpacity:g("labelOpacity"),font:g("labelFont"),fontSize:g("labelFontSize"),fontWeight:g("labelFontWeight"),fontStyle:g("labelFontStyle"),limit:g("labelLimit")}),h=g("labelBound"),d=g("labelOverlap"),p=g("labelSeparation"),t=RB(HB,yB,HS,WS,r,a,e),(d||h)&&(t.overlap={separation:p,method:d,order:"datum.index",bound:h?{scale:x,orient:m,tolerance:h}:null}),t}(t,s,l.labels,i,a))),e.domain&&o.push(function(t,n,e,r){var i,a,u,o,s,l,c=PB(t,n),f=t.orient;return BB(i={enter:a={opacity:KS},update:u={opacity:tB},exit:{opacity:KS}},{stroke:c("domainColor"),strokeDash:c("domainDash"),strokeDashOffset:c("domainDashOffset"),strokeWidth:c("domainWidth"),strokeOpacity:c("domainOpacity")}),f===BS||f===NS?(o="x",l="y"):(o="y",l="x"),s=o+"2",a[l]=KS,u[o]=a[o]=PO(t,0),u[s]=a[s]=PO(t,1),RB(IB,mB,null,null,r,i,e)}(t,s,l.domain,r)),e.title&&o.push(function(t,n,e,r){var i,a,u,o,s=PB(t,n),l=t.orient,c=l===OS||l===BS?-1:1,f=l===BS||l===NS;return i={enter:a={opacity:KS,anchor:FB(s("titleAnchor")),align:{signal:UB}},update:u=Z({},a,{opacity:tB,text:FB(t.title)}),exit:{opacity:KS}},o={signal:`lerp(range("${t.scale}"), ${qB(0,1,.5)})`},f?(u.x=o,a.angle={value:0},a.baseline={value:l===BS?"bottom":"top"}):(u.y=o,a.angle={value:90*c},a.baseline={value:"bottom"}),BB(i,{angle:s("titleAngle"),baseline:s("titleBaseline"),fill:s("titleColor"),fillOpacity:s("titleOpacity"),font:s("titleFont"),fontSize:s("titleFontSize"),fontStyle:s("titleFontStyle"),fontWeight:s("titleFontWeight"),limit:s("titleLimit")},{align:s("titleAlign")}),!SB(i,"x",s("titleX"),"update")&&!f&&!TB("x",e)&&(i.enter.auto={value:!0}),!SB(i,"y",s("titleY"),"update")&&f&&!TB("y",e)&&(i.enter.auto={value:!0}),RB(HB,_B,YS,null,r,i,e)}(t,s,l.title,r)),u=JB(gB,d,f,r,h,c,o),t.zindex&&(u.zindex=t.zindex),DO(u,n)}function jO(t,n,e){var r=W(t.signals),a=W(t.scales);return e||r.forEach(function(t){iF(t,n)}),W(t.projections).forEach(function(t){!function(t,n){var e={};for(var r in t)"name"!==r&&(e[r]=SS(t[r],r,n));n.addProjection(t.name,e)}(t,n)}),a.forEach(function(t){AS(t,n)}),W(t.data).forEach(function(t){NO(t,n)}),a.forEach(function(t){MS(t,n)}),r.forEach(function(t){!function(t,n){var e=n.getSignal(t.name),r=t.update;t.init&&(r?i("Signals can not include both init and update expressions."):(r=t.init,e.initonly=!0)),r&&(r=aF(r,n),e.update=r.$expr,e.params=r.$params),t.on&&t.on.forEach(function(t){HF(t,n,e.id)})}(t,n)}),W(t.axes).forEach(function(t){UO(t,n)}),W(t.marks).forEach(function(t){DO(t,n)}),W(t.legends).forEach(function(t){FO(t,n)}),t.title&&zO(t.title,n),n.parseLambdas(),n}var $O=yt(["width","height","padding","autosize"]);function IO(t,n){var e,r,i,a,u,s=n.config;return n.background=t.background||s.background,n.eventConfig=s.events,u=lF(n.root=n.add(sF())),n.addSignal("width",t.width||0),n.addSignal("height",t.height||0),n.addSignal("padding",function(t,n){return o(t=t||n.padding)?{top:tF(t.top),bottom:tF(t.bottom),left:tF(t.left),right:tF(t.right)}:{top:e=tF(t),bottom:e,left:e,right:e};var e}(t.padding,s)),n.addSignal("autosize",function(t,n){return o(t=t||n.autosize)?t:{type:t||"pad"}}(t.autosize,s)),n.legends=n.objectProperty(s.legend&&s.legend.layout),W(t.signals).forEach(function(t){$O[t.name]||iF(t,n)}),r=n.add(JF()),i=OB({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},t.encode),i=n.add(tS(zB(i,jB,dB,t.style,n,{pulse:lF(r)}))),a=n.add(_S({layout:n.objectProperty(t.layout),legends:n.legends,autosize:n.signalRef("autosize"),mark:u,pulse:lF(i)})),n.operators.pop(),n.pushState(lF(i),lF(a),null),jO(t,n,!0),n.operators.push(a),e=n.add(ZF({mark:u,pulse:lF(a)})),e=n.add(mS({pulse:lF(e)})),e=n.add(yS({pulse:lF(e)})),n.addData("root",new wO(n,r,r,e)),n}function WO(t){this.config=t,this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.background=null,this.eventConfig=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function HO(t){this.config=t.config,this.legends=t.legends,this.field=Object.create(t.field),this.signals=Object.create(t.signals),this.lambdas=Object.create(t.lambdas),this.scales=Object.create(t.scales),this.events=Object.create(t.events),this.data=Object.create(t.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++t._nextsub[0],this._nextsub=t._nextsub,this._parent=t._parent.slice(),this._encode=t._encode.slice(),this._lookup=t._lookup.slice(),this._markpath=t._markpath}var YO=WO.prototype=HO.prototype;function GO(t){return(u(t)?function(t){for(var n,e="[",r=0,i=t.length;r<i;++r)n=t[r],e+=(r>0?",":"")+(o(n)?n.signal||GO(n):l(n));return e+"]"}:function(t){var n,e,r="{",i=0;for(n in t)e=t[n],r+=(++i>1?",":"")+l(n)+":"+(o(e)?e.signal||GO(e):l(e));return r+"}"})(t)}function VO(t){return(t||[]).reduce((t,n)=>{for(var e in n){var r="legend"===e?{layout:1}:"style"===e||null;XO(t,e,n[e],r)}return t},{padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:KO},area:{fill:KO},image:null,line:{stroke:KO,strokeWidth:QO},path:{stroke:KO},rect:{fill:KO},rule:{stroke:tz},shape:{stroke:KO},symbol:{fill:KO,size:64},text:{fill:tz,font:ZO,fontSize:11},style:{"guide-label":{fill:tz,font:ZO,fontSize:10},"guide-title":{fill:tz,font:ZO,fontSize:11,fontWeight:"bold"},"group-title":{fill:tz,font:ZO,fontSize:13,fontWeight:"bold"},point:{size:JO,strokeWidth:QO,shape:"circle"},circle:{size:JO,strokeWidth:QO},square:{size:JO,strokeWidth:QO,shape:"square"},cell:{fill:"transparent",stroke:ez}},title:{orient:"top",anchor:"middle",offset:4},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:nz,grid:!1,gridWidth:1,gridColor:ez,labels:!0,labelAngle:0,labelLimit:180,labelPadding:2,ticks:!0,tickColor:nz,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-1},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:ez,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:nz,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}})}function XO(t,n,e,r){var i,a;if(o(e)&&!u(e))for(i in a=o(t[n])?t[n]:t[n]={},e)r&&(!0===r||r[i])?XO(a,i,e[i]):a[i]=e[i];else t[n]=e}YO.fork=function(){return new HO(this)},YO.isSubscope=function(){return this._subid>0},YO.toRuntime=function(){return this.finish(),{background:this.background,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig}},YO.id=function(){return(this._subid?this._subid+":":0)+this._id++},YO.add=function(t){return this.operators.push(t),t.id=this.id(),t.refs&&(t.refs.forEach(function(n){n.$ref=t.id}),t.refs=null),t},YO.proxy=function(t){var n=t instanceof uF?lF(t):t;return this.add(pS({value:n}))},YO.addStream=function(t){return this.streams.push(t),t.id=this.id(),t},YO.addUpdate=function(t){return this.updates.push(t),t},YO.finish=function(){var t,n;for(t in this.root&&(this.root.root=!0),this.signals)this.signals[t].signal=t;for(t in this.scales)this.scales[t].scale=t;function e(t,n,e){var r;t&&((r=t.data||(t.data={}))[n]||(r[n]=[])).push(e)}for(t in this.data)for(var r in e((n=this.data[t]).input,t,"input"),e(n.output,t,"output"),e(n.values,t,"values"),n.index)e(n.index[r],t,"index:"+r);return this},YO.pushState=function(t,n,e){this._encode.push(lF(this.add(yS({pulse:t})))),this._parent.push(n),this._lookup.push(e?lF(this.proxy(e)):null),this._markpath.push(-1)},YO.popState=function(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},YO.parent=function(){return k(this._parent)},YO.encode=function(){return k(this._encode)},YO.lookup=function(){return k(this._lookup)},YO.markpath=function(){var t=this._markpath;return++t[t.length-1]},YO.fieldRef=function(t,n){if(s(t))return fF(t,n);t.signal||i("Unsupported field reference: "+l(t));var e,r=t.signal,a=this.field[r];return a||(e={name:this.signalRef(r)},n&&(e.as=n),this.field[r]=a=lF(this.add(rS(e)))),a},YO.compareRef=function(t,n){function e(t){return yF(t)?(i=!0,r.signalRef(t.signal)):function(t){return t&&t.expr}(t)?(i=!0,r.exprRef(t.expr)):t}var r=this,i=!1,a=W(t.field).map(e),u=W(t.order).map(e);return n&&a.push(cF),i?lF(this.add(QF({fields:a,orders:u}))):dF(a,u)},YO.keyRef=function(t,n){var e=this.signals,r=!1;return t=W(t).map(function(t){return yF(t)?(r=!0,lF(e[t.signal])):t}),r?lF(this.add(iS({fields:t,flat:n}))):function(t,n){var e={$key:t};return n&&(e.$flat=!0),e}(t,n)},YO.sortRef=function(t){if(!t)return t;var n=[gF(t.op,t.field),cF],e=t.order||"ascending";return e.signal?lF(this.add(QF({fields:n,orders:[e=this.signalRef(e.signal),e]}))):dF(n,[e,e])},YO.event=function(t,n){var e=t+":"+n;if(!this.events[e]){var r=this.id();this.streams.push({id:r,source:t,type:n}),this.events[e]=r}return this.events[e]},YO.addSignal=function(t,n){this.signals.hasOwnProperty(t)&&i("Duplicate signal name: "+l(t));var e=n instanceof uF?n:this.add(sF(n));return this.signals[t]=e},YO.getSignal=function(t){return this.signals[t]||i("Unrecognized signal name: "+l(t)),this.signals[t]},YO.signalRef=function(t){return this.signals[t]?lF(this.signals[t]):(this.lambdas.hasOwnProperty(t)||(this.lambdas[t]=this.add(sF(null))),lF(this.lambdas[t]))},YO.parseLambdas=function(){for(var t=Object.keys(this.lambdas),n=0,e=t.length;n<e;++n){var r=t[n],i=aF(r,this),a=this.lambdas[r];a.params=i.$params,a.update=i.$expr}},YO.property=function(t){return t&&t.signal?this.signalRef(t.signal):t},YO.objectProperty=function(t){return t&&o(t)?this.signalRef(t.signal||GO(t)):t},YO.exprRef=function(t,n){var e={expr:aF(t,this)};return n&&(e.expr.$name=n),lF(this.add(nS(e)))},YO.addBinding=function(t,n){this.bindings||i("Nested signals do not support binding: "+l(t)),this.bindings.push(Z({signal:t},n))},YO.addScaleProj=function(t,n){this.scales.hasOwnProperty(t)&&i("Duplicate scale or projection name: "+l(t)),this.scales[t]=this.add(n)},YO.addScale=function(t,n){this.addScaleProj(t,vS(n))},YO.addProjection=function(t,n){this.addScaleProj(t,dS(n))},YO.getScale=function(t){return this.scales[t]||i("Unrecognized scale name: "+l(t)),this.scales[t]},YO.projectionRef=YO.scaleRef=function(t){return lF(this.getScale(t))},YO.projectionType=YO.scaleType=function(t){return this.getScale(t).params.type},YO.addData=function(t,n){return this.data.hasOwnProperty(t)&&i("Duplicate data set name: "+l(t)),this.data[t]=n},YO.getData=function(t){return this.data[t]||i("Undefined data set name: "+l(t)),this.data[t]},YO.addDataPipeline=function(t,n){return this.data.hasOwnProperty(t)&&i("Duplicate data set name: "+l(t)),this.addData(t,wO.fromEntries(this,n))};var ZO="sans-serif",JO=30,QO=2,KO="#4c78a8",tz="#000",nz="#888",ez="#ddd";Z(Wr,ou,vh,Xm,zb,Ow,XA,tM,jM,nk,lk),t.Bounds=Hu,t.CanvasHandler=Lc,t.CanvasRenderer=Ic,t.Dataflow=qr,t.Debug=A,t.Error=_,t.EventStream=It,t.Gradient=Qu,t.GroupItem=to,t.Handler=Oc,t.Info=w,t.Item=Ku,t.Marks=mc,t.MultiPulse=zr,t.None=x,t.Operator=qt,t.Parameters=Tt,t.Pulse=Dr,t.RenderType=wf,t.Renderer=Tc,t.ResourceLoader=ro,t.SVGHandler=Gc,t.SVGRenderer=ef,t.SVGStringRenderer=mf,t.Scenegraph=Ac,t.Transform=$r,t.View=VD,t.Warn=b,t.accessor=n,t.accessorFields=r,t.accessorName=e,t.array=W,t.bin=ni,t.bootstrapCI=_i,t.boundClip=Sf,t.boundContext=al,t.boundItem=vc,t.boundMark=xc,t.boundStroke=el,t.changeset=zt,t.clampRange=H,t.closeTag=Jc,t.compare=G,t.constant=V,t.debounce=X,t.definition=Hr,t.domChild=Dc,t.domClear=Fc,t.domCreate=Ec,t.domFind=Cc,t.error=i,t.expressionFunction=_D,t.extend=Z,t.extent=J,t.extentIndex=Q,t.falsy=v,t.fastmap=tt,t.field=c,t.flush=nt,t.font=cc,t.fontFamily=lc,t.fontSize=uc,t.format=Dn,t.formatLocale=hg,t.formats=Fn,t.id=h,t.identity=d,t.inferType=rn,t.inferTypes=an,t.ingest=Dt,t.inherits=et,t.inrange=rt,t.interpolate=im,t.interpolateColors=nm,t.interpolateRange=tm,t.intersect=kf,t.intersectBoxLine=pl,t.intersectPath=cl,t.intersectPoint=fl,t.intersectRule=dl,t.isArray=u,t.isBoolean=it,t.isDate=at,t.isFunction=Y,t.isNumber=ut,t.isObject=o,t.isRegExp=ot,t.isString=s,t.isTuple=kt,t.key=st,t.lerp=lt,t.loader=wr,t.logger=M,t.merge=ct,t.one=g,t.openTag=Zc,t.pad=ht,t.panLinear=z,t.panLog=N,t.panPow=T,t.panSymlog=R,t.parse=function(t,n){return o(t)||i("Input Vega specification must be an object."),IO(t,new WO(VO([n,t.config]))).toRuntime()},t.pathCurves=ys,t.pathEqual=zf,t.pathParse=bs,t.pathRectangle=$s,t.pathRender=Os,t.pathSymbols=Ts,t.pathTrail=Is,t.peek=k,t.point=Bc,t.projection=Ab,t.quantizeInterpolator=em,t.quarter=$,t.quartiles=bi,t.randomInteger=function(n,e){null==e&&(e=n,n=0);var r,i,a,u={};return u.min=function(t){return arguments.length?(a=i-(r=t||0),u):r},u.max=function(t){return arguments.length?(a=(i=t||0)-r,u):i},u.sample=function(){return r+Math.floor(a*t.random())},u.pdf=function(t){return t===Math.floor(t)&&t>=r&&t<i?1/a:0},u.cdf=function(t){var n=Math.floor(t);return n<r?0:n>=i?1:(n-r+1)/a},u.icdf=function(t){return t>=0&&t<=1?r-1+Math.floor(t*a):NaN},u.min(n).max(e)},t.randomKDE=Ai,t.randomLCG=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},t.randomMixture=Mi,t.randomNormal=wi,t.randomUniform=ki,t.read=br,t.regressionExp=Oi,t.regressionLinear=Si,t.regressionLoess=Li,t.regressionLog=Bi,t.regressionPoly=Ti,t.regressionPow=zi,t.regressionQuad=Ni,t.renderModule=Mf,t.repeat=ft,t.resetSVGClipId=function(){Tl=1},t.responseType=Sn,t.runtime=OD,t.runtimeContext=ND,t.sampleCurve=$i,t.scale=Zg,t.sceneEqual=Of,t.sceneFromJSON=wc,t.scenePickVisit=wl,t.sceneToJSON=bc,t.sceneVisit=bl,t.sceneZOrder=_l,t.scheme=sm,t.setRandom=function(n){t.random=n},t.span=dt,t.splitAccessPath=a,t.stringValue=l,t.textMetrics=nc,t.timeFormatLocale=_r,t.timeInterval=Wh,t.toBoolean=pt,t.toDate=mt,t.toNumber=E,t.toSet=yt,t.toString=vt,t.transform=Yr,t.transforms=Wr,t.truncate=xt,t.truthy=m,t.tupleid=Et,t.typeParsers=tn,t.utcquarter=I,t.version="5.4.0",t.visitArray=_t,t.zero=p,t.zoomLinear=L,t.zoomLog=q,t.zoomPow=U,t.zoomSymlog=j,Object.defineProperty(t,"__esModule",{value:!0})});'
# vega-lite-3.3.0.min.js
Canvas._vegalite = '!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).vl={})}(this,function(e){"use strict";var t="3.3.0";function n(e,t,n){return e.fields=t||[],e.fname=n,e}function i(e){throw Error(e)}function r(e){var t,n,r,o=[],a=null,s=0,u=e.length,c="";function l(){o.push(c+e.substring(t,n)),c="",t=n+1}for(e+="",t=n=0;n<u;++n)if("\\\\"===(r=e[n]))c+=e.substring(t,n),t=++n;else if(r===a)l(),a=null,s=-1;else{if(a)continue;t===s&&\'"\'===r?(t=n+1,a=r):t===s&&"\'"===r?(t=n+1,a=r):"."!==r||s?"["===r?(n>t&&l(),s=t=n+1):"]"===r&&(s||i("Access path missing open bracket: "+e),s>0&&l(),s=0,t=n+1):n>t?l():t=n+1}return s&&i("Access path missing closing bracket: "+e),a&&i("Access path missing closing quote: "+e),n>t&&(n++,l()),o}var o=Array.isArray;function a(e){return e===Object(e)}function s(e){return"string"==typeof e}function u(e){return o(e)?"["+e.map(u)+"]":a(e)||s(e)?JSON.stringify(e).replace("\\u2028","\\\\u2028").replace("\\u2029","\\\\u2029"):e}var c=[],l=(function(e,t){var i=r(e),o="return _["+i.map(u).join("][")+"];";n(Function("_",o),[e=1===i.length?i[0]:e],t||e)}("id"),n(function(e){return e},c,"identity"));n(function(){return 0},c,"zero"),n(function(){return 1},c,"one"),n(function(){return!0},c,"true"),n(function(){return!1},c,"false");function f(e,t,n){var i=[t].concat([].slice.call(n));console[e](...i)}var d=0,p=1,h=2,m=3,g=4;function y(e){return null!=e?o(e)?e:[e]:[]}function b(e){return"boolean"==typeof e}function v(e){return"number"==typeof e}function x(e){for(var t={},n=0,i=e.length;n<i;++n)t[e[n]]=!0;return t}var A=function(e,t){return e(t={exports:{}},t.exports),t.exports}(function(e){var t=function(){function e(e,t){return null!=t&&e instanceof t}var t,n,i;try{t=Map}catch(e){t=function(){}}try{n=Set}catch(e){n=function(){}}try{i=Promise}catch(e){i=function(){}}function r(o,s,u,c,l){"object"==typeof s&&(u=s.depth,c=s.prototype,l=s.includeNonEnumerable,s=s.circular);var f=[],d=[],p="undefined"!=typeof Buffer;return void 0===s&&(s=!0),void 0===u&&(u=1/0),function o(u,h){if(null===u)return null;if(0===h)return u;var m,g;if("object"!=typeof u)return u;if(e(u,t))m=new t;else if(e(u,n))m=new n;else if(e(u,i))m=new i(function(e,t){u.then(function(t){e(o(t,h-1))},function(e){t(o(e,h-1))})});else if(r.__isArray(u))m=[];else if(r.__isRegExp(u))m=new RegExp(u.source,a(u)),u.lastIndex&&(m.lastIndex=u.lastIndex);else if(r.__isDate(u))m=new Date(u.getTime());else{if(p&&Buffer.isBuffer(u))return m=Buffer.allocUnsafe?Buffer.allocUnsafe(u.length):new Buffer(u.length),u.copy(m),m;e(u,Error)?m=Object.create(u):void 0===c?(g=Object.getPrototypeOf(u),m=Object.create(g)):(m=Object.create(c),g=c)}if(s){var y=f.indexOf(u);if(-1!=y)return d[y];f.push(u),d.push(m)}for(var b in e(u,t)&&u.forEach(function(e,t){var n=o(t,h-1),i=o(e,h-1);m.set(n,i)}),e(u,n)&&u.forEach(function(e){var t=o(e,h-1);m.add(t)}),u){var v;g&&(v=Object.getOwnPropertyDescriptor(g,b)),v&&null==v.set||(m[b]=o(u[b],h-1))}if(Object.getOwnPropertySymbols){var x=Object.getOwnPropertySymbols(u);for(b=0;b<x.length;b++){var A=x[b];(!(C=Object.getOwnPropertyDescriptor(u,A))||C.enumerable||l)&&(m[A]=o(u[A],h-1),C.enumerable||Object.defineProperty(m,A,{enumerable:!1}))}}if(l){var w=Object.getOwnPropertyNames(u);for(b=0;b<w.length;b++){var C,F=w[b];(C=Object.getOwnPropertyDescriptor(u,F))&&C.enumerable||(m[F]=o(u[F],h-1),Object.defineProperty(m,F,{enumerable:!1}))}}return m}(o,u)}function o(e){return Object.prototype.toString.call(e)}function a(e){var t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),t}return r.clonePrototype=function(e){if(null===e)return null;var t=function(){};return t.prototype=e,new t},r.__objToStr=o,r.__isDate=function(e){return"object"==typeof e&&"[object Date]"===o(e)},r.__isArray=function(e){return"object"==typeof e&&"[object Array]"===o(e)},r.__isRegExp=function(e){return"object"==typeof e&&"[object RegExp]"===o(e)},r.__getRegExpFlags=a,r}();e.exports&&(e.exports=t)}),w=Array.isArray,C=Object.keys,F=Object.prototype.hasOwnProperty,E=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,i="boolean"==typeof t.cycles&&t.cycles,r=t.cmp&&(n=t.cmp,function(e){return function(t,i){var r={key:t,value:e[t]},o={key:i,value:e[i]};return n(r,o)}}),o=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,a;if(Array.isArray(t)){for(a="[",n=0;n<t.length;n++)n&&(a+=","),a+=e(t[n])||"null";return a+"]"}if(null===t)return"null";if(-1!==o.indexOf(t)){if(i)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=o.push(t)-1,u=Object.keys(t).sort(r&&r(t));for(a="",n=0;n<u.length;n++){var c=u[n],l=e(t[c]);l&&(a&&(a+=","),a+=JSON.stringify(c)+":"+l)}return o.splice(s,1),"{"+a+"}"}}(e)};function D(e){return!!e.or}function S(e){return!!e.and}function k(e){return!!e.not}function O(e,t){return k(e)?{not:O(e.not,t)}:S(e)?{and:e.and.map(e=>O(e,t))}:D(e)?{or:e.or.map(e=>O(e,t))}:t(e)}const $=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var i,r,o,a=w(t),s=w(n);if(a&&s){if((r=t.length)!=n.length)return!1;for(i=r;0!=i--;)if(!e(t[i],n[i]))return!1;return!0}if(a!=s)return!1;var u=t instanceof Date,c=n instanceof Date;if(u!=c)return!1;if(u&&c)return t.getTime()==n.getTime();var l=t instanceof RegExp,f=n instanceof RegExp;if(l!=f)return!1;if(l&&f)return t.toString()==n.toString();var d=C(t);if((r=d.length)!==C(n).length)return!1;for(i=r;0!=i--;)if(!F.call(n,d[i]))return!1;for(i=r;0!=i--;)if(!e(t[o=d[i]],n[o]))return!1;return!0}return t!=t&&n!=n},B=A;function N(e,t){const n={};for(const i of t)e.hasOwnProperty(i)&&(n[i]=e[i]);return n}function j(e,t){const n=Object.assign({},e);for(const e of t)delete n[e];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>E(e)).join(",")})`};const _=E;function T(e){if(v(e))return e;const t=s(e)?e:E(e);if(t.length<250)return t;let n=0;for(let e=0;e<t.length;e++){n=(n<<5)-n+t.charCodeAt(e),n&=n}return n}function z(e){return!1===e||null===e}function R(e,t){return e.indexOf(t)>-1}function P(e,t){let n=0;for(const[i,r]of e.entries())if(t(r,i,n++))return!0;return!1}function U(e,t){let n=0;for(const[i,r]of e.entries())if(!t(r,i,n++))return!1;return!0}function M(e){return[].concat(...e)}function L(e,...t){for(const n of t)e=I(e,n);return e}function I(e,t){if("object"!=typeof t||null===t)return e;for(const n in t)t.hasOwnProperty(n)&&void 0!==t[n]&&("object"!=typeof t[n]||o(t[n])||null===t[n]?e[n]=t[n]:"object"!=typeof e[n]||null===e[n]?e[n]=L(o(t[n].constructor)?[]:{},t[n]):L(e[n],t[n]));return e}function q(e,t){const n=[],i={};let r;for(const o of e)(r=t(o))in i||(i[r]=1,n.push(o));return n}function W(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function H(e,t){for(const n of e)if(t.has(n))return!0;return!1}function G(e){const t=new Set;for(const n of e){const e=r(n).map((e,t)=>0===t?e:`[${e}]`);e.map((t,n)=>e.slice(0,n+1).join("")).forEach(e=>t.add(e))}return t}function Y(e,t){return H(G(e),G(t))}const V=Object.keys;function Q(e){const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function X(e){return V(e)}function J(e){return!0===e||!1===e}function Z(e){const t=e.replace(/\\W/g,"_");return(e.match(/^\\d+/)?"_":"")+t}function K(e,t){return k(e)?"!("+K(e.not,t)+")":S(e)?"("+e.and.map(e=>K(e,t)).join(") && (")+")":D(e)?"("+e.or.map(e=>K(e,t)).join(") || (")+")":t(e)}function ee(e,t){if(0===t.length)return!0;const n=t.shift();return ee(e[n],t)&&delete e[n],0===V(e).length}function te(e){return e.charAt(0).toUpperCase()+e.substr(1)}function ne(e,t="datum"){const n=r(e),i=[];for(let e=1;e<=n.length;e++){const r=`[${n.slice(0,e).map(u).join("][")}]`;i.push(`${t}${r}`)}return i.join(" && ")}function ie(e,t="datum"){return`${t}[${u(r(e).join("."))}]`}function re(e){return`${r(e).map(e=>e.replace(".","\\\\.")).join("\\\\.")}`}function oe(e){return`${r(e).join(".")}`}function ae(e){return e?r(e).length:0}function se(...e){for(const t of e)if(void 0!==t)return t}let ue=42;function ce(e){const t=++ue;return e?String(e)+t:t}function le(e){return fe(e)?e:`__${e}`}function fe(e){return 0===e.indexOf("__")}function de(e){return(e%360+360)%360}const pe="area",he="bar",me="line",ge="point",ye="rect",be="rule",ve="text",xe="tick",Ae="trail",we="circle",Ce="square",Fe="geoshape";function Ee(e){return R(["line","area","trail"],e)}const De=X({area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1});function Se(e){return e.type}x(De);const ke=[].concat(["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],["fill","fillOpacity"]),Oe=["filled","color","tooltip"];function $e(e){return!!e.mark}class Be{constructor(e,t){this.name=e,this.run=t}hasMatchingType(e){return!!$e(e)&&(Se(t=e.mark)?t.type:t)===this.name;var t}}function Ne(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&(n[i[r]]=e[i[r]])}return n}const je={argmax:1,argmin:1,average:1,count:1,distinct:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1};function _e(e){return!!e&&!!e.argmin}function Te(e){return!!e&&!!e.argmax}function ze(e){return s(e)&&!!je[e]}const Re=["count","valid","missing","distinct"];function Pe(e){return e&&s(e)&&R(Re,e)}const Ue=["count","sum","distinct","valid","missing"],Me=x(["mean","average","median","q1","q3","min","max"]),Le="row",Ie="column",qe="facet",We="x",He="y",Ge="x2",Ye="y2",Ve="latitude",Qe="longitude",Xe="latitude2",Je="longitude2",Ze="color",Ke="fill",et="stroke",tt="shape",nt="size",it="opacity",rt="fillOpacity",ot="strokeOpacity",at="strokeWidth",st="text",ut="order",ct="detail",lt="key",ft="tooltip",dt="href";const pt={longitude:1,longitude2:1,latitude:1,latitude2:1},ht=X(pt),mt=Object.assign({x:1,y:1,x2:1,y2:1},pt,{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,size:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1});function gt(e){return"color"===e||"fill"===e||"stroke"===e}const yt={row:1,column:1,facet:1},bt=X(yt),vt=Object.assign({},mt,yt),xt=X(vt),At=(Ne(vt,["order","detail"]),Ne(vt,["order","detail","row","column","facet"]));function wt(e){return!!At[e]}function Ct(e){return!!vt[e]}const Ft=["x2","y2","latitude2","longitude2"];function Et(e){return Dt(e)!==e}function Dt(e){switch(e){case"x2":return"x";case"y2":return"y";case"latitude2":return"latitude";case"longitude2":return"longitude"}return e}const St=Ne(mt,["x","y","x2","y2","latitude","longitude","latitude2","longitude2"]),kt=X(St),Ot={x:1,y:1},$t=X(Ot),Bt=Ne(St,["text","tooltip","href","detail","key","order"]),Nt=X(Bt);const jt=Object.assign({},Ot,Bt),_t=X(jt);function Tt(e){return!!jt[e]}function zt(e,t){return function(e){switch(e){case Ze:case Ke:case et:case ct:case lt:case ft:case dt:case ut:case it:case rt:case ot:case at:case qe:case Le:case Ie:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always",geoshape:"always"};case We:case He:case Ve:case Qe:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always"};case Ge:case Ye:case Xe:case Je:return{rule:"always",bar:"always",rect:"always",area:"always",circle:"binned",point:"binned",square:"binned",tick:"binned"};case nt:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case tt:return{point:"always",geoshape:"always"};case st:return{text:"always"}}}(e)[t]}function Rt(e){switch(e){case We:case He:case nt:case at:case it:case rt:case ot:case Ge:case Ye:return;case qe:case Le:case Ie:case tt:case st:case ft:case dt:return"discrete";case Ze:case Ke:case et:return"flexible";case Ve:case Qe:case Xe:case Je:case ct:case lt:case ut:return}throw new Error("rangeType not implemented for "+e)}const Pt=Object.freeze({INVALID_SPEC:"Invalid spec",FIT_NON_SINGLE:\'Autosize "fit" only works for single views and layered views.\',CANNOT_FIX_RANGE_STEP_WITH_FIT:\'Cannot use a fixed value of "rangeStep" when "autosize" is "fit".\',cannotProjectOnChannelWithoutField:function(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`},nearestNotSupportForContinuous:function(e){return`The "nearest" transform is not supported for ${e} marks.`},selectionNotSupported:function(e){return`Selection not supported for ${e} yet`},selectionNotFound:function(e){return`Cannot find a selection named "${e}"`},SCALE_BINDINGS_CONTINUOUS:"Scale bindings are currently only supported for scales with unbinned, continuous domains.",NO_INIT_SCALE_BINDINGS:"Selections bound to scales cannot be separately initialized.",noSuchRepeatedValue:function(e){return`Unknown repeated value "${e}".`},columnsNotSupportByRowCol:function(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`},CONCAT_CANNOT_SHARE_AXIS:"Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415).",REPEAT_CANNOT_SHARE_AXIS:"Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415).",unrecognizedParse:function(e){return`Unrecognized parse "${e}".`},differentParse:function(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`},invalidTransformIgnored:function(e){return`Ignoring an invalid transform: ${_(e)}.`},NO_FIELDS_NEEDS_AS:\'If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.\',encodingOverridden:function(e){return`Layer\'s shared ${e.join(",")} channel ${1===e.length?"is":"are"} overriden`},projectionOverridden:function(e){const{parentProjection:t,projection:n}=e;return`Layer\'s shared projection ${_(t)} is overridden by a child projection ${_(n)}.`},primitiveChannelDef:function(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${_(n)}}.`},invalidFieldType:function(e){return`Invalid field type "${e}"`},nonZeroScaleUsedWithLengthMark:function(e,t,n){return`A ${n.scaleType?`${n.scaleType} scale`:n.zeroFalse?"scale with zero=false":"scale with custom domain that excludes zero"} is used to encode ${e}\'s ${t}. This can be misleading as the ${"x"===t?"width":"height"} of the ${e} can be arbitrary based on the scale domain. You may want to use point mark instead.`},invalidFieldTypeForCountAggregate:function(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`},invalidAggregate:function(e){return`Invalid aggregation operator "${e}"`},missingFieldType:function(e,t){return`Missing type for channel "${e}", using "${t}" instead.`},droppingColor:function(e,t){const{fill:n,stroke:i}=t;return`Dropping color ${e} as the plot also has `+(n&&i?"fill and stroke":n?"fill":"stroke")},emptyFieldDef:function(e,t){return`Dropping ${_(e)} from channel "${t}" since it does not contain data field or value.`},latLongDeprecated:function(e,t,n){return`${e}-encoding with type ${t} is deprecated. Replacing with ${n}-encoding.`},LINE_WITH_VARYING_SIZE:"Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.",incompatibleChannel:function(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`},invalidEncodingChannel:function(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`},facetChannelShouldBeDiscrete:function(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`},facetChannelDropped:function(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`},discreteChannelCannotEncode:function(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${"ordinal"===t?"order":"magnitude"}.`},BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL:"Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.",lineWithRange:function(e,t){return`Line mark is for continuous lines and thus cannot be used with ${e&&t?"x2 and y2":e?"x2":"y2"}. We will use the rule mark (line segments) instead.`},orientOverridden:function(e,t){return`Specified orient "${e}" overridden with "${t}"`},CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN:"custom domain scale cannot be unioned with default field-based domain",cannotUseScalePropertyWithNonColor:function(e){return`Cannot use the scale property "${e}" with non-color channel.`},unaggregateDomainHasNoEffectForRawField:function(e){return`Using unaggregated domain with raw field has no effect (${_(e)}).`},unaggregateDomainWithNonSharedDomainOp:function(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`},unaggregatedDomainWithLogScale:function(e){return`Unaggregated domain is currently unsupported for log scale (${_(e)}).`},cannotApplySizeToNonOrientedMark:function(e){return`Cannot apply size to non-oriented mark "${e}".`},rangeStepDropped:function(e){return`rangeStep for "${e}" is dropped as top-level ${"x"===e?"width":"height"} is provided.`},scaleTypeNotWorkWithChannel:function(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`},scaleTypeNotWorkWithFieldDef:function(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`},scalePropertyNotWorkWithScaleType:function(e,t,n){return`${n}-scale\'s "${t}" is dropped as it does not work with ${e} scale.`},scaleTypeNotWorkWithMark:function(e,t){return`Scale type "${t}" does not work with mark "${e}".`},mergeConflictingProperty:function(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${_(n)} and ${_(i)}). Using ${_(n)}.`},independentScaleMeansIndependentGuide:function(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`},domainSortDropped:function(e){return`Dropping sort property ${_(e)} as unioned domains only support boolean or op \'count\'.`},UNABLE_TO_MERGE_DOMAINS:"Unable to merge domains",MORE_THAN_ONE_SORT:"Domains that should be unioned has conflicting sort properties. Sort will be set to true.",INVALID_CHANNEL_FOR_AXIS:"Invalid channel for axis.",cannotStackRangedMark:function(e){return`Cannot stack "${e}" if there is already "${e}2"`},cannotStackNonLinearScale:function(e){return`Cannot stack non-linear scale (${e})`},stackNonSummativeAggregate:function(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}")`},invalidTimeUnit:function(e,t){return`Invalid ${e}: ${_(t)}`},dayReplacedWithDate:function(e){return`Time unit "${e}" is not supported. We are replacing it with ${e.replace("day","date")}.`},droppedDay:function(e){return`Dropping day from datetime ${_(e)} as day cannot be combined with other units.`},errorBarCenterAndExtentAreNotNeeded:function(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`},errorBarCenterIsUsedWithWrongExtent:function(e,t,n){return`${e} is not usually used with ${t} for ${n}.`},errorBarContinuousAxisHasCustomizedAggregate:function(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`},errorBarCenterIsNotNeeded:function(e,t){return`Center is not needed to be specified in ${t} when extent is ${e}.`},errorBand1DNotSupport:function(e){return`1D error band does not support ${e}`},channelRequiredForBinned:function(e){return`Channel ${e} is required for "binned" bin`},domainRequiredForThresholdScale:function(e){return`Domain for ${e} is required for threshold scale`}}),Ut=(Lt=h||d,{level:function(e){return arguments.length?(Lt=+e,this):Lt},error:function(){return Lt>=p&&f(Mt||"error","ERROR",arguments),this},warn:function(){return Lt>=h&&f(Mt||"warn","WARN",arguments),this},info:function(){return Lt>=m&&f(Mt||"log","INFO",arguments),this},debug:function(){return Lt>=g&&f(Mt||"log","DEBUG",arguments),this}});var Mt,Lt;let It=Ut;function qt(e){return It=e}function Wt(){return It=Ut}function Ht(...e){It.warn.apply(It,arguments)}function Gt(...e){It.debug.apply(It,arguments)}const Yt=2006;function Vt(e){return!!(e&&(e.year||e.quarter||e.month||e.date||e.day||e.hours||e.minutes||e.seconds||e.milliseconds))}const Qt=["january","february","march","april","may","june","july","august","september","october","november","december"],Xt=Qt.map(e=>e.substr(0,3)),Jt=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Zt=Jt.map(e=>e.substr(0,3));function Kt(e,t=!1){const n=[];if(t&&void 0!==e.day&&V(e).length>1&&(Ht(Pt.droppedDay(e)),delete(e=B(e)).day),void 0!==e.year?n.push(e.year):void 0!==e.day?n.push(Yt):n.push(0),void 0!==e.month){const i=t?function(e){if(v(e))return(e-1).toString();{const t=e.toLowerCase(),n=Qt.indexOf(t);if(-1!==n)return n+"";const i=t.substr(0,3),r=Xt.indexOf(i);if(-1!==r)return r+"";throw new Error(Pt.invalidTimeUnit("month",e))}}(e.month):e.month;n.push(i)}else if(void 0!==e.quarter){const i=t?function(e){if(v(e))return e>4&&Ht(Pt.invalidTimeUnit("quarter",e)),(e-1).toString();throw new Error(Pt.invalidTimeUnit("quarter",e))}(e.quarter):e.quarter;n.push(i+"*3")}else n.push(0);if(void 0!==e.date)n.push(e.date);else if(void 0!==e.day){const i=t?function(e){if(v(e))return e%7+"";{const t=e.toLowerCase(),n=Jt.indexOf(t);if(-1!==n)return n+"";const i=t.substr(0,3),r=Zt.indexOf(i);if(-1!==r)return r+"";throw new Error(Pt.invalidTimeUnit("day",e))}}(e.day):e.day;n.push(i+"+1")}else n.push(1);for(const t of["hours","minutes","seconds","milliseconds"])void 0!==e[t]?n.push(e[t]):n.push(0);return e.utc?`utc(${n.join(", ")})`:`datetime(${n.join(", ")})`}function en(e){return!!e.row||!!e.column}function tn(e){return void 0!==e.facet}var nn;!function(e){e.YEAR="year",e.MONTH="month",e.DAY="day",e.DATE="date",e.HOURS="hours",e.MINUTES="minutes",e.SECONDS="seconds",e.MILLISECONDS="milliseconds",e.YEARMONTH="yearmonth",e.YEARMONTHDATE="yearmonthdate",e.YEARMONTHDATEHOURS="yearmonthdatehours",e.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",e.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",e.MONTHDATE="monthdate",e.MONTHDATEHOURS="monthdatehours",e.HOURSMINUTES="hoursminutes",e.HOURSMINUTESSECONDS="hoursminutesseconds",e.MINUTESSECONDS="minutesseconds",e.SECONDSMILLISECONDS="secondsmilliseconds",e.QUARTER="quarter",e.YEARQUARTER="yearquarter",e.QUARTERMONTH="quartermonth",e.YEARQUARTERMONTH="yearquartermonth",e.UTCYEAR="utcyear",e.UTCMONTH="utcmonth",e.UTCDAY="utcday",e.UTCDATE="utcdate",e.UTCHOURS="utchours",e.UTCMINUTES="utcminutes",e.UTCSECONDS="utcseconds",e.UTCMILLISECONDS="utcmilliseconds",e.UTCYEARMONTH="utcyearmonth",e.UTCYEARMONTHDATE="utcyearmonthdate",e.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",e.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",e.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",e.UTCMONTHDATE="utcmonthdate",e.UTCMONTHDATEHOURS="utcmonthdatehours",e.UTCHOURSMINUTES="utchoursminutes",e.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",e.UTCMINUTESSECONDS="utcminutesseconds",e.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",e.UTCQUARTER="utcquarter",e.UTCYEARQUARTER="utcyearquarter",e.UTCQUARTERMONTH="utcquartermonth",e.UTCYEARQUARTERMONTH="utcyearquartermonth"}(nn||(nn={}));const rn={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},on=X(rn);const an={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};const sn={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},un=Object.assign({},an,sn);Object.assign({},rn,an,{yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},sn);function cn(e,t){const n=e.indexOf(t);return n>-1&&(t!==nn.SECONDS||0===n||"i"!==e.charAt(n-1))}function ln(e,t){const n=ne(t),i=un[e]?"utc":"";return Kt(on.reduce((t,r)=>(cn(e,r)&&(t[r]=function(e){return e===nn.QUARTER?`(${i}quarter(${n})-1)`:`${i}${e}(${n})`}(r)),t),{}))}function fn(e,t){if(!e)return;const n=[],i=cn(e,nn.YEAR);cn(e,nn.MONTH)&&n.push(!1!==t?"%b":"%B"),cn(e,nn.DAY)?n.push(t?"%a":"%A"):cn(e,nn.DATE)&&n.push("%d"+(i?",":"")),i&&n.push(t?"%y":"%Y");const r=[];cn(e,nn.HOURS)&&r.push("%H"),cn(e,nn.MINUTES)&&r.push("%M"),cn(e,nn.SECONDS)&&r.push("%S"),cn(e,nn.MILLISECONDS)&&r.push("%L");const o=[];return n.length>0&&o.push(n.join(" ")),r.length>0&&o.push(r.join(":")),o}function dn(e){return"day"!==e&&e.indexOf("day")>=0?(Ht(Pt.dayReplacedWithDate(e)),e.replace("day","date")):e}const pn={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1},hn="quantitative",mn="ordinal",gn="temporal",yn="nominal",bn="geojson";function vn(e){const{field:t,timeUnit:n,bin:i,aggregate:r}=e;return Object.assign({},n?{timeUnit:n}:{},i?{bin:i}:{},r?{aggregate:r}:{},{field:t})}function xn(e){return!!e&&!!e.condition}function An(e){return!!e&&!!e.condition&&!o(e.condition)&&wn(e.condition)}function wn(e){return!(!e||!e.field&&"count"!==e.aggregate)}function Cn(e){return!!e&&(!!e.field&&!!e.type||"count"===e.aggregate)}function Fn(e){return wn(e)&&s(e.field)}function En(e){return e&&"value"in e&&void 0!==e.value}function Dn(e){return!(!e||!e.scale&&!e.sort)}function Sn(e){return!(!e||!e.axis&&!e.stack&&!e.impute)}function kn(e){return!!e&&!!e.legend}function On(e){return!!e&&!!e.format}function $n(e,t={}){let n=e.field;const i=t.prefix;let r=t.suffix,o="";if(function(e){return"count"===e.aggregate}(e))n=le("count");else{let i;if(!t.nofn)if(function(e){return!!e.op}(e))i=e.op;else{const{bin:a,aggregate:s,timeUnit:u}=e;Xn(a)?(i=Qn(a),r=(t.binSuffix||"")+(t.suffix||"")):s?Te(s)?(o=`.${n}`,n=`argmax_${s.argmax}`):_e(s)?(o=`.${n}`,n=`argmin_${s.argmin}`):i=String(s):u&&(i=String(u))}i&&(n=n?`${i}_${n}`:i)}return r&&(n=`${n}_${r}`),i&&(n=`${i}_${n}`),t.forAs?n:t.expr?ie(n,t.expr)+o:re(n)+o}function Bn(e){return!function(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!e.bin;case"temporal":return!1}throw new Error(Pt.invalidFieldType(e.type))}(e)}function Nn(e,t){const{field:n,bin:i,timeUnit:r,aggregate:o}=e;if("count"===o)return t.countTitle;if(Xn(i))return`${n} (binned)`;if(r){return`${n} (${function(e){return on.reduce((t,n)=>cn(e,n)?[...t,n]:t,[])}(r).join("-")})`}return o?Te(o)?`${n} for max ${o.argmax}`:_e(o)?`${n} for min ${o.argmin}`:`${te(o)} of ${n}`:n}const jn=(e,t)=>{switch(t.fieldTitle){case"plain":return e.field;case"functional":return function(e){const{aggregate:t,bin:n,timeUnit:i,field:r}=e;if(Te(t))return`${r} for argmax(${t.argmax})`;if(_e(t))return`${r} for argmin(${t.argmin})`;const o=t||i||Xn(n)&&"bin";return o?o.toUpperCase()+"("+r+")":r}(e);default:return Nn(e,t)}};let _n=jn;function Tn(e){_n=e}function zn(e,t,{allowDisabling:n,includeDefault:i=!0}){const r=(Rn(e)||{}).title,o=i?Pn(e,t):void 0;return n?se(r,e.title,o):r||e.title||o}function Rn(e){return Sn(e)&&e.axis?e.axis:kn(e)&&e.legend?e.legend:(t=e)&&t.header&&e.header?e.header:void 0;var t}function Pn(e,t){return _n(e,t)}function Un(e){return wn(e)?e:An(e)?e.condition:void 0}function Mn(e){return wn(e)?e:An(e)?e.condition:void 0}function Ln(e,t){if(s(e)||v(e)||b(e)){const n=s(e)?"string":v(e)?"number":"boolean";return Ht(Pt.primitiveChannelDef(t,n,e)),{value:e}}return wn(e)?In(e,t):An(e)?Object.assign({},e,{condition:In(e.condition,t)}):e}function In(e,t){const{aggregate:n,timeUnit:i,bin:r}=e;if(n&&!ze(n)&&!Te(n)&&!_e(n)){const t=Ne(e,["aggregate"]);Ht(Pt.invalidAggregate(n)),e=t}if(i&&(e=Object.assign({},e,{timeUnit:dn(i)})),Xn(r)&&(e=Object.assign({},e,{bin:qn(r,t)})),Jn(r)&&!R($t,t)&&Ht(`Channel ${t} should not be used with "binned" bin`),Cn(e)){const{type:t}=e,i=function(e){if(e)switch(e=e.toLowerCase()){case"q":case hn:return"quantitative";case"t":case gn:return"temporal";case"o":case mn:return"ordinal";case"n":case yn:return"nominal";case bn:return"geojson"}}(t);t!==i&&(e=Object.assign({},e,{type:i})),"quantitative"!==t&&Pe(n)&&(Ht(Pt.invalidFieldTypeForCountAggregate(t,n)),e=Object.assign({},e,{type:"quantitative"}))}else if(!Et(t)){const n=function(e,t){if(e.timeUnit)return"temporal";if(Xn(e.bin))return"quantitative";switch(Rt(t)){case"continuous":return"quantitative";case"discrete":case"flexible":return"nominal";default:return"quantitative"}}(e,t);Ht(Pt.missingFieldType(t,n)),e=Object.assign({},e,{type:n})}if(Cn(e)){const{compatible:n,warning:i}=function(e,t){const n=e.type;if("geojson"===n&&"shape"!==t)return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case"row":case"column":case"facet":return Bn(e)?{compatible:!1,warning:Pt.facetChannelShouldBeDiscrete(t)}:Wn;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return Wn;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==hn?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:Wn;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return"nominal"!==n||e.sort?Wn:{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`};case"shape":return R(["ordinal","nominal","geojson"],e.type)?Wn:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==e.type||"sort"in e?Wn:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}throw new Error("channelCompatability not implemented for channel "+t)}(e,t);n||Ht(i)}return e}function qn(e,t){return b(e)?{maxbins:Kn(t)}:"binned"===e?{binned:!0}:e.maxbins||e.step?e:Object.assign({},e,{maxbins:Kn(t)})}const Wn={compatible:!0};function Hn(e){const t=Sn(e)&&e.axis&&e.axis.formatType||kn(e)&&e.legend&&e.legend.formatType||On(e)&&e.formatType;return"time"===t||!t&&function(e){return"temporal"===e.type||!!e.timeUnit}(e)}function Gn(e,{timeUnit:t,type:n,time:i,undefinedIfExprNotRequired:r}){let o;var a;return Vt(e)?o=Kt(e,!0):(s(e)||v(e))&&(t||"temporal"===n)&&(o=function(e){return!!rn[e]}(t)?Kt({[t]:e},!0):function(e){return!!an[e]}(t)?Gn(e,{timeUnit:(a=t,a.substr(3))}):`datetime(${JSON.stringify(e)})`),o?i?`time(${o})`:o:r?void 0:JSON.stringify(e)}function Yn(e,t){const{timeUnit:n,type:i}=e;return t.map(e=>{const t=Gn(e,{timeUnit:n,type:i,undefinedIfExprNotRequired:!0});return void 0!==t?{signal:t}:e})}function Vn(e,t){return Xn(e.bin)?Tt(t)&&R(["ordinal","nominal"],e.type):(console.warn("Only use this method with binned field defs"),!1)}function Qn(e){return b(e)&&(e=qn(e,void 0)),"bin"+V(e).map(t=>Z(`_${t}_${e[t]}`)).join("")}function Xn(e){return!0===e||Zn(e)&&!e.binned}function Jn(e){return"binned"===e||Zn(e)&&e.binned}function Zn(e){return a(e)}function Kn(e){switch(e){case Le:case Ie:case nt:case Ze:case Ke:case et:case at:case it:case rt:case ot:case tt:return 6;default:return 10}}function ei(e,t){const n=e&&e[t];return!!n&&(o(n)?P(n,e=>!!e.field):wn(n)||An(n))}function ti(e){return P(xt,t=>{if(ei(e,t)){const n=e[t];if(o(n))return P(n,e=>!!e.aggregate);{const e=Un(n);return e&&!!e.aggregate}}return!1})}function ni(e,t){const n=[],i=[],r=[],o=[],a={};return oi(e,(s,u)=>{if(wn(s)){const{field:c,aggregate:l,timeUnit:f,bin:d}=s,p=Ne(s,["field","aggregate","timeUnit","bin"]);if(l||f||d){const e=Rn(s),h=e&&e.title;let m=$n(s,{forAs:!0});const g=Object.assign({},h?[]:{title:zn(s,t,{allowDisabling:!0})},p,{field:m}),y="x"===u||"y"===u;if(l){let e;if(Te(l)?(e="argmax",m=$n({aggregate:"argmax",field:l.argmax},{forAs:!0}),g.field=`${m}.${c}`):_e(l)?(e="argmin",m=$n({aggregate:"argmin",field:l.argmin},{forAs:!0}),g.field=`${m}.${c}`):"boxplot"!==l&&"errorbar"!==l&&"errorband"!==l&&(e=l),e){const t={op:e,as:m};c&&(t.field=c),o.push(t)}}else if(Cn(s)&&Xn(d)){if(i.push({bin:d,field:c,as:m}),n.push($n(s,{binSuffix:"end"})),Vn(s,u)&&n.push($n(s,{binSuffix:"range"})),y){const e={field:m+"_end"};a[u+"2"]=e}g.bin="binned",Et(u)||(g.type="quantitative")}else if(f){r.push({timeUnit:f,field:c,as:m});const e=fn(f,t.axis.shortTimeLabels).join(" "),n=Cn(s)&&s.type!==gn&&"time";"text"===u||"tooltip"===u?(g.format=g.format||e,n&&(g.formatType=n)):!function(e){return!!St[e]}(u)?y&&(g.axis=Object.assign({format:e},n?{formatType:n}:{},g.axis)):g.legend=Object.assign({format:e},n?{formatType:n}:{},g.legend)}l||n.push(m),a[u]=g}else n.push(c),a[u]=e[u]}else a[u]=e[u]}),{bins:i,timeUnits:r,aggregate:o,groupby:n,encoding:a}}function ii(e,t){return V(e).reduce((n,i)=>{if(!Ct(i))return Ht(Pt.invalidEncodingChannel(i)),n;if(!function(e,t,n){const i=zt(t,n);if(!i)return!1;if("binned"===i){const n=e["x2"===t?"x":"y"];return!(!wn(n)||!wn(e[t])||"binned"!==n.bin)}return!0}(e,i,t))return Ht(Pt.incompatibleChannel(i,t)),n;if("size"===i&&"line"===t){const t=Mn(e[i]);if(t&&t.aggregate)return Ht(Pt.LINE_WITH_VARYING_SIZE),n}if("color"===i&&("fill"in e||"stroke"in e))return Ht(Pt.droppingColor("encoding",{fill:"fill"in e,stroke:"stroke"in e})),n;const r=e[i];if("detail"===i||"order"===i&&!o(r)&&!En(r)||"tooltip"===i&&o(r))r&&(n[i]=(o(r)?r:[r]).reduce((e,t)=>(wn(t)?e.push(In(t,i)):Ht(Pt.emptyFieldDef(t,i)),e),[]));else{if("tooltip"===i&&null===r)n[i]=null;else if(!wn(r)&&!En(r)&&!xn(r))return Ht(Pt.emptyFieldDef(r,i)),n;n[i]=Ln(r,i)}return n},{})}function ri(e){const t=[];for(const n of V(e))if(ei(e,n)){const i=e[n];(o(i)?i:[i]).forEach(e=>{wn(e)?t.push(e):An(e)&&t.push(e.condition)})}return t}function oi(e,t,n){if(e)for(const i of V(e)){const r=e[i];o(r)?r.forEach(e=>{t.call(n,e,i)}):t.call(n,r,i)}}function ai(e,t,n,i){return e?V(e).reduce((n,r)=>{const a=e[r];return o(a)?a.reduce((e,n)=>t.call(i,e,n,r),n):t.call(i,n,a,r)},n):n}function si(e,t,n,i=!0){return{tooltip:[...e.map(({fieldPrefix:e,titlePrefix:n})=>({field:e+t.field,type:t.type,title:n+(i?" of "+t.field:"")})),...ri(n)]}}function ui(e,t,n,i,r){const{scale:o,axis:a}=n;return({partName:u,mark:c,positionPrefix:l,endPositionPrefix:f,extraEncoding:d={}})=>{const p=a&&void 0!==a.title?void 0:void 0!==n.title?n.title:n.field;return ci(e,u,r,{mark:c,encoding:Object.assign({[t]:Object.assign({field:l+"_"+n.field,type:n.type},p?{title:p}:{},o?{scale:o}:{},a?{axis:a}:{})},s(f)?{[t+"2"]:{field:f+"_"+n.field,type:n.type}}:{},i,d)})}}function ci(e,t,n,i){const{clip:r,color:o,opacity:a}=e,s=e.type;return e[t]||void 0===e[t]&&n[t]?[Object.assign({},i,{mark:Object.assign({},n[t],r?{clip:r}:{},o?{color:o}:{},a?{opacity:a}:{},Se(i.mark)?i.mark:{type:i.mark},{style:`${s}-${t}`},b(e[t])?{}:e[t])})]:[]}function li(e,t,n){const{encoding:i}=e,r="vertical"===t?"y":"x",o=i[r],a=i[r+"2"],s=i[r+"Error"],u=i[r+"Error2"];return{continuousAxisChannelDef:fi(o,n),continuousAxisChannelDef2:fi(a,n),continuousAxisChannelDefError:fi(s,n),continuousAxisChannelDefError2:fi(u,n),continuousAxis:r}}function fi(e,t){if(e&&e.aggregate){const{aggregate:n}=e,i=Ne(e,["aggregate"]);return n!==t&&Ht(Pt.errorBarContinuousAxisHasCustomizedAggregate(n,t)),i}return e}function di(e,t){const{mark:n,encoding:i}=e;if(wn(i.x)&&Bn(i.x)){if(wn(i.y)&&Bn(i.y)){if(void 0===i.x.aggregate&&i.y.aggregate===t)return"vertical";if(void 0===i.y.aggregate&&i.x.aggregate===t)return"horizontal";if(i.x.aggregate===t&&i.y.aggregate===t)throw new Error("Both x and y cannot have aggregate");return Se(n)&&n.orient?n.orient:"vertical"}return"horizontal"}if(wn(i.y)&&Bn(i.y))return"vertical";throw new Error("Need a valid continuous axis for "+t+"s")}const pi="boxplot",hi=V({box:1,median:1,outliers:1,rule:1,ticks:1}),mi=new Be(pi,yi);function gi(e){return v(e)?"tukey":e}function yi(e,{config:t}){const{mark:n,encoding:i,selection:r,projection:s}=e,u=Ne(e,["mark","encoding","selection","projection"]),c=Se(n)?n:{type:n};r&&Ht(Pt.selectionNotSupported("boxplot"));const l=c.extent||t.boxplot.extent,f=se(c.size,t.boxplot.size),d=gi(l),{transform:p,continuousAxisChannelDef:h,continuousAxis:m,groupby:g,aggregate:y,encodingWithoutContinuousAxis:b,ticksOrient:v,customTooltipWithoutAggregatedField:x}=function(e,t,n){const i=di(e,pi),{continuousAxisChannelDef:r,continuousAxis:a}=li(e,i,pi),s=r.field,u=gi(t),c=[...bi(s),{op:"median",field:s,as:"mid_box_"+s},{op:"min",field:s,as:("min-max"===u?"lower_whisker_":"min_")+s},{op:"max",field:s,as:("min-max"===u?"upper_whisker_":"max_")+s}],l="min-max"===u||"tukey"===u?[]:[{calculate:`datum["upper_box_${s}"] - datum["lower_box_${s}"]`,as:"iqr_"+s},{calculate:`min(datum["upper_box_${s}"] + datum["iqr_${s}"] * ${t}, datum["max_${s}"])`,as:"upper_whisker_"+s},{calculate:`max(datum["lower_box_${s}"] - datum["iqr_${s}"] * ${t}, datum["min_${s}"])`,as:"lower_whisker_"+s}],f=e.encoding,d=a,p=(f[d],Ne(f,["symbol"==typeof d?d:d+""])),{customTooltipWithoutAggregatedField:h,filteredEncoding:m}=function(e){const{tooltip:t}=e,n=Ne(e,["tooltip"]);if(!t)return{filteredEncoding:e};let i,r;return o(t)?(t.forEach(e=>{e.aggregate?(i||(i=[]),i.push(e)):(r||(r=[]),r.push(e))}),i&&(n.tooltip=i)):t.aggregate?n.tooltip=t:r=t,o(r)&&1===r.length&&(r=r[0]),{customTooltipWithoutAggregatedField:r,filteredEncoding:n}}(p),{bins:g,timeUnits:y,aggregate:b,groupby:v,encoding:x}=ni(m,n),A="vertical"===i?"horizontal":"vertical";return{transform:[...g,...y,{aggregate:[...b,...c],groupby:v},...l],groupby:v,aggregate:b,continuousAxisChannelDef:r,continuousAxis:a,encodingWithoutContinuousAxis:x,ticksOrient:A,customTooltipWithoutAggregatedField:h}}(e,l,t),{color:A,size:w}=b,C=Ne(b,["color","size"]),F=e=>ui(c,m,h,e,t.boxplot),E=F(C),D=F(b),S=F(Object.assign({},C,w?{size:w}:{})),k=si([{fieldPrefix:"min-max"===d?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:"min-max"===d?"lower_whisker_":"min_",titlePrefix:"Min"}],h,b),O={type:"tick",color:"black",opacity:1,orient:v},$="min-max"===d?k:si([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],h,b),B=[...E({partName:"rule",mark:"rule",positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:$}),...E({partName:"rule",mark:"rule",positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:$}),...E({partName:"ticks",mark:O,positionPrefix:"lower_whisker",extraEncoding:$}),...E({partName:"ticks",mark:O,positionPrefix:"upper_whisker",extraEncoding:$})],N=[..."tukey"!==d?B:[],...D({partName:"box",mark:Object.assign({type:"bar"},f?{size:f}:{}),positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:k}),...S({partName:"median",mark:Object.assign({type:"tick"},a(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},f?{size:f}:{},{orient:v}),positionPrefix:"mid_box",extraEncoding:k})];let j;if("min-max"!==d){const e=`datum["lower_box_${h.field}"]`,n=`datum["upper_box_${h.field}"]`,i=`(${n} - ${e})`,r=`${e} - ${l} * ${i}`,o=`${n} + ${l} * ${i}`,a=`datum["${h.field}"]`,s={joinaggregate:bi(h.field),groupby:g};let u=void 0;"tukey"===d&&(u={transform:[{filter:`(${r} <= ${a}) && (${a} <= ${o})`},{aggregate:[{op:"min",field:h.field,as:"lower_whisker_"+h.field},{op:"max",field:h.field,as:"upper_whisker_"+h.field},{op:"min",field:"lower_box_"+h.field,as:"lower_box_"+h.field},{op:"max",field:"upper_box_"+h.field,as:"upper_box_"+h.field},...y],groupby:g}],layer:B});const f=Ne(C,["tooltip"]),p=ci(c,"outliers",t.boxplot,{transform:[{filter:`(${a} < ${r}) || (${a} > ${o})`}],mark:"point",encoding:Object.assign({[m]:{field:h.field,type:h.type}},f,x?{tooltip:x}:{})})[0];p&&u?j={transform:[s],layer:[p,u]}:p?(j=p).transform.unshift(s):u&&(j=u).transform.unshift(s)}return j?Object.assign({},u,{layer:[...j?[j]:[],{transform:p,layer:N}]}):Object.assign({},u,{transform:(u.transform||[]).concat(p),layer:N})}function bi(e){return[{op:"q1",field:e,as:"lower_box_"+e},{op:"q3",field:e,as:"upper_box_"+e}]}const vi="errorbar",xi=V({ticks:1,rule:1}),Ai=new Be(vi,wi);function wi(e,{config:t}){const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:o,ticksOrient:a,markDef:s,outerSpec:u,tooltipEncoding:c}=Fi(e,vi,t),l=ui(s,r,i,o,t.errorbar),f={type:"tick",orient:a};return Object.assign({},u,{transform:n,layer:[...l({partName:"ticks",mark:f,positionPrefix:"lower",extraEncoding:c}),...l({partName:"ticks",mark:f,positionPrefix:"upper",extraEncoding:c}),...l({partName:"rule",mark:"rule",positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:c})]})}function Ci(e,t){const{encoding:n}=e;if(function(e){return(wn(e.x)||wn(e.y))&&!wn(e.x2)&&!wn(e.y2)&&!wn(e.xError)&&!wn(e.xError2)&&!wn(e.yError)&&!wn(e.yError2)}(n))return{orient:di(e,t),inputType:"raw"};const i=function(e){return wn(e.x2)||wn(e.y2)}(n),r=function(e){return wn(e.xError)||wn(e.xError2)||wn(e.yError)||wn(e.yError2)}(n),o=n.x,a=n.y;if(i){if(r)throw new Error(t+" cannot be both type aggregated-upper-lower and aggregated-error");const e=n.x2,i=n.y2;if(wn(e)&&wn(i))throw new Error(t+" cannot have both x2 and y2");if(wn(e)){if(wn(o)&&Bn(o))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error("Both x and x2 have to be quantitative in "+t)}if(wn(i)){if(wn(a)&&Bn(a))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error("Both y and y2 have to be quantitative in "+t)}throw new Error("No ranged axis")}{const e=n.xError,i=n.xError2,r=n.yError,s=n.yError2;if(wn(i)&&!wn(e))throw new Error(t+" cannot have xError2 without xError");if(wn(s)&&!wn(r))throw new Error(t+" cannot have yError2 without yError");if(wn(e)&&wn(r))throw new Error(t+" cannot have both xError and yError with both are quantiative");if(wn(e)){if(wn(o)&&Bn(o))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}if(wn(r)){if(wn(a)&&Bn(a))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function Fi(e,t,n){const{mark:i,encoding:r,selection:o,projection:a}=e,s=Ne(e,["mark","encoding","selection","projection"]),u=Se(i)?i:{type:i};o&&Ht(Pt.selectionNotSupported(t));const{orient:c,inputType:l}=Ci(e,t),{continuousAxisChannelDef:f,continuousAxisChannelDef2:d,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:h,continuousAxis:m}=li(e,c,t),{errorBarSpecificAggregate:g,postAggregateCalculates:y,tooltipSummary:b,tooltipTitleWithFieldName:v}=function(e,t,n,i,r,o,a,s){let u=[],c=[];const l=t.field;let f,d=!1;if("raw"===o){const t=e.center?e.center:e.extent?"iqr"===e.extent?"median":"mean":s.errorbar.center,n=e.extent?e.extent:"mean"===t?"stderr":"iqr";if("median"===t!=("iqr"===n)&&Ht(Pt.errorBarCenterIsUsedWithWrongExtent(t,n,a)),"stderr"===n||"stdev"===n)u=[{op:n,field:l,as:"extent_"+l},{op:t,field:l,as:"center_"+l}],c=[{calculate:`datum["center_${l}"] + datum["extent_${l}"]`,as:"upper_"+l},{calculate:`datum["center_${l}"] - datum["extent_${l}"]`,as:"lower_"+l}],f=[{fieldPrefix:"center_",titlePrefix:te(t)},{fieldPrefix:"upper_",titlePrefix:Ei(t,n,"+")},{fieldPrefix:"lower_",titlePrefix:Ei(t,n,"-")}],d=!0;else{let t,i,r;e.center&&e.extent&&Ht(Pt.errorBarCenterIsNotNeeded(e.extent,a)),"ci"===n?(t="mean",i="ci0",r="ci1"):(t="median",i="q1",r="q3"),u=[{op:i,field:l,as:"lower_"+l},{op:r,field:l,as:"upper_"+l},{op:t,field:l,as:"center_"+l}],f=[{fieldPrefix:"upper_",titlePrefix:zn({field:l,aggregate:r,type:"quantitative"},s,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:zn({field:l,aggregate:i,type:"quantitative"},s,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:zn({field:l,aggregate:t,type:"quantitative"},s,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&Ht(Pt.errorBarCenterAndExtentAreNotNeeded(e.center,e.extent)),"aggregated-upper-lower"===o?(f=[],c=[{calculate:`datum["${n.field}"]`,as:"upper_"+l},{calculate:`datum["${l}"]`,as:"lower_"+l}]):"aggregated-error"===o&&(f=[{fieldPrefix:"",titlePrefix:l}],c=[{calculate:`datum["${l}"] + datum["${i.field}"]`,as:"upper_"+l}],r?c.push({calculate:`datum["${l}"] + datum["${r.field}"]`,as:"lower_"+l}):c.push({calculate:`datum["${l}"] - datum["${i.field}"]`,as:"lower_"+l}));for(const e of c)f.push({fieldPrefix:e.as.substring(0,6),titlePrefix:e.calculate.replace(new RegExp(\'datum\\\\[\\\\"\',"g"),"").replace(new RegExp(\'\\\\"\\\\]\',"g"),"")})}return{postAggregateCalculates:c,errorBarSpecificAggregate:u,tooltipSummary:f,tooltipTitleWithFieldName:d}}(u,f,d,p,h,l,t,n),x=m,A=(r[x],"x"===m?"x2":"y2"),w=(r[A],"x"===m?"xError":"yError"),C=(r[w],"x"===m?"xError2":"yError2"),F=(r[C],Ne(r,["symbol"==typeof x?x:x+"","symbol"==typeof A?A:A+"","symbol"==typeof w?w:w+"","symbol"==typeof C?C:C+""])),{bins:E,timeUnits:D,aggregate:S,groupby:k,encoding:O}=ni(F,n),$=[...S,...g],B="raw"!==l?[]:k,N=si(b,f,O,v);return{transform:[...s.transform||[],...E,...D,...$.length?[{aggregate:$,groupby:B}]:[],...y],groupby:B,continuousAxisChannelDef:f,continuousAxis:m,encodingWithoutContinuousAxis:O,ticksOrient:"vertical"===c?"horizontal":"vertical",markDef:u,outerSpec:s,tooltipEncoding:N}}function Ei(e,t,n){return te(e)+" "+n+" "+t}const Di="errorband",Si=V({band:1,borders:1}),ki=new Be(Di,Oi);function Oi(e,{config:t}){const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:o,markDef:a,outerSpec:s,tooltipEncoding:u}=Fi(e,Di,t),c=a,l=ui(c,r,i,o,t.errorband),f=void 0!==e.encoding.x&&void 0!==e.encoding.y;let d={type:f?"area":"rect"},p={type:f?"line":"rule"};const h=Object.assign({},c.interpolate?{interpolate:c.interpolate}:{},c.tension&&c.interpolate?{interpolate:c.tension}:{});return f?(d=Object.assign({},d,h),p=Object.assign({},p,h)):c.interpolate?Ht(Pt.errorBand1DNotSupport("interpolate")):c.tension&&Ht(Pt.errorBand1DNotSupport("tension")),Object.assign({},s,{transform:n,layer:[...l({partName:"band",mark:d,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:u}),...l({partName:"borders",mark:p,positionPrefix:"lower",extraEncoding:u}),...l({partName:"borders",mark:p,positionPrefix:"upper",extraEncoding:u})]})}const $i={};function Bi(e,t,n){const i=new Be(e,t);$i[e]={normalizer:i,parts:n}}Bi(pi,yi,hi),Bi(vi,wi,xi),Bi(Di,Oi,Si);const Ni=["shortTimeLabels"],ji=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength"],_i={clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},Ti=Object.assign({},_i,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1}),zi=X(_i),Ri=X(Ti);var Pi;!function(e){e.LINEAR="linear",e.LOG="log",e.POW="pow",e.SQRT="sqrt",e.SYMLOG="symlog",e.TIME="time",e.UTC="utc",e.QUANTILE="quantile",e.QUANTIZE="quantize",e.THRESHOLD="threshold",e.BIN_ORDINAL="bin-ordinal",e.ORDINAL="ordinal",e.POINT="point",e.BAND="band"}(Pi||(Pi={}));const Ui={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"},Mi=V(Ui);function Li(e,t){const n=Ui[e],i=Ui[t];return n===i||"ordinal-position"===n&&"time"===i||"ordinal-position"===i&&"time"===n}const Ii={linear:0,log:1,pow:1,sqrt:1,symlog:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function qi(e){return Ii[e]}const Wi=["linear","log","pow","sqrt","symlog","time","utc"],Hi=x(Wi),Gi=x(["quantile","quantize","threshold"]),Yi=x(Wi.concat(["quantile","quantize","threshold"])),Vi=x(["ordinal","bin-ordinal","point","band"]);function Qi(e){return e in Vi}function Xi(e){return e in Yi}function Ji(e){return e in Hi}function Zi(e){return e in Gi}const Ki={textXRangeStep:90,rangeStep:20,pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4};function er(e){return e&&e.selection}const tr=X(Ne({type:1,domain:1,range:1,rangeStep:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},["type","domain","range","rangeStep","scheme"]));!function(){const e={};for(const t of xt)for(const n of V(pn))for(const i of Mi){const r=ar(t,n);or(t,i)&&rr(i,n)&&(e[r]=e[r]||[],e[r].push(i))}}();function nr(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!R(["point","band","identity"],e);case"bins":return!R(["point","band","identity","ordinal"],e);case"round":return Ji(e)||"band"===e||"point"===e;case"padding":return Ji(e)||R(["point","band"],e);case"paddingOuter":case"rangeStep":return R(["point","band"],e);case"paddingInner":return"band"===e;case"clamp":return Ji(e);case"nice":return Ji(e)||"quantize"===e||"threshold"===e;case"exponent":return"pow"===e;case"base":return"log"===e;case"constant":return"symlog"===e;case"zero":return Xi(e)&&!R(["log","time","utc","threshold","quantile"],e)}throw new Error(`Invalid scale property ${t}.`)}function ir(e,t){switch(t){case"interpolate":case"scheme":return gt(e)?void 0:Pt.cannotUseScalePropertyWithNonColor(e);case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}throw new Error(`Invalid scale property "${t}".`)}function rr(e,t){return R([mn,yn],t)?void 0===e||Qi(e):t===gn?R([Pi.TIME,Pi.UTC,void 0],e):t!==hn||R([Pi.LOG,Pi.POW,Pi.SQRT,Pi.SYMLOG,Pi.QUANTILE,Pi.QUANTIZE,Pi.THRESHOLD,Pi.LINEAR,void 0],e)}function or(e,t){switch(e){case We:case He:return Ji(t)||R(["band","point"],t);case nt:case at:case it:case rt:case ot:return Ji(t)||Zi(t)||R(["band","point"],t);case Ze:case Ke:case et:return"band"!==t;case tt:return"ordinal"===t}return!1}function ar(e,t){return e+"_"+t}const sr="_vgsid_";function ur(e){return"interval"===e.type}const cr={single:{on:"click",fields:[sr],resolve:"global",empty:"all",clear:"dblclick"},multi:{on:"click",fields:[sr],toggle:"event.shiftKey",resolve:"global",empty:"all",clear:"dblclick"},interval:{on:"[mousedown, window:mouseup] > window:mousemove!",encodings:["x","y"],translate:"[mousedown, window:mouseup] > window:mousemove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function lr(e){return void 0!==e.concat}function fr(e){return void 0!==e.vconcat}function dr(e){return void 0!==e.hconcat}function pr(e){return void 0!==e.repeat}const hr=X({align:1,bounds:1,center:1,columns:1,spacing:1});function mr(e){const{anchor:t,frame:n,offset:i,orient:r,color:o}=e,a=Ne(e,["anchor","frame","offset","orient","color"]);return{mark:Object.assign({},a,o?{fill:o}:{}),nonMark:Object.assign({},t?{anchor:t}:{},n?{frame:n}:{},i?{offset:i}:{},r?{orient:r}:{})}}const gr={padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",invalidValues:"filter",view:{width:200,height:200},mark:{color:"#4c78a8",tooltip:{content:"encoding"}},area:{},bar:{binSpacing:1,continuousBandSize:5},circle:{},geoshape:{},line:{},point:{},rect:{},rule:{color:"black"},square:{},text:{color:"black"},tick:{thickness:1},trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:Ki,projection:{},axis:{},axisX:{},axisY:{},axisLeft:{},axisRight:{},axisTop:{},axisBottom:{},axisBand:{},legend:{gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64},header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:cr,style:{},title:{},facet:{spacing:20},repeat:{spacing:20},concat:{spacing:20}};function yr(e){return L(B(gr),e)}const br=["view",...De],vr=["padding","facet","concat","repeat","numberFormat","timeFormat","countTitle","header","stack","scale","selection","invalidValues","overlay"],xr=Object.assign({view:["width","height"]},{area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize"],line:["point"],text:["shortTimeLabels"],tick:["bandSize","thickness"]});function Ar(e){e=B(e);for(const t of vr)delete e[t];if(e.axis)for(const t of Ni)delete e.axis[t];if(e.legend){for(const t of Ni)delete e.legend[t];for(const t of ji)delete e.legend[t]}if(e.mark)for(const t of Oe)delete e.mark[t];for(const t of br){for(const n of Oe)delete e[t][n];const n=xr[t];if(n)for(const i of n)delete e[t][i];wr(e,t)}for(const t of V($i))delete e[t];wr(e,"title","group-title");for(const t in e)a(e[t])&&0===V(e[t]).length&&delete e[t];return V(e).length>0?e:void 0}function wr(e,t,n,i){const r="title"===t?mr(e.title).mark:i?e[t][i]:e[t];"view"===t&&(n="cell");const o=Object.assign({},r,e.style[t]);V(o).length>0&&(e.style[n||t]=o),i||delete e[t]}function Cr(e){return void 0!==e.layer}class Fr{map(e,t){return tn(e)?this.mapFacet(e,t):pr(e)?this.mapRepeat(e,t):dr(e)?this.mapHConcat(e,t):fr(e)?this.mapVConcat(e,t):lr(e)?this.mapConcat(e,t):this.mapLayerOrUnit(e,t)}mapLayerOrUnit(e,t){if(Cr(e))return this.mapLayer(e,t);if($e(e))return this.mapUnit(e,t);throw new Error(Pt.INVALID_SPEC)}mapLayer(e,t){return Object.assign({},e,{layer:e.layer.map(e=>this.mapLayerOrUnit(e,t))})}mapHConcat(e,t){return Object.assign({},e,{hconcat:e.hconcat.map(e=>this.map(e,t))})}mapVConcat(e,t){return Object.assign({},e,{vconcat:e.vconcat.map(e=>this.map(e,t))})}mapConcat(e,t){const{concat:n}=e,i=Ne(e,["concat"]);return Object.assign({},i,{concat:n.map(e=>this.map(e,t))})}mapFacet(e,t){return Object.assign({},e,{spec:this.map(e.spec,t)})}mapRepeat(e,t){return Object.assign({},e,{spec:this.map(e.spec,t)})}}const Er={zero:1,center:1,normalize:1};const Dr=[he,pe,be,ge,we,Ce,me,ve,xe],Sr=[he,pe];function kr(e,t,n,i={}){const r=Se(e)?e.type:e;if(!R(Dr,r))return null;const a=function(e){const t=e.x,n=e.y;if(wn(t)&&wn(n))if("quantitative"===t.type&&"quantitative"===n.type){if(t.stack)return"x";if(n.stack)return"y";if(!!t.aggregate!=!!n.aggregate)return t.aggregate?"x":"y"}else{if("quantitative"===t.type)return"x";if("quantitative"===n.type)return"y"}else{if(wn(t)&&"quantitative"===t.type)return"x";if(wn(n)&&"quantitative"===n.type)return"y"}}(t);if(!a)return null;const s=t[a],u=Fn(s)?$n(s,{}):void 0,c="x"===a?"y":"x",l=t[c],f=Fn(l)?$n(l,{}):void 0,d=kt.reduce((e,n)=>{if("tooltip"!==n&&ei(t,n)){const i=t[n];(o(i)?i:[i]).forEach(t=>{const i=Mn(t);if(i.aggregate)return;const r=Fn(i)?$n(i,{}):void 0;(!r||r!==f&&r!==u)&&e.push({channel:n,fieldDef:i})})}return e},[]);if(0===d.length)return null;let p;if(!(p=void 0!==s.stack?b(s.stack)?s.stack?"zero":null:s.stack:R(Sr,r)?se(n,"zero"):n)||!Er[p])return null;if(s.scale&&s.scale.type&&s.scale.type!==Pi.LINEAR){if(i.disallowNonLinearStack)return null;Ht(Pt.cannotStackNonLinearScale(s.scale.type))}return ei(t,a===We?Ge:Ye)?(void 0!==s.stack&&Ht(Pt.cannotStackRangedMark(a)),null):(s.aggregate&&!R(Ue,s.aggregate)&&Ht(Pt.stackNonSummativeAggregate(s.aggregate)),{groupbyChannel:l?c:void 0,fieldChannel:a,impute:Ee(r),stackBy:d,offset:p})}function Or(e){const t=Ne(e,["point","line"]);return V(t).length>1?t:t.type}function $r(e){for(const t of["line","area","rule","trail"])e[t]&&(e=Object.assign({},e,{[t]:j(e[t],["point","line"])}));return e}function Br(e,t={},n){return"transparent"===e.point?{opacity:0}:e.point?a(e.point)?e.point:{}:void 0!==e.point?null:t.point||n.shape?a(t.point)?t.point:{}:void 0}function Nr(e,t={}){return e.line?!0===e.line?{}:e.line:void 0!==e.line?null:t.line?!0===t.line?{}:t.line:void 0}class jr{constructor(){this.name="path-overlay"}hasMatchingType(e,t){if($e(e)){const{mark:n,encoding:i}=e,r=Se(n)?n:{type:n};switch(r.type){case"line":case"rule":case"trail":return!!Br(r,t[r.type],i);case"area":return!!Br(r,t[r.type],i)||!!Nr(r,t[r.type])}}return!1}run(e,t,n){const{config:i}=t,{selection:r,projection:o,encoding:a,mark:s}=e,u=Ne(e,["selection","projection","encoding","mark"]),c=Se(s)?s:{type:s},l=Br(c,i[c.type],a),f="area"===c.type&&Nr(c,i[c.type]),d=[Object.assign({},r?{selection:r}:{},{mark:Or(Object.assign({},c,"area"===c.type?{opacity:.7}:{})),encoding:j(a,["shape"])})],p=kr(c,a,i?i.stack:void 0);let h=a;if(p){const{fieldChannel:e,offset:t}=p;h=Object.assign({},a,{[e]:Object.assign({},a[e],t?{stack:t}:{})})}return f&&d.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"line"},N(c,["clip","interpolate","tension"]),f),encoding:h})),l&&d.push(Object.assign({},o?{projection:o}:{},{mark:Object.assign({type:"point",opacity:1,filled:!0},N(c,["clip"]),l),encoding:h})),n(Object.assign({},u,{layer:d}),Object.assign({},t,{config:$r(i)}))}}class _r{constructor(){this.name="RuleForRangedLine"}hasMatchingType(e){if($e(e)){const{encoding:t,mark:n}=e;if("line"===n)for(const e of Ft){const n=t[Dt(e)];if(t[e]&&wn(n)&&"binned"!==n.bin)return!0}}return!1}run(e,t,n){const{encoding:i}=e;return Ht(Pt.lineWithRange(!!i.x2,!!i.y2)),n(Object.assign({},e,{mark:"rule"}),t)}}function Tr(e){const{parentEncoding:t,encoding:n}=e;if(t&&n){const e=V(t).reduce((e,t)=>(n[t]&&e.push(t),e),[]);e.length>0&&Ht(Pt.encodingOverridden(e))}const i=Object.assign({},t||{},n||{});return V(i).length>0?i:void 0}function zr(e){const{parentProjection:t,projection:n}=e;return t&&n&&Ht(Pt.projectionOverridden({parentProjection:t,projection:n})),n||t}function Rr(e,t){return void 0===t&&(t=yr(e.config)),function(e,t={}){return Pr.map(e,{config:t})}(e,t)}const Pr=new class extends Fr{constructor(){super(...arguments),this.nonFacetUnitNormalizers=[mi,Ai,ki,new jr,new _r]}map(e,t){if($e(e)){const n=ei(e.encoding,Le),i=ei(e.encoding,Ie),r=ei(e.encoding,qe);if(n||i||r)return this.mapFacetedUnit(e,t)}return super.map(e,t)}mapUnit(e,t){const{parentEncoding:n,parentProjection:i}=t;if(n||i)return this.mapUnitWithParentEncodingOrProjection(e,t);const r=this.mapLayerOrUnit.bind(this);for(const n of this.nonFacetUnitNormalizers)if(n.hasMatchingType(e,t.config))return n.run(e,t,r);return e}mapRepeat(e,t){const{repeat:n}=e;return!o(n)&&e.columns&&(e=j(e,["columns"]),Ht(Pt.columnsNotSupportByRowCol("repeat"))),Object.assign({},e,{spec:this.map(e.spec,t)})}mapFacet(e,t){const{facet:n}=e;return en(n)&&e.columns&&(e=j(e,["columns"]),Ht(Pt.columnsNotSupportByRowCol("facet"))),super.mapFacet(e,t)}mapUnitWithParentEncodingOrProjection(e,t){const{encoding:n,projection:i}=e,{parentEncoding:r,parentProjection:o,config:a}=t,s=zr({parentProjection:o,projection:i}),u=Tr({parentEncoding:r,encoding:n});return this.mapUnit(Object.assign({},e,s?{projection:s}:{},u?{encoding:u}:{}),{config:a})}mapFacetedUnit(e,t){const n=e.encoding,{row:i,column:r,facet:o}=n,a=Ne(n,["row","column","facet"]),{mark:s,width:u,projection:c,height:l,selection:f,encoding:d}=e,p=Ne(e,["mark","width","projection","height","selection","encoding"]);return o&&(i||r)&&Ht(Pt.facetChannelDropped([...i?[Le]:[],...r?[Ie]:[]])),this.mapFacet(Object.assign({},p,{facet:i||r?Object.assign({},i?{row:i}:{},r?{column:r}:{}):o,spec:Object.assign({},c?{projection:c}:{},{mark:s},u?{width:u}:{},l?{height:l}:{},{encoding:a},f?{selection:f}:{})}),t)}mapLayer(e,t){var{parentEncoding:n,parentProjection:i}=t,r=Ne(t,["parentEncoding","parentProjection"]);const{encoding:o,projection:a}=e,s=Ne(e,["encoding","projection"]),u=Object.assign({},r,{parentEncoding:Tr({parentEncoding:n,encoding:o}),parentProjection:zr({parentProjection:i,projection:a})});return super.mapLayer(s,u)}};function Ur(e){return s(e)?{type:e}:e||{}}const Mr=["background","padding"];function Lr(e){return Mr.reduce((t,n)=>(e&&void 0!==e[n]&&(t[n]=e[n]),t),{})}function Ir(e){return!!e.url}function qr(e){return!!e.values}function Wr(e){return!(!e.name||Ir(e)||qr(e)||Hr(e))}function Hr(e){return e&&(Gr(e)||Yr(e)||Vr(e))}function Gr(e){return!!e.sequence}function Yr(e){return!!e.sphere}function Vr(e){return!!e.graticule}const Qr="main",Xr="raw";function Jr(e){return e&&!!e.field&&void 0!==e.equal}function Zr(e){return e&&!!e.field&&void 0!==e.lt}function Kr(e){return e&&!!e.field&&void 0!==e.lte}function eo(e){return e&&!!e.field&&void 0!==e.gt}function to(e){return e&&!!e.field&&void 0!==e.gte}function no(e){return!!(e&&e.field&&o(e.range)&&2===e.range.length)}function io(e){return e&&!!e.field&&(o(e.oneOf)||o(e.in))}function ro(e){return io(e)||Jr(e)||no(e)||Zr(e)||eo(e)||Kr(e)||to(e)}function oo(e,t){return Gn(e,{timeUnit:t,time:!0})}function ao(e,t=!0){const{field:n,timeUnit:i}=e,r=i?"time("+ln(i,n)+")":$n(e,{expr:"datum"});if(Jr(e))return r+"==="+oo(e.equal,i);if(Zr(e)){return`${r}<${oo(e.lt,i)}`}if(eo(e)){return`${r}>${oo(e.gt,i)}`}if(Kr(e)){return`${r}<=${oo(e.lte,i)}`}if(to(e)){return`${r}>=${oo(e.gte,i)}`}if(io(e))return`indexof([${function(e,t){return e.map(e=>oo(e,t))}(e.oneOf,i).join(",")}], ${r}) !== -1`;if(function(e){return e&&!!e.field&&void 0!==e.valid}(e))return e.valid?`${r}!==null&&!isNaN(${r})`:`${r}===null||isNaN(${r})`;if(no(e)){const n=e.range[0],o=e.range[1];if(null!==n&&null!==o&&t)return"inrange("+r+", ["+oo(n,i)+", "+oo(o,i)+"])";const a=[];return null!==n&&a.push(`${r} >= ${oo(n,i)}`),null!==o&&a.push(`${r} <= ${oo(o,i)}`),a.length>0?a.join(" && "):"true"}throw new Error(`Invalid field predicate: ${JSON.stringify(e)}`)}function so(e){return ro(e)&&e.timeUnit?Object.assign({},e,{timeUnit:dn(e.timeUnit)}):e}function uo(e){return void 0!==e.filter}function co(e){return void 0!==e.lookup}function lo(e){return void 0!==e.sample}function fo(e){return void 0!==e.window}function po(e){return void 0!==e.joinaggregate}function ho(e){return void 0!==e.flatten}function mo(e){return void 0!==e.calculate}function go(e){return!!e.bin}function yo(e){return void 0!==e.impute}function bo(e){return void 0!==e.timeUnit}function vo(e){return void 0!==e.aggregate}function xo(e){return void 0!==e.stack}function Ao(e){return void 0!==e.fold}function wo(e){return!!e.signal}function Co(e){return!!e.step}function Fo(e){return!o(e)&&("field"in e&&"data"in e)}const Eo=X({opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeMiterLimit:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,cursor:1,href:1,tooltip:1,cornerRadius:1,x:1,y:1,x2:1,y2:1}),Do=["domain","grid","labels","ticks","title"],So={grid:"grid",gridColor:"grid",gridDash:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",domain:"main",domainColor:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontWeight:"main",labelLimit:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",maxExtent:"main",minExtent:"main",offset:"main",position:"main",tickColor:"main",tickExtra:"main",tickOffset:"both",tickOpacity:"main",tickRound:"main",ticks:"main",tickSize:"main",title:"main",titleAlign:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontWeight:"main",titleLimit:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",tickWidth:"both",tickCount:"both",values:"both",scale:"both",zindex:"both"},ko={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},Oo=Object.assign({},ko,{encoding:1});const $o=X(Object.assign({gridScale:1,scale:1},ko,{encode:1}));function Bo(e,t,n,i={header:!1}){const r=e.combine(),{orient:a,scale:s,title:u,zindex:c}=r,l=Ne(r,["orient","scale","title","zindex"]);if(V(l).forEach(e=>{const n=So[e];n&&n!==t&&"both"!==n&&delete l[e]}),"grid"===t){if(!l.grid)return;if(l.encode){const{grid:e}=l.encode;l.encode=Object.assign({},e?{grid:e}:{}),0===V(l.encode).length&&delete l.encode}return Object.assign({scale:s,orient:a},l,{domain:!1,labels:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:se(c,0)})}{if(!i.header&&e.mainExtracted)return;if(l.encode){for(const t of Do)e.hasAxisPart(t)||delete l.encode[t];0===V(l.encode).length&&delete l.encode}const t=function(e,t){return o(e)?e.map(e=>Pn(e,t)).join(", "):e}(u,n);return Object.assign({scale:s,orient:a,grid:!1},t?{title:t}:{},l,{zindex:se(c,1)})}}function No(e){const{axes:t}=e.component;for(const n of $t)if(t[n])for(const i of t[n])if(!i.get("gridScale")){const t="x"===n?"height":"width";return[{name:t,update:e.getSizeSignalRef(t).signal}]}return[]}const jo={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontWeight:"fontWeight",titleLimit:"limit",titleOrient:"orient",titlePadding:"offset"},_o={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelLimit:"limit",labelOrient:"orient",labelPadding:"offset"},To=V(jo),zo=V(_o),Ro="mean";function Po(e){return!(!e||"count"!==e.op&&!e.field)}function Uo(e){return!!e&&o(e)}function Mo(e,t,n,i,r){const o=[..."band"===r?["axisBand"]:[],"x"===n?"axisX":"axisY",...i?["axis"+i.substr(0,1).toUpperCase()+i.substr(1)]:[],"axis"];for(const n of o)if(t[n]&&void 0!==t[n][e])return t[n][e]}function Lo(e,t){return!Qi(e)&&!Xn(t.bin)}function Io(e,t){const n="x"===t?"y":"x";if(e.getScaleComponent(n))return e.scaleName(n)}function qo(e,t,n,i){if(void 0!==t.labelAngle)return de(t.labelAngle);{const t=Mo("labelAngle",e.config,n,Vo(n),e.getScaleComponent(n).get("type"));return void 0!==t?de(t):n===We&&R([yn,mn],i.type)?270:void 0}}function Wo(e,t){if(void 0!==e)return e=de(e),"top"===t||"bottom"===t?e<=45||315<=e?"top"===t?"bottom":"top":135<=e&&e<=225?"top"===t?"top":"bottom":"middle":e<=45||315<=e||135<=e&&e<=225?"middle":45<=e&&e<=135?"left"===t?"top":"bottom":"left"===t?"bottom":"top"}function Ho(e,t){if(void 0!==e)return e=de(e),"top"===t||"bottom"===t?e%180==0?"center":0<e&&e<180?"top"===t?"right":"left":"top"===t?"left":"right":(e+90)%180==0?"center":90<=e&&e<270?"left"===t?"left":"right":"left"===t?"right":"left"}function Go(e,t){if("x"===t&&R(["quantitative","temporal"],e.type))return!0}function Yo(e,t){if("nominal"!==e.type)return"log"!==t||"greedy"}function Vo(e){switch(e){case We:return"bottom";case He:return"left"}throw new Error(Pt.INVALID_CHANNEL_FOR_AXIS)}function Qo({fieldDef:e,scaleType:t,size:n}){if(!Qi(t)&&"log"!==t&&!R(["month","hours","day","quarter"],e.timeUnit))return Xn(e.bin)?{signal:`ceil(${n.signal}/10)`}:{signal:`ceil(${n.signal}/40)`}}function Xo(e,t,n){const i=e.values;if(i)return Yn(n,i)}function Jo(e){return[].concat(e.type,e.style||[])}function Zo(e,t,n,{vgChannel:i}={}){return se(i?Ko(e,t,n.style):void 0,Ko(e,t,n.style),i?n[t.type][i]:void 0,n[t.type][e],i?n.mark[i]:n.mark[e])}function Ko(e,t,n){const i=Jo(t);let r;for(const t of i){const i=n[t],o=e;i&&void 0!==i[o]&&(r=i[o])}return r}function ea(e,t,n,i){if(Hn(e)){const r=Dn(e)&&e.scale&&e.scale.type===Pi.UTC;return{signal:oa($n(e,{expr:n}),e.timeUnit,t,i.text.shortTimeLabels,i.timeFormat,r,!0)}}{const r=ta(e,t,i);if(Xn(e.bin)){return{signal:ra($n(e,{expr:n}),$n(e,{expr:n,binSuffix:"end"}),r,i)}}return"quantitative"===e.type?{signal:`${na($n(e,{expr:n,binSuffix:"range"}),r)}`}:{signal:`\'\'+${$n(e,{expr:n})}`}}}function ta(e,t,n){return t||(e.type===hn?n.numberFormat:void 0)}function na(e,t){return`format(${e}, "${t||""}")`}function ia(e,t,n){return na(e,t||n.numberFormat)}function ra(e,t,n,i){return`${e} === null || isNaN(${e}) ? "null" : ${ia(e,n,i)} + " - " + ${ia(t,n,i)}`}function oa(e,t,n,i,r,o,a=!1){return!t||n?(n=n||r)||a?`${o?"utc":"time"}Format(${e}, \'${n}\')`:void 0:function(e,t,n,i){if(!e)return;const r=fn(e,n);let o="";return cn(e,nn.QUARTER)&&(o=`\'Q\' + quarter(${t})`),r.length>0&&(o&&(o+=" + \' \' + "),o+=i?`utcFormat(${t}, \'${r.join(" ")}\')`:`timeFormat(${t}, \'${r.join(" ")}\')`),o||void 0}(t,e,i,o)}function aa(e,t){return(o(e)?e:[e]).reduce((e,n)=>(e.field.push($n(n,t)),e.order.push(n.sort||"ascending"),e),{field:[],order:[]})}function sa(e,t){const n=[...e];return t.forEach(e=>{for(const t of n)if(_(t)===_(e))return;n.push(e)}),n}function ua(e,t){return e!==t&&t?e?e+", "+t:t:e}function ca(e,t){if(o(e.value)&&o(t.value))return{explicit:e.explicit,value:sa(e.value,t.value)};if(!o(e.value)&&!o(t.value))return{explicit:e.explicit,value:ua(e.value,t.value)};throw new Error("It should never reach here")}class la{constructor(e,t){this.debugName=t,this._children=[],this._parent=null,e&&(this.parent=e)}clone(){throw new Error("Cannot clone node")}hash(){return void 0===this._hash&&(this._hash=ce()),this._hash}producedFields(){return new Set}dependentFields(){return new Set}get parent(){return this._parent}set parent(e){this._parent=e,e&&e.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(e,t){this._children.indexOf(e)>-1?console.warn("Attempt to add the same child twice."):void 0!==t?this._children.splice(t,0,e):this._children.push(e)}removeChild(e){const t=this._children.indexOf(e);return this._children.splice(t,1),t}remove(){let e=this._parent.removeChild(this);for(const t of this._children)t._parent=this._parent,this._parent.addChild(t,e++)}insertAsParentOf(e){const t=e.parent;t.removeChild(this),this.parent=t,e.parent=this}swapWithParent(){const e=this._parent,t=e.parent;for(const t of this._children)t.parent=e;this._children=[],e.removeChild(this),e.parent.removeChild(e),this.parent=t,e.parent=this}}class fa extends la{constructor(e,t,n,i){super(e,t),this.type=n,this.refCounts=i,this._source=this._name=t,!this.refCounts||this._name in this.refCounts||(this.refCounts[this._name]=0)}clone(){const e=new this.constructor;return e.debugName="clone_"+this.debugName,e._source=this._source,e._name="clone_"+this._name,e.type=this.type,e.refCounts=this.refCounts,e.refCounts[e._name]=0,e}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(e){this._source=e}}var da,pa,ha,ma,ga,ya="RawCode",ba="Literal",va="Property",xa="Identifier",Aa="ArrayExpression",wa="BinaryExpression",Ca="CallExpression",Fa="ConditionalExpression",Ea="LogicalExpression",Da="MemberExpression",Sa="ObjectExpression",ka="UnaryExpression";function Oa(e){this.type=e}Oa.prototype.visit=function(e){var t,n,i;if(e(this))return 1;for(n=0,i=(t=function(e){switch(e.type){case Aa:return e.elements;case wa:case Ea:return[e.left,e.right];case Ca:var t=e.arguments.slice();return t.unshift(e.callee),t;case Fa:return[e.test,e.consequent,e.alternate];case Da:return[e.object,e.property];case Sa:return e.properties;case va:return[e.key,e.value];case ka:return[e.argument];case xa:case ba:case ya:default:return[]}}(this)).length;n<i;++n)if(t[n].visit(e))return 1};var $a=1,Ba=2,Na=3,ja=4,_a=5,Ta=6,za=7,Ra=8;(da={})[$a]="Boolean",da[Ba]="<end>",da[Na]="Identifier",da[ja]="Keyword",da[_a]="Null",da[Ta]="Numeric",da[za]="Punctuator",da[Ra]="String",da[9]="RegularExpression";var Pa="ArrayExpression",Ua="BinaryExpression",Ma="CallExpression",La="ConditionalExpression",Ia="Identifier",qa="Literal",Wa="LogicalExpression",Ha="MemberExpression",Ga="ObjectExpression",Ya="Property",Va="UnaryExpression",Qa="Unexpected token %0",Xa="Unexpected number",Ja="Unexpected string",Za="Unexpected identifier",Ka="Unexpected reserved word",es="Unexpected end of input",ts="Invalid regular expression",ns="Invalid regular expression: missing /",is="Octal literals are not allowed in strict mode.",rs="Duplicate data property in object literal not allowed in strict mode",os="ILLEGAL",as="Disabled.",ss=new RegExp("[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u08A0-\\\\u08B2\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58\\\\u0C59\\\\u0C60\\\\u0C61\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D60\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1877\\\\u1880-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19C1-\\\\u19C7\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4B\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF1\\\\u1CF5\\\\u1CF6\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]"),us=new RegExp("[\\\\xAA\\\\xB5\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02C1\\\\u02C6-\\\\u02D1\\\\u02E0-\\\\u02E4\\\\u02EC\\\\u02EE\\\\u0300-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u0483-\\\\u0487\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u05D0-\\\\u05EA\\\\u05F0-\\\\u05F2\\\\u0610-\\\\u061A\\\\u0620-\\\\u0669\\\\u066E-\\\\u06D3\\\\u06D5-\\\\u06DC\\\\u06DF-\\\\u06E8\\\\u06EA-\\\\u06FC\\\\u06FF\\\\u0710-\\\\u074A\\\\u074D-\\\\u07B1\\\\u07C0-\\\\u07F5\\\\u07FA\\\\u0800-\\\\u082D\\\\u0840-\\\\u085B\\\\u08A0-\\\\u08B2\\\\u08E4-\\\\u0963\\\\u0966-\\\\u096F\\\\u0971-\\\\u0983\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BC-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CE\\\\u09D7\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E3\\\\u09E6-\\\\u09F1\\\\u0A01-\\\\u0A03\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A66-\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABC-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AD0\\\\u0AE0-\\\\u0AE3\\\\u0AE6-\\\\u0AEF\\\\u0B01-\\\\u0B03\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3C-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B56\\\\u0B57\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B63\\\\u0B66-\\\\u0B6F\\\\u0B71\\\\u0B82\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD0\\\\u0BD7\\\\u0BE6-\\\\u0BEF\\\\u0C00-\\\\u0C03\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C58\\\\u0C59\\\\u0C60-\\\\u0C63\\\\u0C66-\\\\u0C6F\\\\u0C81-\\\\u0C83\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBC-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CDE\\\\u0CE0-\\\\u0CE3\\\\u0CE6-\\\\u0CEF\\\\u0CF1\\\\u0CF2\\\\u0D01-\\\\u0D03\\\\u0D05-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4E\\\\u0D57\\\\u0D60-\\\\u0D63\\\\u0D66-\\\\u0D6F\\\\u0D7A-\\\\u0D7F\\\\u0D82\\\\u0D83\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DE6-\\\\u0DEF\\\\u0DF2\\\\u0DF3\\\\u0E01-\\\\u0E3A\\\\u0E40-\\\\u0E4E\\\\u0E50-\\\\u0E59\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E87\\\\u0E88\\\\u0E8A\\\\u0E8D\\\\u0E94-\\\\u0E97\\\\u0E99-\\\\u0E9F\\\\u0EA1-\\\\u0EA3\\\\u0EA5\\\\u0EA7\\\\u0EAA\\\\u0EAB\\\\u0EAD-\\\\u0EB9\\\\u0EBB-\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EC8-\\\\u0ECD\\\\u0ED0-\\\\u0ED9\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F18\\\\u0F19\\\\u0F20-\\\\u0F29\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F71-\\\\u0F84\\\\u0F86-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u1000-\\\\u1049\\\\u1050-\\\\u109D\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u135D-\\\\u135F\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F4\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u170C\\\\u170E-\\\\u1714\\\\u1720-\\\\u1734\\\\u1740-\\\\u1753\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1772\\\\u1773\\\\u1780-\\\\u17D3\\\\u17D7\\\\u17DC\\\\u17DD\\\\u17E0-\\\\u17E9\\\\u180B-\\\\u180D\\\\u1810-\\\\u1819\\\\u1820-\\\\u1877\\\\u1880-\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1946-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u19D0-\\\\u19D9\\\\u1A00-\\\\u1A1B\\\\u1A20-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1AA7\\\\u1AB0-\\\\u1ABD\\\\u1B00-\\\\u1B4B\\\\u1B50-\\\\u1B59\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1BF3\\\\u1C00-\\\\u1C37\\\\u1C40-\\\\u1C49\\\\u1C4D-\\\\u1C7D\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CF6\\\\u1CF8\\\\u1CF9\\\\u1D00-\\\\u1DF5\\\\u1DFC-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u200C\\\\u200D\\\\u203F\\\\u2040\\\\u2054\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u20D0-\\\\u20DC\\\\u20E1\\\\u20E5-\\\\u20F0\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u2C00-\\\\u2C2E\\\\u2C30-\\\\u2C5E\\\\u2C60-\\\\u2CE4\\\\u2CEB-\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D7F-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2DE0-\\\\u2DFF\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u302F\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u3099\\\\u309A\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312D\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BA\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DB5\\\\u4E00-\\\\u9FCC\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA62B\\\\uA640-\\\\uA66F\\\\uA674-\\\\uA67D\\\\uA67F-\\\\uA69D\\\\uA69F-\\\\uA6F1\\\\uA717-\\\\uA71F\\\\uA722-\\\\uA788\\\\uA78B-\\\\uA78E\\\\uA790-\\\\uA7AD\\\\uA7B0\\\\uA7B1\\\\uA7F7-\\\\uA827\\\\uA840-\\\\uA873\\\\uA880-\\\\uA8C4\\\\uA8D0-\\\\uA8D9\\\\uA8E0-\\\\uA8F7\\\\uA8FB\\\\uA900-\\\\uA92D\\\\uA930-\\\\uA953\\\\uA960-\\\\uA97C\\\\uA980-\\\\uA9C0\\\\uA9CF-\\\\uA9D9\\\\uA9E0-\\\\uA9FE\\\\uAA00-\\\\uAA36\\\\uAA40-\\\\uAA4D\\\\uAA50-\\\\uAA59\\\\uAA60-\\\\uAA76\\\\uAA7A-\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEF\\\\uAAF2-\\\\uAAF6\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB5F\\\\uAB64\\\\uAB65\\\\uABC0-\\\\uABEA\\\\uABEC\\\\uABED\\\\uABF0-\\\\uABF9\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2D\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF10-\\\\uFF19\\\\uFF21-\\\\uFF3A\\\\uFF3F\\\\uFF41-\\\\uFF5A\\\\uFF66-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]");function cs(e,t){if(!e)throw new Error("ASSERT: "+t)}function ls(e){return e>=48&&e<=57}function fs(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function ds(e){return"01234567".indexOf(e)>=0}function ps(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function hs(e){return 10===e||13===e||8232===e||8233===e}function ms(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&ss.test(String.fromCharCode(e))}function gs(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&us.test(String.fromCharCode(e))}var ys={if:1,in:1,do:1,var:1,for:1,new:1,try:1,let:1,this:1,else:1,case:1,void:1,with:1,enum:1,while:1,break:1,catch:1,throw:1,const:1,yield:1,class:1,super:1,return:1,typeof:1,delete:1,switch:1,export:1,import:1,public:1,static:1,default:1,finally:1,extends:1,package:1,private:1,function:1,continue:1,debugger:1,interface:1,protected:1,instanceof:1,implements:1};function bs(){for(var e;ha<ma&&(ps(e=pa.charCodeAt(ha))||hs(e));)++ha}function vs(e){var t,n,i,r=0;for(n="u"===e?4:2,t=0;t<n;++t)ha<ma&&fs(pa[ha])?(i=pa[ha++],r=16*r+"0123456789abcdef".indexOf(i.toLowerCase())):Ts({},Qa,os);return String.fromCharCode(r)}function xs(){var e,t,n,i;for(t=0,"}"===(e=pa[ha])&&Ts({},Qa,os);ha<ma&&fs(e=pa[ha++]);)t=16*t+"0123456789abcdef".indexOf(e.toLowerCase());return(t>1114111||"}"!==e)&&Ts({},Qa,os),t<=65535?String.fromCharCode(t):(n=55296+(t-65536>>10),i=56320+(t-65536&1023),String.fromCharCode(n,i))}function As(){var e,t;for(e=pa.charCodeAt(ha++),t=String.fromCharCode(e),92===e&&(117!==pa.charCodeAt(ha)&&Ts({},Qa,os),++ha,(e=vs("u"))&&"\\\\"!==e&&ms(e.charCodeAt(0))||Ts({},Qa,os),t=e);ha<ma&&gs(e=pa.charCodeAt(ha));)++ha,t+=String.fromCharCode(e),92===e&&(t=t.substr(0,t.length-1),117!==pa.charCodeAt(ha)&&Ts({},Qa,os),++ha,(e=vs("u"))&&"\\\\"!==e&&gs(e.charCodeAt(0))||Ts({},Qa,os),t+=e);return t}function ws(){var e,t;return e=ha,{type:1===(t=92===pa.charCodeAt(ha)?As():function(){var e,t;for(e=ha++;ha<ma;){if(92===(t=pa.charCodeAt(ha)))return ha=e,As();if(!gs(t))break;++ha}return pa.slice(e,ha)}()).length?Na:ys.hasOwnProperty(t)?ja:"null"===t?_a:"true"===t||"false"===t?$a:Na,value:t,start:e,end:ha}}function Cs(){var e,t,n,i,r=ha,o=pa.charCodeAt(ha),a=pa[ha];switch(o){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++ha,{type:za,value:String.fromCharCode(o),start:r,end:ha};default:if(61===(e=pa.charCodeAt(ha+1)))switch(o){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return ha+=2,{type:za,value:String.fromCharCode(o)+String.fromCharCode(e),start:r,end:ha};case 33:case 61:return ha+=2,61===pa.charCodeAt(ha)&&++ha,{type:za,value:pa.slice(r,ha),start:r,end:ha}}}return">>>="===(i=pa.substr(ha,4))?{type:za,value:i,start:r,end:ha+=4}:">>>"===(n=i.substr(0,3))||"<<="===n||">>="===n?{type:za,value:n,start:r,end:ha+=3}:a===(t=n.substr(0,2))[1]&&"+-<>&|".indexOf(a)>=0||"=>"===t?{type:za,value:t,start:r,end:ha+=2}:"<>=!+-*%&|^/".indexOf(a)>=0?{type:za,value:a,start:r,end:++ha}:void Ts({},Qa,os)}function Fs(){var e,t,n;if(cs(ls((n=pa[ha]).charCodeAt(0))||"."===n,"Numeric literal must start with a decimal digit or a decimal point"),t=ha,e="","."!==n){if(e=pa[ha++],n=pa[ha],"0"===e){if("x"===n||"X"===n)return++ha,function(e){for(var t="";ha<ma&&fs(pa[ha]);)t+=pa[ha++];return 0===t.length&&Ts({},Qa,os),ms(pa.charCodeAt(ha))&&Ts({},Qa,os),{type:Ta,value:parseInt("0x"+t,16),start:e,end:ha}}(t);if(ds(n))return function(e){for(var t="0"+pa[ha++];ha<ma&&ds(pa[ha]);)t+=pa[ha++];return(ms(pa.charCodeAt(ha))||ls(pa.charCodeAt(ha)))&&Ts({},Qa,os),{type:Ta,value:parseInt(t,8),octal:!0,start:e,end:ha}}(t);n&&ls(n.charCodeAt(0))&&Ts({},Qa,os)}for(;ls(pa.charCodeAt(ha));)e+=pa[ha++];n=pa[ha]}if("."===n){for(e+=pa[ha++];ls(pa.charCodeAt(ha));)e+=pa[ha++];n=pa[ha]}if("e"===n||"E"===n)if(e+=pa[ha++],"+"!==(n=pa[ha])&&"-"!==n||(e+=pa[ha++]),ls(pa.charCodeAt(ha)))for(;ls(pa.charCodeAt(ha));)e+=pa[ha++];else Ts({},Qa,os);return ms(pa.charCodeAt(ha))&&Ts({},Qa,os),{type:Ta,value:parseFloat(e),start:t,end:ha}}function Es(){var e,t,n,i;return ga=null,bs(),e=ha,t=function(){var e,t,n,i;for(cs("/"===(e=pa[ha]),"Regular expression literal must start with a slash"),t=pa[ha++],n=!1,i=!1;ha<ma;)if(t+=e=pa[ha++],"\\\\"===e)hs((e=pa[ha++]).charCodeAt(0))&&Ts({},ns),t+=e;else if(hs(e.charCodeAt(0)))Ts({},ns);else if(n)"]"===e&&(n=!1);else{if("/"===e){i=!0;break}"["===e&&(n=!0)}return i||Ts({},ns),{value:t.substr(1,t.length-2),literal:t}}(),n=function(){var e,t,n;for(t="",n="";ha<ma&&gs((e=pa[ha]).charCodeAt(0));)++ha,"\\\\"===e&&ha<ma?Ts({},Qa,os):(n+=e,t+=e);return n.search(/[^gimuy]/g)>=0&&Ts({},ts,n),{value:n,literal:t}}(),i=function(e,t){var n=e;t.indexOf("u")>=0&&(n=n.replace(/\\\\u\\{([0-9a-fA-F]+)\\}/g,function(e,t){if(parseInt(t,16)<=1114111)return"x";Ts({},ts)}).replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,"x"));try{return new RegExp(e,t)}catch(e){return null}}(t.value,n.value),{literal:t.literal+n.literal,value:i,regex:{pattern:t.value,flags:n.value},start:e,end:ha}}function Ds(){var e;return bs(),ha>=ma?{type:Ba,start:ha,end:ha}:ms(e=pa.charCodeAt(ha))?ws():40===e||41===e||59===e?Cs():39===e||34===e?function(){var e,t,n,i,r="",o=!1;for(cs("\'"===(e=pa[ha])||\'"\'===e,"String literal must starts with a quote"),t=ha,++ha;ha<ma;){if((n=pa[ha++])===e){e="";break}if("\\\\"===n)if((n=pa[ha++])&&hs(n.charCodeAt(0)))"\\r"===n&&"\\n"===pa[ha]&&++ha;else switch(n){case"u":case"x":"{"===pa[ha]?(++ha,r+=xs()):r+=vs(n);break;case"n":r+="\\n";break;case"r":r+="\\r";break;case"t":r+="\\t";break;case"b":r+="\\b";break;case"f":r+="\\f";break;case"v":r+="\\v";break;default:ds(n)?(0!==(i="01234567".indexOf(n))&&(o=!0),ha<ma&&ds(pa[ha])&&(o=!0,i=8*i+"01234567".indexOf(pa[ha++]),"0123".indexOf(n)>=0&&ha<ma&&ds(pa[ha])&&(i=8*i+"01234567".indexOf(pa[ha++]))),r+=String.fromCharCode(i)):r+=n}else{if(hs(n.charCodeAt(0)))break;r+=n}}return""!==e&&Ts({},Qa,os),{type:Ra,value:r,octal:o,start:t,end:ha}}():46===e?ls(pa.charCodeAt(ha+1))?Fs():Cs():ls(e)?Fs():Cs()}function Ss(){var e;return ha=(e=ga).end,ga=Ds(),ha=e.end,e}function ks(){var e;e=ha,ga=Ds(),ha=e}function Os(e,t,n){var i=new Oa("||"===e||"&&"===e?Wa:Ua);return i.operator=e,i.left=t,i.right=n,i}function $s(e,t){var n=new Oa(Ma);return n.callee=e,n.arguments=t,n}function Bs(e){var t=new Oa(Ia);return t.name=e,t}function Ns(e){var t=new Oa(qa);return t.value=e.value,t.raw=pa.slice(e.start,e.end),e.regex&&("//"===t.raw&&(t.raw="/(?:)/"),t.regex=e.regex),t}function js(e,t,n){var i=new Oa(Ha);return i.computed="["===e,i.object=t,i.property=n,i.computed||(n.member=!0),i}function _s(e,t,n){var i=new Oa(Ya);return i.key=t,i.value=n,i.kind=e,i}function Ts(e,t){var n,i=Array.prototype.slice.call(arguments,2),r=t.replace(/%(\\d)/g,function(e,t){return cs(t<i.length,"Message reference must be in range"),i[t]});throw(n=new Error(r)).index=ha,n.description=r,n}function zs(e){e.type===Ba&&Ts(e,es),e.type===Ta&&Ts(e,Xa),e.type===Ra&&Ts(e,Ja),e.type===Na&&Ts(e,Za),e.type===ja&&Ts(e,Ka),Ts(e,Qa,e.value)}function Rs(e){var t=Ss();t.type===za&&t.value===e||zs(t)}function Ps(e){return ga.type===za&&ga.value===e}function Us(e){return ga.type===ja&&ga.value===e}function Ms(){var e=[];for(ha=ga.start,Rs("[");!Ps("]");)Ps(",")?(Ss(),e.push(null)):(e.push(Zs()),Ps("]")||Rs(","));return Ss(),function(e){var t=new Oa(Pa);return t.elements=e,t}(e)}function Ls(){var e;return ha=ga.start,(e=Ss()).type===Ra||e.type===Ta?(e.octal&&Ts(e,is),Ns(e)):Bs(e.value)}function Is(){var e,t,n;return ha=ga.start,(e=ga).type===Na?(n=Ls(),Rs(":"),_s("init",n,Zs())):e.type!==Ba&&e.type!==za?(t=Ls(),Rs(":"),_s("init",t,Zs())):void zs(e)}function qs(){var e,t,n=[],i={},r=String;for(ha=ga.start,Rs("{");!Ps("}");)t="$"+((e=Is()).key.type===Ia?e.key.name:r(e.key.value)),Object.prototype.hasOwnProperty.call(i,t)?Ts({},rs):i[t]=!0,n.push(e),Ps("}")||Rs(",");return Rs("}"),function(e){var t=new Oa(Ga);return t.properties=e,t}(n)}var Ws={if:1,this:1};function Hs(){var e,t,n;if(Ps("("))return function(){var e;return Rs("("),e=Ks(),Rs(")"),e}();if(Ps("["))return Ms();if(Ps("{"))return qs();if(e=ga.type,ha=ga.start,e===Na||Ws[ga.value])n=Bs(Ss().value);else if(e===Ra||e===Ta)ga.octal&&Ts(ga,is),n=Ns(Ss());else{if(e===ja)throw new Error(as);e===$a?((t=Ss()).value="true"===t.value,n=Ns(t)):e===_a?((t=Ss()).value=null,n=Ns(t)):Ps("/")||Ps("/=")?(n=Ns(Es()),ks()):zs(Ss())}return n}function Gs(){var e=[];if(Rs("("),!Ps(")"))for(;ha<ma&&(e.push(Zs()),!Ps(")"));)Rs(",");return Rs(")"),e}function Ys(){var e;return ha=ga.start,function(e){return e.type===Na||e.type===ja||e.type===$a||e.type===_a}(e=Ss())||zs(e),Bs(e.value)}function Vs(){var e;return Rs("["),e=Ks(),Rs("]"),e}function Qs(){var e=function(){var e;for(e=Hs();;)if(Ps("."))Rs("."),e=js(".",e,Ys());else if(Ps("("))e=$s(e,Gs());else{if(!Ps("["))break;e=js("[",e,Vs())}return e}();if(ga.type===za&&(Ps("++")||Ps("--")))throw new Error(as);return e}function Xs(){var e,t,n,i,r;if(ga.type!==za&&ga.type!==ja)t=Qs();else{if(Ps("++")||Ps("--"))throw new Error(as);if(Ps("+")||Ps("-")||Ps("~")||Ps("!"))e=Ss(),t=Xs(),n=e.value,i=t,(r=new Oa(Va)).operator=n,r.argument=i,r.prefix=!0,t=r;else{if(Us("delete")||Us("void")||Us("typeof"))throw new Error(as);t=Qs()}}return t}function Js(e){var t=0;if(e.type!==za&&e.type!==ja)return 0;switch(e.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11}return t}function Zs(){var e,t;return e=function(){var e,t,n,i,r,o,a,s,u,c;if(e=ga,u=Xs(),0===(r=Js(i=ga)))return u;for(i.prec=r,Ss(),t=[e,ga],o=[u,i,a=Xs()];(r=Js(ga))>0;){for(;o.length>2&&r<=o[o.length-2].prec;)a=o.pop(),s=o.pop().value,u=o.pop(),t.pop(),n=Os(s,u,a),o.push(n);(i=Ss()).prec=r,o.push(i),t.push(ga),n=Xs(),o.push(n)}for(n=o[c=o.length-1],t.pop();c>1;)t.pop(),n=Os(o[c-1].value,o[c-2],n),c-=2;return n}(),Ps("?")&&(Ss(),t=Zs(),Rs(":"),e=function(e,t,n){var i=new Oa(La);return i.test=e,i.consequent=t,i.alternate=n,i}(e,t,Zs())),e}function Ks(){var e=Zs();if(Ps(","))throw new Error(as);return e}function eu(e){const t=function(e){ha=0,ma=(pa=e).length,ga=null,ks();var t=Ks();if(ga.type!==Ba)throw new Error("Unexpect token after expression.");return t}(e),n=new Set;return t.visit(e=>{"MemberExpression"===e.type&&function e(t){return"MemberExpression"===t.object.type?e(t.object):"datum"===t.object.name}(e)&&n.add(function e(t){const n=[];return"Identifier"===t.type?[t.name]:"Literal"===t.type?[t.value]:("MemberExpression"===t.type&&(n.push(...e(t.object)),n.push(...e(t.property))),n)}(e).slice(1).join("."))}),n}class tu extends la{constructor(e,t){super(e),this.transform=t,this._dependentFields=eu(this.transform.calculate)}clone(){return new tu(null,B(this.transform))}static parseAllForSortIndex(e,t){return t.forEachFieldDef((t,n)=>{if(Dn(t)&&Uo(t.sort)){const{field:i,timeUnit:r}=t,o=t.sort,a=o.map((e,t)=>`${ao({field:i,timeUnit:r,equal:e})} ? ${t} : `).join("")+o.length;e=new tu(e,{calculate:a,as:nu(t,n,{forAs:!0})})}}),e}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${T(this.transform)}`}}function nu(e,t,n){return $n(e,Object.assign({prefix:t,suffix:"sort_index"},n||{}))}function iu(e,t){return R(["top","bottom"],t)?"column":R(["left","right"],t)?"row":"row"===e?"row":"column"}function ru(e,t,n,i){const r="row"===i?n.headerRow:"column"===i?n.headerColumn:n.headerFacet;return se(t&&t.header?t.header[e]:void 0,r[e],n.header[e])}function ou(e,t,n,i){const r={};for(const o of e){const e=ru(o,t,n,i);void 0!==e&&(r[o]=e)}return r}const au=["row","column"],su=["header","footer"];function uu(e,t){const n=e.component.layoutHeaders[t].title,i=e.config?e.config:void 0,r=e.component.layoutHeaders[t].facetFieldDef?e.component.layoutHeaders[t].facetFieldDef:void 0,{titleAnchor:o,titleAngle:a,titleOrient:s}=ou(["titleAnchor","titleAngle","titleOrient"],r,i,t),u=iu(t,s);return{name:`${t}-title`,type:"group",role:`${u}-title`,title:Object.assign({text:n},"row"===t?{orient:"left"}:{},{style:"guide-title"},lu(a,u),cu(u,a,o),yu(i,r,t,To,jo))}}function cu(e,t,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const i=Ho(t,"row"===e?"left":"top");return i?{align:i}:{}}function lu(e,t){const n=Wo(e,"row"===t?"left":"top");return n?{baseline:n}:{}}function fu(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r of su)if(n[r])for(const o of n[r])i.push(hu(e,t,r,n,o));return i}function du(e,t){const{sort:n}=e;return Po(n)?{field:$n(n,{expr:"datum"}),order:n.order||"ascending"}:o(n)?{field:nu(e,t,{expr:"datum"}),order:"ascending"}:{field:$n(e,{expr:"datum"}),order:n||"ascending"}}function pu(e,t,n){const{format:i,labelAngle:r,labelAnchor:o,labelOrient:a}=ou(["format","labelAngle","labelAnchor","labelOrient"],e,n,t),s=iu(t,a);return Object.assign({text:ea(e,i,"parent",n)},"row"===t?{orient:"left"}:{},{style:"guide-label",frame:"group"},lu(r,s),cu(s,r,o),yu(n,e,t,zo,_o))}function hu(e,t,n,i,r){if(r){let o=null;const{facetFieldDef:a}=i,s=e.config?e.config:void 0;if(a&&r.labels){const{labelOrient:e}=ou(["labelOrient"],a,s,t);("row"===t&&!R(["top","bottom"],e)||"column"===t&&!R(["left","right"],e))&&(o=pu(a,t,s))}const u=Rf(e)&&!en(e.facet),c=r.axes,l=c&&c.length>0;if(o||l){const s="row"===t?"height":"width";return Object.assign({name:e.getName(`${t}_${n}`),type:"group",role:`${t}-${n}`},i.facetFieldDef?{from:{data:e.getName(t+"_domain")},sort:du(a,t)}:{},l&&u?{from:{data:e.getName(`facet_domain_${t}`)}}:{},o?{title:o}:{},r.sizeSignal?{encode:{update:{[s]:r.sizeSignal}}}:{},l?{axes:c}:{})}}return null}const mu={column:{start:0,end:1},row:{start:1,end:0}};function gu(e,t){return mu[t][e]}function yu(e,t,n,i,r){const o={};for(const a of i){if(!r[a])continue;const i=ru(a,t,e,n);void 0!==i&&(o[r[a]]=i)}return o}function bu(e){return[...vu(e,"width"),...vu(e,"height")]}function vu(e,t){const n="width"===t?"x":"y",i=e.component.layoutSize.get(t);if(!i||"merged"===i)return[];const r=e.getSizeSignalRef(t).signal;if("range-step"===i){const t=e.getScaleComponent(n);if(t){const i=t.get("type"),o=t.get("range");if(Qi(i)&&Co(o)){const i=e.scaleName(n);if(Rf(e.parent)){if("independent"===e.parent.component.resolve.scale[n])return[xu(i,o)]}return[xu(i,o),{name:r,update:Au(i,t,`domain(\'${i}\').length`)}]}}throw new Error("layout size is range step although there is no rangeStep.")}return[{name:r,value:i}]}function xu(e,t){return{name:e+"_step",value:t.step}}function Au(e,t,n){const i=t.get("type"),r=t.get("padding"),o=se(t.get("paddingOuter"),r);let a=t.get("paddingInner");return`bandspace(${n}, ${a="band"===i?void 0!==a?a:r:1}, ${o}) * ${e}_step`}function wu(e,t,n){return Cu=t||Eu,Fu=n||Tu,Ru(e.trim()).map(Pu)}var Cu,Fu,Eu="view",Du="[",Su="]",ku="{",Ou="}",$u=":",Bu=",",Nu="@",ju=">",_u=/[[\\]{}]/,Tu={"*":1,arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1};function zu(e,t,n,i,r){for(var o,a=0,s=e.length;t<s;++t){if(o=e[t],!a&&o===n)return t;r&&r.indexOf(o)>=0?--a:i&&i.indexOf(o)>=0&&++a}return t}function Ru(e){for(var t=[],n=0,i=e.length,r=0;r<i;)r=zu(e,r,Bu,Du+ku,Su+Ou),t.push(e.substring(n,r).trim()),n=++r;if(0===t.length)throw"Empty event selector: "+e;return t}function Pu(e){return"["===e[0]?function(e){var t,n,i=e.length,r=1;if((r=zu(e,r,Su,Du,Su))===i)throw"Empty between selector: "+e;if(2!==(t=Ru(e.substring(1,r))).length)throw"Between selector must have two elements: "+e;if((e=e.slice(r+1).trim())[0]!==ju)throw"Expected \'>\' after between selector: "+e;if(t=t.map(Pu),(n=Pu(e.slice(1).trim())).between)return{between:t,stream:n};n.between=t;return n}(e):function(e){var t,n,i={source:Cu},r=[],o=[0,0],a=0,s=0,u=e.length,c=0;if(e[u-1]===Ou){if(!((c=e.lastIndexOf(ku))>=0))throw"Unmatched right brace: "+e;try{o=function(e){var t=e.split(Bu);if(!e.length||t.length>2)throw e;return t.map(function(t){var n=+t;if(n!=n)throw e;return n})}(e.substring(c+1,u-1))}catch(t){throw"Invalid throttle specification: "+e}e=e.slice(0,c).trim(),u=e.length,c=0}if(!u)throw e;e[0]===Nu&&(a=++c);(t=zu(e,c,$u))<u&&(r.push(e.substring(s,t).trim()),s=c=++t);if((c=zu(e,c,Du))===u)r.push(e.substring(s,u).trim());else if(r.push(e.substring(s,c).trim()),n=[],(s=++c)===u)throw"Unmatched left bracket: "+e;for(;c<u;){if((c=zu(e,c,Su))===u)throw"Unmatched left bracket: "+e;if(n.push(e.substring(s,c).trim()),c<u-1&&e[++c]!==Du)throw"Expected left bracket: "+e;s=++c}if(!(u=r.length)||_u.test(r[u-1]))throw"Invalid event selector: "+e;u>1?(i.type=r[1],a?i.markname=r[0].slice(1):!function(e){return Fu.hasOwnProperty(e)}(r[0])?i.source=r[0]:i.marktype=r[0]):i.type=r[0];"!"===i.type.slice(-1)&&(i.consume=!0,i.type=i.type.slice(0,-1));null!=n&&(i.filter=n);o[0]&&(i.throttle=o[0]);o[1]&&(i.debounce=o[1]);return i}(e)}class Uu extends la{constructor(e,t){super(e),this.formula=t}clone(){return new Uu(null,B(this.formula))}static makeFromEncoding(e,t){const n=t.reduceFieldDef((e,t)=>{if(t.timeUnit){const n=$n(t,{forAs:!0});e[n]={as:n,timeUnit:t.timeUnit,field:t.field}}return e},{});return 0===V(n).length?null:new Uu(e,n)}static makeFromTransform(e,t){return new Uu(e,{[t.field]:{as:t.as,timeUnit:t.timeUnit,field:t.field}})}merge(e){this.formula=Object.assign({},this.formula,e.formula),e.remove()}producedFields(){return new Set(Q(this.formula).map(e=>e.as))}dependentFields(){return new Set(Q(this.formula).map(e=>e.field))}hash(){return`TimeUnit ${T(this.formula)}`}assemble(){return Q(this.formula).map(e=>({type:"formula",as:e.as,expr:ln(e.timeUnit,e.field)}))}}const Mu={has:e=>"interval"===e.type&&"global"===e.resolve&&e.bind&&"scales"===e.bind,parse:(e,t,n)=>{const i=Z(n.name),r=n.scales=[];for(const t of n.project.items){const n=t.channel;if(!Tt(n))continue;const o=e.getScaleComponent(n),a=o?o.get("type"):void 0;if(o&&Xi(a)){if(o.set("domainRaw",{signal:ne(t.field,i)},!0),r.push(t),e.repeater&&e.repeater.row===e.repeater.column){e.getScaleComponent(n===We?He:We).set("domainRaw",{signal:ne(t.field,i)},!0)}}else Ht(Pt.SCALE_BINDINGS_CONTINUOUS)}},topLevelSignals:(e,t,n)=>{const i=t.scales.filter(e=>!n.filter(t=>t.name===e.signals.data).length);if(!e.parent||!i.length)return n;const r=n.filter(e=>e.name===t.name)[0],o=r.update;if(o.indexOf(ec)>=0)r.update=`{${i.map(e=>`${u(e.field)}: ${e.signals.data}`).join(", ")}}`;else for(const e of i){const t=`, ${u(e.field)}: ${e.signals.data}`;o.indexOf(t)<0&&(r.update=o.substring(0,o.length-1)+t+"}")}return n.concat(i.map(e=>({name:e.signals.data})))},signals:(e,t,n)=>{if(e.parent)for(const e of t.scales){const t=n.filter(t=>t.name===e.signals.data)[0];t.push="outer",delete t.value,delete t.update}return n}};function Lu(e,t){return`domain(${u(e.scaleName(t))})`}const Iu="_tuple_fields";class qu{constructor(...e){this.items=e,this.has={}}}const Wu="_scale_trigger",Hu={signals:(e,t)=>{const n=t.name,i=n+Iu,r=Mu.has(t),o=[],a=[],s=[];if(t.translate&&!r){const e=`!event.item || event.item.mark.name !== ${u(n+"_brush")}`;Gu(t,(t,n)=>{const i=n.between[0].filter||(n.between[0].filter=[]);i.indexOf(e)<0&&i.push(e)})}t.project.items.forEach((n,i)=>{const r=n.channel;if(r!==We&&r!==He)return void Ht("Interval selections only support x and y encoding channels.");const c=t.init?t.init[i]:null,l=function(e,t,n,i){const r=n.channel,o=n.signals.visual,a=n.signals.data,s=Mu.has(t),c=u(e.scaleName(r)),l=e.getScaleComponent(r),f=l?l.get("type"):void 0,d=e=>`scale(${c}, ${e})`,p=e.getSizeSignalRef(r===We?"width":"height").signal,h=`${r}(unit)`,m=Gu(t,(e,t)=>[...e,{events:t.between[0],update:`[${h}, ${h}]`},{events:t,update:`[${o}[0], clamp(${h}, 0, ${p})]`}]);return m.push({events:{signal:t.name+Wu},update:Xi(f)?`[${d(`${a}[0]`)}, ${d(`${a}[1]`)}]`:"[0, 0]"}),s?[{name:a,on:[]}]:[Object.assign({name:o},i?{init:vc(i,d)}:{value:[]},{on:m}),Object.assign({name:a},i?{init:vc(i)}:{},{on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${c}, ${o})`}]})]}(e,t,n,c),f=n.signals.data,d=n.signals.visual,p=u(e.scaleName(r)),h=Xi(e.getScaleComponent(r).get("type"))?"+":"";o.push(...l),a.push(f),s.push({scaleName:e.scaleName(r),expr:`(!isArray(${f}) || `+`(${h}invert(${p}, ${d})[0] === ${h}${f}[0] && `+`${h}invert(${p}, ${d})[1] === ${h}${f}[1]))`})}),r||o.push({name:n+Wu,value:{},on:[{events:s.map(e=>({scale:e.scaleName})),update:s.map(e=>e.expr).join(" && ")+` ? ${n+Wu} : {}`}]});const c=t.init,l=`unit: ${ic(e)}, fields: ${i}, values`;return o.concat(Object.assign({name:n+Ju},c?{init:`{${l}: ${vc(c)}}`}:{},{on:[{events:[{signal:a.join(" || ")}],update:a.join(" && ")+` ? {${l}: [${a}]} : null`}]}))},modifyExpr:(e,t)=>{return t.name+Ju+", "+("global"===t.resolve?"true":`{unit: ${ic(e)}}`)},marks:(e,t,n)=>{const i=t.name,{x:r,y:o}=t.project.has,a=r&&r.signals.visual,s=o&&o.signals.visual,c=`data(${u(t.name+Xu)})`;if(Mu.has(t))return n;const l={x:void 0!==r?{signal:`${a}[0]`}:{value:0},y:void 0!==o?{signal:`${s}[0]`}:{value:0},x2:void 0!==r?{signal:`${a}[1]`}:{field:{group:"width"}},y2:void 0!==o?{signal:`${s}[1]`}:{field:{group:"height"}}};if("global"===t.resolve)for(const t of V(l))l[t]=[Object.assign({test:`${c}.length && ${c}[0].unit === ${ic(e)}`},l[t]),{value:0}];const f=t.mark,{fill:d,fillOpacity:p}=f,h=Ne(f,["fill","fillOpacity"]),m=V(h).reduce((e,t)=>(e[t]=[{test:[void 0!==r&&`${a}[0] !== ${a}[1]`,void 0!==o&&`${s}[0] !== ${s}[1]`].filter(e=>e).join(" && "),value:h[t]},{value:null}],e),{});return[{name:i+"_brush_bg",type:"rect",clip:!0,encode:{enter:{fill:{value:d},fillOpacity:{value:p}},update:l}},...n,{name:i+"_brush",type:"rect",clip:!0,encode:{enter:{fill:{value:"transparent"}},update:Object.assign({},l,m)}}]}};function Gu(e,t){return e.events.reduce((e,n)=>n.between?t(e,n):(Ht(`${n} is not an ordered event stream for interval selections`),e),[])}function Yu(e,t){const n=t.name,i=n+Iu,r=t.project,o="(item().isVoronoi ? datum.datum : datum)",a=r.items.map(t=>{const n=e.fieldDef(t.channel);return n&&n.bin?`[${ne(e.vgField(t.channel,{}),o)}, `+`${ne(e.vgField(t.channel,{binSuffix:"end"}),o)}]`:`${ne(t.field,o)}`}).join(", "),s=`unit: ${ic(e)}, fields: ${i}, values`,c=[{name:n+Ju,on:[{events:t.events,update:`datum && item().mark.marktype !== \'group\' ? {${s}: [${a}]} : null`,force:!0}]}];if(t.init){const e=t.init.map(e=>{const t=vc(e);return`{${s}: ${t}}`});c.push({name:`${n}_init`,init:`modify(${u(t.name+Xu)}, [${e}])`})}return c}const Vu={signals:Yu,modifyExpr:(e,t)=>{return t.name+Ju+", "+("global"===t.resolve?"null":`{unit: ${ic(e)}}`)}},Qu={signals:Yu,modifyExpr:(e,t)=>{return t.name+Ju+", "+("global"===t.resolve?"true":`{unit: ${ic(e)}}`)}},Xu="_store",Ju="_tuple",Zu="_modify",Ku="_selection_domain_",ec="vlSelectionResolve",tc={single:Qu,multi:Vu,interval:Hu};function nc(e,t){const n=e.component.selection;for(const e in n)if(n.hasOwnProperty(e)){const i=n[e];t(i,tc[i.type])}}function ic(e){let t=u(e.name);const n=function(e){let t=e.parent;for(;t&&!Rf(t);)t=t.parent;return t}(e);if(n){const{facet:e}=n;for(const i of bt)e[i]&&(t+=` + \'__facet_${i}_\' + (${ne(n.vgField(i),"facet")})`)}return t}function rc(e){let t=!1;return nc(e,e=>{t=t||e.project.items.some(e=>e.field===sr)}),t}const oc={has:e=>"interval"!==e.type&&e.nearest,marks:(e,t,n)=>{const{x:i,y:r}=t.project.has,o=e.mark;if(Ee(o))return Ht(Pt.nearestNotSupportForContinuous(o)),n;const a={name:e.getName("voronoi"),type:"path",from:{data:e.getName("marks")},encode:{update:Object.assign({fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0}},Vc(e,{reactiveGeom:!0}))},transform:[{type:"voronoi",x:{expr:i||!i&&!r?"datum.datum.x || 0":"0"},y:{expr:r||!i&&!r?"datum.datum.y || 0":"0"},size:[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]}]};let s=0,u=!1;return n.forEach((t,n)=>{const i=t.name||"";i===e.component.mark[0].name?s=n:i.indexOf("voronoi")>=0&&(u=!0)}),u||n.splice(s+1,0,a),n}},ac={has:e=>"single"===e.type&&"global"===e.resolve&&e.bind&&"scales"!==e.bind,topLevelSignals:(e,t,n)=>{const i=t.name,r=t.project,o=t.bind,a=t.init&&t.init[0],s=oc.has(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return r.items.forEach((e,r)=>{const u=Z(`${i}_${e.field}`);n.filter(e=>e.name===u).length||n.unshift(Object.assign({name:u},a?{init:vc(a[r])}:{value:null},{on:[{events:t.events,update:`datum && item().mark.marktype !== \'group\' ? ${ne(e.field,s)} : null`}],bind:o[e.field]||o[e.channel]||o}))}),n},signals:(e,t,n)=>{const i=t.name,r=t.project,o=n.filter(e=>e.name===i+Ju)[0],a=i+Iu,s=r.items.map(e=>Z(`${i}_${e.field}`)),u=s.map(e=>`${e} !== null`).join(" && ");return s.length&&(o.update=`${u} ? {fields: ${a}, values: [${s.join(", ")}]} : null`),delete o.value,delete o.on,n}},sc={has:e=>"multi"===e.type&&e.toggle,signals:(e,t,n)=>n.concat({name:t.name+"_toggle",value:!1,on:[{events:t.events,update:t.toggle}]}),modifyExpr:(e,t)=>{const n=t.name+Ju,i=t.name+"_toggle";return`${i} ? null : ${n}, `+("global"===t.resolve?`${i} ? null : true, `:`${i} ? null : {unit: ${ic(e)}}, `)+`${i} ? ${n} : null`}},uc={has:e=>!1!==e.clear,parse:(e,t,n)=>{t.clear&&(n.clear=wu(t.clear,"scope"))},topLevelSignals:(e,t,n)=>(ac.has(t)&&t.project.items.forEach(e=>{const i=n.findIndex(n=>n.name===Z(`${t.name}_${e.field}`));-1!==i&&n[i].on.push({events:t.clear,update:"null"})}),n),signals:(e,t,n)=>{function i(e,i){-1!==e&&n[e].on&&n[e].on.push({events:t.clear,update:i})}if("interval"===t.type)t.project.items.forEach(e=>{const t=n.findIndex(t=>t.name===e.signals.visual);if(i(t,"[0, 0]"),-1===t){i(n.findIndex(t=>t.name===e.signals.data),"null")}});else{let e=n.findIndex(e=>e.name===t.name+Ju);i(e,"null"),sc.has(t)&&i(e=n.findIndex(e=>e.name===t.name+"_toggle"),"false")}return n}},cc="_translate_anchor",lc="_translate_delta",fc={has:e=>"interval"===e.type&&e.translate,signals:(e,t,n)=>{const i=t.name,r=Mu.has(t),o=i+cc,{x:a,y:s}=t.project.has;let u=wu(t.translate,"scope");return r||(u=u.map(e=>(e.between[0].markname=i+"_brush",e))),n.push({name:o,value:{},on:[{events:u.map(e=>e.between[0]),update:"{x: x(unit), y: y(unit)"+(void 0!==a?", extent_x: "+(r?Lu(e,We):`slice(${a.signals.visual})`):"")+(void 0!==s?", extent_y: "+(r?Lu(e,He):`slice(${s.signals.visual})`):"")+"}"}]},{name:i+lc,value:{},on:[{events:u,update:`{x: ${o}.x - x(unit), y: ${o}.y - y(unit)}`}]}),void 0!==a&&dc(e,t,a,"width",n),void 0!==s&&dc(e,t,s,"height",n),n}};function dc(e,t,n,i,r){const o=t.name,a=o+cc,s=o+lc,u=n.channel,c=Mu.has(t),l=r.filter(e=>e.name===n.signals[c?"data":"visual"])[0],f=e.getSizeSignalRef(i).signal,d=e.getScaleComponent(u),p=d.get("type"),h=`${a}.extent_${u}`,m=`${c?"log"===p?"panLog":"pow"===p?"panPow":"panLinear":"panLinear"}(${h}, ${`${c&&u===We?"-":""}${s}.${u} / `+(c?`${f}`:`span(${h})`)}`+(c&&"pow"===p?`, ${d.get("exponent")||1}`:"")+")";l.on.push({events:{signal:s},update:c?m:`clampRange(${m}, 0, ${f})`})}const pc="_zoom_anchor",hc="_zoom_delta",mc={has:e=>"interval"===e.type&&e.zoom,signals:(e,t,n)=>{const i=t.name,r=Mu.has(t),o=i+hc,{x:a,y:s}=t.project.has,c=u(e.scaleName(We)),l=u(e.scaleName(He));let f=wu(t.zoom,"scope");return r||(f=f.map(e=>(e.markname=i+"_brush",e))),n.push({name:i+pc,on:[{events:f,update:r?"{"+[c?`x: invert(${c}, x(unit))`:"",l?`y: invert(${l}, y(unit))`:""].filter(e=>!!e).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:o,on:[{events:f,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),void 0!==a&&gc(e,t,a,"width",n),void 0!==s&&gc(e,t,s,"height",n),n}};function gc(e,t,n,i,r){const o=t.name,a=n.channel,s=Mu.has(t),u=r.filter(e=>e.name===n.signals[s?"data":"visual"])[0],c=e.getSizeSignalRef(i).signal,l=e.getScaleComponent(a),f=l.get("type"),d=s?Lu(e,a):u.name,p=o+hc,h=`${s?"log"===f?"zoomLog":"pow"===f?"zoomPow":"zoomLinear":"zoomLinear"}(${d}, ${`${o}${pc}.${a}`}, ${p}`+(s&&"pow"===f?`, ${l.get("exponent")||1}`:"")+")";u.on.push({events:{signal:p},update:s?h:`clampRange(${h}, 0, ${c})`})}const yc=[{has:()=>!0,parse:(e,t,n)=>{const i=n.name,r=n.project||(n.project=new qu),a={},s={},u=new Set,c=(e,t)=>{const n="visual"===t?e.channel:e.field;let r=Z(`${i}_${n}`);for(let e=1;u.has(r);e++)r=Z(`${i}_${n}_${e}`);return u.add(r),{[t]:r}};if(!t.fields&&!t.encodings){const n=e.config.selection[t.type];if(t.init)for(const e of y(t.init))for(const i of V(e))wt(i)?(t.encodings||(t.encodings=[])).push(i):ur(t)?(Ht(\'Interval selections should be initialized using "x" and/or "y" keys.\'),t.encodings=n.encodings):(t.fields||(t.fields=[])).push(i);else t.encodings=n.encodings,t.fields=n.fields}for(const e of t.fields||[]){const t={type:"E",field:e};t.signals=Object.assign({},c(t,"data")),r.items.push(t)}for(const i of t.encodings||[]){const t=e.fieldDef(i);if(t){let o=t.field;if(t.timeUnit&&(s[o=e.vgField(i)]={as:o,field:t.field,timeUnit:t.timeUnit}),!a[o]){let s="E";if("interval"===n.type){Xi(e.getScaleComponent(i).get("type"))&&(s="R")}else t.bin&&(s="R-RE");const u={field:o,channel:i,type:s};u.signals=Object.assign({},c(u,"data"),c(u,"visual")),r.items.push(a[o]=u),r.has[i]=a[o]}}else Ht(Pt.cannotProjectOnChannelWithoutField(i))}if(t.init)if(Mu.has(n))Ht(Pt.NO_INIT_SCALE_BINDINGS);else{const e=e=>r.items.map(t=>void 0!==e[t.channel]?e[t.channel]:e[t.field]);if(ur(t))n.init=e(t.init);else{const i=o(t.init)?t.init:[t.init];n.init=i.map(e)}}V(s).length&&(r.timeUnit=new Uu(null,s))},signals:(e,t,n)=>{const i=t.name+Iu;return n.filter(e=>e.name===i).length?n:n.concat({name:i,value:t.project.items.map(e=>{return Ne(e,["signals"])})})}},sc,Mu,fc,mc,ac,oc,uc];function bc(e,t){for(const n of yc)n.has(e)&&t(n)}function vc(e,t=l){if(o(e)){return`[${e.map(e=>vc(e,t)).join(", ")}]`}return Vt(e)?t(Kt(e)):t(JSON.stringify(e))}function xc(e,t){return nc(e,(n,i)=>{t=i.marks?i.marks(e,n,t):t,bc(n,i=>{i.marks&&(t=i.marks(e,n,t))})}),t}function Ac(e,t,n){const i=[];const r=K(t,function(t){const r=Z(t),o=e.getSelectionComponent(r,t),a=u(r+Xu);if(o.project.timeUnit){const t=n||e.component.data.raw,i=o.project.timeUnit.clone();t.parent?i.insertAsParentOf(t):t.parent=i}return"none"!==o.empty&&i.push(a),`vlSelectionTest(${a}, datum`+("global"===o.resolve?")":`, ${u(o.resolve)})`)});return(i.length?"!("+i.map(e=>`length(data(${e}))`).join(" || ")+") || ":"")+`(${r})`}function wc(e,t,n){return K(t,t=>s(t)?t:function(e){return e&&e.selection}(t)?Ac(e,t.selection,n):ao(t))}function Cc(e){const{channel:t,channelDef:n,mark:i,scale:r}=e,o=_c(e);return wn(n)&&!Pe(n.aggregate)&&r&&Ji(r.get("type"))&&!1===r.get("zero")?Fc({fieldDef:n,channel:t,mark:i,ref:o}):o}function Fc({fieldDef:e,channel:t,mark:n,ref:i}){return Ee(n)?i:[Ec(e,t),i]}function Ec(e,t){const n=Dc(e,!0),i="x"===Dt(t)?{value:0}:{field:{group:"height"}};return Object.assign({test:n},i)}function Dc(e,t=!0){return`${e=s(e)?e:$n(e,{expr:"datum"})} ${t?"===":"!=="} null ${t?"||":"&&"} ${t?"":"!"}isNaN(${e})`}function Sc(e){const{channel:t,channelDef:n,scaleName:i,stack:r,offset:o}=e;return wn(n)&&r&&t===r.fieldChannel?Bc(n,i,{suffix:"end"},{offset:o}):Cc(e)}function kc({channel:e,channelDef:t,channel2Def:n,scaleName:i,scale:r,stack:o,mark:a,offset:s,defaultRef:u}){return wn(t)&&o&&e.charAt(0)===o.fieldChannel.charAt(0)?Bc(t,i,{suffix:"start"},{offset:s}):Cc({channel:e,channelDef:n,scaleName:i,scale:r,stack:o,mark:a,offset:s,defaultRef:u})}function Oc(e,t){const n=t[e+"Offset"];if(n)return n}function $c({channel:e,fieldDef:t,scaleName:n,mark:i,side:r,offset:o}){return Fc({fieldDef:t,channel:e,mark:i,ref:Bc(t,n,{binSuffix:"start"===r?void 0:"end"},o?{offset:o}:{})})}function Bc(e,t,n,i){const r=Object.assign({},t?{scale:t}:{},{field:$n(e,n)});if(i){const{offset:e,band:t}=i;return Object.assign({},r,e?{offset:e}:{},t?{band:t}:{})}return r}function Nc(e,t=!0){return{scale:e,band:t}}function jc({scaleName:e,fieldDef:t,fieldDef2:n,offset:i}){const r=$n(t,{expr:"datum"}),o=void 0!==n?$n(n,{expr:"datum"}):$n(t,{binSuffix:"end",expr:"datum"});return Object.assign({signal:`scale("${e}", (${r} + ${o}) / 2)`},i?{offset:i}:{})}function _c({channel:e,channelDef:t,channel2Def:n,scaleName:i,scale:r,stack:o,offset:a,defaultRef:s}){if(t){if(wn(t)){if(Cn(t)){if(Xn(t.bin))return R([We,He],e)&&t.type===hn?o&&o.impute?Bc(t,i,{binSuffix:"mid"},{offset:a}):jc({scaleName:i,fieldDef:t,offset:a}):Bc(t,i,Vn(t,e)?{binSuffix:"range"}:{},{offset:a});if(Jn(t.bin)){if(wn(n))return jc({scaleName:i,fieldDef:t,fieldDef2:n,offset:a});{const t=e===We?Ge:Ye;Ht(Pt.channelRequiredForBinned(t))}}}if(r){const e=r.get("type");if(Qi(e))return Bc(t,i,{binSuffix:"range"},"band"===e?{band:.5,offset:a}:{offset:a})}return Bc(t,i,{},{offset:a})}if(En(t)){const n=t.value,i=a?{offset:a}:{};return R(["x","x2"],e)&&"width"===n?Object.assign({field:{group:"width"}},i):R(["y","y2"],e)&&"height"===n?Object.assign({field:{group:"height"}},i):Object.assign({value:n},i)}}return function(e){return"function"==typeof e}(s)?s():s}function Tc(e,t,{reactiveGeom:n}){const i=[],r={};function o(o,a){const s=Dt(a);a!==s&&(o=Object.assign({},o,{type:e[s].type}));const c=zn(o,t,{allowDisabling:!1}),l=zc(o,t,n?"datum.datum":"datum").signal;r[c]||i.push(`${u(c)}: ${l}`),r[c]=!0}return oi(e,(e,t)=>{wn(e)?o(e,t):An(e)&&o(e.condition,t)}),i.length?{signal:`{${i.join(", ")}}`}:void 0}function zc(e,t,n="datum"){if(e){if(En(e))return{value:e.value};if(Cn(e))return ea(e,On(i=e)&&i.format?i.format:(Rn(i)||{}).format,n,t)}var i}function Rc(e){return Object.assign({},e,{mult:.5})}function Pc({markDef:e,config:t,defaultRef:n,channel:i,scaleName:r,scale:o,mark:a,checkBarAreaWithoutZero:u}){return()=>{const c=Dt(i),l=se(e[i],Zo(i,e,t));if(void 0!==l)return{value:l};if(s(n)){if(r){const e=o.get("type");if(R([Pi.LOG,Pi.TIME,Pi.UTC],e))!u||"bar"!==a&&"area"!==a||Ht(Pt.nonZeroScaleUsedWithLengthMark(a,c,{scaleType:e}));else{if(o.domainDefinitelyIncludesZero)return{scale:r,value:0};!u||"bar"!==a&&"area"!==a||Ht(Pt.nonZeroScaleUsedWithLengthMark(a,c,{zeroFalse:!1===o.explicit.zero}))}}return"zeroOrMin"===n?"x"===c?{value:0}:{field:{group:"height"}}:"x"===c?{field:{group:"width"}}:{value:0}}return n}}function Uc(e){return"transparent"!==e&&null!=e}function Mc(e){const{markDef:t,encoding:n,config:i}=e,{filled:r,type:o}=t,a={fill:Zo("fill",t,i),stroke:Zo("stroke",t,i),color:Zo("color",t,i)},s=R(["bar","point","circle","square","geoshape"],o)?"transparent":void 0,u=se(t.fill,a.fill,s),c=se(t.stroke,a.stroke),l=r?"fill":"stroke",f=Object.assign({},u?{fill:{value:u}}:{},c?{stroke:{value:c}}:{});return n.fill||n.stroke?(t.color&&Ht(Pt.droppingColor("property",{fill:"fill"in n,stroke:"stroke"in n})),Object.assign({},Gc("fill",e,{defaultValue:se(u,s)}),Gc("stroke",e,{defaultValue:c}))):n.color?Object.assign({},f,Gc("color",e,{vgChannel:l,defaultValue:se(t[l],t.color,a[l],a.color,r?s:void 0)})):Uc(t.fill)||Uc(t.stroke)?(t.color&&Ht(Pt.droppingColor("property",{fill:"fill"in t,stroke:"stroke"in t})),f):t.color?Object.assign({},f,{[l]:{value:t.color}}):Uc(a.fill)||Uc(a.stroke)?f:a.color?Object.assign({},s?{fill:{value:"transparent"}}:{},{[l]:{value:a.color}}):{}}function Lc(e,t){const{fill:n,stroke:i}=Mc(e);return Object.assign({},function(e,t){return Eo.reduce((n,i)=>(void 0!==e[i]&&"ignore"!==t[i]&&(n[i]={value:e[i]}),n),{})}(e.markDef,t),Ic(e,"fill",n),Ic(e,"stroke",i),Gc("opacity",e),Gc("fillOpacity",e),Gc("strokeOpacity",e),Gc("strokeWidth",e),Vc(e),Qc(e,"href"))}function Ic(e,t,n){const{config:i,mark:r}=e;if("hide"===i.invalidValues&&n&&!Ee(r)){const i=Wc(e,{invalid:!0,channels:_t});if(i)return{[t]:[{test:i,value:null},...y(n)]}}return n?{[t]:n}:{}}function qc(e,t){if(void 0!==t)return{[e]:{value:t}}}function Wc(e,{invalid:t=!1,channels:n}){const i=n.reduce((t,n)=>{const i=e.getScaleComponent(n);if(i){const r=i.get("type"),o=e.vgField(n,{expr:"datum"});o&&Xi(r)&&(t[o]=!0)}return t},{}),r=V(i);if(r.length>0){const e=t?"||":"&&";return r.map(e=>Dc(e,t)).join(` ${e} `)}}function Hc(e){if(e.config.invalidValues){const t=Wc(e,{channels:["x","y"]});if(t)return{defined:{signal:t}}}return{}}function Gc(e,t,n={}){const{markDef:i,encoding:r,config:o}=t,{vgChannel:a=e}=n;let{defaultRef:s,defaultValue:u}=n;void 0===s&&(u=u||(a===e?i[e]:se(i[e],i[a],Zo(e,i,o,{vgChannel:a}))),s=u?{value:u}:void 0);const c=r[e];return Yc(t,c,a,n=>_c({channel:e,channelDef:n,scaleName:t.scaleName(e),scale:t.getScaleComponent(e),stack:null,defaultRef:s}))}function Yc(e,t,n,i){const r=t&&t.condition,a=i(t);if(r){return{[n]:[...(o(r)?r:[r]).map(t=>{const n=i(t),r=function(e){return e.selection}(t)?Ac(e,t.selection):wc(e,t.test);return Object.assign({test:r},n)}),...void 0!==a?[a]:[]]}}return void 0!==a?{[n]:a}:{}}function Vc(e,t={}){const{encoding:n,markDef:i,config:r}=e,u=n.tooltip;return o(u)?{tooltip:Tc({tooltip:u},r,t)}:Yc(e,u,"tooltip",o=>{const u=zc(o,e.config,t.reactiveGeom?"datum.datum":"datum");if(u)return u;if(null===o)return;const c=se(i.tooltip,Zo("tooltip",i,r));return s(c)?{value:c}:a(c)?"encoding"===c.content?Tc(n,r,t):{signal:"datum"}:void 0})}function Qc(e,t="text"){const n=e.encoding[t];return Yc(e,n,t,t=>zc(t,e.config))}function Xc(e,t,n,i){const r=n.scaleName(t),o="x"===t?"width":"height";if(n.encoding.size||void 0!==n.markDef.size||i&&void 0!==i.value){if(n.markDef.orient){const a={[t+"c"]:Bc(e,r,{},{band:.5})};if(Mn(n.encoding.size))return Object.assign({},a,Gc("size",n,{vgChannel:o}));if(En(n.encoding.size))return Object.assign({},a,Gc("size",n,{vgChannel:o}));if(void 0!==n.markDef.size)return Object.assign({},a,{[o]:{value:n.markDef.size}});if(i&&void 0!==i.value)return Object.assign({},a,{[o]:i})}else Ht(Pt.cannotApplySizeToNonOrientedMark(n.markDef.type))}return{[t]:Bc(e,r,{binSuffix:"range"},{}),[o]:i||Nc(r)}}function Jc(e,t,n,i){const r="x"===e?"xc":"yc",o="x"===e?"width":"height";return Object.assign({},Kc(e,t,n,r),Gc("size",t,{defaultRef:i,vgChannel:o}))}function Zc({fieldDef:e,fieldDef2:t,channel:n,scaleName:i,mark:r,spacing:o=0,reverse:a}){const s={x:a?o:0,x2:a?0:o,y:a?0:o,y2:a?o:0},u=n===We?Ge:Ye;return Xn(e.bin)?{[u]:$c({channel:n,fieldDef:e,scaleName:i,mark:r,side:"start",offset:s[`${n}2`]}),[n]:$c({channel:n,fieldDef:e,scaleName:i,mark:r,side:"end",offset:s[n]})}:Jn(e.bin)&&wn(t)?{[u]:Bc(e,i,{},{offset:s[`${n}2`]}),[n]:Bc(t,i,{},{offset:s[n]})}:void Ht(Pt.channelRequiredForBinned(u))}function Kc(e,t,n,i){const{encoding:r,mark:o,markDef:a,config:s,stack:u}=t,c=r[e],l=r[e===We?Ge:Ye],f=t.scaleName(e),d=t.getScaleComponent(e),p=Oc(e,t.markDef);return{[i||e]:c||!r.latitude&&!r.longitude?Sc({channel:e,channelDef:c,channel2Def:l,scaleName:f,scale:d,stack:u,mark:o,offset:p,defaultRef:Pc({markDef:a,config:s,defaultRef:n,channel:e,scaleName:f,scale:d,mark:o,checkBarAreaWithoutZero:!l})}):{field:t.getName(e)}}}function el(e,t,n){const{encoding:i,mark:r,markDef:o,stack:a,config:s}=e,u="x2"===n?"x":"y",c=i[u],l=e.scaleName(u),f=e.getScaleComponent(u),d=Oc(n,e.markDef);return{[n]:c||!i.latitude&&!i.longitude?kc({channel:n,channelDef:c,channel2Def:i[n],scaleName:l,scale:f,stack:a,mark:r,offset:d,defaultRef:Pc({markDef:o,config:s,defaultRef:t,channel:n,scaleName:l,scale:f,mark:r,checkBarAreaWithoutZero:!i[n]})}):{field:e.getName(n)}}}function tl(e,t){return V(e).reduce((n,i)=>{const r=e[i];return Object.assign({},n,Yc(t,r,i,e=>({value:e.value})))},{})}function nl(e,t){if(Mf(t)||Rf(t))return"shared";if(Uf(t)||Pf(t))return R($t,e)?"independent":"shared";throw new Error("invalid model type for resolve")}function il(e,t){const n=e.scale[t],i=R($t,t)?"axis":"legend";return"independent"===n?("shared"===e[i][t]&&Ht(Pt.independentScaleMeansIndependentGuide(t)),"independent"):e[i][t]||"shared"}class rl{constructor(e={},t={}){this.explicit=e,this.implicit=t}clone(){return new rl(B(this.explicit),B(this.implicit))}combine(){return Object.assign({},this.explicit,this.implicit)}get(e){return se(this.explicit[e],this.implicit[e])}getWithExplicit(e){return void 0!==this.explicit[e]?{explicit:!0,value:this.explicit[e]}:void 0!==this.implicit[e]?{explicit:!1,value:this.implicit[e]}:{explicit:!1,value:void 0}}setWithExplicit(e,t){void 0!==t.value&&this.set(e,t.value,t.explicit)}set(e,t,n){return delete this[n?"implicit":"explicit"][e],this[n?"explicit":"implicit"][e]=t,this}copyKeyFromSplit(e,t){void 0!==t.explicit[e]?this.set(e,t.explicit[e],!0):void 0!==t.implicit[e]&&this.set(e,t.implicit[e],!1)}copyKeyFromObject(e,t){void 0!==t[e]&&this.set(e,t[e],!0)}copyAll(e){for(const t of V(e.combine())){const n=e.getWithExplicit(t);this.setWithExplicit(t,n)}}}function ol(e){return{explicit:!0,value:e}}function al(e){return{explicit:!1,value:e}}function sl(e){return(t,n,i,r)=>{const o=e(t.value,n.value);return o>0?t:o<0?n:ul(t,n,i,r)}}function ul(e,t,n,i){return e.explicit&&t.explicit&&Ht(Pt.mergeConflictingProperty(n,i,e.value,t.value)),e}function cl(e,t,n,i,r=ul){return void 0===e||void 0===e.value?t:e.explicit&&!t.explicit?e:t.explicit&&!e.explicit?t:_(e.value)===_(t.value)?e:r(e,t,n,i)}class ll extends rl{}function fl(e,t){const n=e.values;if(n)return Yn(t,n)}function dl(e){return"line"===e?"stroke":"circle"}function pl(e){const{legend:t}=e;return se(t.type,hl(e))}function hl({channel:e,timeUnit:t,scaleType:n,alwaysReturn:i}){if(gt(e)){if(R(["quarter","month","day"],t))return"symbol";if(Ji(n))return i?"gradient":void 0}return i?"symbol":void 0}function ml({legend:e,legendConfig:t,timeUnit:n,channel:i,scaleType:r}){const o=se(e.orient,t.orient,"right"),a=pl({legend:e,channel:i,timeUnit:n,scaleType:r,alwaysReturn:!0});return se(e.direction,t[a?"gradientDirection":"symbolDirection"],function(e,t){switch(e){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return"gradient"===t?"horizontal":void 0}}(o,a))}function gl({legend:e,legendConfig:t,model:n,channel:i,scaleType:r}){const{gradientHorizontalMaxLength:o,gradientHorizontalMinLength:a,gradientVerticalMaxLength:s,gradientVerticalMinLength:u}=t;if("horizontal"===ml({legend:e,legendConfig:t,channel:i,scaleType:r})){const i=se(e.orient,t.orient);return"top"===i||"bottom"===i?yl(n,"width",a,o):a}return yl(n,"height",u,s)}function yl(e,t,n,i){return{signal:`clamp(${e.getSizeSignalRef(t).signal}, ${n}, ${i})`}}function bl(e){if(R(["quantile","threshold","log"],e))return"greedy"}function vl(e,t,n){const i=t.getScaleComponent(n).get("type");return se(e.get("type"),hl({channel:n,scaleType:i,alwaysReturn:!0}))}function xl(e){return wl(e,(e,t)=>Math.max(e,t.value))}function Al(e){return wl(e,(e,t)=>se(e,t.value))}function wl(e,t){return function(e){return!!e&&!!e.condition&&(o(e.condition)||En(e.condition))}(e)?(o(e.condition)?e.condition:[e.condition]).reduce(t,e.value):En(e)?e.value:void 0}var Cl=Object.freeze({symbols:function(e,t,n,i,r){if("symbol"!==vl(r,n,i))return;let a=Object.assign({},function(e,t,n){for(const i of n){const n=Zo(i,t.markDef,t.config);void 0!==n&&(e[i]={value:n})}return e}({},n,ke),Mc(n));switch(n.mark){case he:case xe:case ve:a.shape={value:"square"};break;case we:case Ce:a.shape={value:n.mark}}const{markDef:s,encoding:u,config:c}=n,l=s.filled,f=xl(u.opacity)||s.opacity;if(a.fill)if("fill"===i||l&&i===Ze)delete a.fill;else if(a.fill.field)r.get("symbolFillColor")?delete a.fill:(a.fill={value:c.legend.symbolBaseFillColor||"black"},a.fillOpacity={value:f||1});else if(o(a.fill)){const e=Al(u.fill||u.color)||s.fill||l&&s.color;e&&(a.fill={value:e})}if(a.stroke)if("stroke"===i||!l&&i===Ze)delete a.stroke;else if(a.stroke.field)delete a.stroke;else if(o(a.stroke)){const e=se(Al(u.stroke||u.color),s.stroke,l?s.color:void 0);e&&(a.stroke={value:e})}if(i!==tt){const e=Al(u.shape)||s.shape;e&&(a.shape={value:e})}return i!==it&&f&&(a.opacity={value:f}),a=Object.assign({},a,t),V(a).length>0?a:void 0},gradient:function(e,t,n,i,r){if("gradient"!==vl(r,n,i))return;let o={};const a=xl(n.encoding.opacity)||n.markDef.opacity;return a&&(o.opacity={value:a}),o=Object.assign({},o,t),V(o).length>0?o:void 0},labels:function(e,t,n,i){const r=n.legend(i),o=n.config;let a={};if(Hn(e)){const a=n.getScaleComponent(i).get("type")===Pi.UTC,s=oa("datum.value",e.timeUnit,r.format,o.legend.shortTimeLabels,o.timeFormat,a);t=Object.assign({},s?{text:{signal:s}}:{},t)}return a=Object.assign({},a,t),V(a).length>0?a:void 0}});function Fl(e){zf(e)?e.component.legends=function(e){const{encoding:t}=e;return[Ze,Ke,et,at,nt,tt,it,rt,ot].reduce((n,i)=>{const r=t[i];return!e.legend(i)||!e.getScaleComponent(i)||wn(r)&&i===tt&&r.type===bn||(n[i]=function(e,t){const n=e.fieldDef(t),i=e.legend(t),r=new ll({},function(e,t){const n=e.scaleName(Ze);if("color"===t)return e.markDef.filled?{fill:n}:{stroke:n};return{[t]:e.scaleName(t)}}(e,t));for(const o of zi){const a=Dl(o,i,t,e);if(void 0!==a){const t=El(a,o,i,n);(t||void 0===e.config.legend[o])&&r.set(o,a,t)}}const o=i.encoding||{},a=["labels","legend","title","symbols","gradient"].reduce((i,a)=>{const s=tl(o[a]||{},e),u=Cl[a]?Cl[a](n,s,e,t,r):s;return void 0!==u&&V(u).length>0&&(i[a]={update:u}),i},{});V(a).length>0&&r.set("encode",a,!!i.encoding);return r}(e,i)),n},{})}(e):e.component.legends=function(e){const{legends:t,resolve:n}=e.component;for(const i of e.children)Fl(i),V(i.component.legends).forEach(r=>{n.legend[r]=il(e.component.resolve,r),"shared"===n.legend[r]&&(t[r]=Sl(t[r],i.component.legends[r]),t[r]||(n.legend[r]="independent",delete t[r]))});return V(t).forEach(t=>{for(const i of e.children)i.component.legends[t]&&"shared"===n.legend[t]&&delete i.component.legends[t]}),t}(e)}function El(e,t,n,i){switch(t){case"values":return!!n.values;case"title":if("title"===t&&e===i.title)return!0}return e===n[t]}function Dl(e,t,n,i){const{encoding:r,mark:o}=i,a=Mn(r[n]),s=i.config.legend,{timeUnit:u}=a,c=i.getScaleComponent(n).get("type");switch(e){case"direction":return ml({legend:t,legendConfig:s,timeUnit:u,channel:n,scaleType:c});case"format":if(Hn(a))return;return ta(a,t.format,i.config);case"formatType":if(Hn(a))return;return t.formatType;case"gradientLength":return se(t.gradientLength,s.gradientLength,gl({model:i,legend:t,legendConfig:s,channel:n,scaleType:c}));case"labelOverlap":return se(t.labelOverlap,bl(c));case"symbolType":return se(t.symbolType,dl(o));case"title":return zn(a,i.config,{allowDisabling:!0})||void 0;case"type":return pl({legend:t,channel:n,timeUnit:u,scaleType:c,alwaysReturn:!1});case"values":return fl(t,a)}return t[e]}function Sl(e,t){if(!e)return t.clone();const n=e.getWithExplicit("orient"),i=t.getWithExplicit("orient");if(n.explicit&&i.explicit&&n.value!==i.value)return;let r=!1;for(const n of Ri){const i=cl(e.getWithExplicit(n),t.getWithExplicit(n),n,"legend",(e,t)=>{switch(n){case"symbolType":return kl(e,t);case"title":return ca(e,t);case"type":return r=!0,al("symbol")}return ul(e,t,n,"legend")});e.setWithExplicit(n,i)}return r&&(((e.implicit||{}).encode||{}).gradient&&ee(e.implicit,["encode","gradient"]),((e.explicit||{}).encode||{}).gradient&&ee(e.explicit,["encode","gradient"])),e}function kl(e,t){return"circle"===t.value?t:e}function Ol(e){const t=e.component.legends,n={};for(const i of V(t)){const r=e.getScaleComponent(i),o=_(r.domains);if(n[o])for(const e of n[o]){Sl(e,t[i])||n[o].push(t[i])}else n[o]=[t[i].clone()]}return M(Q(n)).map(e=>{const t=e.combine();if(t.encode&&t.encode.symbols){const e=t.encode.symbols.update;!e.fill||"transparent"===e.fill.value||e.stroke||t.stroke||(e.stroke={value:"transparent"}),t.fill&&delete e.fill}return t})}function $l(e){return Mf(e)||Uf(e)||Pf(e)?function(e){return e.children.reduce((e,t)=>e.concat(t.assembleProjections()),Bl(e))}(e):Bl(e)}function Bl(e){const t=e.component.projection;if(!t||t.merged)return[];const n=t.combine(),{name:i}=n,r=Ne(n,["name"]);if(t.data){const n={signal:`[${t.size.map(e=>e.signal).join(", ")}]`},o=t.data.reduce((t,n)=>{const i=wo(n)?n.signal:`data(\'${e.lookupDataSource(n)}\')`;return R(t,i)||t.push(i),t},[]);if(o.length<=0)throw new Error("Projection\'s fit didn\'t find any data sources");return[Object.assign({name:i,size:n,fit:{signal:o.length>1?`[${o.join(", ")}]`:o[0]}},r)]}return[Object.assign({name:i},{translate:{signal:"[width / 2, height / 2]"}},r)]}const Nl=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class jl extends rl{constructor(e,t,n,i){super(Object.assign({},t),{name:e}),this.specifiedProjection=t,this.size=n,this.data=i,this.merged=!1}get isFit(){return!!this.data}}function _l(e){e.component.projection=zf(e)?function(e){if(e.hasProjection){const t=e.specifiedProjection,n=!(t&&(null!=t.scale||null!=t.translate)),i=n?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,r=n?function(e){const t=[];[[Qe,Ve],[Je,Xe]].forEach(n=>{(e.channelHasField(n[0])||e.channelHasField(n[1]))&&t.push({signal:e.getName(`geojson_${t.length}`)})}),e.channelHasField(tt)&&e.fieldDef(tt).type===bn&&t.push({signal:e.getName(`geojson_${t.length}`)});0===t.length&&t.push(e.requestDataName(Qr));return t}(e):void 0;return new jl(e.projectionName(!0),Object.assign({},e.config.projection||{},t||{}),i,r)}return}(e):function(e){if(0===e.children.length)return;let t;e.children.forEach(e=>_l(e));const n=U(e.children,e=>{const n=e.component.projection;if(n){if(t){const e=function(e,t){const n=U(Nl,n=>!e.explicit.hasOwnProperty(n)&&!t.explicit.hasOwnProperty(n)||!(!e.explicit.hasOwnProperty(n)||!t.explicit.hasOwnProperty(n)||_(e.get(n))!==_(t.get(n))));if(_(e.size)===_(t.size)){if(n)return e;if(_(e.explicit)===_({}))return t;if(_(t.explicit)===_({}))return e}return null}(t,n);return e&&(t=e),!!e}return t=n,!0}return!0});if(t&&n){const n=e.projectionName(!0),i=new jl(n,t.specifiedProjection,t.size,B(t.data));return e.children.forEach(e=>{const t=e.component.projection;t&&(t.isFit&&i.data.push(...e.component.projection.data),e.renameProjection(t.get("name"),n),t.merged=!0)}),i}return}(e)}class Tl extends la{constructor(e){let t;if(super(null),Hr(e=e||{name:"source"})||(t=e.format?Object.assign({},j(e.format,["parse"])):{}),qr(e))this._data={values:e.values};else if(Ir(e)){if(this._data={url:e.url},!t.type){let n=/(?:\\.([^.]+))?$/.exec(e.url)[1];R(["json","csv","tsv","dsv","topojson"],n)||(n="json"),t.type=n}}else Yr(e)?this._data={values:[{type:"Sphere"}]}:(Wr(e)||Hr(e))&&(this._data={});this._generator=Hr(e),e.name&&(this._name=e.name),t&&V(t).length>0&&(this._data.format=t)}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(e){this._name=e}set parent(e){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return Object.assign({name:this._name},this._data,{transform:[]})}}function zl(e){for(const t of e){for(const e of t.children)if(e.parent!==t)return console.error("Dataflow graph is inconsistent.",t,e),!1;if(!zl(t.children))return!1}return!0}class Rl{constructor(){this._mutated=!1}setMutated(){this._mutated=!0}get mutatedFlag(){return this._mutated}}class Pl extends Rl{constructor(){super(),this._continue=!1}setContinue(){this._continue=!0}get continueFlag(){return this._continue}get flags(){return{continueFlag:this.continueFlag,mutatedFlag:this.mutatedFlag}}set flags({continueFlag:e,mutatedFlag:t}){e&&this.setContinue(),t&&this.setMutated()}reset(){}optimizeNextFromLeaves(e){if(e instanceof Tl)return!1;const t=e.parent,{continueFlag:n}=this.run(e);return n&&this.optimizeNextFromLeaves(t),this.mutatedFlag}}class Ul extends Rl{}function Ml(e,t,n,i){if(Cn(n)&&Xn(n.bin))e.add($n(n,{})),e.add($n(n,{binSuffix:"end"})),Vn(n,t)&&e.add($n(n,{binSuffix:"range"}));else if(function(e){switch(e){case Ve:case Xe:case Qe:case Je:return!0}return!1}(t)){const n=function(e){switch(e){case Ve:return"y";case Xe:return"y2";case Qe:return"x";case Je:return"x2"}}(t);e.add(i.getName(n))}else e.add($n(n));return e}class Ll extends la{constructor(e,t,n){super(e),this.dimensions=t,this.measures=n}clone(){return new Ll(null,new Set(this.dimensions),B(this.measures))}get groupBy(){return this.dimensions}static makeFromEncoding(e,t){let n=!1;t.forEachFieldDef(e=>{e.aggregate&&(n=!0)});const i={},r=new Set;return n?(t.forEachFieldDef((e,n)=>{const{aggregate:o,field:a}=e;if(o)if("count"===o)i["*"]=i["*"]||{},i["*"].count=new Set([$n(e,{forAs:!0})]);else{if(_e(o)||Te(o)){const e=_e(o)?"argmin":"argmax",t=o[e];i[t]=i[t]||{},i[t][e]=new Set([$n({op:e,field:t},{forAs:!0})])}else i[a]=i[a]||{},i[a][o]=new Set([$n(e,{forAs:!0})]);Tt(n)&&"unaggregated"===t.scaleDomain(n)&&(i[a]=i[a]||{},i[a].min=new Set([$n({field:a,aggregate:"min"},{forAs:!0})]),i[a].max=new Set([$n({field:a,aggregate:"max"},{forAs:!0})]))}else Ml(r,n,e,t)}),r.size+V(i).length===0?null:new Ll(e,r,i)):null}static makeFromTransform(e,t){const n=new Set,i={};for(const e of t.aggregate){const{op:t,field:n,as:r}=e;t&&("count"===t?(i["*"]=i["*"]||{},i["*"].count=new Set([r||$n(e,{forAs:!0})])):(i[n]=i[n]||{},i[n][t]=new Set([r||$n(e,{forAs:!0})])))}for(const e of t.groupby||[])n.add(e);return n.size+V(i).length===0?null:new Ll(e,n,i)}merge(e){return W(this.dimensions,e.dimensions)?(function(e,t){for(const n of V(t)){const i=t[n];for(const t of V(i))n in e?e[n][t]=new Set([...e[n][t]||[],...i[t]]):e[n]={[t]:i[t]}}}(this.measures,e.measures),!0):(Gt("different dimensions, cannot merge"),!1)}addDimensions(e){e.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...V(this.measures)])}producedFields(){const e=new Set;for(const t of V(this.measures))for(const n of V(this.measures[t])){const i=this.measures[t][n];0===i.size?e.add(`${n}_${t}`):i.forEach(e.add,e)}return e}hash(){return`Aggregate ${T({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const e=[],t=[],n=[];for(const i of V(this.measures))for(const r of V(this.measures[i]))for(const o of this.measures[i][r])n.push(o),e.push(r),t.push("*"===i?null:re(i));return{type:"aggregate",groupby:[...this.dimensions],ops:e,fields:t,as:n}}}function Il(e,t,n){let i;i=function(e){return"as"in e}(e)?s(e.as)?[e.as,`${e.as}_end`]:[e.as[0],e.as[1]]:[$n(e,{forAs:!0}),$n(e,{binSuffix:"end",forAs:!0})];const r=qn(t,void 0)||{},o=function(e,t){return`${Qn(e)}_${t}`}(r,e.field),{signal:a,extentSignal:u}=function(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}(n,o);return{key:o,binComponent:Object.assign({bin:r,field:e.field,as:[i]},a?{signal:a}:{},u?{extentSignal:u}:{})}}class ql extends la{constructor(e,t){super(e),this.bins=t}clone(){return new ql(null,B(this.bins))}static makeFromEncoding(e,t){const n=t.reduceFieldDef((e,n,i)=>{if(Cn(n)&&Xn(n.bin)){const{key:r,binComponent:o}=Il(n,n.bin,t);e[r]=Object.assign({},o,e[r],function(e,t,n,i){if(Vn(t,n)){const r=zf(e)&&(e.axis(n)||e.legend(n))||{},o=$n(t,{expr:"datum"}),a=$n(t,{expr:"datum",binSuffix:"end"});return{formulaAs:$n(t,{binSuffix:"range",forAs:!0}),formula:ra(o,a,r.format,i)}}return{}}(t,n,i,t.config))}return e},{});return 0===V(n).length?null:new ql(e,n)}static makeFromTransform(e,t,n){const{key:i,binComponent:r}=Il(t,t.bin,n);return new ql(e,{[i]:r})}merge(e,t){for(const n of V(e.bins))n in this.bins?(t(e.bins[n].signal,this.bins[n].signal),this.bins[n].as=q([...this.bins[n].as,...e.bins[n].as],T)):this.bins[n]=e.bins[n];for(const t of e.children)e.removeChild(t),t.parent=this;e.remove()}producedFields(){return new Set(M(M(Q(this.bins).map(e=>e.as))))}dependentFields(){return new Set(Q(this.bins).map(e=>e.field))}hash(){return`Bin ${T(this.bins)}`}assemble(){return M(Q(this.bins).map(e=>{const t=[],[n,...i]=e.as,r=Object.assign({type:"bin",field:e.field,as:n,signal:e.signal},e.bin);!e.bin.extent&&e.extentSignal&&(t.push({type:"extent",field:e.field,signal:e.extentSignal}),r.extent={signal:e.extentSignal}),t.push(r);for(const e of i)for(let i=0;i<2;i++)t.push({type:"formula",expr:$n({field:n[i]},{expr:"datum"}),as:e[i]});return e.formula&&t.push({type:"formula",expr:e.formula,as:e.formulaAs}),t}))}}class Wl extends la{constructor(e,t,n,i){super(e),this.model=t,this.name=n,this.data=i;for(const e of bt){const n=t.facet[e];if(n){const{bin:i,sort:r}=n;this[e]=Object.assign({name:t.getName(`${e}_domain`),fields:[$n(n),...Xn(i)?[$n(n,{binSuffix:"end"})]:[]]},Po(r)?{sortField:r}:o(r)?{sortIndexField:nu(n,e)}:{})}}this.childModel=t.child}hash(){let e="Facet";for(const t of bt)this[t]&&(e+=` ${t.charAt(0)}:${T(this[t])}`);return e}get fields(){const e=[];for(const t of bt)this[t]&&this[t].fields&&e.push(...this[t].fields);return e}getSource(){return this.name}getChildIndependentFieldsWithStep(){const e={};for(const t of["x","y"]){const n=this.childModel.component.scales[t];if(n&&!n.merged){const i=n.get("type"),r=n.get("range");if(Qi(i)&&Co(r)){const n=bf(vf(this.childModel,t));n?e[t]=n:Ht("Unknown field for ${channel}. Cannot calculate view size.")}}}return e}assembleRowColumnHeaderData(e,t,n){const i={row:"y",column:"x"}[e],r=[],o=[],a=[];n&&n[i]&&(t?(r.push(`distinct_${n[i]}`),o.push("max")):(r.push(n[i]),o.push("distinct")),a.push(`distinct_${n[i]}`));const{sortField:s,sortIndexField:u}=this[e];if(s){const{op:e=Ro,field:t}=s;r.push(t),o.push(e),a.push($n(s,{forAs:!0}))}else u&&(r.push(u),o.push("max"),a.push(u));return{name:this[e].name,source:t||this.data,transform:[Object.assign({type:"aggregate",groupby:this[e].fields},r.length?{fields:r,ops:o,as:a}:{})]}}assembleFacetHeaderData(e){const{columns:t}=this.model.layout,{layoutHeaders:n}=this.model.component,i=[],r={};for(const e of au){for(const t of su){const i=n[e]&&n[e][t]||[];for(const t of i)if(t.axes&&t.axes.length>0){r[e]=!0;break}}if(r[e]){const n=`length(data("${this.facet.name}"))`,r="row"===e?t?{signal:`ceil(${n} / ${t})`}:1:t?{signal:`min(${n}, ${t})`}:{signal:n};i.push({name:`${this.facet.name}_${e}`,transform:[{type:"sequence",start:0,stop:r}]})}}const{row:o,column:a}=r;return(o||a)&&i.unshift(this.assembleRowColumnHeaderData("facet",null,e)),i}assemble(){const e=[];let t=null;const n=this.getChildIndependentFieldsWithStep(),{column:i,row:r,facet:o}=this;if(i&&r&&(n.x||n.y)){t=`cross_${this.column.name}_${this.row.name}`;const i=[].concat(n.x||[],n.y||[]),r=i.map(()=>"distinct");e.push({name:t,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:i,ops:r}]})}for(const i of[Ie,Le])this[i]&&e.push(this.assembleRowColumnHeaderData(i,t,n));if(o){const t=this.assembleFacetHeaderData(n);t&&e.push(...t)}return e}}class Hl extends la{constructor(e,t,n){super(e),this.model=t,this.filter=n,this.expr=wc(this.model,this.filter,this),this._dependentFields=eu(this.expr)}clone(){return new Hl(null,this.model,B(this.filter))}dependentFields(){return this._dependentFields}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function Gl(e){return"\'"===e[0]&&"\'"===e[e.length-1]||\'"\'===e[0]&&\'"\'===e[e.length-1]?e.slice(1,-1):e}class Yl extends la{clone(){return new Yl(null,B(this._parse))}constructor(e,t){super(e),this._parse=t}hash(){return`Parse ${T(this._parse)}`}static makeExplicit(e,t,n){let i={};const r=t.data;return!Hr(r)&&r&&r.format&&r.format.parse&&(i=r.format.parse),this.makeWithAncestors(e,i,{},n)}static makeImplicitFromFilterTransform(e,t,n){const i={};return function e(t,n){if(k(t))e(t.not,n);else if(S(t))for(const i of t.and)e(i,n);else if(D(t))for(const i of t.or)e(i,n);else n(t)}(t.filter,e=>{if(ro(e)){let t=null;Jr(e)?t=e.equal:no(e)?t=e.range[0]:io(e)&&(t=(e.oneOf||e.in)[0]),t&&(Vt(t)?i[e.field]="date":v(t)?i[e.field]="number":s(t)&&(i[e.field]="string")),e.timeUnit&&(i[e.field]="date")}}),0===V(i).length?null:this.makeWithAncestors(e,{},i,n)}static makeImplicitFromEncoding(e,t,n){const i={};function r(e){var t;Hn(e)?i[e.field]="date":function(e){return"quantitative"===e.type||Xn(e.bin)}(e)&&((t=e.aggregate)&&s(t)&&R(["min","max"],t))?i[e.field]="number":ae(e.field)>1?e.field in i||(i[e.field]="flatten"):Dn(e)&&Po(e.sort)&&ae(e.sort.field)>1&&(e.sort.field in i||(i[e.sort.field]="flatten"))}return(zf(t)||Rf(t))&&t.forEachFieldDef((e,n)=>{if(Cn(e))r(e);else{const i=Dt(n);if(i===n)throw new Error(`Non-secondary channel ${n} must have type in its field definition ${JSON.stringify(e)}`);{const n=t.fieldDef(i);r(Object.assign({},e,{type:n.type}))}}}),this.makeWithAncestors(e,{},i,n)}static makeWithAncestors(e,t,n,i){for(const e of V(n)){const t=i.getWithExplicit(e);void 0!==t.value&&(t.explicit||t.value===n[e]||"derived"===t.value||"flatten"===n[e]?delete n[e]:Ht(Pt.differentParse(e,n[e],t.value)))}for(const e of V(t)){const n=i.get(e);void 0!==n&&(n===t[e]?delete t[e]:Ht(Pt.differentParse(e,t[e],n)))}const r=new rl(t,n);i.copyAll(r);const o={};for(const e of V(r.combine())){const t=r.get(e);null!==t&&(o[e]=t)}return 0===V(o).length||i.parseNothing?null:new Yl(e,o)}get parse(){return this._parse}merge(e){this._parse=Object.assign({},this._parse,e.parse),e.remove()}assembleFormatParse(){const e={};for(const t of V(this._parse)){const n=this._parse[t];1===ae(t)&&(e[t]=n)}return e}producedFields(){return new Set(V(this._parse))}dependentFields(){return new Set(V(this._parse))}assembleTransforms(e=!1){return V(this._parse).filter(t=>!e||ae(t)>1).map(e=>{const t=function(e,t){const n=ne(e);if("number"===t)return`toNumber(${n})`;if("boolean"===t)return`toBoolean(${n})`;if("string"===t)return`toString(${n})`;if("date"===t)return`toDate(${n})`;if("flatten"===t)return n;if(0===t.indexOf("date:"))return`timeParse(${n},\'${Gl(t.slice(5,t.length))}\')`;if(0===t.indexOf("utc:"))return`utcParse(${n},\'${Gl(t.slice(4,t.length))}\')`;return Ht(Pt.unrecognizedParse(t)),null}(e,this._parse[e]);return t?{type:"formula",expr:t,as:oe(e)}:null}).filter(e=>null!==e)}}class Vl extends la{constructor(e,t){super(e),this.transform=t}clone(){return new Vl(null,B(this.transform))}addDimensions(e){this.transform.groupby=q(this.transform.groupby.concat(e),e=>e)}dependentFields(){const e=new Set;return this.transform.groupby.forEach(t=>e.add(t)),this.transform.joinaggregate.map(e=>e.field).filter(e=>void 0!==e).forEach(t=>e.add(t)),e}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(e){return e.as||$n(e)}hash(){return`JoinAggregateTransform ${T(this.transform)}`}assemble(){const e=[],t=[],n=[];for(const i of this.transform.joinaggregate)t.push(i.op),n.push(this.getDefaultName(i)),e.push(void 0===i.field?null:i.field);const i=this.transform.groupby;return Object.assign({type:"joinaggregate",as:n,ops:t,fields:e},void 0!==i?{groupby:i}:{})}}class Ql extends la{clone(){return new Ql(null,B(this._stack))}constructor(e,t){super(e),this._stack=t}static makeFromTransform(e,t){const{stack:n,groupby:i,as:r,offset:a="zero"}=t,u=[],c=[];if(void 0!==t.sort)for(const e of t.sort)u.push(e.field),c.push(se(e.order,"ascending"));const l={field:u,order:c};let f;return f=function(e){return o(e)&&e.every(e=>s(e))&&e.length>1}(r)?r:s(r)?[r,r+"_end"]:[t.stack+"_start",t.stack+"_end"],new Ql(e,{stackField:n,groupby:i,offset:a,sort:l,facetby:[],as:f})}static makeFromEncoding(e,t){const n=t.stack,{encoding:i}=t;if(!n)return null;let r;if(n.groupbyChannel){r=Mn(i[n.groupbyChannel])}const a=function(e){return e.stack.stackBy.reduce((e,t)=>{const n=$n(t.fieldDef);return n&&e.push(n),e},[])}(t),s=t.encoding.order;let u;return u=o(s)||wn(s)?aa(s):a.reduce((e,t)=>(e.field.push(t),e.order.push("descending"),e),{field:[],order:[]}),new Ql(e,{dimensionFieldDef:r,stackField:t.vgField(n.fieldChannel),facetby:[],stackby:a,sort:u,offset:n.offset,impute:n.impute,as:[t.vgField(n.fieldChannel,{suffix:"start",forAs:!0}),t.vgField(n.fieldChannel,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(e){this._stack.facetby.push(...e)}dependentFields(){const e=new Set;e.add(this._stack.stackField),this.getGroupbyFields().forEach(e.add),this._stack.facetby.forEach(e.add);const t=this._stack.sort.field;return o(t)?t.forEach(e.add):e.add(t),e}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${T(this._stack)}`}getGroupbyFields(){const{dimensionFieldDef:e,impute:t,groupby:n}=this._stack;return e?e.bin?t?[$n(e,{binSuffix:"mid"})]:[$n(e,{}),$n(e,{binSuffix:"end"})]:[$n(e)]:n||[]}assemble(){const e=[],{facetby:t,dimensionFieldDef:n,stackField:i,stackby:r,sort:o,offset:a,impute:s,as:u}=this._stack;return s&&n&&(n.bin&&e.push({type:"formula",expr:"("+$n(n,{expr:"datum"})+"+"+$n(n,{expr:"datum",binSuffix:"end"})+")/2",as:$n(n,{binSuffix:"mid",forAs:!0})}),e.push({type:"impute",field:i,groupby:[...r,...t],key:$n(n,{binSuffix:"mid"}),method:"value",value:0})),e.push({type:"stack",groupby:[...this.getGroupbyFields(),...t],field:i,sort:o,as:u,offset:a}),e}}class Xl extends la{constructor(e,t){super(e),this.transform=t}clone(){return new Xl(null,B(this.transform))}addDimensions(e){this.transform.groupby=q(this.transform.groupby.concat(e),e=>e)}dependentFields(){const e=new Set;return this.transform.groupby.forEach(t=>e.add(t)),this.transform.sort.forEach(t=>e.add(t.field)),this.transform.window.map(e=>e.field).filter(e=>void 0!==e).forEach(t=>e.add(t)),e}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(e){return e.as||$n(e)}hash(){return`WindowTransform ${T(this.transform)}`}assemble(){const e=[],t=[],n=[],i=[];for(const r of this.transform.window)t.push(r.op),n.push(this.getDefaultName(r)),i.push(void 0===r.param?null:r.param),e.push(void 0===r.field?null:r.field);const r=this.transform.frame,o=this.transform.groupby;if(r&&null===r[0]&&null===r[1]&&t.every(e=>ze(e)))return Object.assign({type:"joinaggregate",as:n,ops:t,fields:e},void 0!==o?{groupby:o}:{});const a=[],s=[];if(void 0!==this.transform.sort)for(const e of this.transform.sort)a.push(e.field),s.push(e.order||"ascending");const u={field:a,order:s},c=this.transform.ignorePeers;return Object.assign({type:"window",params:i,as:n,ops:t,fields:e,sort:u},void 0!==c?{ignorePeers:c}:{},void 0!==o?{groupby:o}:{},void 0!==r?{frame:r}:{})}}class Jl extends Pl{run(e){const t=e.parent;if(e instanceof Yl){if(t instanceof Tl)return this.flags;if(t.numChildren()>1)return this.setContinue(),this.flags;if(t instanceof Yl)this.setMutated(),t.merge(e);else{if(Y(t.producedFields(),e.dependentFields()))return this.setContinue(),this.flags;this.setMutated(),e.swapWithParent()}}return this.setContinue(),this.flags}}class Zl extends Ul{mergeNodes(e,t){const n=t.shift();for(const i of t)e.removeChild(i),i.parent=n,i.remove()}run(e){const t=e.children.map(e=>e.hash()),n={};for(let i=0;i<t.length;i++)void 0===n[t[i]]?n[t[i]]=[e.children[i]]:n[t[i]].push(e.children[i]);for(const t of V(n))n[t].length>1&&(this.setMutated(),this.mergeNodes(e,n[t]));for(const t of e.children)this.run(t);return this.mutatedFlag}}class Kl extends Pl{run(e){return e instanceof fa||e.numChildren()>0||e instanceof Wl?this.flags:(this.setMutated(),e.remove(),this.flags)}}class ef extends Pl{constructor(){super(...arguments),this.fields=new Set}run(e){if(this.setContinue(),e instanceof Uu){const t=e.producedFields();H(t,this.fields)?(this.setMutated(),e.remove()):this.fields=new Set([...this.fields,...t])}return this.flags}reset(){this.fields.clear()}}function tf(e){if(e instanceof Wl)if(1!==e.numChildren()||e.children[0]instanceof fa){const n=e.model.component.data.main;!function e(t){if(t instanceof fa&&t.type===Qr&&1===t.numChildren()){const n=t.children[0];n instanceof Wl||(n.swapWithParent(),e(t))}}(n);const i=(t=e,function e(n){if(!(n instanceof Wl)){const i=n.clone();if(i instanceof fa){const e=sf+i.getSource();i.setSource(e),t.model.component.data.outputNodes[e]=i}else(i instanceof Ll||i instanceof Ql||i instanceof Xl||i instanceof Vl)&&i.addDimensions(t.fields);return M(n.children.map(e)).forEach(e=>e.parent=i),[i]}return M(n.children.map(e))}),r=M(e.children.map(i));for(const e of r)e.parent=n}else{const t=e.children[0];(t instanceof Ll||t instanceof Ql||t instanceof Xl||t instanceof Vl)&&t.addDimensions(e.fields),t.swapWithParent(),tf(e)}else e.children.map(tf);var t}class nf extends Ul{run(e){e instanceof fa&&!e.isRequired()&&(this.setMutated(),e.remove());for(const t of e.children)this.run(t);return this.mutatedFlag}}class rf extends Pl{run(e){const t=e.parent,n=t.children.filter(e=>e instanceof Yl);if(n.length>1){const e={};for(const t of n){const n=t.parse;for(const t of V(n))void 0===e[t]?e[t]=n[t]:e[t]!==n[t]&&delete e[t]}if(0!==V(e).length){this.setMutated();const i=new Yl(t,e);for(const r of n){for(const t of V(e))delete r.parse[t];t.removeChild(r),r.parent=i,0===V(r.parse).length&&r.remove()}}}return this.setContinue(),this.flags}}class of extends Pl{run(e){const t=e.parent,n=t.children.filter(e=>e instanceof Ll),i={};for(const e of n){const t=T(V(e.groupBy).sort());t in i||(i[t]=[]),i[t].push(e)}for(const e of V(i)){const n=i[e];if(n.length>1){const e=n.pop();for(const i of n)e.merge(i)&&(t.removeChild(i),i.parent=e,i.remove(),this.setMutated())}}return this.setContinue(),this.flags}}class af extends Pl{constructor(e){super(),this.model=e}run(e){const t=e.parent,n=!(t instanceof Tl||t instanceof Hl||t instanceof Yl),i=[],r=[];for(const e of t.children)e instanceof ql&&(n&&!Y(t.producedFields(),e.dependentFields())?i.push(e):r.push(e));if(i.length>0){const e=i.pop();for(const t of i)e.merge(t,this.model.renameSignal.bind(this.model));this.setMutated(),t instanceof ql?t.merge(e,this.model.renameSignal.bind(this.model)):e.swapWithParent()}if(r.length>1){const e=r.pop();for(const t of r)e.merge(t,this.model.renameSignal.bind(this.model));this.setMutated()}return this.setContinue(),this.flags}}const sf="scale_",uf=5;function cf(e){const t=[];return e.forEach(function e(n){0===n.numChildren()?t.push(n):n.children.forEach(e)}),t}function lf(e){return e}function ff(e,t,n){return t.map(t=>{if(e instanceof Pl){const n=e.optimizeNextFromLeaves(t);return e.reset(),n}return e.run(t)}).some(lf)||n}function df(e,t){let n=e.sources,i=!1;return i=ff(new nf,n,i),n=n.filter(e=>e.numChildren()>0),i=ff(new Kl,cf(n),i),n=n.filter(e=>e.numChildren()>0),i=ff(new Jl,cf(n),i),i=ff(new af(t),cf(n),i),i=ff(new ef,cf(n),i),i=ff(new rf,cf(n),i),i=ff(new of,cf(n),i),i=ff(new Zl,n,i),e.sources=n,i}class pf{constructor(e){Object.defineProperty(this,"signal",{enumerable:!0,get:e})}static fromName(e,t){return new pf(()=>e(t))}}function hf(e){zf(e)?function(e){const t=e.specifiedScales,n=e.component.scales;V(n).forEach(i=>{const r=t[i],o=r?r.domain:void 0,a=function(e,t){const n=e.getScaleComponent(t).get("type"),i=function(e,t,n,i){if("unaggregated"===e){const{valid:e,reason:i}=yf(t,n);if(!e)return void Ht(i)}else if(void 0===e&&i.useUnaggregatedDomain){const{valid:e}=yf(t,n);if(e)return"unaggregated"}return e}(e.scaleDomain(t),e.fieldDef(t),n,e.config.scale);i!==e.scaleDomain(t)&&(e.specifiedScales[t]=Object.assign({},e.specifiedScales[t],{domain:i}));if("x"===t&&e.channelHasField("x2"))return e.channelHasField("x")?mf(n,i,e,"x").concat(mf(n,i,e,"x2")):mf(n,i,e,"x2");if("y"===t&&e.channelHasField("y2"))return e.channelHasField("y")?mf(n,i,e,"y").concat(mf(n,i,e,"y2")):mf(n,i,e,"y2");return mf(n,i,e,t)}(e,i),s=n[i];if(s.domains=a,er(o)&&s.set("domainRaw",{signal:Ku+T(o)},!0),e.component.data.isFaceted){let t=e;for(;!Rf(t)&&t.parent;)t=t.parent;const n=t.component.resolve.scale[i];if("shared"===n)for(const e of a)Fo(e)&&(e.data=sf+e.data.replace(sf,""))}})}(e):function(e){for(const t of e.children)hf(t);const t=e.component.scales;V(t).forEach(n=>{let i,r=null;for(const t of e.children){const e=t.component.scales[n];if(e){i=void 0===i?e.domains:i.concat(e.domains);const t=e.get("domainRaw");r&&t&&r.signal!==t.signal&&Ht("The same selection must be used to override scale domains in a layered view."),r=t}}t[n].domains=i,r&&t[n].set("domainRaw",r,!0)})}(e)}function mf(e,t,n,i){const r=n.fieldDef(i);if(t&&"unaggregated"!==t&&!er(t)){const{type:e,timeUnit:n}=r;return"temporal"===e||n?function(e,t,n){return e.map(e=>({signal:`{data: ${Gn(e,{timeUnit:n,type:t})}}`}))}(t,e,n):[t]}const o=n.stack;if(o&&i===o.fieldChannel){if("normalize"===o.offset)return[[0,1]];const e=n.requestDataName(Qr);return[{data:e,field:n.vgField(i,{suffix:"start"})},{data:e,field:n.vgField(i,{suffix:"end"})}]}const s=Tt(i)?function(e,t,n){if(!Qi(n))return;const i=e.fieldDef(t),r=i.sort;if(Uo(r))return{op:"min",field:nu(i,t),order:"ascending"};const o=null!==e.stack;if(Po(r))return gf(r,o);if(function(e){return!!e&&!!e.encoding}(r)){const{encoding:t,order:n}=r,{aggregate:i,field:a}=e.fieldDef(t),s={op:i,field:a,order:n};return gf(s,o)}if("descending"===r)return{op:"min",field:e.vgField(t),order:"descending"};if(R(["ascending",void 0],r))return!0;return}(n,i,e):void 0;if("unaggregated"===t){const e=n.requestDataName(Qr),{field:t}=r;return[{data:e,field:$n({field:t,aggregate:"min"})},{data:e,field:$n({field:t,aggregate:"max"})}]}if(Xn(r.bin)){if(Qi(e))return"bin-ordinal"===e?[]:[{data:J(s)?n.requestDataName(Qr):n.requestDataName(Xr),field:n.vgField(i,Vn(r,i)?{binSuffix:"range"}:{}),sort:!0!==s&&a(s)?s:{field:n.vgField(i,{}),op:"min"}}];if(Xn(r.bin)){const e=n.getName($n(r,{suffix:"bins"}));return[new pf(()=>{const t=n.getSignalName(e);return`[${t}.start, ${t}.stop]`})]}return[{data:n.requestDataName(Qr),field:n.vgField(i,{})}]}return s?[{data:J(s)?n.requestDataName(Qr):n.requestDataName(Xr),field:n.vgField(i),sort:s}]:[{data:n.requestDataName(Qr),field:n.vgField(i)}]}function gf(e,t){const{op:n,field:i,order:r}=e;return Object.assign({op:n||(t?"sum":Ro)},i?{field:re(i)}:{},r?{order:r}:{})}function yf(e,t){const{aggregate:n,type:i}=e;return n?s(n)&&!Me[n]?{valid:!1,reason:Pt.unaggregateDomainWithNonSharedDomainOp(n)}:"quantitative"===i&&"log"===t?{valid:!1,reason:Pt.unaggregatedDomainWithLogScale(e)}:{valid:!0}:{valid:!1,reason:Pt.unaggregateDomainHasNoEffectForRawField(e)}}function bf(e){if(Fo(e)&&s(e.field))return e.field;if(function(e){return!o(e)&&"fields"in e&&!("data"in e)}(e)){let t;for(const n of e.fields)if(Fo(n)&&s(n.field))if(t){if(t!==n.field)return Ht("Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect."),t}else t=n.field;return Ht("Detected faceted independent scales that union domain of identical fields from different source detected. We will assume that this is the same field from a different fork of the same data source. However, if this is not case, the result view size maybe incorrect."),t}if(function(e){return!o(e)&&"fields"in e&&"data"in e}(e)){Ht("Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.");const t=e.fields[0];return s(t)?t:void 0}}function vf(e,t){return function(e){const t=q(e.map(e=>Fo(e)?Ne(e,["sort"]):e),T),n=q(e.map(e=>{if(Fo(e)){const t=e.sort;return void 0===t||J(t)||("count"===t.op&&delete t.field,"ascending"===t.order&&delete t.order),t}}).filter(e=>void 0!==e),T);if(0===t.length)return;if(1===t.length){const t=e[0];if(Fo(t)&&n.length>0){let e=n[0];return n.length>1&&(Ht(Pt.MORE_THAN_ONE_SORT),e=!0),Object.assign({},t,{sort:e})}return t}const i=q(n.map(e=>J(e)?e:"count"===e.op?e:(Ht(Pt.domainSortDropped(e)),!0)),T);let r;1===i.length?r=i[0]:i.length>1&&(Ht(Pt.MORE_THAN_ONE_SORT),r=!0);const o=q(e.map(e=>Fo(e)?e.data:null),e=>e);if(1===o.length&&null!==o[0])return Object.assign({data:o[0],fields:t.map(e=>e.field)},r?{sort:r}:{});return Object.assign({fields:t},r?{sort:r}:{})}(e.component.scales[t].domains.map(t=>(Fo(t)&&(t.data=e.lookupDataSource(t.data)),t)))}function xf(e){return V(e.component.scales).reduce((t,n)=>{const i=e.component.scales[n];if(i.merged)return t;const r=i.combine();let{domainRaw:o}=r;const{name:a,type:s,domainRaw:c,range:l}=r,f=Ne(r,["name","type","domainRaw","range"]),d=function(e,t,n){if(("x"===n||"y"===n)&&Co(e))return{step:{signal:t+"_step"}};return e}(r.range,a,n);o&&function(e){return e.signal.indexOf(Ku)>=0}(o)&&(o=function(e,t){const n=JSON.parse(t.signal.replace(Ku,"")),i=Z(n.selection),r=n.encoding;let o=n.field,a=e.component.selection&&e.component.selection[i];if(!a){if(a=e.getSelectionComponent(i,n.selection),r||o){if(r&&!o){const e=a.project.items.filter(e=>e.channel===r);!e.length||e.length>1?(o=a.project.items[0].field,Ht((e.length?"Multiple ":"No ")+`matching ${u(r)} encoding found for selection ${u(n.selection)}. `+`Using "field": ${u(o)}.`)):o=e[0].field}}else o=a.project.items[0].field,a.project.items.length>1&&Ht(\'A "field" or "encoding" must be specified when using a selection as a scale domain. \'+`Using "field": ${u(o)}.`);return{signal:ne(o,i)}}return Ht(\'Use "bind": "scales" to setup a binding for scales and selections within the same view.\'),{signal:"null"}}(e,o));const p=vf(e,n);return t.push(Object.assign({name:a,type:s},p?{domain:p}:{},o?{domainRaw:o}:{},{range:d},f)),t},[])}class Af extends rl{constructor(e,t){super({},{name:e}),this.merged=!1,this.domains=[],this.setWithExplicit("type",t)}get domainDefinitelyIncludesZero(){if(!1!==this.get("zero"))return!0;const e=this.domains;return!!o(e)&&P(e,e=>o(e)&&2===e.length&&e[0]<=0&&e[1]>=0)}}const wf=["range","rangeStep","scheme"];function Cf(e){return"x"===e?"width":"y"===e?"height":void 0}function Ff(e){const t=e.component.scales;_t.forEach(n=>{const i=t[n];if(!i)return;const r=e.getScaleComponent(n),a=e.specifiedScales[n],s=e.fieldDef(n),u=Cf(n);let c=u?!!e.component.layoutSize.get(u):void 0;const l=r.get("type"),f=R(["point","band"],l)||!!a.rangeStep;u&&e.fit&&!c&&f&&(Ht(Pt.CANNOT_FIX_RANGE_STEP_WITH_FIT),c=!0);const d=function(e){const t=[];for(const n of $t){const i=Ef(e,n);void 0!==i&&t.push(i)}return t}(e),p=function(e,t,n,i,r,a,s,u,c,l,f){const d=c||null===r.rangeStep;for(const t of wf)if(void 0!==r[t]){const i=nr(n,t),o=ir(e,t);if(i)if(o)Ht(o);else switch(t){case"range":return ol(r[t]);case"scheme":return ol(Df(r[t]));case"rangeStep":{const n=r[t];if(null!==n){if(!c)return ol({step:n});Ht(Pt.rangeStepDropped(e))}}}else Ht(Pt.scalePropertyNotWorkWithScaleType(n,t,e))}return al(function(e,t,n,i,r,a,s,u,c,l,f){switch(e){case We:case He:if(R(["point","band"],n)&&!l)if(e===We&&"text"===s){if(r.scale.textXRangeStep)return{step:r.scale.textXRangeStep}}else if(r.scale.rangeStep)return{step:r.scale.rangeStep};return e===He&&Xi(n)?[pf.fromName(t,u),0]:[0,pf.fromName(t,u)];case nt:{const t=function(e,t,n){if(t)return 0;switch(e){case"bar":case"tick":return n.scale.minBandSize;case"line":case"trail":case"rule":return n.scale.minStrokeWidth;case"text":return n.scale.minFontSize;case"point":case"square":case"circle":return n.scale.minSize}throw new Error(Pt.incompatibleChannel("size",e))}(s,a,r),i=function(e,t,n){const i=n.scale;switch(e){case"bar":case"tick":{if(void 0!==n.scale.maxBandSize)return n.scale.maxBandSize;const e=kf(t,n.scale);return v(e)?e-1:new pf(()=>`${e.signal} - 1`)}case"line":case"trail":case"rule":return n.scale.maxStrokeWidth;case"text":return n.scale.maxFontSize;case"point":case"square":case"circle":{if(n.scale.maxSize)return n.scale.maxSize;const e=kf(t,i);return v(e)?Math.pow(Sf*e,2):new pf(()=>`pow(${Sf} * ${e.signal}, 2)`)}}throw new Error(Pt.incompatibleChannel("size",e))}(s,c,r);return Zi(n)?function(e,t,n){const i=()=>{const i=wo(t)?t.signal:t,r=`(${i} - ${e}) / (${n} - 1)`;return`sequence(${e}, ${t} + ${r}, ${r})`};return wo(t)?new pf(i):{signal:i()}}(t,i,function(e,t,n,i){switch(e){case"quantile":return t.scale.quantileCount;case"quantize":return t.scale.quantizeCount;case"threshold":return void 0!==n&&o(n)?n.length+1:(Ht(Pt.domainRequiredForThresholdScale(i)),3)}}(n,r,f,e)):[t,i]}case at:return[r.scale.minStrokeWidth,r.scale.maxStrokeWidth];case tt:return"symbol";case Ze:case Ke:case et:return"ordinal"===n?"nominal"===i?"category":"ordinal":"rect"===s||"geoshape"===s?"heatmap":"ramp";case it:case rt:case ot:return[r.scale.minOpacity,r.scale.maxOpacity]}throw new Error(`Scale range undefined for channel ${e}`)}(e,t,n,i,a,s,u,l,f,d,r.domain))}(n,e.getSignalName.bind(e),l,s.type,a,e.config,i.get("zero"),e.mark,c,e.getName(u),d);i.setWithExplicit("range",p)})}function Ef(e,t){const n=e.getScaleComponent(t);if(!n)return;const i=n.get("type"),r=e.fieldDef(t);if(Qi(i)){const e=n&&n.get("range");if(e&&Co(e)&&v(e.step))return e.step}else if(r&&r.bin&&Xn(r.bin)){const n=e.getName($n(r,{suffix:"bins"})),i=Cf(t),o=e.getName(i);return new pf(()=>{const t=e.getSignalName(n),i=`(${t}.stop - ${t}.start) / ${t}.step`;return`${e.getSignalName(o)} / (${i})`})}}function Df(e){return function(e){return e&&!!e.name}(e)?Object.assign({scheme:e.name},j(e,["name"])):{scheme:e}}const Sf=.95;function kf(e,t){if(e.length>0){let t=1/0;for(const n of e)wo(n)?t=void 0:void 0!==t&&n<t&&(t=n);return void 0!==t?t:new pf(()=>{return`min(${e.map(e=>wo(e)?e.signal:e).join(", ")})`})}return t.rangeStep?t.rangeStep:21}function Of(e,t){zf(e)?function(e,t){const n=e.component.scales;V(n).forEach(i=>{const r=e.specifiedScales[i],a=n[i],s=e.getScaleComponent(i),u=e.fieldDef(i),c=e.config,l=r[t],f=s.get("type"),d=nr(f,t),p=ir(i,t);if(void 0!==l&&(d?p&&Ht(p):Ht(Pt.scalePropertyNotWorkWithScaleType(f,t,i))),d&&void 0===p)if(void 0!==l)a.copyKeyFromObject(t,r);else{const n=function(e,t,n,i,r,a,s,u,c,l){const f=l.scale,{type:d,sort:p}=i;switch(e){case"bins":return function(e,t){const n=t.bin;if(Xn(n)){const n=e.getName($n(t,{suffix:"bins"}));return new pf(()=>e.getSignalName(n))}if(Jn(n)&&Zn(n)&&void 0!==n.step)return{step:n.step};return}(t,i);case"interpolate":return function(e,t){if(R([Ze,Ke,et],e)&&"nominal"!==t)return"hcl";return}(n,d);case"nice":return function(e,t,n){if(n.bin||R([Pi.TIME,Pi.UTC],e))return;return!!R([We,He],t)||void 0}(r,n,i);case"padding":return function(e,t,n,i,r,o){if(R([We,He],e)){if(Ji(t)){if(void 0!==n.continuousPadding)return n.continuousPadding;const{type:t,orient:a}=r;if("bar"===t&&!i.bin&&("vertical"===a&&"x"===e||"horizontal"===a&&"y"===e))return o.continuousBandSize}if(t===Pi.POINT)return n.pointPadding}return}(n,r,f,i,c,l.bar);case"paddingInner":return function(e,t,n,i){if(void 0!==e)return;if(R([We,He],t)){const{bandPaddingInner:e,barBandPaddingInner:t,rectBandPaddingInner:r}=i;return se(e,"bar"===n?t:r)}return}(a,n,c.type,f);case"paddingOuter":return function(e,t,n,i,r,o){if(void 0!==e)return;if(R([We,He],t)&&n===Pi.BAND){const{bandPaddingOuter:e,barBandPaddingOuter:t,rectBandPaddingOuter:n}=o;return se(e,"bar"===i?t:n,r/2)}return}(a,n,r,c.type,s,f);case"reverse":return function(e,t){if(Xi(e)&&"descending"===t)return!0;return}(r,p);case"zero":return function(e,t,n,i,r){if(n&&"unaggregated"!==n&&Xi(r)){if(o(n)){const e=n[0],t=n[n.length-1];if(e<=0&&t>=0)return!0}return!1}if("size"===e&&"quantitative"===t.type&&!Zi(r))return!0;if(!t.bin&&R([We,He],e)){const{orient:t,type:n}=i;return!R(["bar","area","line","trail"],n)||!("horizontal"===t&&"y"===e||"vertical"===t&&"x"===e)}return!1}(n,i,u,c,r)}return f[e]}(t,e,i,u,s.get("type"),s.get("padding"),s.get("paddingInner"),r.domain,e.markDef,c);void 0!==n&&a.set(t,n,!1)}})}(e,t):Bf(e,t)}function $f(e){zf(e)?Ff(e):Bf(e,"range")}function Bf(e,t){const n=e.component.scales;for(const n of e.children)"range"===t?$f(n):Of(n,t);V(n).forEach(i=>{let r;for(const n of e.children){const e=n.component.scales[i];if(e){r=cl(r,e.getWithExplicit(t),t,"scale",sl((e,n)=>{switch(t){case"range":return e.step&&n.step?e.step-n.step:0}return 0}))}}n[i].setWithExplicit(t,r)})}function Nf(e,t,n,i){const r=function(e,t,n){switch(t.type){case"nominal":case"ordinal":if(gt(e)||"discrete"===Rt(e))return"shape"===e&&"ordinal"===t.type&&Ht(Pt.discreteChannelCannotEncode(e,"ordinal")),"ordinal";if(R(["x","y"],e)){if(R(["rect","bar","rule"],n))return"band";if("bar"===n)return"band"}return"point";case"temporal":return gt(e)?"time":"discrete"===Rt(e)?(Ht(Pt.discreteChannelCannotEncode(e,"temporal")),"ordinal"):"time";case"quantitative":return gt(e)?Xn(t.bin)?"bin-ordinal":"linear":"discrete"===Rt(e)?(Ht(Pt.discreteChannelCannotEncode(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(Pt.invalidFieldType(t.type))}(t,n,i),{type:o}=e;return Tt(t)?void 0!==o?or(t,o)?rr(o,n.type)?o:(Ht(Pt.scaleTypeNotWorkWithFieldDef(o,r)),r):(Ht(Pt.scaleTypeNotWorkWithChannel(t,o,r)),r):r:null}function jf(e){zf(e)?e.component.scales=function(e){const{encoding:t,mark:n}=e;return _t.reduce((i,r)=>{let o,a;const s=t[r];if(wn(s)&&n===Fe&&r===tt&&s.type===bn)return i;if(wn(s)?(o=s,a=s.scale):An(s)&&(o=s.condition,a=s.condition.scale),o&&null!==a&&!1!==a){const t=Nf(a=a||{},r,o,n);i[r]=new Af(e.scaleName(r+"",!0),{value:t,explicit:a.type===t})}return i},{})}(e):e.component.scales=function(e){const t=e.component.scales={},n={},i=e.component.resolve;for(const t of e.children)jf(t),V(t.component.scales).forEach(r=>{if(i.scale[r]=i.scale[r]||nl(r,e),"shared"===i.scale[r]){const e=n[r],o=t.component.scales[r].getWithExplicit("type");e?Li(e.value,o.value)?n[r]=cl(e,o,"type","scale",_f):(i.scale[r]="independent",delete n[r]):n[r]=o}});return V(n).forEach(i=>{const r=e.scaleName(i,!0),o=n[i];t[i]=new Af(r,o);for(const t of e.children){const e=t.component.scales[i];e&&(t.renameScale(e.get("name"),r),e.merged=!0)}}),t}(e)}const _f=sl((e,t)=>qi(e)-qi(t));class Tf{constructor(){this.nameMap={}}rename(e,t){this.nameMap[e]=t}has(e){return void 0!==this.nameMap[e]}get(e){for(;this.nameMap[e]&&e!==this.nameMap[e];)e=this.nameMap[e];return e}}function zf(e){return e&&"unit"===e.type}function Rf(e){return e&&"facet"===e.type}function Pf(e){return e&&"repeat"===e.type}function Uf(e){return e&&"concat"===e.type}function Mf(e){return e&&"layer"===e.type}class Lf{constructor(e,t,n,i,r,a,u,c){this.type=t,this.parent=n,this.config=r,this.repeater=a,this.view=c,this.children=[],this.correctDataNames=e=>(e.from&&e.from.data&&(e.from.data=this.lookupDataSource(e.from.data)),e.from&&e.from.facet&&e.from.facet.data&&(e.from.facet.data=this.lookupDataSource(e.from.facet.data)),e),this.parent=n,this.config=r,this.repeater=a,this.name=e.name||i,this.title=s(e.title)?{text:e.title}:e.title,this.scaleNameMap=n?n.scaleNameMap:new Tf,this.projectionNameMap=n?n.projectionNameMap:new Tf,this.signalNameMap=n?n.signalNameMap:new Tf,this.data=e.data,this.description=e.description,this.transforms=(e.transform||[]).map(e=>uo(e)?{filter:O(e.filter,so)}:e),this.layout=$e(e)||Cr(e)?{}:function(e,t,n){const i=n[t],r={},{spacing:a,columns:s}=i;void 0!==a&&(r.spacing=a),void 0!==s&&(tn(e)&&!en(e.facet)||pr(e)&&o(e.repeat)||lr(e))&&(r.columns=s);for(const t of hr)if(void 0!==e[t])if("spacing"===t){const n=e[t];r[t]=v(n)?n:{row:n.row||a,column:n.column||a}}else r[t]=e[t];return r}(e,t,r),this.component={data:{sources:n?n.component.data.sources:[],outputNodes:n?n.component.data.outputNodes:{},outputNodeRefCounts:n?n.component.data.outputNodeRefCounts:{},isFaceted:tn(e)||n&&n.component.data.isFaceted&&!e.data},layoutSize:new rl,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:Object.assign({scale:{},axis:{},legend:{}},u?B(u):{}),selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}initSize(e){const{width:t,height:n}=e;t&&this.component.layoutSize.set("width",t,!0),n&&this.component.layoutSize.set("height",n,!0)}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){!function(e){jf(e),hf(e);for(const t of tr)Of(e,t);$f(e)}(this)}parseProjection(){_l(this)}renameTopLevelLayoutSizeSignal(){"width"!==this.getName("width")&&this.renameSignal(this.getName("width"),"width"),"height"!==this.getName("height")&&this.renameSignal(this.getName("height"),"height")}parseLegends(){Fl(this)}assembleGroupStyle(){if("unit"===this.type||"layer"===this.type)return this.view&&this.view.style||"cell"}assembleEncodeFromView(e){const t=Ne(e,["style"]),n={};for(const e in t)if(t.hasOwnProperty(e)){const i=t[e];void 0!==i&&(n[e]={value:i})}return n}assembleGroupEncodeEntry(e){let t=void 0;return this.view&&(t=this.assembleEncodeFromView(this.view)),e||"unit"!==this.type&&"layer"!==this.type?t:Object.assign({width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height")},t||{})}assembleLayout(){if(!this.layout)return;const e=this.layout,{spacing:t}=e,n=Ne(e,["spacing"]),{component:i,config:r}=this,o=function(e,t){const n={};for(const i of bt){const r=e[i];if(r&&r.facetFieldDef){const{titleAnchor:e,titleOrient:o}=ou(["titleAnchor","titleOrient"],r.facetFieldDef,t,i),a=iu(i,o),s=gu(e,a);void 0!==s&&(n[a]=s)}}return V(n).length>0?n:void 0}(i.layoutHeaders,r);return Object.assign({padding:t},this.assembleDefaultLayout(),n,o?{titleBand:o}:{})}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:e}=this.component;let t=[];for(const n of bt)e[n].title&&t.push(uu(this,n));for(const e of au)t=t.concat(fu(this,e));return t}assembleAxes(){return function(e,t){const{x:n=[],y:i=[]}=e;return[...n.map(e=>Bo(e,"main",t)),...n.map(e=>Bo(e,"grid",t)),...i.map(e=>Bo(e,"main",t)),...i.map(e=>Bo(e,"grid",t))].filter(e=>e)}(this.component.axes,this.config)}assembleLegends(){return Ol(this)}assembleProjections(){return $l(this)}assembleTitle(){const e=this.title||{},{encoding:t}=e,n=Ne(e,["encoding"]),i=Object.assign({},mr(this.config.title).nonMark,n,t?{encode:{update:t}}:{});if(i.text)return R(["unit","layer"],this.type)?R(["middle",void 0],i.anchor)&&(i.frame=i.frame||"group"):i.anchor=i.anchor||"start",V(i).length>0?i:void 0}assembleGroup(e=[]){const t={};(e=e.concat(this.assembleSignals())).length>0&&(t.signals=e);const n=this.assembleLayout();n&&(t.layout=n),t.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const i=!this.parent||Rf(this.parent)?function e(t){return Mf(t)||Uf(t)||Pf(t)?t.children.reduce((t,n)=>t.concat(e(n)),xf(t)):xf(t)}(this):[];i.length>0&&(t.scales=i);const r=this.assembleAxes();r.length>0&&(t.axes=r);const o=this.assembleLegends();return o.length>0&&(t.legends=o),t}hasDescendantWithFieldOnChannel(e){for(const t of this.children)if(zf(t)){if(t.channelHasField(e))return!0}else if(t.hasDescendantWithFieldOnChannel(e))return!0;return!1}getName(e){return Z((this.name?this.name+"_":"")+e)}requestDataName(e){const t=this.getName(e),n=this.component.data.outputNodeRefCounts;return n[t]=(n[t]||0)+1,t}getSizeSignalRef(e){if(Rf(this.parent)){const t="width"===e?"x":"y",n=this.component.scales[t];if(n&&!n.merged){const e=n.get("type"),i=n.get("range");if(Qi(e)&&Co(i)){const e=n.get("name"),i=bf(vf(this,t));if(i){return{signal:Au(e,n,$n({aggregate:"distinct",field:i},{expr:"datum"}))}}return Ht("Unknown field for ${channel}. Cannot calculate view size."),null}}}return{signal:this.signalNameMap.get(this.getName(e))}}lookupDataSource(e){const t=this.component.data.outputNodes[e];return t?t.getSource():e}getSignalName(e){return this.signalNameMap.get(e)}renameSignal(e,t){this.signalNameMap.rename(e,t)}renameScale(e,t){this.scaleNameMap.rename(e,t)}renameProjection(e,t){this.projectionNameMap.rename(e,t)}scaleName(e,t){return t?this.getName(e):Ct(e)&&Tt(e)&&this.component.scales[e]||this.scaleNameMap.has(this.getName(e))?this.scaleNameMap.get(this.getName(e)):void 0}projectionName(e){return e?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(e){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const t=this.component.scales[e];return t&&!t.merged?t:this.parent?this.parent.getScaleComponent(e):void 0}getSelectionComponent(e,t){let n=this.component.selection[e];if(!n&&this.parent&&(n=this.parent.getSelectionComponent(e,t)),!n)throw new Error(Pt.selectionNotFound(t));return n}}class If extends Lf{vgField(e,t={}){const n=this.fieldDef(e);if(n)return $n(n,t)}reduceFieldDef(e,t,n){return ai(this.getMapping(),(t,n,i)=>{const r=Un(n);return r?e(t,r,i):t},t,n)}forEachFieldDef(e,t){oi(this.getMapping(),(t,n)=>{const i=Un(t);i&&e(i,n)},t)}}class qf extends la{constructor(e,t){super(e),this.fieldDefs=t}clone(){return new qf(null,Object.assign({},this.fieldDefs))}static make(e,t){const{config:n,mark:i}=t;if("filter"!==n.invalidValues)return null;const r=t.reduceFieldDef((e,n,r)=>{const o=Tt(r)&&t.getScaleComponent(r);if(o){!Xi(o.get("type"))||n.aggregate||Ee(i)||(e[n.field]=n)}return e},{});return V(r).length?new qf(e,r):null}get filter(){return this.fieldDefs}assemble(){const e=V(this.filter).reduce((e,t)=>{const n=this.fieldDefs[t],i=$n(n,{expr:"datum"});return null!==n&&(e.push(`${i} !== null`),e.push(`!isNaN(${i})`)),e},[]);return e.length>0?{type:"filter",expr:e.join(" && ")}:null}}class Wf extends la{constructor(e,t){super(e),this.transform=t,this.transform=B(t);const{flatten:n,as:i=[]}=this.transform;this.transform.as=n.map((e,t)=>i[t]||e)}clone(){return new Wf(this.parent,B(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${T(this.transform)}`}assemble(){const{flatten:e,as:t}=this.transform;return{type:"flatten",fields:e,as:t}}}class Hf extends la{constructor(e,t){super(e),this.transform=t,this.transform=B(t);const n=this.transform.as||[void 0,void 0];this.transform.as=[n[0]||"key",n[1]||"value"]}clone(){return new Hf(null,B(this.transform))}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${T(this.transform)}`}assemble(){const{fold:e,as:t}=this.transform;return{type:"fold",fields:e,as:t}}}class Gf extends la{constructor(e,t,n,i){super(e),this.fields=t,this.geojson=n,this.signal=i}clone(){return new Gf(null,B(this.fields),this.geojson,this.signal)}static parseAll(e,t){if(t.component.projection&&!t.component.projection.isFit)return e;let n=0;if([[Qe,Ve],[Je,Xe]].forEach(i=>{const r=i.map(e=>t.channelHasField(e)?t.fieldDef(e).field:En(t.encoding[e])?{expr:t.encoding[e].value+""}:void 0);(r[0]||r[1])&&(e=new Gf(e,r,null,t.getName(`geojson_${n++}`)))}),t.channelHasField(tt)){const i=t.fieldDef(tt);i.type===bn&&(e=new Gf(e,null,i.field,t.getName(`geojson_${n++}`)))}return e}assemble(){return Object.assign({type:"geojson"},this.fields?{fields:this.fields}:{},this.geojson?{geojson:this.geojson}:{},{signal:this.signal})}}class Yf extends la{constructor(e,t,n,i){super(e),this.projection=t,this.fields=n,this.as=i}clone(){return new Yf(null,this.projection,B(this.fields),B(this.as))}static parseAll(e,t){return t.projectionName()?([[Qe,Ve],[Je,Xe]].forEach(n=>{const i=n.map(e=>t.channelHasField(e)?t.fieldDef(e).field:En(t.encoding[e])?{expr:t.encoding[e].value+""}:void 0),r=n[0]===Je?"2":"";(i[0]||i[1])&&(e=new Yf(e,t.projectionName(),i,[t.getName("x"+r),t.getName("y"+r)]))}),e):e}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class Vf extends la{constructor(e,t){super(e),this.params=t}clone(){return new Vf(null,this.params)}assemble(){return Object.assign({type:"graticule"},!0===this.params?{}:this.params)}}class Qf extends la{clone(){return new Qf(null)}constructor(e){super(e)}producedFields(){return new Set([sr])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:sr}}}function Xf(e,t){const{config:n,encoding:i,markDef:r}=e,o=r.orient,a=i.size,s="x"===t?"horizontal"===o:"vertical"===o,u="x"===t?"x2":"y2",c=i[t],l=i[u],f=e.scaleName(t),d=e.getScaleComponent(t),p=se(r.binSpacing,n.bar.binSpacing),h=d?d.get("reverse"):void 0;if(wn(c)&&Jn(c.bin))return Zc({fieldDef:c,fieldDef2:l,channel:t,mark:"bar",scaleName:f,spacing:p,reverse:h});if(s||l)return Object.assign({},Kc(t,e,"zeroOrMin"),el(e,"zeroOrMin",u));{const i="x"===t?"width":"height";if(wn(c)){const o=d.get("type");if(Xn(c.bin)&&!a&&!Qi(o))return Zc({fieldDef:c,channel:t,scaleName:f,mark:"bar",spacing:p,reverse:h});if(o===Pi.BAND)return Xc(c,t,e,Jf(r,i,f,d,n))}return Jc(t,e,Rc(e[i]),Jf(r,i,f,d,n))}}function Jf(e,t,n,i,r){const o=se(e[t],e.size,Zo("size",e,r,{vgChannel:t}));if(void 0!==o)return{value:o};if(i){const e=i.get("type");if("point"!==e&&"band"!==e)return{value:r.bar.continuousBandSize};if(void 0!==r.bar.discreteBandSize)return{value:r.bar.discreteBandSize};if(e!==Pi.POINT)return Nc(n);{const e=i.get("range");if(Co(e)&&v(e.step))return{value:e.step-1};Ht(Pt.BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL)}}return{value:se(r.bar.discreteBandSize,r.scale.rangeStep?r.scale.rangeStep-1:void 0,20)}}function Zf(e,t){const{config:n,width:i,height:r}=e;return Object.assign({},Lc(e,{size:"include",orient:"ignore"}),Kc("x",e,Rc(i)),Kc("y",e,Rc(r)),Gc("size",e),function(e,t,n){if(n)return{shape:{value:n}};return Gc("shape",e)}(e,0,t))}function Kf(e,t){const n="x"===t?"x2":"y2",i=e.encoding[t],r=e.encoding[n],o=e.getScaleComponent(t),a=o?o.get("type"):void 0,s=e.scaleName(t);if(wn(i)&&(Xn(i.bin)||Jn(i.bin)))return Zc({fieldDef:i,fieldDef2:r,channel:t,mark:"rect",scaleName:s,spacing:0,reverse:o.get("reverse")});if(wn(i)&&o&&Qi(a)){if(a===Pi.BAND)return Xc(i,t,e);throw new Error(Pt.scaleTypeNotWorkWithMark(ye,a))}return Object.assign({},Kc(t,e,"zeroOrMax"),el(e,"zeroOrMin",n))}function ed(e){const{config:t,markDef:n}=e,{orient:i}=n,r="horizontal"===i?"width":"height",o=e.getScaleComponent("horizontal"===i?"x":"y"),a=se(n[r],n.size,Zo("size",n,t,{vgChannel:r}),t.tick.bandSize);if(void 0!==a)return a;{const e=o?o.get("range"):void 0,n=e&&Co(e)?e.step:t.scale.rangeStep;if("number"!=typeof n)throw new Error("Function does not handle non-numeric rangeStep");return 3*n/4}}const td={area:{vgMark:"area",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"include"}),Kc("x",e,"zeroOrMin"),Kc("y",e,"zeroOrMin"),el(e,"zeroOrMin","horizontal"===e.markDef.orient?"x2":"y2"),Hc(e))},bar:{vgMark:"rect",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Xf(e,"x"),Xf(e,"y"))},circle:{vgMark:"symbol",encodeEntry:e=>Zf(e,"circle")},geoshape:{vgMark:"shape",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"ignore"})),postEncodingTransform:e=>{const{encoding:t}=e,n=t.shape;return[Object.assign({type:"geoshape",projection:e.projectionName()},n&&wn(n)&&n.type===bn?{field:$n(n,{expr:"datum"})}:{})]}},line:{vgMark:"line",encodeEntry:e=>{const{width:t,height:n}=e;return Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,Rc(t)),Kc("y",e,Rc(n)),Gc("size",e,{vgChannel:"strokeWidth"}),Hc(e))}},point:{vgMark:"symbol",encodeEntry:e=>Zf(e)},rect:{vgMark:"rect",encodeEntry:e=>Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kf(e,"x"),Kf(e,"y"))},rule:{vgMark:"rule",encodeEntry:e=>{const{markDef:t,width:n,height:i}=e,r=t.orient;return e.encoding.x||e.encoding.y||e.encoding.latitude||e.encoding.longitude?Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,"horizontal"===r?"zeroOrMin":Rc(n)),Kc("y",e,"vertical"===r?"zeroOrMin":Rc(i)),"vertical"!==r?el(e,"zeroOrMax","x2"):{},"horizontal"!==r?el(e,"zeroOrMax","y2"):{},Gc("size",e,{vgChannel:"strokeWidth"})):{}}},square:{vgMark:"symbol",encodeEntry:e=>Zf(e,"square")},text:{vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n,width:i,height:r}=e;return Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,Rc(i)),Kc("y",e,Rc(r)),Qc(e),Gc("size",e,{vgChannel:"fontSize"}),qc("align",function(e,t,n){if(void 0===(e.align||Zo("align",e,n)))return"center";return}(e.markDef,0,t)),qc("baseline",function(e,t,n){if(void 0===(e.baseline||Zo("baseline",e,n)))return"middle";return}(e.markDef,0,t)))}},tick:{vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n,width:i,height:r}=e,o=n.orient,a="horizontal"===o?"width":"height",s="horizontal"===o?"height":"width";return Object.assign({},Lc(e,{size:"ignore",orient:"ignore"}),Kc("x",e,Rc(i),"xc"),Kc("y",e,Rc(r),"yc"),Gc("size",e,{defaultValue:ed(e),vgChannel:a}),{[s]:{value:se(n.thickness,t.tick.thickness)}})}},trail:{vgMark:"trail",encodeEntry:e=>{const{width:t,height:n}=e;return Object.assign({},Lc(e,{size:"include",orient:"ignore"}),Kc("x",e,Rc(t)),Kc("y",e,Rc(n)),Gc("size",e),Hc(e))}}};function nd(e){return R([me,pe,Ae],e.mark)?function(e){const t=od(e.mark,e.encoding),n=rd(e,{fromPrefix:t.length>0?id:""});return t.length>0?[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:id+e.requestDataName(Qr),data:e.requestDataName(Qr),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:n}]:n}(e):rd(e)}const id="faceted_path_";function rd(e,t={fromPrefix:""}){const n=e.mark,i=se(e.markDef.clip,function(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return!!(t&&t.get("domainRaw")||n&&n.get("domainRaw"))||void 0}(e),function(e){const t=e.component.projection;return!(!t||t.isFit)||void 0}(e)),r=Jo(e.markDef),a=e.encoding.key,s=function(e){const{encoding:t,stack:n,mark:i,markDef:r,config:a}=e,s=t.order;if(!(!o(s)&&En(s)&&z(s.value)||!s&&z(r.order)||z(Zo("order",r,a)))){if((o(s)||wn(s))&&!n)return aa(s,{expr:"datum"});if(Ee(i)){const n=t["horizontal"===r.orient?"y":"x"];if(wn(n)){const t=n.sort;return{field:Po(t)?$n({aggregate:ti(e.encoding)?t.op:void 0,field:t.field},{expr:"datum"}):$n(n,{binSuffix:e.stack&&e.stack.impute?"mid":void 0,expr:"datum"}),order:"descending"}}}}}(e),u=td[n].postEncodingTransform?td[n].postEncodingTransform(e):null;return[Object.assign({name:e.getName("marks"),type:td[n].vgMark},i?{clip:!0}:{},r?{style:r}:{},a?{key:{field:a.field}}:{},s?{sort:s}:{},{from:{data:t.fromPrefix+e.requestDataName(Qr)},encode:{update:td[n].encodeEntry(e)}},u?{transform:u}:{})]}function od(e,t){return V(t).reduce((n,i)=>{switch(i){case"x":case"y":case"order":case"href":case"x2":case"y2":case"latitude":case"longitude":case"latitude2":case"longitude2":case"text":case"shape":case"tooltip":return n;case"detail":case"key":{const e=t[i];return(o(e)||wn(e))&&(o(e)?e:[e]).forEach(e=>{e.aggregate||n.push($n(e,{}))}),n}case"size":if("trail"===e)return n;case"color":case"fill":case"stroke":case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":{const e=Mn(t[i]);return e&&!e.aggregate&&n.push($n(e,{})),n}default:throw new Error(`Bug: Channel ${i} unimplemented for line mark`)}},[])}class ad extends la{constructor(e,t){super(e),this.transform=t}clone(){return new ad(null,B(this.transform))}producedFields(){return new Set([this.transform.impute])}processSequence(e){const{start:t=0,stop:n,step:i}=e;return{signal:`sequence(${[t,n,...i?[i]:[]].join(",")})`}}static makeFromTransform(e,t){return new ad(e,t)}static makeFromEncoding(e,t){const n=t.encoding,i=n.x,r=n.y;if(wn(i)&&wn(r)){const o=i.impute?i:r.impute?r:void 0;if(void 0===o)return;const a=i.impute?r:r.impute?i:void 0,{method:s,value:u,frame:c,keyvals:l}=o.impute,f=od(t.mark,n);return new ad(e,Object.assign({impute:o.field,key:a.field},s?{method:s}:{},void 0!==u?{value:u}:{},c?{frame:c}:{},void 0!==l?{keyvals:l}:{},f.length?{groupby:f}:{}))}return null}hash(){return`Impute ${T(this.transform)}`}assemble(){const{impute:e,key:t,keyvals:n,method:i,groupby:r,value:o,frame:a=[null,null]}=this.transform,s=Object.assign({type:"impute",field:e,key:t},n?{keyvals:(u=n,u&&void 0!==u.start&&void 0!==u.stop?this.processSequence(n):n)}:{},{method:"value"},r?{groupby:r}:{},{value:null});var u;let c;if(i&&"value"!==i){c=[Object.assign({type:"window",as:[`imputed_${e}_value`],ops:[i],fields:[e],frame:a,ignorePeers:!1},r?{groupby:r}:{}),{type:"formula",expr:`datum.${e} === null ? datum.imputed_${e}_value : datum.${e}`,as:e}]}else{c=[{type:"formula",expr:`datum.${e} === null ? ${o} : datum.${e}`,as:e}]}return[s,...c]}}class sd extends rl{constructor(e={},t={},n=!1){super(e,t),this.explicit=e,this.implicit=t,this.parseNothing=n}clone(){const e=super.clone();return e.parseNothing=this.parseNothing,e}}class ud extends la{constructor(e,t,n){super(e),this.transform=t,this.secondary=n}clone(){return new ud(null,B(this.transform),this.secondary)}static make(e,t,n,i){const r=t.component.data.sources;let o=kd(n.from.data,r);o||(o=new Tl(n.from.data),r.push(o));const a=t.getName(`lookup_${i}`),s=new fa(o,a,"lookup",t.component.data.outputNodeRefCounts);return t.component.data.outputNodes[a]=s,new ud(e,n,s.getSource())}producedFields(){return new Set(this.transform.from.fields||(this.transform.as instanceof Array?this.transform.as:[this.transform.as]))}hash(){return`Lookup ${T({transform:this.transform,secondary:this.secondary})}`}assemble(){let e;if(this.transform.from.fields)e=Object.assign({values:this.transform.from.fields},this.transform.as?{as:this.transform.as instanceof Array?this.transform.as:[this.transform.as]}:{});else{let t=this.transform.as;s(t)||(Ht(Pt.NO_FIELDS_NEEDS_AS),t="_lookup"),e={as:[t]}}return Object.assign({type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup]},e,this.transform.default?{default:this.transform.default}:{})}}class cd extends la{constructor(e,t){super(e),this.transform=t}clone(){return new cd(null,B(this.transform))}hash(){return`SampleTransform ${T(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}class ld extends la{constructor(e,t){super(e),this.params=t}clone(){return new ld(null,this.params)}assemble(){return Object.assign({type:"sequence"},this.params)}}function fd(e){let t=0;return function n(i,r){i instanceof Tl&&!i.isGenerator&&!Ir(i.data)&&(e.push(r),r={name:null,source:r.name,transform:[]});if(i instanceof Yl&&(i.parent instanceof Tl&&!r.source?(r.format=Object.assign({},r.format||{},{parse:i.assembleFormatParse()}),r.transform.push(...i.assembleTransforms(!0))):r.transform.push(...i.assembleTransforms())),i instanceof Wl)return r.name||(r.name=`data_${t++}`),!r.source||r.transform.length>0?(e.push(r),i.data=r.name):i.data=r.source,void i.assemble().forEach(t=>e.push(t));(i instanceof Vf||i instanceof ld||i instanceof qf||i instanceof Hl||i instanceof tu||i instanceof Yf||i instanceof Gf||i instanceof Ll||i instanceof ud||i instanceof Xl||i instanceof Vl||i instanceof Hf||i instanceof Wf||i instanceof Qf||i instanceof cd)&&r.transform.push(i.assemble()),(i instanceof ql||i instanceof Uu||i instanceof ad||i instanceof Ql)&&(r.transform=r.transform.concat(i.assemble())),i instanceof fa&&(r.source&&0===r.transform.length?i.setSource(r.source):i.parent instanceof fa?i.setSource(r.name):(r.name||(r.name=`data_${t++}`),i.setSource(r.name),1===i.numChildren()&&(e.push(r),r={name:null,source:r.name,transform:[]})));switch(i.numChildren()){case 0:i instanceof fa&&(!r.source||r.transform.length>0)&&e.push(r);break;case 1:n(i.children[0],r);break;default:{r.name||(r.name=`data_${t++}`);let o=r.name;!r.source||r.transform.length>0?e.push(r):o=r.source,i.children.forEach(e=>{n(e,{name:null,source:o,transform:[]})});break}}}}function dd(e){return"top"===e||"left"===e?"header":"footer"}function pd(e,t){if(e.channelHasField(t)){const n=e.facet[t],i=ru("title",null,e.config,t);let r=zn(n,e.config,{allowDisabling:!0,includeDefault:void 0===i||!!i});e.child.component.layoutHeaders[t].title&&(r+=" / "+e.child.component.layoutHeaders[t].title,e.child.component.layoutHeaders[t].title=null);const o=R(["bottom","right"],ru("labelOrient",n,e.config,t))?"footer":"header";e.component.layoutHeaders[t]={title:r,facetFieldDef:n,[o]:"facet"===t?[]:[hd(e,t,!0)]}}}function hd(e,t,n){const i="row"===t?"height":"width";return{labels:n,sizeSignal:e.child.component.layoutSize.get(i)?e.child.getSizeSignalRef(i):void 0,axes:[]}}function md(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHeaders:i,resolve:r}=e.component;if(r.axis[t]=il(r,t),"shared"===r.axis[t]){const r="x"===t?"column":"row",o=i[r];for(const i of n.component.axes[t]){const t=dd(i.get("orient"));o[t]=o[t]||[hd(e,r,!1)];const n=Bo(i,"main",e.config,{header:!0});o[t][0].axes.push(n),i.mainExtracted=!0}}}}function gd(e){vd(e);const t=e.component.layoutSize;t.setWithExplicit("width",xd(e,"width")),t.setWithExplicit("height",xd(e,"height"))}const yd=gd,bd={vconcat:"width",hconcat:"height"};function vd(e){for(const t of e.children)t.parseLayoutSize()}function xd(e,t){const n="width"===t?"x":"y",i=e.component.resolve;let r;for(const o of e.children){const e=o.component.layoutSize.getWithExplicit(t),a=i.scale[n];if("independent"===a&&"range-step"===e.value){r=void 0;break}if(r){if("independent"===a&&r.value!==e.value){r=void 0;break}r=cl(r,e,t,"")}else r=e}if(r){for(const n of e.children)e.renameSignal(n.getName(t),e.getName(t)),n.component.layoutSize.set(t,"merged",!1);return r}return{explicit:!1,value:void 0}}function Ad(e,t){const n="width"===t?"x":"y",i=e.config,r=e.getScaleComponent(n);if(r){const e=r.get("type"),n=r.get("range");return Qi(e)&&Co(n)?"range-step":i.view[t]}return e.hasProjection?i.view[t]:"width"===t&&"text"===e.mark?i.scale.textXRangeStep:i.scale.rangeStep||Ki.rangeStep}function wd(e,t){return function(e){return e&&!s(e)&&"repeat"in e}(e.field)?e.field.repeat in t?Object.assign({},e,{field:t[e.field.repeat]}):void Ht(Pt.noSuchRepeatedValue(e.field.repeat)):e}function Cd(e,t){if(void 0!==(e=wd(e,t))){if(null===e)return null;if(function(e){return Cn(e)&&!!e.sort}(e)&&Po(e.sort)){const n=wd(e.sort,t);e=Object.assign({},e,n?{sort:n}:{})}return e}}function Fd(e,t){if(!wn(e)){if(An(e)){const n=Cd(e.condition,t);if(n)return Object.assign({},e,{condition:n});return Ne(e,["condition"])}return e}{const n=Cd(e,t);if(n)return n;if(xn(e))return{condition:e.condition}}}function Ed(e,t){const n={};for(const i in e)if(e.hasOwnProperty(i)){const r=e[i];if(o(r))n[i]=r.map(e=>Fd(e,t)).filter(e=>e);else{const e=Fd(r,t);void 0!==e&&(n[i]=e)}}return n}function Dd(e,t,n){return $n(t,Object.assign({suffix:`by_${$n(e)}`},n||{}))}class Sd extends If{constructor(e,t,n,i,r){super(e,"facet",t,n,r,i,e.resolve),this.child=Id(e.spec,this,this.getName("child"),void 0,i,r,!1),this.children=[this.child];const o=function(e,t){return en(e)?Ed(e,t):Cd(e,t)}(e.facet,i);this.facet=this.initFacet(o)}initFacet(e){return en(e)?ai(e,(e,t,n)=>R([Le,Ie],n)?void 0===t.field?(Ht(Pt.emptyFieldDef(t,n)),e):(e[n]=Ln(t,n),e):(Ht(Pt.incompatibleChannel(n,"facet")),e),{}):{facet:Ln(e,"facet")}}channelHasField(e){return!!this.facet[e]}fieldDef(e){return this.facet[e]}parseData(){this.component.data=Od(this),this.child.parseData()}parseLayoutSize(){vd(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),function(e){for(const t of bt)pd(e,t);md(e,"x"),md(e,"y")}(this)}assembleSelectionTopLevelSignals(e){return this.child.assembleSelectionTopLevelSignals(e)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(e){return this.child.assembleSelectionData(e)}getHeaderLayoutMixins(){const e={};for(const t of bt)for(const n of su){const i=this.component.layoutHeaders[t],r=i[n],{facetFieldDef:o}=i;if(o){const n=ru("titleOrient",o,this.config,t);if(R(["right","bottom"],n)){const i=iu(t,n);e.titleAnchor=e.titleAnchor||{},e.titleAnchor[i]="end"}}if(r&&r[0]){const r="row"===t?"height":"width",o="header"===n?"headerBand":"footerBand";"facet"===t||this.child.component.layoutSize.get(r)||(e[o]=e[o]||{},e[o][t]=.5),i.title&&(e.offset=e.offset||{},e.offset["row"===t?"rowTitle":"columnTitle"]=10)}}return e}assembleDefaultLayout(){const{column:e,row:t}=this.facet,n=e?this.columnDistinctSignal():t?1:void 0;let i="all";return(t||"independent"!==this.component.resolve.scale.x)&&(e||"independent"!==this.component.resolve.scale.y)||(i="none"),Object.assign({},this.getHeaderLayoutMixins(),n?{columns:n}:{},{bounds:"full",align:i})}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(!(this.parent&&this.parent instanceof Sd)){return{signal:`length(data(\'${this.getName("column_domain")}\'))`}}}assembleGroup(e){return this.parent&&this.parent instanceof Sd?Object.assign({},this.channelHasField("column")?{encode:{update:{columns:{field:$n(this.facet.column,{prefix:"distinct"})}}}}:{},super.assembleGroup(e)):super.assembleGroup(e)}getCardinalityAggregateForChild(){const e=[],t=[],n=[];if(this.child instanceof Sd){if(this.child.channelHasField("column")){const i=$n(this.child.facet.column);e.push(i),t.push("distinct"),n.push(`distinct_${i}`)}}else for(const i of["x","y"]){const r=this.child.component.scales[i];if(r&&!r.merged){const o=r.get("type"),a=r.get("range");if(Qi(o)&&Co(a)){const r=bf(vf(this.child,i));r?(e.push(r),t.push("distinct"),n.push(`distinct_${r}`)):Ht("Unknown field for ${channel}. Cannot calculate view size.")}}}return{fields:e,ops:t,as:n}}assembleFacet(){const{name:e,data:t}=this.component.data.facetRoot,{row:n,column:i}=this.facet,{fields:r,ops:a,as:s}=this.getCardinalityAggregateForChild(),u=[];for(const e of bt){const t=this.facet[e];if(t){u.push($n(t));const{bin:c,sort:l}=t;if(Xn(c)&&u.push($n(t,{binSuffix:"end"})),Po(l)){const{field:e,op:o=Ro}=l,u=Dd(t,l);n&&i?(r.push(u),a.push("max"),s.push(u)):(r.push(e),a.push(o),s.push(u))}else if(o(l)){const n=nu(t,e);r.push(n),a.push("max"),s.push(n)}}}const c=!!n&&!!i;return Object.assign({name:e,data:t,groupby:u},c||r.length?{aggregate:Object.assign({},c?{cross:c}:{},r.length?{fields:r,ops:a,as:s}:{})}:{})}facetSortFields(e){const{facet:t}=this,n=t[e];return n?Po(n.sort)?[Dd(n,n.sort,{expr:"datum"})]:o(n.sort)?[nu(n,e,{expr:"datum"})]:[$n(n,{expr:"datum"})]:[]}facetSortOrder(e){const{facet:t}=this,n=t[e];if(n){const{sort:e}=n;return[(Po(e)?e.order:!o(e)&&e)||"ascending"]}return[]}assembleLabelTitle(){const{facet:e,config:t}=this;if(e.facet)return pu(e.facet,"facet",t);const n={row:["top","bottom"],column:["left","right"]};for(const i of au)if(e[i]){const r=ru("labelOrient",e[i],t,i);if(R(n[i],r))return pu(e[i],i,t)}}assembleMarks(){const{child:e}=this,t=function(e){const t=[],n=fd(t);return e.children.forEach(t=>n(t,{source:e.name,name:null,transform:[]})),t}(this.component.data.facetRoot),n=e.assembleGroupEncodeEntry(!1),i=this.assembleLabelTitle()||e.assembleTitle(),r=e.assembleGroupStyle();return[Object.assign({name:this.getName("cell"),type:"group"},i?{title:i}:{},r?{style:r}:{},{from:{facet:this.assembleFacet()},sort:{field:M(bt.map(e=>this.facetSortFields(e))),order:M(bt.map(e=>this.facetSortOrder(e)))}},t.length>0?{data:t}:{},n?{encode:{update:n}}:{},e.assembleGroup(function(e,t){if(e.component.selection&&V(e.component.selection).length){const n=u(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:wu("mousemove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return t}(this,[])))]}getMapping(){return this.facet}}function kd(e,t){for(const n of t){const t=n.data;if((!e.name||!n.hasName()||e.name===n.dataName)&&!(e.format&&e.format.mesh&&t.format&&t.format.feature))if(qr(e)&&qr(t)){if($(e.values,t.values))return n}else if(Ir(e)&&Ir(t)){if(e.url===t.url)return n}else if(Wr(e)&&e.name===n.dataName)return n}return null}function Od(e){let t=function(e,t){if(e.data||!e.parent){const n=kd(e.data,t);if(n)return Hr(e.data)||(n.data.format=L({},e.data.format,n.data.format)),!n.hasName()&&e.data.name&&(n.dataName=e.data.name),n;{const n=new Tl(e.data);return t.push(n),n}}return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}(e,e.component.data.sources);const{outputNodes:n,outputNodeRefCounts:i}=e.component.data,r=e.parent?e.parent.component.data.ancestorParse.clone():new sd,o=e.data;Hr(o)?(Gr(o)?t=new ld(t,o.sequence):Vr(o)&&(t=new Vf(t,o.graticule)),r.parseNothing=!0):o&&o.format&&null===o.format.parse&&(r.parseNothing=!0),t=Yl.makeExplicit(t,e,r)||t,!rc(e)||!zf(e)&&!Mf(e)||e.parent&&Mf(e.parent)||(t=new Qf(t));const a=e.parent&&Mf(e.parent);(zf(e)||Rf(e))&&a&&(t=ql.makeFromEncoding(t,e)||t),e.transforms.length>0&&(t=function(e,t,n){let i=0;for(const r of t.transforms){let o,a=void 0;if(mo(r))o=e=new tu(e,r),a="derived";else if(uo(r))o=e=Yl.makeImplicitFromFilterTransform(e,r,n)||e,e=new Hl(e,t,r.filter);else if(go(r))o=e=ql.makeFromTransform(e,r,t),a="number";else if(bo(r))o=e=Uu.makeFromTransform(e,r),a="date",void 0===n.getWithExplicit(r.field).value&&(e=new Yl(e,{[r.field]:a}),n.set(r.field,a,!1));else if(vo(r))o=e=Ll.makeFromTransform(e,r),a="number",rc(t)&&(e=new Qf(e));else if(co(r))o=e=ud.make(e,t,r,i++),a="derived";else if(fo(r))o=e=new Xl(e,r),a="number";else if(po(r))o=e=new Vl(e,r),a="number";else if(xo(r))o=e=Ql.makeFromTransform(e,r),a="derived";else if(Ao(r))o=e=new Hf(e,r),a="derived";else if(ho(r))o=e=new Wf(e,r),a="derived";else if(lo(r))e=new cd(e,r);else{if(!yo(r)){Ht(Pt.invalidTransformIgnored(r));continue}o=e=ad.makeFromTransform(e,r),a="derived"}if(o&&void 0!==a)for(const e of o.producedFields())n.set(e,a,!1)}return e}(t,e,r)),t=Yl.makeImplicitFromEncoding(t,e,r)||t,zf(e)&&(t=Gf.parseAll(t,e),t=Yf.parseAll(t,e)),(zf(e)||Rf(e))&&(a||(t=ql.makeFromEncoding(t,e)||t),t=Uu.makeFromEncoding(t,e)||t,t=tu.parseAllForSortIndex(t,e));const s=e.getName(Xr),u=new fa(t,s,Xr,i);if(n[s]=u,t=u,zf(e)){const n=Ll.makeFromEncoding(t,e);n&&(t=n,rc(e)&&(t=new Qf(t))),t=ad.makeFromEncoding(t,e)||t,t=Ql.makeFromEncoding(t,e)||t}zf(e)&&(t=qf.make(t,e)||t);const c=e.getName(Qr),l=new fa(t,c,Qr,i);n[c]=l,t=l;let f=null;if(Rf(e)){const i=e.getName("facet");t=function(e,t){const{row:n,column:i}=t;if(n&&i){let t=null;for(const r of[n,i])if(Po(r.sort)){const{field:n,op:i=Ro}=r.sort;e=t=new Vl(e,{joinaggregate:[{op:i,field:n,as:Dd(r,r.sort,{forAs:!0})}],groupby:[$n(r)]})}return t}return null}(t=tu.parseAllForSortIndex(t,e),e.facet)||t,f=new Wl(t,e,i,l.getSource()),n[i]=f,t=f}return Object.assign({},e.component.data,{outputNodes:n,outputNodeRefCounts:i,raw:u,main:l,facetRoot:f,ancestorParse:r})}class $d extends Lf{constructor(e,t,n,i,r,o,a){super(e,t,n,i,r,o,a)}parseData(){this.component.data=Od(this),this.children.forEach(e=>{e.parseData()})}parseSelections(){this.component.selection={};for(const e of this.children)e.parseSelections(),V(e.component.selection).forEach(t=>{this.component.selection[t]=e.component.selection[t]})}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){for(const e of this.children)e.parseAxesAndHeaders()}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){return this.children.forEach(e=>e.assembleSignals()),[]}assembleLayoutSignals(){return this.children.reduce((e,t)=>[...e,...t.assembleLayoutSignals()],bu(this))}assembleSelectionData(e){return this.children.reduce((e,t)=>t.assembleSelectionData(e),e)}assembleMarks(){return this.children.map(e=>{const t=e.assembleTitle(),n=e.assembleGroupStyle(),i=e.assembleGroupEncodeEntry(!1);return Object.assign({type:"group",name:e.getName("group")},t?{title:t}:{},n?{style:n}:{},i?{encode:{update:i}}:{},e.assembleGroup())})}}class Bd extends $d{constructor(e,t,n,i,r){super(e,"concat",t,n,r,i,e.resolve),e.resolve&&e.resolve.axis&&("shared"===e.resolve.axis.x||"shared"===e.resolve.axis.y)&&Ht(Pt.CONCAT_CANNOT_SHARE_AXIS),this.concatType=fr(e)?"vconcat":dr(e)?"hconcat":"concat",this.children=this.getChildren(e).map((e,t)=>Id(e,this,this.getName("concat_"+t),void 0,i,r,!1))}getChildren(e){return fr(e)?e.vconcat:dr(e)?e.hconcat:e.concat}parseLayoutSize(){!function(e){vd(e);const t=e.component.layoutSize,n=bd[e.concatType];n&&t.setWithExplicit(n,xd(e,n))}(this)}parseAxisGroup(){return null}assembleDefaultLayout(){return Object.assign({},"vconcat"===this.concatType?{columns:1}:{},{bounds:"full",align:"each"})}}class Nd extends rl{constructor(e={},t={},n=!1){super(),this.explicit=e,this.implicit=t,this.mainExtracted=n}clone(){return new Nd(B(this.explicit),B(this.implicit),this.mainExtracted)}hasAxisPart(e){return"axis"===e||("grid"===e||"title"===e?!!this.get(e):!(!1===(t=this.get(e))||null===t));var t}}const jd={bottom:"top",top:"bottom",left:"right",right:"left"};function _d(e,t){if(!e)return t.map(e=>e.clone());{if(e.length!==t.length)return;const n=e.length;for(let i=0;i<n;i++){const n=e[i],r=t[i];if(!!n!=!!r)return;if(n&&r){const t=n.getWithExplicit("orient"),o=r.getWithExplicit("orient");if(t.explicit&&o.explicit&&t.value!==o.value)return;e[i]=Td(n,r)}}}return e}function Td(e,t){for(const n of $o){const i=cl(e.getWithExplicit(n),t.getWithExplicit(n),n,"axis",(e,t)=>{switch(n){case"title":return ca(e,t);case"gridScale":return{explicit:e.explicit,value:se(e.value,t.value)}}return ul(e,t,n,"axis")});e.setWithExplicit(n,i)}return e}function zd(e,t){const n="x"===t?"x2":"y2",i=e.fieldDef(t),r=e.fieldDef(n),o=i?i.title:void 0,a=r?r.title:void 0;return o&&a?ua(o,a):o||(a||(void 0!==o?o:void 0!==a?a:void 0))}function Rd(e,t){const n=t.axis(e),i=new Nd;$o.forEach(r=>{const o=function(e,t,n,i){const r=i.fieldDef(n),o=qo(i,t,n,r),a=se(t.orient,Vo(n));switch(e){case"scale":return i.scaleName(n);case"gridScale":return Io(i,n);case"format":if(Hn(r))return;return ta(r,t.format,i.config);case"formatType":if(Hn(r))return;return t.formatType;case"grid":if(Jn(i.fieldDef(n).bin))return!1;{const e=i.getScaleComponent(n).get("type");return se(t.grid,Lo(e,r))}case"labelAlign":return se(t.labelAlign,Ho(o,a));case"labelAngle":return o;case"labelBaseline":return se(t.labelBaseline,Wo(o,a));case"labelFlush":return se(t.labelFlush,Go(r,n));case"labelOverlap":{const e=i.getScaleComponent(n).get("type");return se(t.labelOverlap,Yo(r,e))}case"orient":return a;case"tickCount":{const e=i.getScaleComponent(n).get("type"),o="x"===n?"width":"y"===n?"height":void 0,a=o?i.getSizeSignalRef(o):void 0;return se(t.tickCount,Qo({fieldDef:r,scaleType:e,size:a}))}case"title":{const e="x"===n?"x2":"y2",o=i.fieldDef(e);return se(t.title,zd(i,n),sa([vn(r)],o?[vn(o)]:[]))}case"values":return Xo(t,0,r)}return s=e,Oo[s]?t[e]:void 0;var s}(r,n,e,t);if(void 0!==o){const a=function(e,t,n,i,r){switch(t){case"titleAngle":case"labelAngle":return e===de(n[t]);case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(e===zd(i,r))return!0}return e===n[t]}(o,r,n,t,e),s=Mo(r,t.config,e,i.get("orient"),t.getScaleComponent(e).get("type"));a||void 0===s?i.set(r,o,a):R(["grid","orient"],r)&&s&&i.set(r,s,!1)}});const r=n.encoding||{},o=Do.reduce((n,o)=>{if(!i.hasAxisPart(o))return n;const a=tl(r[o]||{},t),s="labels"===o?function(e,t,n){const i=e.fieldDef(t)||("x"===t?e.fieldDef("x2"):"y"===t?e.fieldDef("y2"):void 0),r=e.axis(t),o=e.config;let a={};if(Hn(i)){const n=e.getScaleComponent(t).get("type")===Pi.UTC,s=oa("datum.value",i.timeUnit,r.format,o.axis.shortTimeLabels,null,n);s&&(a.text={signal:s})}return a=Object.assign({},a,n),0===V(a).length?void 0:a}(t,e,a):a;return void 0!==s&&V(s).length>0&&(n[o]={update:s}),n},{});return V(o).length>0&&i.set("encode",o,!!n.encoding||void 0!==n.labelAngle),i}function Pd(e,t,n){const i=Se(e)?Object.assign({},e):{type:e},r=i.orient||Zo("orient",i,n);return i.orient=function(e,t,n){switch(e){case ge:case we:case Ce:case ve:case ye:return}const{x:i,y:r,x2:o,y2:a}=t;switch(e){case he:if(wn(i)&&Jn(i.bin))return"vertical";if(wn(r)&&Jn(r.bin))return"horizontal";if(a||o){if(n)return n;if(!o&&wn(i)&&i.type===hn&&!Xn(i.bin))return"horizontal";if(!a&&wn(r)&&r.type===hn&&!Xn(r.bin))return"vertical"}case be:if(o&&a)return;case pe:if(a)return wn(r)&&Jn(r.bin)?"horizontal":"vertical";if(o)return wn(i)&&Jn(i.bin)?"vertical":"horizontal";if(e===be){if(t.x&&!t.y)return"vertical";if(t.y&&!t.x)return"horizontal"}case me:case xe:{const i=wn(t.x)&&Bn(t.x),r=wn(t.y)&&Bn(t.y);if(i&&!r)return"tick"!==e?"horizontal":"vertical";if(!i&&r)return"tick"!==e?"vertical":"horizontal";if(i&&r){const i=t.x,r=t.y,o=i.type===gn,a=r.type===gn;return o&&!a?"tick"!==e?"vertical":"horizontal":!o&&a?"tick"!==e?"horizontal":"vertical":!i.aggregate&&r.aggregate?"tick"!==e?"vertical":"horizontal":i.aggregate&&!r.aggregate?"tick"!==e?"horizontal":"vertical":n||"vertical"}return n||void 0}}return"vertical"}(i.type,t,r),void 0!==r&&r!==i.orient&&Ht(Pt.orientOverridden(i.orient,r)),void 0===se(i.opacity,Zo("opacity",i,n))&&(i.opacity=function(e,t){if(R([ge,xe,we,Ce],e)&&!ti(t))return.7;return}(i.type,t)),void 0===i.filled&&(i.filled=function(e,t){const n=Zo("filled",e,t),i=e.type;return se(n,i!==ge&&i!==me&&i!==be)}(i,n)),void 0===(i.cursor||Zo("cursor",i,n))&&(i.cursor=function(e,t,n){if(t.href||e.href||Zo("href",e,n))return"pointer";return e.cursor}(i,t,n)),i}class Ud extends If{constructor(e,t,n,i={},r,o,a){super(e,"unit",t,n,o,r,void 0,e.view),this.fit=a,this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection={},this.children=[],this.initSize(Object.assign({},i,e.width?{width:e.width}:{},e.height?{height:e.height}:{}));const s=Se(e.mark)?e.mark.type:e.mark,u=this.encoding=ii(function(e,t){return Ed(e,t)}(e.encoding||{},r),s);this.markDef=Pd(e.mark,u,o),this.stack=kr(s,u,this.config.stack),this.specifiedScales=this.initScales(s,u),this.specifiedAxes=this.initAxes(u),this.specifiedLegends=this.initLegend(u),this.specifiedProjection=e.projection,this.selection=e.selection}get hasProjection(){const{encoding:e}=this,t=this.mark===Fe,n=e&&ht.some(t=>wn(e[t]));return t||n}scaleDomain(e){const t=this.specifiedScales[e];return t?t.domain:void 0}axis(e){return this.specifiedAxes[e]}legend(e){return this.specifiedLegends[e]}initScales(e,t){return _t.reduce((e,n)=>{let i,r;const o=t[n];return wn(o)?(i=o,r=o.scale):An(o)&&(i=o.condition,r=o.condition.scale),i&&(e[n]=r||{}),e},{})}initAxes(e){return[We,He].reduce((t,n)=>{const i=e[n];if(wn(i)||n===We&&wn(e.x2)||n===He&&wn(e.y2)){const e=wn(i)?i.axis:null;null!==e&&(t[n]=Object.assign({},e))}return t},{})}initLegend(e){return Nt.reduce((t,n)=>{const i=e[n];if(i){const e=wn(i)?i.legend:An(i)?i.condition.legend:null;null!==e&&!1!==e&&function(e){switch(e){case Ze:case Ke:case et:case nt:case tt:case it:return!0;case rt:case ot:case at:return!1}}(n)&&(t[n]=Object.assign({},e))}return t},{})}parseData(){this.component.data=Od(this)}parseLayoutSize(){!function(e){const t=e.component.layoutSize;if(!t.explicit.width){const n=Ad(e,"width");t.set("width",n,!1)}if(!t.explicit.height){const n=Ad(e,"height");t.set("height",n,!1)}}(this)}parseSelections(){this.component.selection=function(e,t){const n={},i=e.config.selection;t&&(t=B(t));for(let r in t){if(!t.hasOwnProperty(r))continue;const o=t[r],a=Ne(i[o.type],["fields","encodings"]);for(const e in a)"encodings"===e&&o.fields||"fields"===e&&o.encodings||("mark"===e&&(o[e]=Object.assign({},a[e],o[e])),void 0!==o[e]&&!0!==o[e]||(o[e]=a[e]||o[e]));const u=n[r=Z(r)]=Object.assign({},o,{name:r,events:s(o.on)?wu(o.on,"scope"):o.on});bc(u,t=>{t.parse&&t.parse(e,o,u)})}return n}(this,this.selection)}parseMarkGroup(){this.component.mark=nd(this)}parseAxesAndHeaders(){var e;this.component.axes=(e=this,$t.reduce((t,n)=>(e.component.scales[n]&&e.axis(n)&&(t[n]=[Rd(n,e)]),t),{}))}assembleSelectionTopLevelSignals(e){return function(e,t){let n=!1;nc(e,(i,r)=>{const o=i.name,a=u(o+Xu);t.filter(e=>e.name===o).length||t.push({name:i.name,update:`${ec}(${a}`+("global"===i.resolve?")":`, ${u(i.resolve)})`)}),n=!0,r.topLevelSignals&&(t=r.topLevelSignals(e,i,t)),bc(i,n=>{n.topLevelSignals&&(t=n.topLevelSignals(e,i,t))})}),n&&(t.filter(e=>"unit"===e.name).length||t.unshift({name:"unit",value:{},on:[{events:"mousemove",update:"isTuple(group()) ? group() : unit"}]}));return t}(this,e)}assembleSignals(){return[...No(this),...(e=this,t=[],nc(e,(n,i)=>{const r=n.name;let o=i.modifyExpr(e,n);t.push(...i.signals(e,n)),bc(n,i=>{i.signals&&(t=i.signals(e,n,t)),i.modifyExpr&&(o=i.modifyExpr(e,n,o))}),t.push({name:r+Zu,update:`modify(${u(n.name+Xu)}, ${o})`})}),t)];var e,t}assembleSelectionData(e){return function(e,t){return nc(e,e=>{t.filter(t=>t.name===e.name+Xu).length||t.push({name:e.name+Xu})}),t}(this,e)}assembleLayout(){return null}assembleLayoutSignals(){return bu(this)}assembleMarks(){let e=this.component.mark||[];return this.parent&&Mf(this.parent)||(e=xc(this,e)),e.map(this.correctDataNames)}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(e){return ei(this.encoding,e)}fieldDef(e){return Mn(this.encoding[e])}}class Md extends Lf{constructor(e,t,n,i,r,o,a){super(e,"layer",t,n,o,r,e.resolve,e.view);const s=Object.assign({},i,e.width?{width:e.width}:{},e.height?{height:e.height}:{});this.initSize(s),this.children=e.layer.map((e,t)=>{if(Cr(e))return new Md(e,this,this.getName("layer_"+t),s,r,o,a);if($e(e))return new Ud(e,this,this.getName("layer_"+t),s,r,o,a);throw new Error(Pt.INVALID_SPEC)})}parseData(){this.component.data=Od(this);for(const e of this.children)e.parseData()}parseLayoutSize(){gd(this)}parseSelections(){this.component.selection={};for(const e of this.children)e.parseSelections(),V(e.component.selection).forEach(t=>{this.component.selection[t]=e.component.selection[t]})}parseMarkGroup(){for(const e of this.children)e.parseMarkGroup()}parseAxesAndHeaders(){!function(e){const{axes:t,resolve:n}=e.component,i={top:0,bottom:0,right:0,left:0};for(const i of e.children){i.parseAxesAndHeaders();for(const r of V(i.component.axes))n.axis[r]=il(e.component.resolve,r),"shared"===n.axis[r]&&(t[r]=_d(t[r],i.component.axes[r]),t[r]||(n.axis[r]="independent",delete t[r]))}for(const r of[We,He]){for(const o of e.children)if(o.component.axes[r]){if("independent"===n.axis[r]){t[r]=(t[r]||[]).concat(o.component.axes[r]);for(const e of o.component.axes[r]){const{value:t,explicit:n}=e.getWithExplicit("orient");if(i[t]>0&&!n){const n=jd[t];i[t]>i[n]&&e.set("orient",n,!1)}i[t]++}}delete o.component.axes[r]}if("independent"===n.axis[r]&&t[r]&&t[r].length>1)for(const e of t[r])e.get("grid")&&!e.explicit.grid&&(e.implicit.grid=!1)}}(this)}assembleSelectionTopLevelSignals(e){return this.children.reduce((e,t)=>t.assembleSelectionTopLevelSignals(e),e)}assembleSignals(){return this.children.reduce((e,t)=>e.concat(t.assembleSignals()),No(this))}assembleLayoutSignals(){return this.children.reduce((e,t)=>e.concat(t.assembleLayoutSignals()),bu(this))}assembleSelectionData(e){return this.children.reduce((e,t)=>t.assembleSelectionData(e),e)}assembleTitle(){let e=super.assembleTitle();if(e)return e;for(const t of this.children)if(e=t.assembleTitle())return e}assembleLayout(){return null}assembleMarks(){return function(e,t){for(const n of e.children)zf(n)&&(t=xc(n,t));return t}(this,M(this.children.map(e=>e.assembleMarks())))}assembleLegends(){return this.children.reduce((e,t)=>e.concat(t.assembleLegends()),Ol(this))}}class Ld extends $d{constructor(e,t,n,i,r){super(e,"repeat",t,n,r,i,e.resolve),e.resolve&&e.resolve.axis&&("shared"===e.resolve.axis.x||"shared"===e.resolve.axis.y)&&Ht(Pt.REPEAT_CANNOT_SHARE_AXIS),this.repeat=e.repeat,this.children=this._initChildren(e,this.repeat,i,r)}_initChildren(e,t,n,i){const r=[],a=!o(t)&&t.row||[n?n.row:null],s=!o(t)&&t.column||[n?n.column:null],u=o(t)&&t||[n?n.repeat:null];for(const t of u)for(const n of a)for(const o of s){const a=(t?`__repeat_repeat_${t}`:"")+(n?`__repeat_row_${n}`:"")+(o?`__repeat_column_${o}`:""),s={repeat:t,row:n,column:o};r.push(Id(e.spec,this,this.getName("child"+a),void 0,s,i,!1))}return r}parseLayoutSize(){yd(this)}assembleDefaultLayout(){const{repeat:e}=this,t=o(e)?void 0:e.column?e.column.length:1;return Object.assign({},t?{columns:t}:{},{bounds:"full",align:"all"})}}function Id(e,t,n,i,r,o,a){if(tn(e))return new Sd(e,t,n,r,o);if(Cr(e))return new Md(e,t,n,i,r,o,a);if($e(e))return new Ud(e,t,n,i,r,o,a);if(pr(e))return new Ld(e,t,n,r,o);if(function(e){return fr(e)||dr(e)||lr(e)}(e))return new Bd(e,t,n,r,o);throw new Error(Pt.INVALID_SPEC)}const qd=new class extends Fr{mapUnit(e,{config:t}){if(e.encoding){const{encoding:n,transform:i}=e,{bins:r,timeUnits:o,aggregate:a,groupby:s,encoding:u}=ni(n,t),c=[...i||[],...r,...o,...a.length?[{aggregate:a,groupby:s}]:[]];return Object.assign({},e,c.length>0?{transform:c}:{},{encoding:u})}return e}};const Wd=t;e.compile=function(e,t={}){t.logger&&qt(t.logger),t.fieldTitle&&Tn(t.fieldTitle);try{const n=yr(L({},t.config,e.config)),i=Rr(e,n),r=function(e,t,n=!0){const i=Object.assign({type:"pad"},Ur(t),Ur(e));return"fit"===i.type&&(n||(Ht(Pt.FIT_NON_SINGLE),i.type="pad")),i}(e.autosize,n.autosize,Cr(i)||$e(i)),o=Id(i,null,"",void 0,void 0,n,"fit"===r.type);return o.parse(),function(e,t){zl(e.sources);let n=0,i=0;for(let i=0;i<uf&&df(e,t);i++)n++;e.sources.map(tf);for(let n=0;n<uf&&df(e,t);n++)i++;zl(e.sources),Math.max(n,i)===uf&&Ht(`Maximum optimization runs(${uf}) reached.`)}(o.component.data,o),function(e,t,n={},i){const r=e.config?Ar(e.config):void 0,o=[].concat(e.assembleSelectionData([]),function(e,t){const n=[],i=fd(n);let r=0;e.sources.forEach(e=>{e.hasName()||(e.dataName=`source_${r++}`);const t=e.assemble();i(e,t)}),n.forEach(e=>{0===e.transform.length&&delete e.transform});let o=0;for(const[e,t]of n.entries())0!==(t.transform||[]).length||t.source||n.splice(o++,0,n.splice(e,1)[0]);for(const t of n)for(const n of t.transform||[])"lookup"===n.type&&(n.from=e.outputNodes[n.from].getSource());for(const e of n)e.name in t&&(e.values=t[e.name]);return n}(e.component.data,n)),a=e.assembleProjections(),s=e.assembleTitle(),u=e.assembleGroupStyle(),c=e.assembleGroupEncodeEntry(!0);let l=e.assembleLayoutSignals();return l=l.filter(e=>"width"!==e.name&&"height"!==e.name||void 0===e.value||(t[e.name]=+e.value,!1)),{spec:Object.assign({$schema:"https://vega.github.io/schema/vega/v5.json"},e.description?{description:e.description}:{},t,s?{title:s}:{},u?{style:u}:{},c?{encode:{update:c}}:{},{data:o},a.length>0?{projections:a}:{},e.assembleGroup([...l,...e.assembleSelectionTopLevelSignals([])]),r?{config:r}:{},i?{usermeta:i}:{})}}(o,function(e,t,n){return Object.assign({autosize:1===V(n).length&&n.type?n.type:n},Lr(t),Lr(e))}(e,n,r),e.datasets,e.usermeta)}finally{t.logger&&Wt(),t.fieldTitle&&Tn(jn)}},e.extractTransforms=function(e,t){return qd.map(e,{config:t})},e.normalize=Rr,e.version=Wd,Object.defineProperty(e,"__esModule",{value:!0})});'
# vega-embed-4.2.0.min.js
Canvas._vegaembed = '!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vega"),require("vega-lite")):"function"==typeof define&&define.amd?define(["vega","vega-lite"],t):(e=e||self).vegaEmbed=t(e.vega,e.vl)}(this,function(e,t){"use strict";var n="http://www.w3.org/1999/xhtml",r={svg:"http://www.w3.org/2000/svg",xhtml:n,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function i(e){var t=e+="",n=t.indexOf(":");return n>=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),r.hasOwnProperty(t)?{space:r[t],local:e}:e}function o(e){var t=i(e);return(t.local?function(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}:function(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===n&&t.documentElement.namespaceURI===n?t.createElement(e):t.createElementNS(r,e)}})(t)}function a(){}function s(e){return null==e?a:function(){return this.querySelector(e)}}function l(){return[]}function c(e){return new Array(e.length)}function u(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}u.prototype={constructor:u,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var f="$";function p(e,t,n,r,i,o){for(var a,s=0,l=t.length,c=o.length;s<c;++s)(a=t[s])?(a.__data__=o[s],r[s]=a):n[s]=new u(e,o[s]);for(;s<l;++s)(a=t[s])&&(i[s]=a)}function h(e,t,n,r,i,o,a){var s,l,c,p={},h=t.length,d=o.length,g=new Array(h);for(s=0;s<h;++s)(l=t[s])&&(g[s]=c=f+a.call(l,l.__data__,s,t),c in p?i[s]=l:p[c]=l);for(s=0;s<d;++s)(l=p[c=f+a.call(e,o[s],s,o)])?(r[s]=l,l.__data__=o[s],p[c]=null):n[s]=new u(e,o[s]);for(s=0;s<h;++s)(l=t[s])&&p[g[s]]===l&&(i[s]=l)}function d(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function g(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function m(e){return e.trim().split(/^|\\s+/)}function v(e){return e.classList||new b(e)}function b(e){this._node=e,this._names=m(e.getAttribute("class")||"")}function y(e,t){for(var n=v(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function w(e,t){for(var n=v(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function x(){this.textContent=""}function _(){this.innerHTML=""}function S(){this.nextSibling&&this.parentNode.appendChild(this)}function k(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function C(){return null}function E(){var e=this.parentNode;e&&e.removeChild(this)}function A(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function O(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}b.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var j={},z=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(j={mouseenter:"mouseover",mouseleave:"mouseout"}));function N(e,t,n){return e=T(e,t,n),function(t){var n=t.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||e.call(this,t)}}function T(e,t,n){return function(r){var i=z;z=r;try{e.call(this,this.__data__,t,n)}finally{z=i}}}function $(e){return function(){var t=this.__on;if(t){for(var n,r=0,i=-1,o=t.length;r<o;++r)n=t[r],e.type&&n.type!==e.type||n.name!==e.name?t[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?t.length=i:delete this.__on}}}function F(e,t,n){var r=j.hasOwnProperty(e.type)?N:T;return function(i,o,a){var s,l=this.__on,c=r(t,o,a);if(l)for(var u=0,f=l.length;u<f;++u)if((s=l[u]).type===e.type&&s.name===e.name)return this.removeEventListener(s.type,s.listener,s.capture),this.addEventListener(s.type,s.listener=c,s.capture=n),void(s.value=t);this.addEventListener(e.type,c,n),s={type:e.type,name:e.name,value:t,listener:c,capture:n},l?l.push(s):this.__on=[s]}}function P(e,t,n){var r=g(e),i=r.CustomEvent;"function"==typeof i?i=new i(t,n):(i=r.document.createEvent("Event"),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}var I=[null];function W(e,t){this._groups=e,this._parents=t}function L(){return new W([[document.documentElement]],I)}W.prototype=L.prototype={constructor:W,select:function(e){"function"!=typeof e&&(e=s(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i<n;++i)for(var o,a,l=t[i],c=l.length,u=r[i]=new Array(c),f=0;f<c;++f)(o=l[f])&&(a=e.call(o,o.__data__,f,l))&&("__data__"in o&&(a.__data__=o.__data__),u[f]=a);return new W(r,this._parents)},selectAll:function(e){var t;"function"!=typeof e&&(e=null==(t=e)?l:function(){return this.querySelectorAll(t)});for(var n=this._groups,r=n.length,i=[],o=[],a=0;a<r;++a)for(var s,c=n[a],u=c.length,f=0;f<u;++f)(s=c[f])&&(i.push(e.call(s,s.__data__,f,c)),o.push(s));return new W(i,o)},filter:function(e){var t;"function"!=typeof e&&(t=e,e=function(){return this.matches(t)});for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o)for(var a,s=n[o],l=s.length,c=i[o]=[],u=0;u<l;++u)(a=s[u])&&e.call(a,a.__data__,u,s)&&c.push(a);return new W(i,this._parents)},data:function(e,t){if(!e)return m=new Array(this.size()),u=-1,this.each(function(e){m[++u]=e}),m;var n,r=t?h:p,i=this._parents,o=this._groups;"function"!=typeof e&&(n=e,e=function(){return n});for(var a=o.length,s=new Array(a),l=new Array(a),c=new Array(a),u=0;u<a;++u){var f=i[u],d=o[u],g=d.length,m=e.call(f,f&&f.__data__,u,i),v=m.length,b=l[u]=new Array(v),y=s[u]=new Array(v);r(f,d,b,y,c[u]=new Array(g),m,t);for(var w,x,_=0,S=0;_<v;++_)if(w=b[_]){for(_>=S&&(S=_+1);!(x=y[S])&&++S<v;);w._next=x||null}}return(s=new W(s,i))._enter=l,s._exit=c,s},enter:function(){return new W(this._enter||this._groups.map(c),this._parents)},exit:function(){return new W(this._exit||this._groups.map(c),this._parents)},join:function(e,t,n){var r=this.enter(),i=this,o=this.exit();return r="function"==typeof e?e(r):r.append(e+""),null!=t&&(i=t(i)),null==n?o.remove():n(o),r&&i?r.merge(i).order():i},merge:function(e){for(var t=this._groups,n=e._groups,r=t.length,i=n.length,o=Math.min(r,i),a=new Array(r),s=0;s<o;++s)for(var l,c=t[s],u=n[s],f=c.length,p=a[s]=new Array(f),h=0;h<f;++h)(l=c[h]||u[h])&&(p[h]=l);for(;s<r;++s)a[s]=t[s];return new W(a,this._parents)},order:function(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r,i=e[t],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=d);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var a,s=n[o],l=s.length,c=i[o]=new Array(l),u=0;u<l;++u)(a=s[u])&&(c[u]=a);c.sort(t)}return new W(i,this._parents).order()},call:function(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this},nodes:function(){var e=new Array(this.size()),t=-1;return this.each(function(){e[++t]=this}),e},node:function(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){var e=0;return this.each(function(){++e}),e},empty:function(){return!this.node()},each:function(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i,o=t[n],a=0,s=o.length;a<s;++a)(i=o[a])&&e.call(i,i.__data__,a,o);return this},attr:function(e,t){var n=i(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==t?n.local?function(e){return function(){this.removeAttributeNS(e.space,e.local)}}:function(e){return function(){this.removeAttribute(e)}}:"function"==typeof t?n.local?function(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}:function(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}:n.local?function(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}:function(e,t){return function(){this.setAttribute(e,t)}})(n,t))},style:function(e,t,n){return arguments.length>1?this.each((null==t?function(e){return function(){this.style.removeProperty(e)}}:"function"==typeof t?function(e,t,n){return function(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}:function(e,t,n){return function(){this.style.setProperty(e,t,n)}})(e,t,null==n?"":n)):function(e,t){return e.style.getPropertyValue(t)||g(e).getComputedStyle(e,null).getPropertyValue(t)}(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?function(e){return function(){delete this[e]}}:"function"==typeof t?function(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}:function(e,t){return function(){this[e]=t}})(e,t)):this.node()[e]},classed:function(e,t){var n=m(e+"");if(arguments.length<2){for(var r=v(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof t?function(e,t){return function(){(t.apply(this,arguments)?y:w)(this,e)}}:t?function(e){return function(){y(this,e)}}:function(e){return function(){w(this,e)}})(n,t))},text:function(e){return arguments.length?this.each(null==e?x:("function"==typeof e?function(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?"":t}}:function(e){return function(){this.textContent=e}})(e)):this.node().textContent},html:function(e){return arguments.length?this.each(null==e?_:("function"==typeof e?function(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?"":t}}:function(e){return function(){this.innerHTML=e}})(e)):this.node().innerHTML},raise:function(){return this.each(S)},lower:function(){return this.each(k)},append:function(e){var t="function"==typeof e?e:o(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})},insert:function(e,t){var n="function"==typeof e?e:o(e),r=null==t?C:"function"==typeof t?t:s(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})},remove:function(){return this.each(E)},clone:function(e){return this.select(e?O:A)},datum:function(e){return arguments.length?this.property("__data__",e):this.node().__data__},on:function(e,t,n){var r,i,o=function(e){return e.trim().split(/^|\\s+/).map(function(e){var t="",n=e.indexOf(".");return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}(e+""),a=o.length;if(!(arguments.length<2)){for(s=t?F:$,null==n&&(n=!1),r=0;r<a;++r)this.each(s(o[r],t,n));return this}var s=this.node().__on;if(s)for(var l,c=0,u=s.length;c<u;++c)for(r=0,l=s[c];r<a;++r)if((i=o[r]).type===l.type&&i.name===l.name)return l.value},dispatch:function(e,t){return this.each(("function"==typeof t?function(e,t){return function(){return P(this,e,t.apply(this,arguments))}}:function(e,t){return function(){return P(this,e,t)}})(e,t))}};var B="4.2.0";function D(e,t,n,r){return new(n||(n=Promise))(function(i,o){function a(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){e.done?i(e.value):new n(function(t){t(e.value)}).then(a,s)}l((r=r.apply(e,t||[])).next())})}var R=/("(?:[^\\\\"]|\\\\.)*")|[:,]/g,V=function(e,t){var n,r,i;return t=t||{},n=JSON.stringify([1],void 0,void 0===t.indent?2:t.indent).slice(2,-3),r=""===n?1/0:void 0===t.maxLength?80:t.maxLength,i=t.replacer,function e(t,o,a){var s,l,c,u,f,p,h,d,g,m,v,b;if(t&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0===(v=JSON.stringify(t,i)))return v;if(h=r-o.length-a,v.length<=h&&(g=v.replace(R,function(e,t){return t||e+" "})).length<=h)return g;if(null!=i&&(t=JSON.parse(v),i=void 0),"object"==typeof t&&null!==t){if(d=o+n,c=[],l=0,Array.isArray(t))for(m="[",s="]",h=t.length;l<h;l++)c.push(e(t[l],d,l===h-1?0:1)||"null");else for(m="{",s="}",h=(p=Object.keys(t)).length;l<h;l++)u=p[l],f=JSON.stringify(u)+": ",void 0!==(b=e(t[u],d,f.length+(l===h-1?0:1)))&&c.push(f+b);if(c.length>0)return[m,n+c.join(",\\n"+d),s].join("\\n"+o)}return v}(e,"",0)};function M(e,t){return e(t={exports:{}},t.exports),t.exports}var q,X=M(function(e,t){var n;t=e.exports=J,n="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,o=t.re=[],a=t.src=[],s=0,l=s++;a[l]="0|[1-9]\\\\d*";var c=s++;a[c]="[0-9]+";var u=s++;a[u]="\\\\d*[a-zA-Z-][a-zA-Z0-9-]*";var f=s++;a[f]="("+a[l]+")\\\\.("+a[l]+")\\\\.("+a[l]+")";var p=s++;a[p]="("+a[c]+")\\\\.("+a[c]+")\\\\.("+a[c]+")";var h=s++;a[h]="(?:"+a[l]+"|"+a[u]+")";var d=s++;a[d]="(?:"+a[c]+"|"+a[u]+")";var g=s++;a[g]="(?:-("+a[h]+"(?:\\\\."+a[h]+")*))";var m=s++;a[m]="(?:-?("+a[d]+"(?:\\\\."+a[d]+")*))";var v=s++;a[v]="[0-9A-Za-z-]+";var b=s++;a[b]="(?:\\\\+("+a[v]+"(?:\\\\."+a[v]+")*))";var y=s++,w="v?"+a[f]+a[g]+"?"+a[b]+"?";a[y]="^"+w+"$";var x="[v=\\\\s]*"+a[p]+a[m]+"?"+a[b]+"?",_=s++;a[_]="^"+x+"$";var S=s++;a[S]="((?:<|>)?=?)";var k=s++;a[k]=a[c]+"|x|X|\\\\*";var C=s++;a[C]=a[l]+"|x|X|\\\\*";var E=s++;a[E]="[v=\\\\s]*("+a[C]+")(?:\\\\.("+a[C]+")(?:\\\\.("+a[C]+")(?:"+a[g]+")?"+a[b]+"?)?)?";var A=s++;a[A]="[v=\\\\s]*("+a[k]+")(?:\\\\.("+a[k]+")(?:\\\\.("+a[k]+")(?:"+a[m]+")?"+a[b]+"?)?)?";var O=s++;a[O]="^"+a[S]+"\\\\s*"+a[E]+"$";var j=s++;a[j]="^"+a[S]+"\\\\s*"+a[A]+"$";var z=s++;a[z]="(?:^|[^\\\\d])(\\\\d{1,16})(?:\\\\.(\\\\d{1,16}))?(?:\\\\.(\\\\d{1,16}))?(?:$|[^\\\\d])";var N=s++;a[N]="(?:~>?)";var T=s++;a[T]="(\\\\s*)"+a[N]+"\\\\s+",o[T]=new RegExp(a[T],"g");var $=s++;a[$]="^"+a[N]+a[E]+"$";var F=s++;a[F]="^"+a[N]+a[A]+"$";var P=s++;a[P]="(?:\\\\^)";var I=s++;a[I]="(\\\\s*)"+a[P]+"\\\\s+",o[I]=new RegExp(a[I],"g");var W=s++;a[W]="^"+a[P]+a[E]+"$";var L=s++;a[L]="^"+a[P]+a[A]+"$";var B=s++;a[B]="^"+a[S]+"\\\\s*("+x+")$|^$";var D=s++;a[D]="^"+a[S]+"\\\\s*("+w+")$|^$";var R=s++;a[R]="(\\\\s*)"+a[S]+"\\\\s*("+x+"|"+a[E]+")",o[R]=new RegExp(a[R],"g");var V=s++;a[V]="^\\\\s*("+a[E]+")\\\\s+-\\\\s+("+a[E]+")\\\\s*$";var M=s++;a[M]="^\\\\s*("+a[A]+")\\\\s+-\\\\s+("+a[A]+")\\\\s*$";var q=s++;a[q]="(<|>)?=?\\\\s*\\\\*";for(var X=0;X<35;X++)n(X,a[X]),o[X]||(o[X]=new RegExp(a[X]));function H(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof J)return e;if("string"!=typeof e)return null;if(e.length>r)return null;if(!(t.loose?o[_]:o[y]).test(e))return null;try{return new J(e,t)}catch(e){return null}}function J(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof J){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof J))return new J(e,t);n("SemVer",e,t),this.options=t,this.loose=!!t.loose;var a=e.trim().match(t.loose?o[_]:o[y]);if(!a)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+a[1],this.minor=+a[2],this.patch=+a[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");a[4]?this.prerelease=a[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t<i)return t}return e}):this.prerelease=[],this.build=a[5]?a[5].split("."):[],this.format()}t.parse=H,t.valid=function(e,t){var n=H(e,t);return n?n.version:null},t.clean=function(e,t){var n=H(e.trim().replace(/^[=v]+/,""),t);return n?n.version:null},t.SemVer=J,J.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},J.prototype.toString=function(){return this.version},J.prototype.compare=function(e){return n("SemVer.compare",this.version,this.options,e),e instanceof J||(e=new J(e,this.options)),this.compareMain(e)||this.comparePre(e)},J.prototype.compareMain=function(e){return e instanceof J||(e=new J(e,this.options)),G(this.major,e.major)||G(this.minor,e.minor)||G(this.patch,e.patch)},J.prototype.comparePre=function(e){if(e instanceof J||(e=new J(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;var t=0;do{var r=this.prerelease[t],i=e.prerelease[t];if(n("prerelease compare",t,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return G(r,i)}while(++t)},J.prototype.inc=function(e,t){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t),this.inc("pre",t);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t),this.inc("pre",t);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":if(0===this.prerelease.length)this.prerelease=[0];else{for(var n=this.prerelease.length;--n>=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,n,r){"string"==typeof n&&(r=n,n=void 0);try{return new J(e,n).inc(t,r).version}catch(e){return null}},t.diff=function(e,t){if(Q(e,t))return null;var n=H(e),r=H(t),i="";if(n.prerelease.length||r.prerelease.length){i="pre";var o="prerelease"}for(var a in n)if(("major"===a||"minor"===a||"patch"===a)&&n[a]!==r[a])return i+a;return o},t.compareIdentifiers=G;var U=/^[0-9]+$/;function G(e,t){var n=U.test(e),r=U.test(t);return n&&r&&(e=+e,t=+t),e===t?0:n&&!r?-1:r&&!n?1:e<t?-1:1}function Y(e,t,n){return new J(e,n).compare(new J(t,n))}function Z(e,t,n){return Y(e,t,n)>0}function K(e,t,n){return Y(e,t,n)<0}function Q(e,t,n){return 0===Y(e,t,n)}function ee(e,t,n){return 0!==Y(e,t,n)}function te(e,t,n){return Y(e,t,n)>=0}function ne(e,t,n){return Y(e,t,n)<=0}function re(e,t,n,r){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e===n;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),e!==n;case"":case"=":case"==":return Q(e,n,r);case"!=":return ee(e,n,r);case">":return Z(e,n,r);case">=":return te(e,n,r);case"<":return K(e,n,r);case"<=":return ne(e,n,r);default:throw new TypeError("Invalid operator: "+t)}}function ie(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ie){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof ie))return new ie(e,t);n("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===oe?this.value="":this.value=this.operator+this.semver.version,n("comp",this)}t.rcompareIdentifiers=function(e,t){return G(t,e)},t.major=function(e,t){return new J(e,t).major},t.minor=function(e,t){return new J(e,t).minor},t.patch=function(e,t){return new J(e,t).patch},t.compare=Y,t.compareLoose=function(e,t){return Y(e,t,!0)},t.rcompare=function(e,t,n){return Y(t,e,n)},t.sort=function(e,n){return e.sort(function(e,r){return t.compare(e,r,n)})},t.rsort=function(e,n){return e.sort(function(e,r){return t.rcompare(e,r,n)})},t.gt=Z,t.lt=K,t.eq=Q,t.neq=ee,t.gte=te,t.lte=ne,t.cmp=re,t.Comparator=ie;var oe={};function ae(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ae)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ae(e.raw,t);if(e instanceof ie)return new ae(e.value,t);if(!(this instanceof ae))return new ae(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\\s*\\|\\|\\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function se(e,t){for(var n=!0,r=e.slice(),i=r.pop();n&&r.length;)n=r.every(function(e){return i.intersects(e,t)}),i=r.pop();return n}function le(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,t,n,r,i,o,a,s,l,c,u,f,p){return((t=le(n)?"":le(r)?">="+n+".0.0":le(i)?">="+n+"."+r+".0":">="+t)+" "+(s=le(l)?"":le(c)?"<"+(+l+1)+".0.0":le(u)?"<"+l+"."+(+c+1)+".0":f?"<="+l+"."+c+"."+u+"-"+f:"<="+s)).trim()}function ue(e,t,r){for(var i=0;i<e.length;i++)if(!e[i].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(i=0;i<e.length;i++)if(n(e[i].semver),e[i].semver!==oe&&e[i].semver.prerelease.length>0){var o=e[i].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}function fe(e,t,n){try{t=new ae(t,n)}catch(e){return!1}return t.test(e)}function pe(e,t,n,r){var i,o,a,s,l;switch(e=new J(e,r),t=new ae(t,r),n){case">":i=Z,o=ne,a=K,s=">",l=">=";break;case"<":i=K,o=te,a=Z,s="<",l="<=";break;default:throw new TypeError(\'Must provide a hilo val of "<" or ">"\')}if(fe(e,t,r))return!1;for(var c=0;c<t.set.length;++c){var u=t.set[c],f=null,p=null;if(u.forEach(function(e){e.semver===oe&&(e=new ie(">=0.0.0")),f=f||e,p=p||e,i(e.semver,f.semver,r)?f=e:a(e.semver,p.semver,r)&&(p=e)}),f.operator===s||f.operator===l)return!1;if((!p.operator||p.operator===s)&&o(e,p.semver))return!1;if(p.operator===l&&a(e,p.semver))return!1}return!0}ie.prototype.parse=function(e){var t=this.options.loose?o[B]:o[D],n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1],"="===this.operator&&(this.operator=""),n[2]?this.semver=new J(n[2],this.options.loose):this.semver=oe},ie.prototype.toString=function(){return this.value},ie.prototype.test=function(e){return n("Comparator.test",e,this.options.loose),this.semver===oe||("string"==typeof e&&(e=new J(e,this.options)),re(e,this.operator,this.semver,this.options))},ie.prototype.intersects=function(e,t){if(!(e instanceof ie))throw new TypeError("a Comparator is required");var n;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return n=new ae(e.value,t),fe(this.value,n,t);if(""===e.operator)return n=new ae(this.value,t),fe(e.semver,n,t);var r=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,a=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),s=re(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),l=re(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return r||i||o&&a||s||l},t.Range=ae,ae.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},ae.prototype.toString=function(){return this.range},ae.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var r=t?o[M]:o[V];e=e.replace(r,ce),n("hyphen replace",e),e=e.replace(o[R],"$1$2$3"),n("comparator trim",e,o[R]),e=(e=(e=e.replace(o[T],"$1~")).replace(o[I],"$1^")).split(/\\s+/).join(" ");var i=t?o[B]:o[D],a=e.split(" ").map(function(e){return function(e,t){return n("comp",e,t),e=function(e,t){return e.trim().split(/\\s+/).map(function(e){return function(e,t){n("caret",e,t);var r=t.loose?o[L]:o[W];return e.replace(r,function(t,r,i,o,a){var s;return n("caret",e,t,r,i,o,a),le(r)?s="":le(i)?s=">="+r+".0.0 <"+(+r+1)+".0.0":le(o)?s="0"===r?">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":">="+r+"."+i+".0 <"+(+r+1)+".0.0":a?(n("replaceCaret pr",a),s="0"===r?"0"===i?">="+r+"."+i+"."+o+"-"+a+" <"+r+"."+i+"."+(+o+1):">="+r+"."+i+"."+o+"-"+a+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+o+"-"+a+" <"+(+r+1)+".0.0"):(n("no pr"),s="0"===r?"0"===i?">="+r+"."+i+"."+o+" <"+r+"."+i+"."+(+o+1):">="+r+"."+i+"."+o+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+o+" <"+(+r+1)+".0.0"),n("caret return",s),s})}(e,t)}).join(" ")}(e,t),n("caret",e),e=function(e,t){return e.trim().split(/\\s+/).map(function(e){return function(e,t){var r=t.loose?o[F]:o[$];return e.replace(r,function(t,r,i,o,a){var s;return n("tilde",e,t,r,i,o,a),le(r)?s="":le(i)?s=">="+r+".0.0 <"+(+r+1)+".0.0":le(o)?s=">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":a?(n("replaceTilde pr",a),s=">="+r+"."+i+"."+o+"-"+a+" <"+r+"."+(+i+1)+".0"):s=">="+r+"."+i+"."+o+" <"+r+"."+(+i+1)+".0",n("tilde return",s),s})}(e,t)}).join(" ")}(e,t),n("tildes",e),e=function(e,t){return n("replaceXRanges",e,t),e.split(/\\s+/).map(function(e){return function(e,t){e=e.trim();var r=t.loose?o[j]:o[O];return e.replace(r,function(t,r,i,o,a,s){n("xRange",e,t,r,i,o,a,s);var l=le(i),c=l||le(o),u=c||le(a),f=u;return"="===r&&f&&(r=""),l?t=">"===r||"<"===r?"<0.0.0":"*":r&&f?(c&&(o=0),a=0,">"===r?(r=">=",c?(i=+i+1,o=0,a=0):(o=+o+1,a=0)):"<="===r&&(r="<",c?i=+i+1:o=+o+1),t=r+i+"."+o+"."+a):c?t=">="+i+".0.0 <"+(+i+1)+".0.0":u&&(t=">="+i+"."+o+".0 <"+i+"."+(+o+1)+".0"),n("xRange return",t),t})}(e,t)}).join(" ")}(e,t),n("xrange",e),e=function(e,t){return n("replaceStars",e,t),e.trim().replace(o[q],"")}(e,t),n("stars",e),e}(e,this.options)},this).join(" ").split(/\\s+/);return this.options.loose&&(a=a.filter(function(e){return!!e.match(i)})),a=a.map(function(e){return new ie(e,this.options)},this)},ae.prototype.intersects=function(e,t){if(!(e instanceof ae))throw new TypeError("a Range is required");return this.set.some(function(n){return se(n,t)&&e.set.some(function(e){return se(e,t)&&n.every(function(n){return e.every(function(e){return n.intersects(e,t)})})})})},t.toComparators=function(e,t){return new ae(e,t).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})},ae.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new J(e,this.options));for(var t=0;t<this.set.length;t++)if(ue(this.set[t],e,this.options))return!0;return!1},t.satisfies=fe,t.maxSatisfying=function(e,t,n){var r=null,i=null;try{var o=new ae(t,n)}catch(e){return null}return e.forEach(function(e){o.test(e)&&(r&&-1!==i.compare(e)||(i=new J(r=e,n)))}),r},t.minSatisfying=function(e,t,n){var r=null,i=null;try{var o=new ae(t,n)}catch(e){return null}return e.forEach(function(e){o.test(e)&&(r&&1!==i.compare(e)||(i=new J(r=e,n)))}),r},t.minVersion=function(e,t){e=new ae(e,t);var n=new J("0.0.0");if(e.test(n))return n;if(n=new J("0.0.0-0"),e.test(n))return n;n=null;for(var r=0;r<e.set.length;++r){var i=e.set[r];i.forEach(function(e){var t=new J(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":n&&!Z(n,t)||(n=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}})}if(n&&e.test(n))return n;return null},t.validRange=function(e,t){try{return new ae(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,n){return pe(e,t,"<",n)},t.gtr=function(e,t,n){return pe(e,t,">",n)},t.outside=pe,t.prerelease=function(e,t){var n=H(e,t);return n&&n.prerelease.length?n.prerelease:null},t.intersects=function(e,t,n){return e=new ae(e,n),t=new ae(t,n),e.intersects(t)},t.coerce=function(e){if(e instanceof J)return e;if("string"!=typeof e)return null;var t=e.match(o[z]);if(null==t)return null;return H(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}}),H=(X.SEMVER_SPEC_VERSION,X.re,X.src,X.parse,X.valid,X.clean,X.SemVer,X.inc,X.diff,X.compareIdentifiers,X.rcompareIdentifiers,X.major,X.minor,X.patch,X.compare,X.compareLoose,X.rcompare,X.sort,X.rsort,X.gt,X.lt,X.eq,X.neq,X.gte,X.lte,X.cmp,X.Comparator,X.Range,X.toComparators,X.satisfies),J=(X.maxSatisfying,X.minSatisfying,X.minVersion,X.validRange,X.ltr,X.gtr,X.outside,X.prerelease,X.intersects,X.coerce,M(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=/\\/schema\\/([\\w-]+)\\/([\\w\\.\\-]+)\\.json$/g.exec(e).slice(1,3);return{library:t[0],version:t[1]}}})),U=(q=J)&&q.__esModule&&Object.prototype.hasOwnProperty.call(q,"default")?q.default:q;const G={background:"#fff",arc:{fill:"#4572a7"},area:{fill:"#4572a7"},line:{stroke:"#4572a7",strokeWidth:2},path:{stroke:"#4572a7"},rect:{fill:"#4572a7"},shape:{stroke:"#4572a7"},symbol:{fill:"#4572a7",strokeWidth:1.5,size:50},axis:{bandPosition:.5,grid:!0,gridColor:"#000000",gridOpacity:1,gridWidth:.5,labelPadding:10,tickSize:5,tickWidth:.5},axisBand:{grid:!1,tickExtra:!0},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:50,symbolType:"square"},range:{category:["#4572a7","#aa4643","#8aa453","#71598e","#4598ae","#d98445","#94aace","#d09393","#b9cc98","#a99cbc"]}},Y={group:{fill:"#e5e5e5"},arc:{fill:"#000"},area:{fill:"#000"},line:{stroke:"#000"},path:{stroke:"#000"},rect:{fill:"#000"},shape:{stroke:"#000"},symbol:{fill:"#000",size:40},axis:{domain:!1,grid:!0,gridColor:"#FFFFFF",gridOpacity:1,labelColor:"#7F7F7F",labelPadding:4,tickColor:"#7F7F7F",tickSize:5.67,titleFontSize:16,titleFontWeight:"normal"},legend:{labelBaseline:"middle",labelFontSize:11,symbolSize:40},range:{category:["#000000","#7F7F7F","#1A1A1A","#999999","#333333","#B0B0B0","#4D4D4D","#C9C9C9","#666666","#DCDCDC"]}},Z={background:"#f9f9f9",arc:{fill:"#ab5787"},area:{fill:"#ab5787"},line:{stroke:"#ab5787"},path:{stroke:"#ab5787"},rect:{fill:"#ab5787"},shape:{stroke:"#ab5787"},symbol:{fill:"#ab5787",size:30},axis:{domainColor:"#979797",domainWidth:.5,gridWidth:.2,labelColor:"#979797",tickColor:"#979797",tickWidth:.2,titleColor:"#979797"},axisBand:{grid:!1},axisX:{grid:!0,tickSize:10},axisY:{domain:!1,grid:!0,tickSize:0},legend:{labelFontSize:11,padding:1,symbolSize:30,symbolType:"square"},range:{category:["#ab5787","#51b2e5","#703c5c","#168dd9","#d190b6","#00609f","#d365ba","#154866","#666666","#c4c4c4"]}},K={background:"#fff",arc:{fill:"#3e5c69"},area:{fill:"#3e5c69"},line:{stroke:"#3e5c69"},path:{stroke:"#3e5c69"},rect:{fill:"#3e5c69"},shape:{stroke:"#3e5c69"},symbol:{fill:"#3e5c69"},axis:{domainWidth:.5,grid:!0,labelPadding:2,tickSize:5,tickWidth:.5,titleFontWeight:"normal"},axisBand:{grid:!1},axisX:{gridWidth:.2},axisY:{gridDash:[3],gridWidth:.4},legend:{labelFontSize:11,padding:1,symbolType:"square"},range:{category:["#3e5c69","#6793a6","#182429","#0570b0","#3690c0","#74a9cf","#a6bddb","#e2ddf2"]}},Q={background:"#333",title:{color:"#fff"},style:{"guide-label":{fill:"#fff"},"guide-title":{fill:"#fff"}},axis:{domainColor:"#fff",gridColor:"#888",tickColor:"#fff"}},ee={arc:{fill:"#30a2da"},area:{fill:"#30a2da"},axisBand:{grid:!1},axisBottom:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},axisLeft:{domainColor:"#cbcbcb",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisRight:{domainColor:"#333",domainWidth:1,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,ticks:!0,titleFontSize:14,titlePadding:10},axisTop:{domain:!1,domainColor:"#333",domainWidth:3,grid:!0,gridColor:"#cbcbcb",gridWidth:1,labelColor:"#999",labelFontSize:10,labelPadding:4,tickColor:"#cbcbcb",tickSize:10,titleFontSize:14,titlePadding:10},background:"#f0f0f0",group:{fill:"#f0f0f0"},legend:{labelColor:"#333",labelFontSize:11,padding:1,symbolSize:30,symbolType:"square",titleColor:"#333",titleFontSize:14,titlePadding:10},line:{stroke:"#30a2da",strokeWidth:2},path:{stroke:"#30a2da",strokeWidth:.5},rect:{fill:"#30a2da"},range:{category:["#30a2da","#fc4f30","#e5ae38","#6d904f","#8b8b8b","#b96db8","#ff9e27","#56cc60","#52d2ca","#52689e","#545454","#9fe4f8"],diverging:["#cc0020","#e77866","#f6e7e1","#d6e8ed","#91bfd9","#1d78b5"],heatmap:["#d6e8ed","#cee0e5","#91bfd9","#549cc6","#1d78b5"]},symbol:{filled:!0,shape:"circle"},shape:{stroke:"#30a2da"},style:{bar:{binSpacing:2,fill:"#30a2da",stroke:null}},title:{anchor:"start",fontSize:24,fontWeight:600,offset:20}},te="Benton Gothic Bold, sans",ne={"category-6":["#ec8431","#829eb1","#c89d29","#3580b1","#adc839","#ab7fb4"],"fire-7":["#fbf2c7","#f9e39c","#f8d36e","#f4bb6a","#e68a4f","#d15a40","#ab4232"],"fireandice-6":["#e68a4f","#f4bb6a","#f9e39c","#dadfe2","#a6b7c6","#849eae"],"ice-7":["#edefee","#dadfe2","#c4ccd2","#a6b7c6","#849eae","#607785","#47525d"]},re={background:"#ffffff",title:{anchor:"start",font:te,fontColor:"#000000",fontSize:22,fontWeight:"normal"},arc:{fill:"#82c6df"},area:{fill:"#82c6df"},line:{stroke:"#82c6df",strokeWidth:2},path:{stroke:"#82c6df"},rect:{fill:"#82c6df"},shape:{stroke:"#82c6df"},symbol:{fill:"#82c6df",size:30},axis:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,labelFontWeight:"normal",titleFont:te,titleFontSize:13,titleFontWeight:"normal"},axisX:{labelAngle:0,labelPadding:4,tickSize:3},axisY:{labelBaseline:"middle",maxExtent:45,minExtent:45,tickSize:2,titleAlign:"left",titleAngle:0,titleX:-45,titleY:-11},legend:{labelFont:"Benton Gothic, sans",labelFontSize:11.5,symbolType:"square",titleFont:te,titleFontSize:13,titleFontWeight:"normal"},range:{category:ne["category-6"],diverging:ne["fireandice-6"],heatmap:ne["fire-7"],ordinal:ne["fire-7"],ramp:ne["fire-7"]}};var ie=Object.freeze({excel:G,ggplot2:Y,quartz:Z,vox:K,dark:Q,fivethirtyeight:ee,latimes:re}),oe="#vg-tooltip-element {\\n visibility: hidden;\\n padding: 8px;\\n position: fixed;\\n z-index: 1000;\\n font-family: sans-serif;\\n font-size: 11px;\\n border-radius: 3px;\\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.1);\\n /* The default theme is the light theme. */\\n background-color: rgba(255, 255, 255, 0.95);\\n border: 1px solid #d9d9d9;\\n color: black; }\\n #vg-tooltip-element.visible {\\n visibility: visible; }\\n #vg-tooltip-element h2 {\\n margin-top: 0;\\n margin-bottom: 10px;\\n font-size: 13px; }\\n #vg-tooltip-element table {\\n border-spacing: 0; }\\n #vg-tooltip-element table tr {\\n border: none; }\\n #vg-tooltip-element table tr td {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n padding-top: 2px;\\n padding-bottom: 2px; }\\n #vg-tooltip-element table tr td.key {\\n color: #808080;\\n max-width: 150px;\\n text-align: right;\\n padding-right: 4px; }\\n #vg-tooltip-element table tr td.value {\\n display: block;\\n max-width: 300px;\\n max-height: 7em;\\n text-align: left; }\\n #vg-tooltip-element.dark-theme {\\n background-color: rgba(32, 32, 32, 0.9);\\n border: 1px solid #f5f5f5;\\n color: white; }\\n #vg-tooltip-element.dark-theme td.key {\\n color: #bfbfbf; }\\n";const ae="vg-tooltip-element",se={offsetX:10,offsetY:10,id:ae,styleId:"vega-tooltip-style",theme:"light",disableDefaultStyle:!1,sanitize:function(e){return String(e).replace(/&/g,"&").replace(/</g,"<")},maxDepth:2};function le(e,t,n){return e.fields=t||[],e.fname=n,e}function ce(e){throw Error(e)}var ue=Array.isArray;function fe(e){return e===Object(e)}function pe(e){return"string"==typeof e}function he(e){return ue(e)?"["+e.map(he)+"]":fe(e)||pe(e)?JSON.stringify(e).replace("\\u2028","\\\\u2028").replace("\\u2029","\\\\u2029"):e}var de=[],ge=(function(e,t){var n=function(e){var t,n,r,i=[],o=null,a=0,s=e.length,l="";function c(){i.push(l+e.substring(t,n)),l="",t=n+1}for(e+="",t=n=0;n<s;++n)if("\\\\"===(r=e[n]))l+=e.substring(t,n),t=++n;else if(r===o)c(),o=null,a=-1;else{if(o)continue;t===a&&\'"\'===r?(t=n+1,o=r):t===a&&"\'"===r?(t=n+1,o=r):"."!==r||a?"["===r?(n>t&&c(),a=t=n+1):"]"===r&&(a||ce("Access path missing open bracket: "+e),a>0&&c(),a=0,t=n+1):n>t?c():t=n+1}return a&&ce("Access path missing closing bracket: "+e),o&&ce("Access path missing closing quote: "+e),n>t&&(n++,c()),i}(e),r="return _["+n.map(he).join("][")+"];";le(Function("_",r),[e=1===n.length?n[0]:e],t||e)}("id"),le(function(e){return e},de,"identity"),le(function(){return 0},de,"zero"),le(function(){return 1},de,"one"),le(function(){return!0},de,"true"),le(function(){return!1},de,"false"),function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&(n[r[i]]=e[r[i]])}return n});function me(e,t){return JSON.stringify(e,function(e){const t=[];return function(n,r){if("object"!=typeof r||null===r)return r;const i=t.indexOf(this)+1;return t.length=i,t.length>e?"[Object]":t.indexOf(r)>=0?"[Circular]":(t.push(r),r)}}(t))}class ve{constructor(e){this.options=Object.assign({},se,e);const t=this.options.id;if(this.call=this.tooltip_handler.bind(this),!this.options.disableDefaultStyle&&!document.getElementById(this.options.styleId)){const e=document.createElement("style");e.setAttribute("id",this.options.styleId),e.innerHTML=function(e){if(!/^[A-Za-z]+[-:.\\w]*$/.test(e))throw new Error("Invalid HTML ID");return oe.toString().replace(ae,e)}(t);const n=document.head;n.childNodes.length>0?n.insertBefore(e,n.childNodes[0]):n.appendChild(e)}this.el=document.getElementById(t),this.el||(this.el=document.createElement("div"),this.el.setAttribute("id",t),this.el.classList.add("vg-tooltip"),document.body.appendChild(this.el))}tooltip_handler(e,t,n,r){if(null==r||""===r)return void this.el.classList.remove("visible",`${this.options.theme}-theme`);this.el.innerHTML=function(e,t,n){if(ue(e))return`[${e.map(e=>t(pe(e)?e:me(e,n))).join(", ")}]`;if(fe(e)){let r="";const i=e,{title:o}=i,a=ge(i,["title"]);o&&(r+=`<h2>${t(o)}</h2>`);const s=Object.keys(a);if(s.length>0){r+="<table>";for(const e of s){let i=a[e];fe(i)&&(i=me(i,n)),r+=`<tr><td class="key">${t(e)}:</td><td class="value">${t(i)}</td></tr>`}r+="</table>"}return r||"{}"}return t(e)}(r,this.options.sanitize,this.options.maxDepth),this.el.classList.add("visible",`${this.options.theme}-theme`);const{x:i,y:o}=function(e,t,n,r){let i=e.clientX+n;i+t.width>window.innerWidth&&(i=+e.clientX-n-t.width);let o=e.clientY+r;return o+t.height>window.innerHeight&&(o=+e.clientY-r-t.height),{x:i,y:o}}(t,this.el.getBoundingClientRect(),this.options.offsetX,this.options.offsetY);this.el.setAttribute("style",`top: ${o}px; left: ${i}px`)}}var be=\'.vega-embed {\\n position: relative;\\n display: inline-block;\\n padding-right: 38px; }\\n .vega-embed details:not([open]) > :not(summary) {\\n display: none !important; }\\n .vega-embed summary {\\n list-style: none;\\n display: flex;\\n position: absolute;\\n top: 0;\\n right: 0;\\n padding: 6px;\\n z-index: 1000;\\n background: white;\\n box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);\\n color: #1b1e23;\\n border: 1px solid #aaa;\\n border-radius: 999px;\\n opacity: 0.2;\\n transition: opacity 0.4s ease-in;\\n outline: none;\\n cursor: pointer; }\\n .vega-embed summary::-webkit-details-marker {\\n display: none; }\\n .vega-embed details[open] summary {\\n opacity: 0.7; }\\n .vega-embed:hover summary,\\n .vega-embed:focus summary {\\n opacity: 1 !important;\\n transition: opacity 0.2s ease; }\\n .vega-embed .vega-actions {\\n position: absolute;\\n top: 35px;\\n right: -9px;\\n display: flex;\\n flex-direction: column;\\n padding-bottom: 8px;\\n padding-top: 8px;\\n border-radius: 4px;\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.2);\\n border: 1px solid #d9d9d9;\\n background: white;\\n animation-duration: 0.15s;\\n animation-name: scale-in;\\n animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5); }\\n .vega-embed .vega-actions a {\\n padding: 8px 16px;\\n font-family: sans-serif;\\n font-size: 14px;\\n font-weight: 600;\\n white-space: nowrap;\\n color: #434a56;\\n text-decoration: none; }\\n .vega-embed .vega-actions a:hover {\\n background-color: #f7f7f9;\\n color: black; }\\n .vega-embed .vega-actions::before, .vega-embed .vega-actions::after {\\n content: "";\\n display: inline-block;\\n position: absolute; }\\n .vega-embed .vega-actions::before {\\n left: auto;\\n right: 14px;\\n top: -16px;\\n border: 8px solid #0000;\\n border-bottom-color: #d9d9d9; }\\n .vega-embed .vega-actions::after {\\n left: auto;\\n right: 15px;\\n top: -14px;\\n border: 7px solid #0000;\\n border-bottom-color: #fff; }\\n\\n.vega-embed-wrapper {\\n max-width: 100%;\\n overflow: scroll;\\n padding-right: 14px; }\\n\\n@keyframes scale-in {\\n from {\\n opacity: 0;\\n transform: scale(0.6); }\\n to {\\n opacity: 1;\\n transform: scale(1); } }\\n\';function ye(t,n){if("object"!=typeof n||null===n)return t;for(const r in n)n.hasOwnProperty(r)&&void 0!==n[r]&&("object"!=typeof n[r]||e.isArray(n[r])||null===n[r]?t[r]=n[r]:"object"!=typeof t[r]||null===t[r]?t[r]=we(e.isArray(n[r].constructor)?[]:{},n[r]):we(t[r],n[r]));return t}function we(e,...t){for(const n of t)e=ye(e,n);return e}String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return this.substr(!t||t<0?0:+t,e.length)===e});const xe=e,_e=t,Se={CLICK_TO_VIEW_ACTIONS:"Click to view actions",COMPILED_ACTION:"View Compiled Vega",EDITOR_ACTION:"Open in Vega Editor",PNG_ACTION:"Save as PNG",SOURCE_ACTION:"View Source",SVG_ACTION:"Save as SVG"},ke={vega:"Vega","vega-lite":"Vega-Lite"},Ce={vega:xe.version,"vega-lite":_e?_e.version:"not available"},Ee={vega:e=>e,"vega-lite":(e,t)=>_e.compile(e,{config:t}).spec},Ae=\'\\n<svg viewBox="0 0 16 16" fill="currentColor" stroke="none" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" width="14" height="14">\\n <circle r="2" cy="8" cx="2"></circle>\\n <circle r="2" cy="8" cx="8"></circle>\\n <circle r="2" cy="8" cx="14"></circle>\\n</svg>\';function Oe(e,t,n,r){const i=`<html><head>${t}</head><body><pre><code class="json">`,o=`</code></pre>${n}</body></html>`,a=window.open("");a.document.write(i+e+o),a.document.title=`${ke[r]} JSON Source`}function je(e,t,n={}){return D(this,void 0,void 0,function*(){const r=(i=n.loader)&&"load"in i?n.loader:xe.loader(n.loader);var i;if(xe.isString(t)){const i=yield r.load(t);return je(e,JSON.parse(i),n)}const o=(n=we(n,t.usermeta&&t.usermeta.embedOptions)).patch||n.onBeforeParse,a=!0===n.actions||!1===n.actions?n.actions:we({},{export:{svg:!0,png:!0},source:!0,compiled:!0,editor:!0},n.actions||{}),s=Object.assign({},Se,n.i18n),l=n.renderer||"canvas",c=n.logLevel||xe.Warn,u=n.downloadFileName||"visualization";let f=n.config||{};if(xe.isString(f)){const i=yield r.load(f);return je(e,t,Object.assign({},n,{config:JSON.parse(i)}))}if(!1!==n.defaultStyle){const e="vega-embed-style";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.innerText=void 0===n.defaultStyle||!0===n.defaultStyle?be.toString():n.defaultStyle,document.head.appendChild(t)}}n.theme&&(f=we({},ie[n.theme],f));const p=function(e,t){if(e.$schema){const n=U(e.$schema);t&&t!==n.library&&console.warn(`The given visualization spec is written in ${ke[n.library]}, but mode argument sets ${ke[t]||t}.`);const r=n.library;return H(Ce[r],`^${n.version.slice(1)}`)||console.warn(`The input spec uses ${r} ${n.version}, but the current version of ${ke[r]} is ${Ce[r]}.`),r}return"mark"in e||"encoding"in e||"layer"in e||"hconcat"in e||"vconcat"in e||"facet"in e||"repeat"in e?"vega-lite":"marks"in e||"signals"in e||"scales"in e||"axes"in e?"vega":t||"vega"}(t,n.mode);let h=Ee[p](t,f);if("vega-lite"===p&&h.$schema){const e=U(h.$schema);H(Ce.vega,`^${e.version.slice(1)}`)||console.warn(`The compiled spec uses Vega ${e.version}, but current version is ${Ce.vega}.`)}const d=(g=e,"string"==typeof g?new W([[document.querySelector(g)]],[document.documentElement]):new W([[g]],I)).classed("vega-embed",!0).html("");var g;if(o)if(o instanceof Function)h=o(h);else if(xe.isString(o)){const e=yield r.load(o);h=we(h,JSON.parse(e))}else h=we(h,o);const m=xe.parse(h,"vega-lite"===p?{}:f),v=new xe.View(m,{loader:r,logLevel:c,renderer:l});if(!1!==n.tooltip){let e;e="function"==typeof n.tooltip?n.tooltip:new ve(!0===n.tooltip?{}:n.tooltip).call,v.tooltip(e)}let{hover:b}=n;if(void 0===b&&(b="vega-lite"!==p),b){const{hoverSet:e,updateSet:t}="boolean"==typeof b?{}:b;v.hover(e,t)}if(n&&(n.width&&v.width(n.width),n.height&&v.height(n.height),n.padding&&v.padding(n.padding)),yield v.initialize(e).runAsync(),!1!==a){let e=d;if(!1!==n.defaultStyle){const t=d.append("details").attr("title",s.CLICK_TO_VIEW_ACTIONS);e=t,t.insert("summary").html(Ae);const n=t.node();document.addEventListener("click",e=>{n.contains(e.target)||n.removeAttribute("open")})}const r=e.insert("div").attr("class","vega-actions");if(!0===a||!1!==a.export)for(const e of["svg","png"])if(!0===a||!0===a.export||a.export[e]){const t=s[`${e.toUpperCase()}_ACTION`];r.append("a").text(t).attr("href","#").attr("target","_blank").attr("download",`${u}.${e}`).on("mousedown",function(){v.toImageURL(e,n.scaleFactor).then(e=>{this.href=e}).catch(e=>{throw e}),z.preventDefault()})}if(!0!==a&&!1===a.source||r.append("a").text(s.SOURCE_ACTION).attr("href","#").on("mousedown",()=>{Oe(V(t),n.sourceHeader||"",n.sourceFooter||"",p),z.preventDefault()}),"vega-lite"!==p||!0!==a&&!1===a.compiled||r.append("a").text(s.COMPILED_ACTION).attr("href","#").on("mousedown",()=>{Oe(V(h),n.sourceHeader||"",n.sourceFooter||"","vega"),z.preventDefault()}),!0===a||!1!==a.editor){const e=n.editorUrl||"https://vega.github.io/editor/";r.append("a").text(s.EDITOR_ACTION).attr("href","#").on("mousedown",()=>{!function(e,t,n){const r=e.open(t),i=250;let o=~~(1e4/i);e.addEventListener("message",function t(n){n.source===r&&(o=0,e.removeEventListener("message",t,!1))},!1),setTimeout(function e(){o<=0||(r.postMessage(n,"*"),setTimeout(e,i),o-=1)},i)}(window,e,{config:f,mode:p,renderer:l,spec:V(t)}),z.preventDefault()})}}return{view:v,spec:t,vgSpec:h}})}function ze(e,t={}){return D(this,void 0,void 0,function*(){const n=document.createElement("div");n.classList.add("vega-embed-wrapper");const r=document.createElement("div");n.appendChild(r);const i=!0===t.actions||!1===t.actions?t.actions:Object.assign({export:!0,source:!1,compiled:!0,editor:!0},t.actions||{}),o=yield je(r,e,Object.assign({actions:i},t||{}));return n.value=o.view,n})}const Ne=(...t)=>t.length>1&&(e.isString(t[0])&&!function(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//")}(t[0])||function(e){return e instanceof L||"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}(t[0])||3===t.length)?je(t[0],t[1],t[2]):ze(t[0],t[1]);return Ne.vl=_e,Ne.container=ze,Ne.embed=je,Ne.vega=xe,Ne.default=je,Ne.version=B,Ne});\n'
if __name__ == "__main__":
argumentparser = argparse.ArgumentParser(description="VegaScope can be used within Python (import vegascope) or a shell command.")
argumentparser.add_argument("FILE", nargs="?", default="-", help="file to watch for changes; default is '-' for lines on stdin (stdin requires one JSON object per line)")
argumentparser.add_argument("-w", "--wait", type=float, default="0.1", help="poll wait time in seconds; default is 0.1 (100 ms); not applicable to stdin")
argumentparser.add_argument("-t", "--type", default="LocalCanvas", choices=["Canvas", "LocalCanvas", "TunnelCanvas"], help="type of Canvas; default is LocalCanvas")
argumentparser.add_argument("-T", "--title", default=None, help="browser window title and saved file name prefix")
argumentparser.add_argument("-b", "--host", default="0.0.0.0", help="host name to bind to; default is 0.0.0.0 for any address (not applicable to LocalCanvas or TunnelVanvas)")
argumentparser.add_argument("-p", "--port", type=int, default=0, help="port to bind to; default is 0 for any open port")
argumentparser.add_argument("-q", "--no-verbose", action="store_true", default=False, help="if supplied, do not log output to stdout (opposite of verbose)")
argumentparser.add_argument("-Q", "--no-newtab", action="store_true", default=False, help="if supplied, do not open a browser window (opposite of newtab, only applicable to LocalCanvas)")
argumentparser.add_argument("--vega", type=str, metavar="VERSION", default="5.4.0", help="Vega version to request from cdn.jsdelivr.net or \"\" to use an standalone copy.")
argumentparser.add_argument("--vega-lite", type=str, metavar="VERSION", default="3.3.0", help="Vega-Lite version to request from cdn.jsdelivr.net or \"\" to use an standalone copy.")
argumentparser.add_argument("--vega-embed", type=str, metavar="VERSION", default="4.2.0", help="Vega-Embed version to request from cdn.jsdelivr.net or \"\" to use an standalone copy.")
args = argumentparser.parse_args()
if args.type == "Canvas":
canvas = Canvas(title=args.title, host=args.host, port=args.port, verbose=args.verbose, vega=args.vega, vegalite=args.vega_lite, vegaembed=args.vega_embed)
elif args.type == "LocalCanvas":
canvas = LocalCanvas(title=args.title, port=args.port, verbose=(not args.no_verbose), newtab=(not args.no_newtab), vega=args.vega, vegalite=args.vega_lite, vegaembed=args.vega_embed)
elif args.type == "TunnelCanvas":
canvas = TunnelCanvas(title=args.title, port=args.port, verbose=(not args.no_verbose), vega=args.vega, vegalite=args.vega_lite, vegaembed=args.vega_embed)
else:
raise AssertionError(args.type)
if not args.no_verbose:
canvas.how()
if args.FILE == "-":
while True:
line = sys.stdin.readline()
try:
canvas(json.loads(line))
except Exception as err:
sys.stderr.write(str(err))
else:
lasttime = None
while True:
if os.path.exists(args.FILE) and os.stat(args.FILE).st_mtime != lasttime:
lasttime = os.stat(args.FILE).st_mtime
try:
canvas(json.load(open(args.FILE)))
except Exception as err:
sys.stderr.write(str(err))
time.sleep(args.wait)