From 2303bfd36bd6e7892e0a17ced0c746827b2cfcef Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Mon, 8 Jan 2018 10:16:32 -0400 Subject: [PATCH 01/31] Removed old commented out code. --- src/backend/mi2/mi2.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/backend/mi2/mi2.ts b/src/backend/mi2/mi2.ts index bc5d75c1..2c3685b6 100644 --- a/src/backend/mi2/mi2.ts +++ b/src/backend/mi2/mi2.ts @@ -175,18 +175,6 @@ export class MI2 extends EventEmitter implements IBackend { start(): Thenable { return Promise.resolve(true); - - // return new Promise((resolve, reject) => { - // this.once("ui-break-done", () => { - // this.log("console", "Running executable"); - // this.sendCommand("exec-continue").then((info) => { - // if (info.resultRecords.resultClass == "running") - // resolve(); - // else - // reject(); - // }, reject); - // }); - // }); } stop() { From 7e1a436ce7b661a026b7474e319024346f03f5f3 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Mon, 8 Jan 2018 10:17:26 -0400 Subject: [PATCH 02/31] =?UTF-8?q?Don=E2=80=99t=20remove=20the=20Adapter=20?= =?UTF-8?q?Output=20channel=20-=20can=20be=20useful=20for=20figuring=20out?= =?UTF-8?q?=20launch=20issues.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/extension.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index 87967630..fe3e75ea 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -97,11 +97,6 @@ class CortexDebugExtension { // Debug Events debugSessionStarted(session: vscode.DebugSession) { // Clean-up Old output channels - if (this.adapterOutputChannel) { - this.adapterOutputChannel.dispose(); - this.adapterOutputChannel = null; - } - if (this.swo) { this.swo.dispose(); this.swo = null; From 7b46cb588a6d3b99cd70bf818c8df798a33f8659 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Mon, 8 Jan 2018 10:18:14 -0400 Subject: [PATCH 03/31] Improve launching of OpenOCD based sessions to better report errors when launching (program not found, adapter not connected, etc.) --- src/openocd.ts | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/openocd.ts b/src/openocd.ts index 58a2f5dc..b2a8c70b 100644 --- a/src/openocd.ts +++ b/src/openocd.ts @@ -46,6 +46,12 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { } private processLaunchAttachRequest(response: DebugProtocol.AttachResponse, args: ConfigurationArguments, attach: boolean) { + this.quit = false; + this.attached = false; + this.started = false; + this.crashed = false; + this.debugReady = false; + portastic.find({ min: 50000, max: 52000, retrieve: 1 }).then(ports => { this.gdbPort = ports[0]; @@ -66,14 +72,17 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { }); this.openocd.on('openocd-output', this.handleAdapterOutput.bind(this)); this.openocd.on('openocd-stderr', this.handleAdapterErrorOutput.bind(this)); - this.openocd.on("launcherror", this.launchError.bind(this)); - this.openocd.on("quit", this.quitEvent.bind(this)); - - this.quit = false; - this.attached = false; - this.started = false; - this.crashed = false; - this.debugReady = false; + this.openocd.on("launcherror", (error) => { + this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server: ${error.toString()}`); + }); + this.openocd.on("quit", () => { + if (this.started) { + this.quitEvent.bind(this) + } + else { + this.sendErrorResponse(response, 103, `OpenOCD GDB Server Quit Unexpectedly. See Adapter Output for more details.`); + } + }); let timeout = null; @@ -99,9 +108,9 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { this.miDebugger.emit("ui-break-done"); }, 50); - this.sendResponse(response); this.miDebugger.start().then(() => { this.started = true; + this.sendResponse(response); if (this.crashed) this.handlePause(undefined); }, err => { From d88564204c66e8b85614de74f9775fac1e42ebcd Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Mon, 8 Jan 2018 12:39:50 -0400 Subject: [PATCH 04/31] Improved handling of launch errors for J-Link GDB server. --- src/backend/jlink.ts | 11 +++++++++- src/jlink.ts | 49 ++++++++++++++++++++++++++++++++------------ 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/src/backend/jlink.ts b/src/backend/jlink.ts index 26302ca3..e68539bb 100644 --- a/src/backend/jlink.ts +++ b/src/backend/jlink.ts @@ -6,10 +6,12 @@ export class JLink extends EventEmitter { private process: any; private buffer: string; private errbuffer: string; + private initSent: boolean; constructor(public application: string, public device: string, public gdb_port: number, public swo_raw_port: number, public swo_port: number, public ipAddress: string, public serialNumber: string) { super(); + this.initSent = false; this.buffer = ""; this.errbuffer = ""; } @@ -36,7 +38,7 @@ export class JLink extends EventEmitter { } exit() : void { - this.process.exit(); + this.process.kill(); } error() : void { @@ -53,6 +55,13 @@ export class JLink extends EventEmitter { else this.buffer += data.toString("utf8"); + if(this.buffer.indexOf('Waiting for GDB connection...') !== -1) { + if (!this.initSent) { + this.emit('jlink-init'); + this.initSent = true; + } + } + let end = this.buffer.lastIndexOf('\n'); if(end != -1) { this.onOutput(this.buffer.substr(0, end)); diff --git a/src/jlink.ts b/src/jlink.ts index 2aba22e6..db171305 100644 --- a/src/jlink.ts +++ b/src/jlink.ts @@ -44,6 +44,12 @@ class JLinkGDBDebugSession extends GDBDebugSession { } private processLaunchAttachRequest(response: DebugProtocol.LaunchResponse, args: ConfigurationArguments, attach: boolean) { + this.quit = false; + this.attached = false; + this.started = false; + this.crashed = false; + this.debugReady = false; + portastic.find({ min: 50000, max: 52000, retrieve: 3 }).then(ports => { this.gdbPort = ports[0]; this.swoPort = ports[1]; @@ -59,16 +65,27 @@ class JLinkGDBDebugSession extends GDBDebugSession { this.jlink = new JLink(args.jlinkpath || defaultExecutable, args.device, this.gdbPort, this.swoPort, this.consolePort, args.ipAddress, args.serialNumber); this.jlink.on('jlink-output', this.handleJLinkOutput.bind(this)); this.jlink.on('jlink-stderr', this.handleJLinkErrorOutput.bind(this)); - this.jlink.on("launcherror", this.launchError.bind(this)); - this.jlink.on("quit", this.quitEvent.bind(this)); - this.quit = false; - this.attached = false; - this.started = false; - this.crashed = false; - this.debugReady = false; - - this.jlink.init().then(_ => { + this.jlink.on("launcherror", (err) => { + this.sendErrorResponse(response, 103, `Failed to launch J-Link GDB Server: ${err.toString()}`); + }); + this.jlink.on("quit", () => { + if (this.started) { + this.quitEvent.bind(this) + } + else { + this.sendErrorResponse(response, 103, `J-Link GDB Server Quit Unexpectedly. See Adapter Output for more details.`); + } + }); + + let timeout = null; + + this.jlink.on('jlink-init', () => { + if(timeout) { + clearTimeout(timeout); + timeout = null; + } + this.miDebugger = new MI2(args.gdbpath || defaultGDBExecutable, ["-q", "--interpreter=mi2"], args.debugger_args); this.initDebugger(); @@ -86,9 +103,10 @@ class JLinkGDBDebugSession extends GDBDebugSession { this.miDebugger.emit("ui-break-done"); }, 50); - this.sendResponse(response); this.miDebugger.start().then(() => { this.started = true; + this.sendResponse(response); + if (this.crashed) this.handlePause(undefined); }, err => { @@ -96,10 +114,15 @@ class JLinkGDBDebugSession extends GDBDebugSession { }); }, err => { this.sendErrorResponse(response, 103, `Failed to load MI Debugger: ${err.toString()}`); - }); - }, err => { - this.sendErrorResponse(response, 103, `Failed to launch JLink Server: ${err.toString()}`); + }); }); + + this.jlink.init().then(_ => {}, _ => {}); + + timeout = setTimeout(() => { + this.jlink.exit(); + this.sendErrorResponse(response, 103, `Failed to launch JLink Server: Timeout.`); + }, 10000); }, error => { console.log('Unable to launch'); this.sendErrorResponse(response, 103, `Failed to launch JLink Server: ${error.toString()}`); From 0ed6d6e5bd69a8df2c408f09d69bcbce9b816b0f Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Mon, 8 Jan 2018 12:40:15 -0400 Subject: [PATCH 05/31] Enabled SWO decoding of float values. --- package.json | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 8633b89f..40c7eaa4 100644 --- a/package.json +++ b/package.json @@ -217,7 +217,8 @@ "enum": [ "unsigned", "signed", - "Q16.16" + "Q16.16", + "float" ], "type": "string" }, @@ -463,7 +464,8 @@ "enum": [ "unsigned", "signed", - "Q16.16" + "Q16.16", + "float" ], "type": "string" }, @@ -748,7 +750,8 @@ "enum": [ "unsigned", "signed", - "Q16.16" + "Q16.16", + "float" ], "type": "string" }, @@ -1003,7 +1006,8 @@ "enum": [ "unsigned", "signed", - "Q16.16" + "Q16.16", + "float" ], "type": "string" }, From 7897e60be1e57ec984aa286c5b437020053482f1 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Thu, 11 Jan 2018 17:07:56 -0400 Subject: [PATCH 06/31] Refactored the SWO processing to be split into multiple modules * Updated configuration options * Introduced IDs for graph data soruces * Added option for custom advanced decoders; these are supplied as a dynamically loaded JavaScript module. These advanced decoders and supply both graphing data and text output. --- config_base.json | 138 +++-- package.json | 769 +++++++++++++++++++------- src/frontend/extension.ts | 6 +- src/frontend/swo.ts | 510 ----------------- src/frontend/swo/common.ts | 70 +++ src/frontend/swo/core.ts | 167 ++++++ src/frontend/swo/decoders/advanced.ts | 63 +++ src/frontend/swo/decoders/binary.ts | 38 ++ src/frontend/swo/decoders/common.ts | 7 + src/frontend/swo/decoders/console.ts | 57 ++ src/frontend/swo/decoders/graph.ts | 39 ++ src/frontend/swo/decoders/utils.ts | 68 +++ src/frontend/swo/sources/common.ts | 6 + src/frontend/swo/sources/jlink.ts | 19 + src/frontend/swo/sources/openocd.ts | 56 ++ src/frontend/swo/websocket_server.ts | 43 ++ 16 files changed, 1290 insertions(+), 766 deletions(-) delete mode 100644 src/frontend/swo.ts create mode 100644 src/frontend/swo/common.ts create mode 100644 src/frontend/swo/core.ts create mode 100644 src/frontend/swo/decoders/advanced.ts create mode 100644 src/frontend/swo/decoders/binary.ts create mode 100644 src/frontend/swo/decoders/common.ts create mode 100644 src/frontend/swo/decoders/console.ts create mode 100644 src/frontend/swo/decoders/graph.ts create mode 100644 src/frontend/swo/decoders/utils.ts create mode 100644 src/frontend/swo/sources/common.ts create mode 100644 src/frontend/swo/sources/jlink.ts create mode 100644 src/frontend/swo/sources/openocd.ts create mode 100644 src/frontend/swo/websocket_server.ts diff --git a/config_base.json b/config_base.json index 4c63c2af..82d42ee4 100644 --- a/config_base.json +++ b/config_base.json @@ -66,17 +66,14 @@ "default": 65535, "description": "Maximum value for the X-Axis" }, - "ports": { + "plots": { "type": "array", "items": { "type": "object", "properties": { - "number": { - "type": "number", - "minimum": 0, - "maximum": 31, - "description": "The SWO port number", - "default": 0 + "graphId": { + "type": "string", + "description": "Graph Data Source Id for the plot." }, "label": { "type": "string", @@ -88,11 +85,10 @@ } }, "required": [ - "number", - "label" + "graphId" ] }, - "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section" + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section" }, "annotate": { "type": "boolean", @@ -104,7 +100,7 @@ "description": "Label for Graph" } }, - "required": [ "label", "ports", "minimum", "maximum" ] + "required": [ "label", "plots", "minimum", "maximum" ] }, { "type": "object", @@ -115,13 +111,13 @@ "x-y-plot" ] }, - "xPort": { - "type": "number", - "description": "SWO Port for the X axis" + "xGraphId": { + "type": "string", + "description": "Graph Data Source Id for the X axis" }, - "yPort": { - "type": "number", - "description": "SWO Port for the Y axis" + "yGraphId": { + "type": "string", + "description": "Graph Data Source Id Port for the Y axis" }, "label": { "type": "string", @@ -154,8 +150,8 @@ } }, "required": [ - "xPort", - "yPort", + "xGraphId", + "yGraphId", "label" ] } @@ -184,42 +180,82 @@ "type": "array", "description": "SWO Port Configuration", "items": { - "type": "object", - "properties": { - "number": { - "type": "number", - "description": "SWO Port Number", - "minimum": 0, - "maximum": 31 + "anyOf": [ + { + "type": "object", + "properties": { + "type": { "type": "string", "enum": ["console"] }, + "number": { "type": "number", "description": "SWO Port Number", "minimum": 0, "maximum": 31 }, + "label": { "type": "string", "description": "A label for the output window." } + }, + "required": [ "number" ] }, - "format": { - "type": "string", - "description": "Output format for this port.", - "enum": [ - "console", - "binary", - "graph" - ] + { + "type": "object", + "properties": { + "type": { "type": "string", "enum": ["binary"] }, + "number": { "type": "number", "description": "ITM Port Number", "minimum": 0, "maximum": 31 }, + "encoding": { + "type": "string", + "description": "This property is only used for binary and graph output formats.", + "default": "unsigned", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ] + }, + "scale": { + "type": "number", + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "default": 1 + }, + "label": { "type": "string", "description": "A label for the output window." } + }, + "required": ["number"] }, - "encoding": { - "type": "string", - "description": "This property is only used for binary and graph output formats.", - "default": "unsigned", - "enum": [ - "unsigned", - "signed", - "Q16.16" - ] + { + "type": "object", + "properties": { + "type": { "type": "string", "enum": ["graph"] }, + "number": { "type": "number", "description": "ITM Port Number", "minimum": 0, "maximum": 31 }, + "encoding": { + "type": "string", + "description": "This property is only used for binary and graph output formats.", + "default": "unsigned", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ] + }, + "scale": { + "type": "number", + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "default": 1 + }, + "graphId": { + "type": "string", + "description": "The identifier to use for this data in graph configurations." + } + }, + "required": ["number", "graphId"] }, - "scale": { - "type": "number", - "description": "This setting will scale the raw value from the SWO port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", - "default": 1 + { + "type": "object", + "properties": { + "type": { "type": "string", "enum": ["advanced"] }, + "number": { "type": "number", "description": "ITM Port Number", "minimum": 0, "maximum": 31 }, + "decoder": { + "type": "string", + "description": "Path to a javascript module to implement the decoding functionality." + }, + "config": { "type": "any" } + }, + "required": ["number", "decoder"] } - }, - "required": [ - "number", - "format" ] } } diff --git a/package.json b/package.json index 40c7eaa4..76a81a01 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "description": "Minimum value for the Y-Axis", "type": "number" }, - "ports": { + "plots": { "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", "items": { "properties": { @@ -78,21 +78,17 @@ "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": "string" }, + "graphId": { + "description": "Graph Data Source Id for the plot.", + "type": "string" + }, "label": { "description": "A label for this data set", "type": "string" - }, - "number": { - "default": 0, - "description": "The SWO port number", - "maximum": 31, - "minimum": 0, - "type": "number" } }, "required": [ - "number", - "label" + "graphId" ], "type": "object" }, @@ -135,6 +131,10 @@ ], "type": "string" }, + "xGraphId": { + "description": "Graph Data Source Id for the X axis", + "type": "string" + }, "xMaximum": { "default": 65535, "description": "Maximum value on the X-Axis", @@ -145,9 +145,9 @@ "description": "Minimum value on the X-Axis", "type": "number" }, - "xPort": { - "description": "SWO Port for the X axis", - "type": "number" + "yGraphId": { + "description": "Graph Data Source Id Port for the Y axis", + "type": "string" }, "yMaximum": { "default": 65535, @@ -158,10 +158,6 @@ "default": 0, "description": "Minimum value on the Y-Axis", "type": "number" - }, - "yPort": { - "description": "SWO Port for the Y axis", - "type": "number" } }, "required": [ @@ -210,44 +206,138 @@ "ports": { "description": "SWO Port Configuration", "items": { - "properties": { - "encoding": { - "default": "unsigned", - "description": "This property is only used for binary and graph output formats.", - "enum": [ - "unsigned", - "signed", - "Q16.16", - "float" + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "SWO Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "console" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "format": { - "description": "Output format for this port.", - "enum": [ - "console", - "binary", - "graph" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "binary" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "number": { - "description": "SWO Port Number", - "maximum": 31, - "minimum": 0, - "type": "number" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "graph" + ], + "type": "string" + } + }, + "required": [ + "number", + "graphId" + ], + "type": "object" }, - "scale": { - "default": 1, - "description": "This setting will scale the raw value from the SWO port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", - "type": "number" + { + "properties": { + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "advanced" + ], + "type": "string" + } + }, + "required": [ + "number", + "decoder" + ], + "type": "object" } - }, - "required": [ - "number", - "format" - ], - "type": "object" + ] }, "type": "array" }, @@ -317,7 +407,7 @@ "description": "Minimum value for the Y-Axis", "type": "number" }, - "ports": { + "plots": { "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", "items": { "properties": { @@ -325,21 +415,17 @@ "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": "string" }, + "graphId": { + "description": "Graph Data Source Id for the plot.", + "type": "string" + }, "label": { "description": "A label for this data set", "type": "string" - }, - "number": { - "default": 0, - "description": "The SWO port number", - "maximum": 31, - "minimum": 0, - "type": "number" } }, "required": [ - "number", - "label" + "graphId" ], "type": "object" }, @@ -382,6 +468,10 @@ ], "type": "string" }, + "xGraphId": { + "description": "Graph Data Source Id for the X axis", + "type": "string" + }, "xMaximum": { "default": 65535, "description": "Maximum value on the X-Axis", @@ -392,9 +482,9 @@ "description": "Minimum value on the X-Axis", "type": "number" }, - "xPort": { - "description": "SWO Port for the X axis", - "type": "number" + "yGraphId": { + "description": "Graph Data Source Id Port for the Y axis", + "type": "string" }, "yMaximum": { "default": 65535, @@ -405,10 +495,6 @@ "default": 0, "description": "Minimum value on the Y-Axis", "type": "number" - }, - "yPort": { - "description": "SWO Port for the Y axis", - "type": "number" } }, "required": [ @@ -457,44 +543,138 @@ "ports": { "description": "SWO Port Configuration", "items": { - "properties": { - "encoding": { - "default": "unsigned", - "description": "This property is only used for binary and graph output formats.", - "enum": [ - "unsigned", - "signed", - "Q16.16", - "float" + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "SWO Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "console" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "format": { - "description": "Output format for this port.", - "enum": [ - "console", - "binary", - "graph" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "binary" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "number": { - "description": "SWO Port Number", - "maximum": 31, - "minimum": 0, - "type": "number" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "graph" + ], + "type": "string" + } + }, + "required": [ + "number", + "graphId" + ], + "type": "object" }, - "scale": { - "default": 1, - "description": "This setting will scale the raw value from the SWO port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", - "type": "number" + { + "properties": { + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "advanced" + ], + "type": "string" + } + }, + "required": [ + "number", + "decoder" + ], + "type": "object" } - }, - "required": [ - "number", - "format" - ], - "type": "object" + ] }, "type": "array" }, @@ -592,7 +772,7 @@ "description": "Minimum value for the Y-Axis", "type": "number" }, - "ports": { + "plots": { "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", "items": { "properties": { @@ -600,21 +780,17 @@ "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": "string" }, + "graphId": { + "description": "Graph Data Source Id for the plot.", + "type": "string" + }, "label": { "description": "A label for this data set", "type": "string" - }, - "number": { - "default": 0, - "description": "The SWO port number", - "maximum": 31, - "minimum": 0, - "type": "number" } }, "required": [ - "number", - "label" + "graphId" ], "type": "object" }, @@ -657,6 +833,10 @@ ], "type": "string" }, + "xGraphId": { + "description": "Graph Data Source Id for the X axis", + "type": "string" + }, "xMaximum": { "default": 65535, "description": "Maximum value on the X-Axis", @@ -667,9 +847,9 @@ "description": "Minimum value on the X-Axis", "type": "number" }, - "xPort": { - "description": "SWO Port for the X axis", - "type": "number" + "yGraphId": { + "description": "Graph Data Source Id Port for the Y axis", + "type": "string" }, "yMaximum": { "default": 65535, @@ -680,10 +860,6 @@ "default": 0, "description": "Minimum value on the Y-Axis", "type": "number" - }, - "yPort": { - "description": "SWO Port for the Y axis", - "type": "number" } }, "required": [ @@ -743,44 +919,138 @@ "ports": { "description": "SWO Port Configuration", "items": { - "properties": { - "encoding": { - "default": "unsigned", - "description": "This property is only used for binary and graph output formats.", - "enum": [ - "unsigned", - "signed", - "Q16.16", - "float" + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "SWO Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "console" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "format": { - "description": "Output format for this port.", - "enum": [ - "console", - "binary", - "graph" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "binary" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "number": { - "description": "SWO Port Number", - "maximum": 31, - "minimum": 0, - "type": "number" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "graph" + ], + "type": "string" + } + }, + "required": [ + "number", + "graphId" + ], + "type": "object" }, - "scale": { - "default": 1, - "description": "This setting will scale the raw value from the SWO port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", - "type": "number" + { + "properties": { + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "advanced" + ], + "type": "string" + } + }, + "required": [ + "number", + "decoder" + ], + "type": "object" } - }, - "required": [ - "number", - "format" - ], - "type": "object" + ] }, "type": "array" }, @@ -848,7 +1118,7 @@ "description": "Minimum value for the Y-Axis", "type": "number" }, - "ports": { + "plots": { "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", "items": { "properties": { @@ -856,21 +1126,17 @@ "pattern": "^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$", "type": "string" }, + "graphId": { + "description": "Graph Data Source Id for the plot.", + "type": "string" + }, "label": { "description": "A label for this data set", "type": "string" - }, - "number": { - "default": 0, - "description": "The SWO port number", - "maximum": 31, - "minimum": 0, - "type": "number" } }, "required": [ - "number", - "label" + "graphId" ], "type": "object" }, @@ -913,6 +1179,10 @@ ], "type": "string" }, + "xGraphId": { + "description": "Graph Data Source Id for the X axis", + "type": "string" + }, "xMaximum": { "default": 65535, "description": "Maximum value on the X-Axis", @@ -923,9 +1193,9 @@ "description": "Minimum value on the X-Axis", "type": "number" }, - "xPort": { - "description": "SWO Port for the X axis", - "type": "number" + "yGraphId": { + "description": "Graph Data Source Id Port for the Y axis", + "type": "string" }, "yMaximum": { "default": 65535, @@ -936,10 +1206,6 @@ "default": 0, "description": "Minimum value on the Y-Axis", "type": "number" - }, - "yPort": { - "description": "SWO Port for the Y axis", - "type": "number" } }, "required": [ @@ -999,44 +1265,138 @@ "ports": { "description": "SWO Port Configuration", "items": { - "properties": { - "encoding": { - "default": "unsigned", - "description": "This property is only used for binary and graph output formats.", - "enum": [ - "unsigned", - "signed", - "Q16.16", - "float" + "anyOf": [ + { + "properties": { + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "SWO Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "console" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "format": { - "description": "Output format for this port.", - "enum": [ - "console", - "binary", - "graph" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "label": { + "description": "A label for the output window.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "binary" + ], + "type": "string" + } + }, + "required": [ + "number" ], - "type": "string" - }, - "number": { - "description": "SWO Port Number", - "maximum": 31, - "minimum": 0, - "type": "number" + "type": "object" + }, + { + "properties": { + "encoding": { + "default": "unsigned", + "description": "This property is only used for binary and graph output formats.", + "enum": [ + "unsigned", + "signed", + "Q16.16", + "float" + ], + "type": "string" + }, + "graphId": { + "description": "The identifier to use for this data in graph configurations.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "scale": { + "default": 1, + "description": "This setting will scale the raw value from the ITM port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", + "type": "number" + }, + "type": { + "enum": [ + "graph" + ], + "type": "string" + } + }, + "required": [ + "number", + "graphId" + ], + "type": "object" }, - "scale": { - "default": 1, - "description": "This setting will scale the raw value from the SWO port by the specified value. Can be used, for example, to scale a raw n-bit ADC reading to a voltage value. (e.g to scale a 12-bit ADC reading to a 3.3v scale you would need a scale value of 3.3/4096 = 0.0008056640625", - "type": "number" + { + "properties": { + "decoder": { + "description": "Path to a javascript module to implement the decoding functionality.", + "type": "string" + }, + "number": { + "description": "ITM Port Number", + "maximum": 31, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "advanced" + ], + "type": "string" + } + }, + "required": [ + "number", + "decoder" + ], + "type": "object" } - }, - "required": [ - "number", - "format" - ], - "type": "object" + ] }, "type": "array" }, @@ -1130,6 +1490,7 @@ "binary-parser": "^1.3.0", "cbarrick-circular-buffer": "^1.2.3", "portastic": "^1.0.1", + "protobufjs": "~6.8.4", "tmp": "0.0.33", "vscode-debugadapter": "^1.16.0", "vscode-debugprotocol": "^1.16.0", diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index fe3e75ea..8b319380 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -7,7 +7,11 @@ import * as os from "os"; import { PeripheralTreeProvider, TreeNode, FieldNode, RecordType, BaseNode } from './peripheral'; import { RegisterTreeProvider, TreeNode as RTreeNode, RecordType as RRecordType, BaseNode as RBaseNode } from './registers'; import { setTimeout } from "timers"; -import { SWOCore, JLinkSWOSource, OpenOCDSWOSource, SWOSource, OpenOCDFileSWOSource } from './swo'; +import { SWOCore } from './swo/core'; +import { SWOSource } from './swo/sources/common'; +import { JLinkSWOSource } from './swo/sources/jlink'; +import { OpenOCDSWOSource, OpenOCDFileSWOSource } from './swo/sources/openocd'; + import { SWOConfigureEvent } from "../common"; diff --git a/src/frontend/swo.ts b/src/frontend/swo.ts deleted file mode 100644 index 79b4c5e2..00000000 --- a/src/frontend/swo.ts +++ /dev/null @@ -1,510 +0,0 @@ -import * as net from 'net'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as vscode from "vscode"; -import { hexFormat } from './utils'; -import { clearTimeout, setTimeout, setInterval, clearInterval } from 'timers'; -import * as portastic from 'portastic'; -import { Parser } from 'binary-parser'; -import { EventEmitter } from 'events'; -import * as os from 'os'; - -var WebSocket = require('ws'); -var CircularBuffer = require('cbarrick-circular-buffer'); - -let SignedParser = new Parser().endianess('little').int32('value'); -let UnsignedParser = new Parser().endianess('little').uint32('value'); -let FloatParser = new Parser().endianess('little').floatle('value'); - -function parseFloat(buffer: Buffer) { - if(buffer.length < 4) { - let tmp = new Buffer(4); - buffer.copy(tmp); - buffer = tmp; - } - - let result = FloatParser.parse(buffer); - return result.value; -} - -function parseSigned(buffer: Buffer) { - if(buffer.length < 4) { - let tmp = new Buffer(4); - buffer.copy(tmp); - buffer = tmp; - } - - let result = SignedParser.parse(buffer); - return result.value; -} - -function parseUnsigned(buffer: Buffer) { - if(buffer.length < 4) { - let tmp = new Buffer(4); - buffer.copy(tmp); - buffer = tmp; - } - - let result = UnsignedParser.parse(buffer); - return result.value; -} - -function parseQ(buffer: Buffer, mask: number, shift: number) { - let value = parseSigned(buffer); - - var fractional = value & mask; - var integer = value >> shift; - - return integer + (fractional / mask); -} - -function parseUQ(buffer: Buffer, mask: number, shift: number) { - let value = parseUnsigned(buffer); - - var fractional = value & mask; - var integer = value >>> shift; - - return integer + (fractional / mask); -} - -let DECODER_MAP = { - 'signed': parseSigned, - 'float': parseFloat, - 'Q8.24': (buffer) => parseQ(buffer, 0xFFFFFF, 24), - 'Q16.16': (buffer) => parseQ(buffer, 0xFFFF, 16), - 'Q24.8': (buffer) => parseQ(buffer, 0xFF, 8), - 'UQ8.24': (buffer) => parseUQ(buffer, 0xFFFFFF, 24), - 'UQ16.16': (buffer) => parseUQ(buffer, 0xFFFF, 16), - 'UQ24.8': (buffer) => parseUQ(buffer, 0xFF, 8), - 'unsigned': parseUnsigned -}; - -function parseEncoded(buffer: Buffer, encoding: string) { - return DECODER_MAP[encoding] ? DECODER_MAP[encoding](buffer) : parseUnsigned(buffer); -} - -interface SWOProcessor { - port: number; - format: string; - - processMessage(buffer: Buffer); - dispose(); -} - -interface SWOWebsocketProcessor extends SWOProcessor { - getMessages(); -} - -interface WebsocketMessage { - type: string; -} - -interface WebsocketDataMessage extends WebsocketMessage { - timestamp: number; - data: number; - port: number; - raw: string; -} - -interface WebsocketStatusMessage extends WebsocketMessage { - status: string; -} - -interface SWOPortConfig { - number: number; - format: string; - encoding: string; - scale: number; - label: string; -}; - -interface GraphConfiguration { - type: string; - label: string; -}; - -interface RealtimeGraphConfiguration extends GraphConfiguration { - minimum: number; - maximum: number; - ports: { - number: number, - label: string, - color: string - }[]; -}; - -interface XYGraphConfiguration extends GraphConfiguration { - xPort: number; - yPort: number; - xMinimum: number; - xMaximum: number; - yMinimum: number; - yMaximum: number; -} - -class SWOBinaryProcessor implements SWOProcessor { - output: vscode.OutputChannel; - format: string = 'binary'; - port: number; - scale: number; - encoding: string; - - constructor(config: SWOPortConfig, private core: SWOCore) { - this.port = config.number; - this.scale = config.scale || 1; - this.encoding = config.encoding || 'unsigned'; - - this.output = vscode.window.createOutputChannel(`SWO: ${config.label || ''} [port: ${this.port}, encoding: ${this.encoding}]`); - } - - processMessage(buffer: Buffer) { - let date = new Date(); - - let hexvalue = buffer.toString('hex'); - let decodedValue = parseEncoded(buffer, this.encoding); - let scaledValue = decodedValue * this.scale; - - this.output.appendLine(`[${date.toISOString()}] ${hexvalue} - ${decodedValue} - ${scaledValue}`); - } - - dispose() { - this.output.dispose(); - } -} - -class SWOConsoleProcessor implements SWOProcessor { - positionCount: number; - output: vscode.OutputChannel; - position: number = 0; - timeout: any = null; - format: string = 'console'; - port: number; - - constructor(config: SWOPortConfig, private core: SWOCore) { - this.port = config.number; - this.output = vscode.window.createOutputChannel(`SWO: ${config.label || ''} [port: ${this.port}, format: console]`); - } - - processMessage(buffer: Buffer) { - if(this.timeout) { clearTimeout(this.timeout); this.timeout = null; } - - var data = parseUnsigned(buffer); - - let letter = String.fromCharCode(data); - if(letter == '\n') { - this.output.append('\n'); - this.position = 0; - return; - } - - if(this.position == 0) { - let date = new Date(); - let header = `[${date.toISOString()}] `; - this.output.append(header); - } - - this.output.append(letter); - this.position += 1; - - if(this.position >= 80) { - this.output.append('\n'); - this.position = 0; - } - else { - this.timeout = setTimeout(() => { - this.output.append('\n'); - this.position = 0; - this.timeout = null; - }, 5000); - } - } - - dispose() { - this.output.dispose(); - } -} - -class SWOGraphProcessor implements SWOWebsocketProcessor { - // buffer: CircularBuffer; - format: string = 'graph'; - port: number; - scale: number; - encoding: string; - - constructor(config: SWOPortConfig, private core: SWOCore) { - core.socketServer.registerProcessor(this); - this.port = config.number; - this.encoding = config.encoding || 'unsigned'; - this.scale = config.scale || 1; - } - - processMessage(buffer: Buffer) { - let raw = buffer.toString('hex'); - let decodedValue = parseEncoded(buffer, this.encoding); - let scaledValue = decodedValue * this.scale; - - let message = { type: 'data', timestamp: new Date().getTime(), data: scaledValue, port: this.port, raw: raw }; - this.core.socketServer.broadcastMessage(message); - } - - dispose() { - - } - - getMessages(): WebsocketMessage[] { - return []; - } -} - -const PROCESSOR_MAP = { - "console": SWOConsoleProcessor, - "binary": SWOBinaryProcessor, - "graph": SWOGraphProcessor -}; - -class SWOSocketServer { - processors: SWOWebsocketProcessor[]; - socket: any; - currentStatus: string = 'stopped'; - - constructor(serverPort: number, public graphs: GraphConfiguration[]) { - this.processors = []; - this.socket = new WebSocket.Server({ port: serverPort }); - this.socket.on('connection', this.connected.bind(this)); - } - - connected(client) { - client.on('message', (message) => this.message(client, message)); - let activePorts = this.processors.map(p => { return { 'port': p.port }; }); - client.send(JSON.stringify({ type: 'configure', 'activePorts': activePorts, 'graphs': this.graphs, 'status': this.currentStatus })); - } - - message(client, message) { - } - - registerProcessor(processor: SWOWebsocketProcessor) { - this.processors.push(processor); - } - - broadcastMessage(message: WebsocketMessage) { - let encoded = JSON.stringify(message); - this.socket.clients.forEach(client => { - if(client.readyState == WebSocket.OPEN) { - client.send(encoded); - } - }); - } - - dispose() { - this.socket.close(); - } -} - -export interface SWOSource extends EventEmitter { - connected: boolean; - dispose(); -} - -export class JLinkSWOSource extends EventEmitter implements SWOSource { - client: net.Socket = null; - connected: boolean = false; - - constructor(private SWOPort: number) { - super(); - this.client = net.createConnection({ port: this.SWOPort, host: 'localhost' }, () => { this.connected = true; this.emit('connected'); }); - this.client.on('data', (buffer) => { this.emit('data', buffer); }); - this.client.on('end', () => { this.emit('disconnected'); }); - } - - dispose() { - this.client.destroy(); - } -} - -export class OpenOCDSWOSource extends EventEmitter implements SWOSource { - stream: fs.ReadStream; - connected: boolean = false; - - constructor(private SWOPath: string) { - super(); - this.stream = fs.createReadStream(this.SWOPath, { highWaterMark: 128, encoding: null, autoClose: false }) - this.stream.on('data', (buffer) => { this.emit('data', buffer); }); - this.stream.on('close', (buffer) => { this.emit('disconnected'); }); - this.connected = true; - } - - dispose() { - this.stream.close(); - } -} - -export class OpenOCDFileSWOSource extends EventEmitter implements SWOSource { - connected: boolean = false; - fd: number = null; - interval: any = null; - - constructor(private SWOPath: string) { - super(); - fs.open(SWOPath, 'r', (err, fd) => { - if(err) { - console.log('Error Opening File') - } - else { - this.fd = fd; - this.interval = setInterval(this.read.bind(this), 2); - this.connected = true; - this.emit('connected'); - } - }) - } - - read() { - let buf: Buffer = new Buffer(64); - fs.read(this.fd, buf, 0, 64, null, (err, bytesRead, buffer) => { - if(bytesRead > 0) { - this.emit('data', buffer.slice(0, bytesRead)); - } - }); - } - - dispose() { - this.emit('disconnected'); - clearInterval(this.interval); - fs.closeSync(this.fd); - } -} - -export class SWOCore { - processors: SWOProcessor[] = [];; - socketServer: SWOSocketServer; - connected: boolean = false; - - buffer = null; - - LENGTH_MASK = 0x03; - SPECIAL_MASK = 0x0F; - PORT_MASK = 0xF8; - - constructor(private source: SWOSource, configuration: SWOPortConfig[], graphs: GraphConfiguration[], extensionPath: string) { - this.buffer = new CircularBuffer({ size: 250, encoding: null }); - - if(this.source.connected) { this.connected = true; } - else { this.source.on('connected', () => { this.connected = true; }); } - this.source.on('data', this.handleData.bind(this)); - this.source.on('disconnected', () => { this.connected = false; }); - - portastic.find({ min: 53333, max: 54333, retrieve: 1 }).then(ports => { - let port = ports[0]; - this.socketServer = new SWOSocketServer(port, graphs); - var hasGraph = configuration.filter(c => c.format == 'graph').length > 0 && graphs.length > 1; - - if(hasGraph) { - let now = new Date(); - let timestamp = now.getTime(); - let time = now.toTimeString(); - var grapherURL = `file://${extensionPath}/grapher/index.html?port=${port}×tamp=${timestamp}`; - if(os.platform() == 'win32') { - let ep = extensionPath.replace(/\\/g, '/'); - grapherURL = `file:///${ep}/grapher/index.html?port=${port}×tamp=${timestamp}`; - } - - vscode.commands.executeCommand('vscode.previewHtml', grapherURL, vscode.ViewColumn.Two, `SWO Graphs [${time}]`).then(e => { - console.log('Preview HTML: ', e); - }, - error => { - console.log('Preview HTML Error: ', error); - }); - } - }).then(result => { - configuration.forEach(conf => { - let pc = PROCESSOR_MAP[conf.format]; - if(pc) { - let processor = new pc(conf, this); - this.processors.push(processor); - } - }); - }); - } - - handleData(data) { - this.buffer.write(data); - this._processBuffer(); - } - - _processBuffer() { - while(this.buffer.length > 0) { - let headerbuf = this.buffer.peek(1, null); - let header = headerbuf[0]; - if((header & this.SPECIAL_MASK) === 0) { - // this._processTimestamp(); - console.log("Invalid Content - dropping buffer"); - this.buffer.read(this.buffer.length, null); - continue; - } - if((header & 0x4) !== 0) { - console.log("Invalid Content - dropping buffer"); - this.buffer.read(this.buffer.length, null); - continue; - } - - let lh = header & this.LENGTH_MASK; - let length = (lh == 0x3 ? 4 : lh); - let port = (header & this.PORT_MASK) >>> 3; - - if(this.buffer.length < length + 1) { break; } // Not enough bytes to process yet - - this.buffer.read(1, null); - - let buf = this.buffer.read(length, null); - this._processSWIT(port, buf); - } - } - - _processSWIT(port: number, data: Buffer) { - this.processors.forEach(p => { if(p.port == port) { p.processMessage(data); } }); - } - - _processTimestamp() { - - } - - calculatePortMask(configuration: SWOPortConfig[]) { - let mask: number = 0; - configuration.forEach(c => { - mask = (mask | (1 << c.number)) >>> 0; - }); - return mask; - } - - debugSessionTerminated() { - let message : WebsocketStatusMessage = { type: 'status', status: 'terminated' }; - this.socketServer.broadcastMessage(message); - this.socketServer.currentStatus = 'terminated'; - setTimeout(() => { - this.socketServer.dispose(); - this.socketServer = null; - }, 250); - } - - debugStopped() { - let message : WebsocketStatusMessage = { type: 'status', status: 'stopped' }; - this.socketServer.broadcastMessage(message); - this.socketServer.currentStatus = 'stopped'; - } - - debugContinued() { - let message : WebsocketStatusMessage = { type: 'status', status: 'continued' }; - this.socketServer.broadcastMessage(message); - this.socketServer.currentStatus = 'continued'; - } - - dispose() { - if(this.socketServer) { - this.socketServer.dispose(); - this.socketServer = null; - } - this.processors.forEach(p => p.dispose()); - this.processors = null; - this.connected = false; - } -} \ No newline at end of file diff --git a/src/frontend/swo/common.ts b/src/frontend/swo/common.ts new file mode 100644 index 00000000..fdf7d317 --- /dev/null +++ b/src/frontend/swo/common.ts @@ -0,0 +1,70 @@ +export interface SWOPortConfig { + type: string; + number: number; +} + +export interface SWOConsolePortConfig extends SWOPortConfig { + label: string; +} + +export interface SWOBinaryPortConfig extends SWOPortConfig { + encoding: string; + scale: number; + label: string; +} + +export interface SWOGraphPortConfig extends SWOPortConfig { + encoding: string; + scale: number; + graphId: string; +} + +export interface SWOAdvancedPortConfig extends SWOPortConfig { + decoder: string; + config: any; +} + +export interface GraphConfiguration { + type: string; + label: string; +} + +export interface RealtimeGraphConfiguration extends GraphConfiguration { + minimum: number; + maximum: number; + ports: { + number: number, + label: string, + color: string + }[]; +} + +export interface XYGraphConfiguration extends GraphConfiguration { + xPort: number; + yPort: number; + xMinimum: number; + xMaximum: number; + yMinimum: number; + yMaximum: number; +} + +export interface WebsocketMessage { + type: string; +} + +export interface WebsocketDataMessage extends WebsocketMessage { + timestamp: number; + data: number; + id: string; +} + +export interface WebsocketStatusMessage extends WebsocketMessage { + status: string; +} + +export interface AdvancedDecoder { + name: string; + + processData(buffer: Buffer): void; + outputLabel(): string; +} \ No newline at end of file diff --git a/src/frontend/swo/core.ts b/src/frontend/swo/core.ts new file mode 100644 index 00000000..7cec58cb --- /dev/null +++ b/src/frontend/swo/core.ts @@ -0,0 +1,167 @@ +import * as vscode from "vscode"; + +import * as portastic from 'portastic'; +import * as os from 'os'; + +import { SWOConsoleProcessor } from './decoders/console'; +import { SWOBinaryProcessor } from './decoders/binary'; +import { SWOGraphProcessor } from './decoders/graph'; +import { SWOProcessor } from './decoders/common'; +import { SWOSource } from './sources/common'; +import { SWOSocketServer } from './websocket_server'; +import { SWOPortConfig, GraphConfiguration, WebsocketStatusMessage, SWOAdvancedPortConfig, SWOGraphPortConfig, SWOBinaryPortConfig, SWOConsolePortConfig } from './common'; +import { SWOAdvancedProcessor } from "./decoders/advanced"; + +var CircularBuffer = require('cbarrick-circular-buffer'); + +export class SWOCore { + processors: SWOProcessor[] = [];; + socketServer: SWOSocketServer; + connected: boolean = false; + + buffer = null; + + LENGTH_MASK = 0x03; + SPECIAL_MASK = 0x0F; + PORT_MASK = 0xF8; + + constructor(private source: SWOSource, configuration: SWOPortConfig[], graphs: GraphConfiguration[], extensionPath: string) { + this.buffer = new CircularBuffer({ size: 250, encoding: null }); + + if(this.source.connected) { this.connected = true; } + else { this.source.on('connected', () => { this.connected = true; }); } + this.source.on('data', this.handleData.bind(this)); + this.source.on('disconnected', () => { this.connected = false; }); + + portastic.find({ min: 53333, max: 54333, retrieve: 1 }).then(ports => { + let port = ports[0]; + this.socketServer = new SWOSocketServer(port, graphs); + + if(graphs.length > 1) { + let now = new Date(); + let timestamp = now.getTime(); + let time = now.toTimeString(); + var grapherURL = `file://${extensionPath}/grapher/index.html?port=${port}×tamp=${timestamp}`; + if(os.platform() == 'win32') { + let ep = extensionPath.replace(/\\/g, '/'); + grapherURL = `file:///${ep}/grapher/index.html?port=${port}×tamp=${timestamp}`; + } + + vscode.commands.executeCommand('vscode.previewHtml', grapherURL, vscode.ViewColumn.Two, `SWO Graphs [${time}]`).then(e => { + console.log('Preview HTML: ', e); + }, + error => { + console.log('Preview HTML Error: ', error); + }); + } + }).then(result => { + configuration.forEach(conf => { + let processor; + + switch (conf.type) { + case 'console': + this.processors.push(new SWOConsoleProcessor(conf as SWOConsolePortConfig)); + break; + case 'binary': + this.processors.push(new SWOBinaryProcessor(conf as SWOBinaryPortConfig)); + break; + case 'graph': + processor = new SWOGraphProcessor(conf as SWOGraphPortConfig); + this.socketServer.registerProcessor(processor); + this.processors.push(processor); + break; + case 'advanced': + processor = new SWOAdvancedProcessor(conf as SWOAdvancedPortConfig); + this.socketServer.registerProcessor(processor); + this.processors.push(processor); + break; + default: + console.log(`Unrecognized SWO Processor: ${conf.type}`); + break; + } + }); + }); + } + + handleData(data) { + this.buffer.write(data); + this._processBuffer(); + } + + _processBuffer() { + while(this.buffer.length > 0) { + let headerbuf = this.buffer.peek(1, null); + let header = headerbuf[0]; + if((header & this.SPECIAL_MASK) === 0) { + // this._processTimestamp(); + console.log("Invalid Content - dropping buffer"); + this.buffer.read(this.buffer.length, null); + continue; + } + if((header & 0x4) !== 0) { + console.log("Invalid Content - dropping buffer"); + this.buffer.read(this.buffer.length, null); + continue; + } + + let lh = header & this.LENGTH_MASK; + let length = (lh == 0x3 ? 4 : lh); + let port = (header & this.PORT_MASK) >>> 3; + + if(this.buffer.length < length + 1) { break; } // Not enough bytes to process yet + + this.buffer.read(1, null); + + let buf = this.buffer.read(length, null); + this._processSWIT(port, buf); + } + } + + _processSWIT(port: number, data: Buffer) { + this.processors.forEach(p => { if(p.port == port) { p.processMessage(data); } }); + } + + _processTimestamp() { + + } + + calculatePortMask(configuration: SWOPortConfig[]) { + let mask: number = 0; + configuration.forEach(c => { + mask = (mask | (1 << c.number)) >>> 0; + }); + return mask; + } + + debugSessionTerminated() { + let message : WebsocketStatusMessage = { type: 'status', status: 'terminated' }; + this.socketServer.broadcastMessage(message); + this.socketServer.currentStatus = 'terminated'; + setTimeout(() => { + this.socketServer.dispose(); + this.socketServer = null; + }, 250); + } + + debugStopped() { + let message : WebsocketStatusMessage = { type: 'status', status: 'stopped' }; + this.socketServer.broadcastMessage(message); + this.socketServer.currentStatus = 'stopped'; + } + + debugContinued() { + let message : WebsocketStatusMessage = { type: 'status', status: 'continued' }; + this.socketServer.broadcastMessage(message); + this.socketServer.currentStatus = 'continued'; + } + + dispose() { + if(this.socketServer) { + this.socketServer.dispose(); + this.socketServer = null; + } + this.processors.forEach(p => p.dispose()); + this.processors = null; + this.connected = false; + } +} \ No newline at end of file diff --git a/src/frontend/swo/decoders/advanced.ts b/src/frontend/swo/decoders/advanced.ts new file mode 100644 index 00000000..a0d4f20a --- /dev/null +++ b/src/frontend/swo/decoders/advanced.ts @@ -0,0 +1,63 @@ +import * as vscode from "vscode"; +import { SWOProcessor } from './common'; +import { SWOAdvancedPortConfig, WebsocketDataMessage, AdvancedDecoder } from '../common'; +import { decoders as DECODER_MAP } from './utils'; +import { EventEmitter } from 'events'; +import { decoders } from './utils'; + + +export class SWOAdvancedProcessor extends EventEmitter implements SWOProcessor { + output: vscode.OutputChannel; + format: string = 'advanced'; + port: number; + decoder: AdvancedDecoder; + + constructor(config: SWOAdvancedPortConfig) { + super(); + this.port = -1; + + let decoderPath = config.decoder; + if(decoderPath == 'protobuf') { + let extension = vscode.extensions.getExtension('marus.cortex-debug'); + decoderPath = `${extension.extensionPath}/out/src/frontend/swo/decoders/protobuf.js`; + } + + var decoderModule = require(decoderPath); + + if(decoderModule && decoderModule.default) { + let decoderClass = decoderModule.default; + + try { + this.decoder = new decoderClass(config.config, decoders, this.displayOutput.bind(this), this.graphData.bind(this)); + } + catch(e) { + vscode.window.showErrorMessage(`Error instantiating decoder class: ${e.toString()}`); + return; + } + + this.port = config.number; + this.output = vscode.window.createOutputChannel(`SWO: ${this.decoder.outputLabel() || ''} [port: ${this.port}, type: ${this.decoder.name}]`); + } + else { + vscode.window.showErrorMessage(`Unable to load decoder class from: ${config.decoder}`); + } + + } + + processMessage(buffer: Buffer) { + this.decoder.processData(buffer); + } + + displayOutput(output: string) { + this.output.append(output); + } + + graphData(data: number, id: string) { + let message: WebsocketDataMessage = { type: 'data', timestamp: new Date().getTime(), data: data, id: id }; + this.emit('data', message); + } + + dispose() { + this.output.dispose(); + } +}; \ No newline at end of file diff --git a/src/frontend/swo/decoders/binary.ts b/src/frontend/swo/decoders/binary.ts new file mode 100644 index 00000000..dd0cb6a6 --- /dev/null +++ b/src/frontend/swo/decoders/binary.ts @@ -0,0 +1,38 @@ +import * as vscode from "vscode"; +import { SWOProcessor } from './common'; +import { SWOBinaryPortConfig } from '../common'; +import { decoders as DECODER_MAP } from './utils'; + +function parseEncoded(buffer: Buffer, encoding: string) { + return DECODER_MAP[encoding] ? DECODER_MAP[encoding](buffer) : DECODER_MAP.unsigned(buffer); +} + +export class SWOBinaryProcessor implements SWOProcessor { + output: vscode.OutputChannel; + format: string = 'binary'; + port: number; + scale: number; + encoding: string; + + constructor(config: SWOBinaryPortConfig) { + this.port = config.number; + this.scale = config.scale || 1; + this.encoding = (config.encoding || 'unsigned').replace('.', '_'); + + this.output = vscode.window.createOutputChannel(`SWO: ${config.label || ''} [port: ${this.port}, encoding: ${this.encoding}]`); + } + + processMessage(buffer: Buffer) { + let date = new Date(); + + let hexvalue = buffer.toString('hex'); + let decodedValue = parseEncoded(buffer, this.encoding); + let scaledValue = decodedValue * this.scale; + + this.output.appendLine(`[${date.toISOString()}] ${hexvalue} - ${decodedValue} - ${scaledValue}`); + } + + dispose() { + this.output.dispose(); + } +} \ No newline at end of file diff --git a/src/frontend/swo/decoders/common.ts b/src/frontend/swo/decoders/common.ts new file mode 100644 index 00000000..7a97ca4d --- /dev/null +++ b/src/frontend/swo/decoders/common.ts @@ -0,0 +1,7 @@ +export interface SWOProcessor { + port: number; + format: string; + + processMessage(buffer: Buffer); + dispose(); +} \ No newline at end of file diff --git a/src/frontend/swo/decoders/console.ts b/src/frontend/swo/decoders/console.ts new file mode 100644 index 00000000..4efea36f --- /dev/null +++ b/src/frontend/swo/decoders/console.ts @@ -0,0 +1,57 @@ +import * as vscode from "vscode"; + +import { SWOProcessor } from './common'; +import { parseUnsigned } from './utils'; +import { SWOConsolePortConfig } from "../common"; + +export class SWOConsoleProcessor implements SWOProcessor { + positionCount: number; + output: vscode.OutputChannel; + position: number = 0; + timeout: any = null; + format: string = 'console'; + port: number; + + constructor(config: SWOConsolePortConfig) { + this.port = config.number; + this.output = vscode.window.createOutputChannel(`SWO: ${config.label || ''} [port: ${this.port}, type: console]`); + } + + processMessage(buffer: Buffer) { + if(this.timeout) { clearTimeout(this.timeout); this.timeout = null; } + + var data = parseUnsigned(buffer); + + let letter = String.fromCharCode(data); + if(letter == '\n') { + this.output.append('\n'); + this.position = 0; + return; + } + + if(this.position == 0) { + let date = new Date(); + let header = `[${date.toISOString()}] `; + this.output.append(header); + } + + this.output.append(letter); + this.position += 1; + + if(this.position >= 80) { + this.output.append('\n'); + this.position = 0; + } + else { + this.timeout = setTimeout(() => { + this.output.append('\n'); + this.position = 0; + this.timeout = null; + }, 5000); + } + } + + dispose() { + this.output.dispose(); + } +} \ No newline at end of file diff --git a/src/frontend/swo/decoders/graph.ts b/src/frontend/swo/decoders/graph.ts new file mode 100644 index 00000000..d19a0ec0 --- /dev/null +++ b/src/frontend/swo/decoders/graph.ts @@ -0,0 +1,39 @@ +import * as vscode from "vscode"; +import { SWOProcessor } from './common'; +import { decoders as DECODER_MAP } from './utils'; +import { EventEmitter } from 'events'; +import { SWOGraphPortConfig, WebsocketDataMessage } from '../common'; + +function parseEncoded(buffer: Buffer, encoding: string) { + return DECODER_MAP[encoding] ? DECODER_MAP[encoding](buffer) : DECODER_MAP.unsigned(buffer); +} + +export class SWOGraphProcessor extends EventEmitter implements SWOProcessor { + format: string = 'graph'; + port: number; + scale: number; + encoding: string; + graphId: string; + + constructor(config: SWOGraphPortConfig) { + super(); + // core.socketServer.registerProcessor(this); + this.port = config.number; + this.encoding = config.encoding || 'unsigned'; + this.scale = config.scale || 1; + this.graphId = config.graphId; + } + + processMessage(buffer: Buffer) { + let raw = buffer.toString('hex'); + let decodedValue = parseEncoded(buffer, this.encoding); + let scaledValue = decodedValue * this.scale; + + let message: WebsocketDataMessage = { type: 'data', timestamp: new Date().getTime(), data: scaledValue, id: this.graphId }; + this.emit('message', message); + } + + dispose() { + + } +} \ No newline at end of file diff --git a/src/frontend/swo/decoders/utils.ts b/src/frontend/swo/decoders/utils.ts new file mode 100644 index 00000000..07a9d14b --- /dev/null +++ b/src/frontend/swo/decoders/utils.ts @@ -0,0 +1,68 @@ +import { Parser } from 'binary-parser'; + +let SignedParser = new Parser().endianess('little').int32('value'); +let UnsignedParser = new Parser().endianess('little').uint32('value'); +let FloatParser = new Parser().endianess('little').floatle('value'); + +export function parseFloat(buffer: Buffer) { + if(buffer.length < 4) { + let tmp = new Buffer(4); + buffer.copy(tmp); + buffer = tmp; + } + + let result = FloatParser.parse(buffer); + return result.value; +} + +export function parseSigned(buffer: Buffer) { + if(buffer.length < 4) { + let tmp = new Buffer(4); + buffer.copy(tmp); + buffer = tmp; + } + + let result = SignedParser.parse(buffer); + return result.value; +} + +export function parseUnsigned(buffer: Buffer) { + if(buffer.length < 4) { + let tmp = new Buffer(4); + buffer.copy(tmp); + buffer = tmp; + } + + let result = UnsignedParser.parse(buffer); + return result.value; +} + +export function parseQ(buffer: Buffer, mask: number, shift: number) { + let value = parseSigned(buffer); + + var fractional = value & mask; + var integer = value >> shift; + + return integer + (fractional / mask); +} + +export function parseUQ(buffer: Buffer, mask: number, shift: number) { + let value = parseUnsigned(buffer); + + var fractional = value & mask; + var integer = value >>> shift; + + return integer + (fractional / mask); +} + +export const decoders = { + signed: parseSigned, + float: parseFloat, + Q8_24: (buffer) => parseQ(buffer, 0xFFFFFF, 24), + Q16_16: (buffer) => parseQ(buffer, 0xFFFF, 16), + Q24_8: (buffer) => parseQ(buffer, 0xFF, 8), + UQ8_24: (buffer) => parseUQ(buffer, 0xFFFFFF, 24), + UQ16_16: (buffer) => parseUQ(buffer, 0xFFFF, 16), + UQ24_8: (buffer) => parseUQ(buffer, 0xFF, 8), + unsigned: parseUnsigned +}; \ No newline at end of file diff --git a/src/frontend/swo/sources/common.ts b/src/frontend/swo/sources/common.ts new file mode 100644 index 00000000..d8ed6257 --- /dev/null +++ b/src/frontend/swo/sources/common.ts @@ -0,0 +1,6 @@ +import { EventEmitter } from 'events'; + +export interface SWOSource extends EventEmitter { + connected: boolean; + dispose(); +} \ No newline at end of file diff --git a/src/frontend/swo/sources/jlink.ts b/src/frontend/swo/sources/jlink.ts new file mode 100644 index 00000000..4b80b41c --- /dev/null +++ b/src/frontend/swo/sources/jlink.ts @@ -0,0 +1,19 @@ +import { SWOSource } from './common'; +import { EventEmitter } from 'events'; +import * as net from 'net'; + +export class JLinkSWOSource extends EventEmitter implements SWOSource { + client: net.Socket = null; + connected: boolean = false; + + constructor(private SWOPort: number) { + super(); + this.client = net.createConnection({ port: this.SWOPort, host: 'localhost' }, () => { this.connected = true; this.emit('connected'); }); + this.client.on('data', (buffer) => { this.emit('data', buffer); }); + this.client.on('end', () => { this.emit('disconnected'); }); + } + + dispose() { + this.client.destroy(); + } +} \ No newline at end of file diff --git a/src/frontend/swo/sources/openocd.ts b/src/frontend/swo/sources/openocd.ts new file mode 100644 index 00000000..645a1403 --- /dev/null +++ b/src/frontend/swo/sources/openocd.ts @@ -0,0 +1,56 @@ +import * as fs from 'fs'; +import { EventEmitter } from 'events'; +import { SWOSource } from './common'; + +export class OpenOCDSWOSource extends EventEmitter implements SWOSource { + stream: fs.ReadStream; + connected: boolean = false; + + constructor(private SWOPath: string) { + super(); + this.stream = fs.createReadStream(this.SWOPath, { highWaterMark: 128, encoding: null, autoClose: false }) + this.stream.on('data', (buffer) => { this.emit('data', buffer); }); + this.stream.on('close', (buffer) => { this.emit('disconnected'); }); + this.connected = true; + } + + dispose() { + this.stream.close(); + } +} + +export class OpenOCDFileSWOSource extends EventEmitter implements SWOSource { + connected: boolean = false; + fd: number = null; + interval: any = null; + + constructor(private SWOPath: string) { + super(); + fs.open(SWOPath, 'r', (err, fd) => { + if(err) { + console.log('Error Opening File') + } + else { + this.fd = fd; + this.interval = setInterval(this.read.bind(this), 2); + this.connected = true; + this.emit('connected'); + } + }) + } + + read() { + let buf: Buffer = new Buffer(64); + fs.read(this.fd, buf, 0, 64, null, (err, bytesRead, buffer) => { + if(bytesRead > 0) { + this.emit('data', buffer.slice(0, bytesRead)); + } + }); + } + + dispose() { + this.emit('disconnected'); + clearInterval(this.interval); + fs.closeSync(this.fd); + } +} \ No newline at end of file diff --git a/src/frontend/swo/websocket_server.ts b/src/frontend/swo/websocket_server.ts new file mode 100644 index 00000000..2b692eb8 --- /dev/null +++ b/src/frontend/swo/websocket_server.ts @@ -0,0 +1,43 @@ +var WebSocket = require('ws'); +import { SWOGraphProcessor } from './decoders/graph'; +import { WebsocketMessage, GraphConfiguration } from './common'; +import { SWOAdvancedProcessor } from './decoders/advanced'; + +export class SWOSocketServer { + processors: (SWOGraphProcessor|SWOAdvancedProcessor)[]; + socket: any; + currentStatus: string = 'stopped'; + + constructor(serverPort: number, public graphs: GraphConfiguration[]) { + this.processors = []; + this.socket = new WebSocket.Server({ port: serverPort }); + this.socket.on('connection', this.connected.bind(this)); + } + + connected(client) { + client.on('message', (message) => this.message(client, message)); + let activePorts = this.processors.map(p => { return { 'port': p.port }; }); + client.send(JSON.stringify({ type: 'configure', 'activePorts': activePorts, 'graphs': this.graphs, 'status': this.currentStatus })); + } + + message(client, message) { + } + + registerProcessor(processor: SWOGraphProcessor | SWOAdvancedProcessor) { + processor.on('message', this.broadcastMessage.bind(this)); + this.processors.push(processor); + } + + broadcastMessage(message: WebsocketMessage) { + let encoded = JSON.stringify(message); + this.socket.clients.forEach(client => { + if(client.readyState == WebSocket.OPEN) { + client.send(encoded); + } + }); + } + + dispose() { + this.socket.close(); + } +} \ No newline at end of file From a98df5c88e4d21516a1235b75732336ac0274369 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Thu, 11 Jan 2018 20:30:39 -0400 Subject: [PATCH 07/31] Re-enabled SVD auto-detection --- src/frontend/extension.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index 8b319380..31435159 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -20,13 +20,6 @@ interface SVDInfo { path: string; } -var SVDDirectory: SVDInfo[] = []; - -function getSVDFile(device: string): string { - let entry = SVDDirectory.find(de => de.expression.test(device)); - return entry ? entry.path : null; -} - class CortexDebugExtension { private adapterOutputChannel: vscode.OutputChannel = null; private swo: SWOCore = null; @@ -70,7 +63,9 @@ class CortexDebugExtension { } getSVDFile(device: string): string { - return ''; + let entry = this.SVDDirectory.find(de => de.expression.test(device)); + return entry ? entry.path : null; + } } // Peripherals From 75123e4733035394033e7ba15edf93937b88656f Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Thu, 11 Jan 2018 20:31:44 -0400 Subject: [PATCH 08/31] Added a memory viewer command --- package.json | 32 +++++++++++++- src/frontend/extension.ts | 59 ++++++++++++++++++++++++- src/frontend/memory_content_provider.ts | 54 ++++++++++++++++++++++ src/frontend/utils.ts | 4 +- 4 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 src/frontend/memory_content_provider.ts diff --git a/package.json b/package.json index 76a81a01..1db77e4d 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,18 @@ { "command": "cortexPeripherals.selectedNode", "title": "Selected" + }, + { + "command": "marus.cortex-debug-openocd.examineMemory", + "title": "View Memory Content", + "category": "Cortex-Debug" + }, + { + "command": "marus.cortex-debug-jlink.examineMemory", + "title": "View Memory Content", + "category": "Cortex-Debug" } - ], + ], "debuggers": [ { "configurationAttributes": { @@ -1459,7 +1469,25 @@ "when": "view == cortexPeripherals && viewItem == registerWO" } ], - "view/title": [] + "view/title": [], + "commandPalette": [ + { + "command": "cortexPeripherals.updateNode", + "when": "false" + }, + { + "command": "cortexPeripherals.selectedNode", + "when": "false" + }, + { + "command": "marus.cortex-debug-openocd.examineMemory", + "when": "debugType == openocd-gdb" + }, + { + "command": "marus.cortex-debug-jlink.examineMemory", + "when": "debugType == jlink-gdb" + } + ] }, "views": { "debug": [ diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index 31435159..34a81374 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -11,9 +11,8 @@ import { SWOCore } from './swo/core'; import { SWOSource } from './swo/sources/common'; import { JLinkSWOSource } from './swo/sources/jlink'; import { OpenOCDSWOSource, OpenOCDFileSWOSource } from './swo/sources/openocd'; - import { SWOConfigureEvent } from "../common"; - +import { MemoryContentProvider } from './memory_content_provider'; interface SVDInfo { expression: RegExp; @@ -49,8 +48,12 @@ class CortexDebugExtension { return { expression: exp, path: de.path }; }); + context.subscriptions.push(vscode.workspace.registerTextDocumentContentProvider('examinememory', new MemoryContentProvider())); + context.subscriptions.push(vscode.commands.registerCommand('cortexPeripherals.updateNode', this.peripheralsUpdateNode.bind(this))); context.subscriptions.push(vscode.commands.registerCommand('cortexPeripherals.selectedNode', this.peripheralsSelectedNode.bind(this))); + context.subscriptions.push(vscode.commands.registerCommand('marus.cortex-debug-jlink.examineMemory', this.examineMemory.bind(this))); + context.subscriptions.push(vscode.commands.registerCommand('marus.cortex-debug-openocd.examineMemory', this.examineMemory.bind(this))); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-jlink', this.peripheralProvider)); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-openocd', this.peripheralProvider)); @@ -66,6 +69,58 @@ class CortexDebugExtension { let entry = this.SVDDirectory.find(de => de.expression.test(device)); return entry ? entry.path : null; } + + examineMemory() { + function validateValue(address) { + if(/^0x[0-9a-f]{1,8}$/i.test(address)) { + return address; + } + else if(/^[0-9]+$/i.test(address)) { + return address; + } + else { + return null; + } + } + + if(!vscode.debug.activeDebugSession) { + vscode.window.showErrorMessage('No debugging session available'); + return; + } + + vscode.window.showInputBox({ + placeHolder: 'Prefix with 0x for hexidecimal format', + ignoreFocusOut: true, + prompt: 'Memory Address' + }).then( + address => { + if (!validateValue(address)) { + vscode.window.showErrorMessage('Invalid memory address entered'); + return; + } + + vscode.window.showInputBox({ + placeHolder: 'Prefix with 0x for hexidecimal format', + ignoreFocusOut: true, + prompt: 'Length' + }).then( + (length) => { + if (!validateValue(length)) { + vscode.window.showErrorMessage('Invalid length entered'); + return; + } + + vscode.window.showTextDocument(vscode.Uri.parse(`examinememory:///Memory%20[${address}+${length}]?address=${address}&length=${length}`), { viewColumn: 2 }); + }, + (error) => { + + } + ); + }, + (error) => { + + } + ); } // Peripherals diff --git a/src/frontend/memory_content_provider.ts b/src/frontend/memory_content_provider.ts new file mode 100644 index 00000000..9cf11f9b --- /dev/null +++ b/src/frontend/memory_content_provider.ts @@ -0,0 +1,54 @@ +import * as vscode from "vscode"; +import { hexFormat } from './utils'; + +export class MemoryContentProvider implements vscode.TextDocumentContentProvider { + provideTextDocumentContent(uri: vscode.Uri, token: vscode.CancellationToken): Thenable { + return new Promise((resolve, reject) => { + let highlightAt = -1; + let query = this.parseQuery(uri.query); + + let address: number = query['address'].startsWith('0x') ? parseInt(query['address'].substring(2), 16) : parseInt(query['address'], 10); + let length: number = query['length'].startsWith('0x') ? parseInt(query['length'].substring(2), 16) : parseInt(query['length'], 10); + + vscode.debug.activeDebugSession.customRequest('read-memory', { address: address, length: length || 32 }).then((data) => { + let bytes = data.bytes; + + let lineAddress = address & 0xFFFFFFF0; + let lineLength = 16; + let offset = address - lineAddress; + + let output = ''; + + output += hexFormat(lineAddress, 8) + '\t\t'; + + for (let i = 0; i < offset; i++) { output += ' '; } + + for (let i = 0; i < length; i++) { + output += hexFormat(bytes[i], 2, false) + ' '; + if ((address + i) % 16 === 15 && i < length - 1) { + output += '\n'; + lineAddress += 16; + output += hexFormat(lineAddress, 8) + '\t\t'; + } + } + + output += '\n'; + + resolve(output); + }, (error) => { + vscode.window.showErrorMessage(`Unable to read memory at ${address}`); + reject(error.toString()); + }); + }); + } + + private parseQuery(queryString) { + var query = {}; + var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&'); + for (var i = 0; i < pairs.length; i++) { + var pair = pairs[i].split('='); + query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || ''); + } + return query; + } +} \ No newline at end of file diff --git a/src/frontend/utils.ts b/src/frontend/utils.ts index b2df1078..50518a50 100644 --- a/src/frontend/utils.ts +++ b/src/frontend/utils.ts @@ -1,7 +1,7 @@ -export function hexFormat(value: number, padding: number = 8) : string { +export function hexFormat(value: number, padding: number = 8, includePrefix: boolean = true) : string { var base = value.toString(16); while(base.length < padding) { base = '0' + base; } - return '0x' + base; + return includePrefix ? '0x' + base : base; } export function binaryFormat(value: number, padding: number = 0) : string { From 0c7bd61ece971c97d63988cb90a851317d5af4e6 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 10:48:10 -0400 Subject: [PATCH 09/31] Code cleanup - Improve some error message - Minor formatting consistency --- src/gdb.ts | 10 +++++----- src/jlink.ts | 9 ++++----- src/openocd.ts | 9 ++++----- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/gdb.ts b/src/gdb.ts index d2b2de60..202e3586 100644 --- a/src/gdb.ts +++ b/src/gdb.ts @@ -65,7 +65,7 @@ export class GDBDebugSession extends MI2DebugSession { }, error => { response.body = { 'error': error }; this.sendErrorResponse(response, 114, `Unable to read memory: ${error.toString()}`); - }) + }); } protected writeMemoryRequest(response: DebugProtocol.Response, startAddress: number, data: string) { @@ -75,12 +75,12 @@ export class GDBDebugSession extends MI2DebugSession { }, error => { response.body = { 'error': error }; this.sendErrorResponse(response, 114, `Unable to write memory: ${error.toString()}`); - }) + }); } protected readRegistersRequest(response: DebugProtocol.Response) { this.miDebugger.sendCommand('data-list-register-values x').then(node => { - if(node.resultRecords.resultClass == 'done') { + if (node.resultRecords.resultClass == 'done') { let rv = node.resultRecords.results[0][1]; response.body = rv.map(n => { let val = {}; @@ -104,10 +104,10 @@ export class GDBDebugSession extends MI2DebugSession { protected readRegisterListRequest(response: DebugProtocol.Response) { this.miDebugger.sendCommand('data-list-register-names').then(node => { - if(node.resultRecords.resultClass == 'done') { + if (node.resultRecords.resultClass == 'done') { let registerNames; node.resultRecords.results.forEach(rr => { - if(rr[0] == 'register-names') { + if (rr[0] == 'register-names') { registerNames = rr[1]; } }); diff --git a/src/jlink.ts b/src/jlink.ts index db171305..e0e416da 100644 --- a/src/jlink.ts +++ b/src/jlink.ts @@ -110,10 +110,10 @@ class JLinkGDBDebugSession extends GDBDebugSession { if (this.crashed) this.handlePause(undefined); }, err => { - this.sendErrorResponse(response, 100, `Failed to Start MI Debugger: ${err.toString()}`); + this.sendErrorResponse(response, 100, `Failed to launch GDB: ${err.toString()}`); }); }, err => { - this.sendErrorResponse(response, 103, `Failed to load MI Debugger: ${err.toString()}`); + this.sendErrorResponse(response, 103, `Failed to launch GDB: ${err.toString()}`); }); }); @@ -123,9 +123,8 @@ class JLinkGDBDebugSession extends GDBDebugSession { this.jlink.exit(); this.sendErrorResponse(response, 103, `Failed to launch JLink Server: Timeout.`); }, 10000); - }, error => { - console.log('Unable to launch'); - this.sendErrorResponse(response, 103, `Failed to launch JLink Server: ${error.toString()}`); + }, err => { + this.sendErrorResponse(response, 103, `Failed to launch JLink Server: ${err.toString()}`); }); } diff --git a/src/openocd.ts b/src/openocd.ts index b2a8c70b..501982ba 100644 --- a/src/openocd.ts +++ b/src/openocd.ts @@ -114,10 +114,10 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { if (this.crashed) this.handlePause(undefined); }, err => { - this.sendErrorResponse(response, 100, `Failed to Start MI Debugger: ${err.toString()}`); + this.sendErrorResponse(response, 100, `Failed to launch GDB: ${err.toString()}`); }); }, err => { - this.sendErrorResponse(response, 103, `Failed to load MI Debugger: ${err.toString()}`); + this.sendErrorResponse(response, 103, `Failed to launch GDB: ${err.toString()}`); }); }) @@ -134,9 +134,8 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server. Timeout.`); }, 10000); // Timeout Launching - }, error => { - console.log('Unable to launch'); - this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server: ${error.toString()}`); + }, err => { + this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server: ${err.toString()}`); }); } From 8556b669827df7f743bb29c4fd068c3f77fdd62c Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 10:51:07 -0400 Subject: [PATCH 10/31] Updated package.json to reflect the new memory view command --- package.json | 56 ++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 1db77e4d..ffdf5bc4 100644 --- a/package.json +++ b/package.json @@ -14,18 +14,18 @@ { "command": "cortexPeripherals.selectedNode", "title": "Selected" - }, + }, { - "command": "marus.cortex-debug-openocd.examineMemory", - "title": "View Memory Content", - "category": "Cortex-Debug" - }, + "category": "Cortex-Debug", + "command": "marus.cortex-debug-openocd.examineMemory", + "title": "View Memory Content" + }, { - "command": "marus.cortex-debug-jlink.examineMemory", - "title": "View Memory Content", - "category": "Cortex-Debug" + "category": "Cortex-Debug", + "command": "marus.cortex-debug-jlink.examineMemory", + "title": "View Memory Content" } - ], + ], "debuggers": [ { "configurationAttributes": { @@ -1455,6 +1455,24 @@ } ], "menus": { + "commandPalette": [ + { + "command": "cortexPeripherals.updateNode", + "when": "false" + }, + { + "command": "cortexPeripherals.selectedNode", + "when": "false" + }, + { + "command": "marus.cortex-debug-openocd.examineMemory", + "when": "debugType == openocd-gdb" + }, + { + "command": "marus.cortex-debug-jlink.examineMemory", + "when": "debugType == jlink-gdb" + } + ], "view/item/context": [ { "command": "cortexPeripherals.updateNode", @@ -1469,25 +1487,7 @@ "when": "view == cortexPeripherals && viewItem == registerWO" } ], - "view/title": [], - "commandPalette": [ - { - "command": "cortexPeripherals.updateNode", - "when": "false" - }, - { - "command": "cortexPeripherals.selectedNode", - "when": "false" - }, - { - "command": "marus.cortex-debug-openocd.examineMemory", - "when": "debugType == openocd-gdb" - }, - { - "command": "marus.cortex-debug-jlink.examineMemory", - "when": "debugType == jlink-gdb" - } - ] + "view/title": [] }, "views": { "debug": [ From ecf2f98c2bc6b0d372d5bf5ae4a6556817e1919f Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 11:04:24 -0400 Subject: [PATCH 11/31] Updated package.json to reflect the changes to the SWO/Graphing configuration --- package.json | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index ffdf5bc4..0448dc38 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "type": "number" }, "plots": { - "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section", "items": { "properties": { "color": { @@ -118,7 +118,7 @@ }, "required": [ "label", - "ports", + "plots", "minimum", "maximum" ], @@ -171,8 +171,8 @@ } }, "required": [ - "xPort", - "yPort", + "xGraphId", + "yGraphId", "label" ], "type": "object" @@ -324,6 +324,9 @@ }, { "properties": { + "config": { + "type": "any" + }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", "type": "string" @@ -418,7 +421,7 @@ "type": "number" }, "plots": { - "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section", "items": { "properties": { "color": { @@ -455,7 +458,7 @@ }, "required": [ "label", - "ports", + "plots", "minimum", "maximum" ], @@ -508,8 +511,8 @@ } }, "required": [ - "xPort", - "yPort", + "xGraphId", + "yGraphId", "label" ], "type": "object" @@ -661,6 +664,9 @@ }, { "properties": { + "config": { + "type": "any" + }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", "type": "string" @@ -783,7 +789,7 @@ "type": "number" }, "plots": { - "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section", "items": { "properties": { "color": { @@ -820,7 +826,7 @@ }, "required": [ "label", - "ports", + "plots", "minimum", "maximum" ], @@ -873,8 +879,8 @@ } }, "required": [ - "xPort", - "yPort", + "xGraphId", + "yGraphId", "label" ], "type": "object" @@ -1037,6 +1043,9 @@ }, { "properties": { + "config": { + "type": "any" + }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", "type": "string" @@ -1129,7 +1138,7 @@ "type": "number" }, "plots": { - "description": "SWO Port configuration. Ports selected must be configured as a \"graph\" format port in the \"swoConfig\" section", + "description": "Plot configurations. Data sources must be configured for \"graph\" (or \"advanced\" with a decoder that sends graph data) in the \"swoConfig\" section", "items": { "properties": { "color": { @@ -1166,7 +1175,7 @@ }, "required": [ "label", - "ports", + "plots", "minimum", "maximum" ], @@ -1219,8 +1228,8 @@ } }, "required": [ - "xPort", - "yPort", + "xGraphId", + "yGraphId", "label" ], "type": "object" @@ -1383,6 +1392,9 @@ }, { "properties": { + "config": { + "type": "any" + }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", "type": "string" From cdbc3a3b8b3b5ed61da21b5bbd236fe8186257ff Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 11:16:58 -0400 Subject: [PATCH 12/31] Added some basic telemetry reporting --- package.json | 1 + src/common.ts | 14 ++++++++++++++ src/frontend/extension.ts | 27 +++++++++++++++++++++++++++ src/gdb.ts | 7 ++++++- src/jlink.ts | 6 ++++++ src/openocd.ts | 7 +++++++ src/reporting.ts | 27 +++++++++++++++++++++++++++ 7 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 src/reporting.ts diff --git a/package.json b/package.json index 0448dc38..d6efc446 100644 --- a/package.json +++ b/package.json @@ -1534,6 +1534,7 @@ "tmp": "0.0.33", "vscode-debugadapter": "^1.16.0", "vscode-debugprotocol": "^1.16.0", + "vscode-extension-telemetry": "0.0.10", "ws": "^3.3.2", "xml2js": "^0.4.19" }, diff --git a/src/common.ts b/src/common.ts index 8f62d6ae..11036017 100644 --- a/src/common.ts +++ b/src/common.ts @@ -25,4 +25,18 @@ export class SWOConfigureEvent extends Event implements DebugProtocol.Event { let body = { type: type, ...params }; super('swo-configure', body); } +} + +export class TelemetryEvent extends Event implements DebugProtocol.Event { + body: { + event: string, + parameters: { [key: string]: string }, + measures: { [key: string]: number } + }; + event: string; + + constructor(event: string, parameters: { [key: string]: string }, measures: { [key: string]: number }) { + let body = { event: event, parameters: parameters, measures: measures }; + super('record-telemetry-event', body); + } } \ No newline at end of file diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index 34a81374..b1af28ae 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -13,6 +13,7 @@ import { JLinkSWOSource } from './swo/sources/jlink'; import { OpenOCDSWOSource, OpenOCDFileSWOSource } from './swo/sources/openocd'; import { SWOConfigureEvent } from "../common"; import { MemoryContentProvider } from './memory_content_provider'; +import Reporting from '../reporting'; interface SVDInfo { expression: RegExp; @@ -48,6 +49,8 @@ class CortexDebugExtension { return { expression: exp, path: de.path }; }); + Reporting.activate(context); + context.subscriptions.push(vscode.workspace.registerTextDocumentContentProvider('examinememory', new MemoryContentProvider())); context.subscriptions.push(vscode.commands.registerCommand('cortexPeripherals.updateNode', this.peripheralsUpdateNode.bind(this))); @@ -96,6 +99,7 @@ class CortexDebugExtension { address => { if (!validateValue(address)) { vscode.window.showErrorMessage('Invalid memory address entered'); + Reporting.sendEvent('examine-memory-invalid-address', { address: address }, {}); return; } @@ -107,9 +111,11 @@ class CortexDebugExtension { (length) => { if (!validateValue(length)) { vscode.window.showErrorMessage('Invalid length entered'); + Reporting.sendEvent('examine-memory-invalid-length', { length: length }, {}); return; } + Reporting.sendEvent('examine-memory', {}, {}); vscode.window.showTextDocument(vscode.Uri.parse(`examinememory:///Memory%20[${address}+${length}]?address=${address}&length=${length}`), { viewColumn: 2 }); }, (error) => { @@ -165,6 +171,18 @@ class CortexDebugExtension { } } + let info = { + type: args.type, + swo: args.SWOConfig.enabled ? 'enabled' : 'disabled', + graphing: (args.GraphConfig && args.GraphConfig.length > 0) ? 'enabled' : 'disabled' + }; + + if (args.type == 'jlink-gdb') { + info['device'] = args.device; + } + + Reporting.sendEvent('debug-session-started', info, {}); + this.registerProvider.debugSessionStarted(); this.peripheralProvider.debugSessionStarted(svdfile ? svdfile : null); @@ -175,6 +193,8 @@ class CortexDebugExtension { } debugSessionTerminated(session: vscode.DebugSession) { + Reporting.sendEvent('debug-session-terminated', {}, {}); + this.registerProvider.debugSessionTerminated(); this.peripheralProvider.debugSessionTerminated(); if (this.swo) { @@ -200,6 +220,9 @@ class CortexDebugExtension { case 'adapter-output': this.receivedAdapterOutput(e); break; + case 'record-telemetry-event': + this.receivedTelemetryEvent(e); + break; default: break; @@ -218,6 +241,10 @@ class CortexDebugExtension { if (this.swo) { this.swo.debugContinued(); } } + receivedTelemetryEvent(e) { + Reporting.sendEvent(e.body.event, e.body.properties || {}, e.body.measures || {}); + } + receivedSWOConfigureEvent(e) { if (e.body.type == 'jlink') { this.swosource = new JLinkSWOSource(e.body.port); diff --git a/src/gdb.ts b/src/gdb.ts index 202e3586..6310b2f2 100644 --- a/src/gdb.ts +++ b/src/gdb.ts @@ -3,6 +3,7 @@ import { DebugSession, InitializedEvent, TerminatedEvent, StoppedEvent, OutputEv import { DebugProtocol } from 'vscode-debugprotocol'; import { MI2 } from "./backend/mi2/mi2"; import { hexFormat } from './frontend/utils'; +import { TelemetryEvent } from './common'; export class GDBDebugSession extends MI2DebugSession { protected initializeRequest(response: DebugProtocol.InitializeResponse, args: DebugProtocol.InitializeRequestArguments): void { @@ -65,6 +66,7 @@ export class GDBDebugSession extends MI2DebugSession { }, error => { response.body = { 'error': error }; this.sendErrorResponse(response, 114, `Unable to read memory: ${error.toString()}`); + this.sendEvent(new TelemetryEvent('error-reading-memory', { address: startAddress.toString(), length: length.toString() }, {})); }); } @@ -75,6 +77,7 @@ export class GDBDebugSession extends MI2DebugSession { }, error => { response.body = { 'error': error }; this.sendErrorResponse(response, 114, `Unable to write memory: ${error.toString()}`); + this.sendEvent(new TelemetryEvent('error-writing-memory', { address: startAddress.toString(), length: data.length.toString() }, {})); }); } @@ -99,7 +102,8 @@ export class GDBDebugSession extends MI2DebugSession { }, error => { response.body = { 'error': error }; this.sendErrorResponse(response, 115, `Unable to read registers: ${error.toString()}`); - }); + this.sendEvent(new TelemetryEvent('error-reading-registers', {}, {})); + }); } protected readRegisterListRequest(response: DebugProtocol.Response) { @@ -120,6 +124,7 @@ export class GDBDebugSession extends MI2DebugSession { }, error => { response.body = { 'error': error }; this.sendErrorResponse(response, 116, `Unable to read register list: ${error.toString()}`); + this.sendEvent(new TelemetryEvent('error-reading-register-list', {}, {})); }); } } diff --git a/src/jlink.ts b/src/jlink.ts index e0e416da..bf0d1328 100644 --- a/src/jlink.ts +++ b/src/jlink.ts @@ -6,6 +6,7 @@ import { MI2 } from "./backend/mi2/mi2"; import { AdapterOutputEvent, SWOConfigureEvent } from './common'; import * as portastic from 'portastic'; import * as os from 'os'; +import { TelemetryEvent } from './common'; export interface ConfigurationArguments extends DebugProtocol.LaunchRequestArguments { gdbpath: string; @@ -75,6 +76,7 @@ class JLinkGDBDebugSession extends GDBDebugSession { } else { this.sendErrorResponse(response, 103, `J-Link GDB Server Quit Unexpectedly. See Adapter Output for more details.`); + this.sendErrorResponse(response, 103, `J-Link GDB Server Quit Unexpectedly.`); } }); @@ -111,9 +113,11 @@ class JLinkGDBDebugSession extends GDBDebugSession { this.handlePause(undefined); }, err => { this.sendErrorResponse(response, 100, `Failed to launch GDB: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-gdb', { error: err.toString() }, {})); }); }, err => { this.sendErrorResponse(response, 103, `Failed to launch GDB: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-gdb', { error: err.toString() }, {})); }); }); @@ -121,9 +125,11 @@ class JLinkGDBDebugSession extends GDBDebugSession { timeout = setTimeout(() => { this.jlink.exit(); + this.sendEvent(new TelemetryEvent('error-launching-jlink', { error: `Failed to launch JLink Server: Timeout.` }, {})); this.sendErrorResponse(response, 103, `Failed to launch JLink Server: Timeout.`); }, 10000); }, err => { + this.sendEvent(new TelemetryEvent('error-launching-jlink', { error: err.toString() }, {})); this.sendErrorResponse(response, 103, `Failed to launch JLink Server: ${err.toString()}`); }); } diff --git a/src/openocd.ts b/src/openocd.ts index 501982ba..81d73a6f 100644 --- a/src/openocd.ts +++ b/src/openocd.ts @@ -8,6 +8,7 @@ import * as tmp from 'tmp'; import * as os from 'os'; import { AdapterOutputEvent, SWOConfigureEvent } from './common'; import { clearTimeout } from 'timers'; +import { TelemetryEvent } from './common'; interface ConfigurationArguments extends DebugProtocol.LaunchRequestArguments { debugger_args: string[]; @@ -81,6 +82,7 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { } else { this.sendErrorResponse(response, 103, `OpenOCD GDB Server Quit Unexpectedly. See Adapter Output for more details.`); + this.sendErrorResponse(response, 103, `OpenOCD GDB Server Quit Unexpectedly.`); } }); @@ -115,9 +117,11 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { this.handlePause(undefined); }, err => { this.sendErrorResponse(response, 100, `Failed to launch GDB: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-gdb', { error: err.toString() }, {})); }); }, err => { this.sendErrorResponse(response, 103, `Failed to launch GDB: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-gdb', { error: err.toString() }, {})); }); }) @@ -127,15 +131,18 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { } }, err => { this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-openocd', { error: err.toString() }, {})); }); timeout = setTimeout(() => { this.openocd.exit(); this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server. Timeout.`); + this.sendEvent(new TelemetryEvent('error-launching-openocd', { error: `Failed to launch OpenOCD Server. Timeout.` }, {})); }, 10000); // Timeout Launching }, err => { this.sendErrorResponse(response, 103, `Failed to launch OpenOCD Server: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-openocd', { error: err.toString() }, {})); }); } diff --git a/src/reporting.ts b/src/reporting.ts new file mode 100644 index 00000000..6950a01b --- /dev/null +++ b/src/reporting.ts @@ -0,0 +1,27 @@ +import * as vscode from 'vscode'; +import TelemetryReporter from 'vscode-extension-telemetry'; +let reporter: TelemetryReporter; + +const extension = vscode.extensions.getExtension('marus.cortex-debug'); + +const extensionId = extension.id; +const extensionVersion = extension.packageJSON.version; +const key = '1b93f859-5da5-4127-aa82-edcf77f7ab3e'; + +function activate(context: vscode.ExtensionContext) { + reporter = new TelemetryReporter(extensionId, extensionVersion, key) +} + +function deactivate() { + if (reporter) { reporter.dispose(); } +} + +function sendEvent(name: string, properties: { [key: string]: string; }, measures: { [key: string]: number; }) { + reporter.sendTelemetryEvent(name, properties, measures); +} + +export default { + activate: activate, + deactivate: deactivate, + sendEvent: sendEvent +}; \ No newline at end of file From 42f7c940df80dfff8576f2327b25d4acc138ef1f Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 11:25:13 -0400 Subject: [PATCH 13/31] Added Character Decoding to and additional formatting to memory viewer --- src/frontend/memory_content_provider.ts | 28 +++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/frontend/memory_content_provider.ts b/src/frontend/memory_content_provider.ts index 9cf11f9b..722b5577 100644 --- a/src/frontend/memory_content_provider.ts +++ b/src/frontend/memory_content_provider.ts @@ -18,20 +18,40 @@ export class MemoryContentProvider implements vscode.TextDocumentContentProvider let offset = address - lineAddress; let output = ''; + output += 'Address \t|\tData \t|\tCharacter\n'; + output += '-------------------------------------------------------------------------------------------------------\n'; - output += hexFormat(lineAddress, 8) + '\t\t'; + output += hexFormat(lineAddress, 8) + '\t|\t'; - for (let i = 0; i < offset; i++) { output += ' '; } + let lineend = ''; + + for (let i = 0; i < offset; i++) { output += ' '; lineend += ' '; } for (let i = 0; i < length; i++) { - output += hexFormat(bytes[i], 2, false) + ' '; + let byte = bytes[i]; + output += hexFormat(byte, 2, false) + ' '; + if (byte <= 32 || (byte >= 127 && byte <= 159)) { + lineend += '. '; + } + else { + lineend += String.fromCharCode(bytes[i]) + ' '; + } + if ((address + i) % 16 === 15 && i < length - 1) { + output += '\t|\t' + lineend; + lineend = ''; output += '\n'; lineAddress += 16; - output += hexFormat(lineAddress, 8) + '\t\t'; + output += hexFormat(lineAddress, 8) + '\t|\t'; } } + let endaddress = address + length; + let extra = (16 - (endaddress % 16)) % 16; + + for (let i = 0; i < extra; i++) { output += ' '; } + output += '\t|\t' + lineend; + output += '\n'; resolve(output); From 025c31b7c6f0b82f87fc7a76414033613146b356 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 11:49:22 -0400 Subject: [PATCH 14/31] Updated graphing JavaScript --- grapher/main.bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grapher/main.bundle.js b/grapher/main.bundle.js index bd66bcf4..2df9cf97 100644 --- a/grapher/main.bundle.js +++ b/grapher/main.bundle.js @@ -1,2 +1,2 @@ -!function(t){function n(e){if(r[e])return r[e].exports;var i=r[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var r={};n.m=t,n.c=r,n.i=function(t){return t},n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=469)}([function(t,n,r){"use strict";function e(t){return t>1?0:t<-1?c:Math.acos(t)}function i(t){return t>1?f:t<-1?-f:Math.asin(t)}function u(t){return(t=w(t/2))*t}r.d(n,"o",function(){return o}),r.d(n,"w",function(){return a}),r.d(n,"a",function(){return c}),r.d(n,"k",function(){return f}),r.d(n,"v",function(){return s}),r.d(n,"b",function(){return l}),r.d(n,"h",function(){return h}),r.d(n,"g",function(){return d}),r.d(n,"p",function(){return p}),r.d(n,"l",function(){return v}),r.d(n,"e",function(){return g}),r.d(n,"c",function(){return y}),r.d(n,"u",function(){return _}),r.d(n,"m",function(){return b}),r.d(n,"i",function(){return m}),r.d(n,"r",function(){return x}),r.d(n,"d",function(){return w}),r.d(n,"q",function(){return M}),r.d(n,"n",function(){return k}),r.d(n,"j",function(){return T}),n.s=e,n.f=i,n.t=u;var o=1e-6,a=1e-12,c=Math.PI,f=c/2,s=c/4,l=2*c,h=180/c,d=c/180,p=Math.abs,v=Math.atan,g=Math.atan2,y=Math.cos,_=Math.ceil,b=Math.exp,m=(Math.floor,Math.log),x=Math.pow,w=Math.sin,M=Math.sign||function(t){return t>0?1:t<0?-1:0},k=Math.sqrt,T=Math.tan},function(t,n,r){"use strict";var e=r(74);r.d(n,"a",function(){return e.a});var i=r(361);r.d(n,"b",function(){return i.a});var u=r(146);r.d(n,"c",function(){return u.a});var o=r(362);r.d(n,"d",function(){return o.a});var a=r(75);r.d(n,"e",function(){return a.a});var c=r(76);r.d(n,"f",function(){return c.a});var f=r(41);r.d(n,"g",function(){return f.a});var s=r(363);r.d(n,"h",function(){return s.a});var l=r(364);r.d(n,"i",function(){return l.a});var h=r(5);r.d(n,"j",function(){return h.a});var d=r(78);r.d(n,"k",function(){return d.a});var p=r(150);r.d(n,"l",function(){return p.a});var v=r(149);r.d(n,"m",function(){return v.a});var g=r(391);r.d(n,"n",function(){return g.a});var y=r(392);r.d(n,"o",function(){return y.a});var _=r(80);r.d(n,"p",function(){return _.a});var b=r(77);r.d(n,"q",function(){return b.a}),r.d(n,"r",function(){return b.b})},function(t,n,r){"use strict";function e(t,n,r,o){function a(n){return t(n=new Date(+n)),n}return a.floor=a,a.ceil=function(r){return t(r=new Date(r-1)),n(r,1),t(r),r},a.round=function(t){var n=a(t),r=a.ceil(t);return t-n0))return o;do{o.push(u=new Date(+r)),n(r,i),t(r)}while(u=n)for(;t(n),!r(n);)n.setTime(n-1)},function(t,e){if(t>=t)if(e<0)for(;++e<=0;)for(;n(t,-1),!r(t););else for(;--e>=0;)for(;n(t,1),!r(t););})},r&&(a.count=function(n,e){return i.setTime(+n),u.setTime(+e),t(i),t(u),Math.floor(r(i,u))},a.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?a.filter(o?function(n){return o(n)%t==0}:function(n){return a.count(0,n)%t==0}):a:null}),a}n.a=e;var i=new Date,u=new Date},function(t,n,r){"use strict";var e=r(92);r.d(n,"a",function(){return e.a}),r.d(n,"b",function(){return e.b}),r.d(n,"c",function(){return e.c});var i=r(17);r.d(n,"d",function(){return i.a});var u=r(93);r.d(n,"e",function(){return u.a});var o=r(177);r.d(n,"f",function(){return o.a});var a=r(178);r.d(n,"g",function(){return a.a});var c=r(94);r.d(n,"h",function(){return c.a});var f=r(95);r.d(n,"i",function(){return f.a});var s=r(179);r.d(n,"j",function(){return s.a});var l=r(189);r.d(n,"k",function(){return l.a});var h=r(190);r.d(n,"l",function(){return h.a});var d=r(99);r.d(n,"m",function(){return d.a});var p=r(181);r.d(n,"n",function(){return p.a});var v=r(182);r.d(n,"o",function(){return v.a});var g=r(183);r.d(n,"p",function(){return g.a});var y=r(184);r.d(n,"q",function(){return y.a});var _=r(96);r.d(n,"r",function(){return _.a});var b=r(97);r.d(n,"s",function(){return b.a});var m=r(185);r.d(n,"t",function(){return m.a});var x=r(50);r.d(n,"u",function(){return x.a});var w=r(98);r.d(n,"v",function(){return w.a});var M=r(186);r.d(n,"w",function(){return M.a});var k=r(187);r.d(n,"x",function(){return k.a});var T=r(188);r.d(n,"y",function(){return T.a});var E=r(100);r.d(n,"z",function(){return E.a}),r.d(n,"A",function(){return E.b}),r.d(n,"B",function(){return E.c});var A=r(101);r.d(n,"C",function(){return A.a});var N=r(102);r.d(n,"D",function(){return N.a});var S=r(191);r.d(n,"E",function(){return S.a})},function(t,n,r){"use strict";var e=r(69);r.d(n,"a",function(){return e.a});var i=r(132);r.d(n,"b",function(){return i.a});var u=r(68);r.d(n,"c",function(){return u.a});var o=r(133);r.d(n,"d",function(){return o.a});var a=r(135);r.d(n,"e",function(){return a.a});var c=r(38);r.d(n,"f",function(){return c.a});var f=r(136);r.d(n,"g",function(){return f.a});var s=r(301);r.d(n,"h",function(){return s.a});var l=r(138);r.d(n,"i",function(){return l.a});var h=r(303);r.d(n,"j",function(){return h.a}),r.d(n,"k",function(){return h.b});var d=r(305);r.d(n,"l",function(){return d.a});var p=r(137);r.d(n,"m",function(){return p.a}),r.d(n,"n",function(){return p.b}),r.d(n,"o",function(){return p.c});var v=r(298);r.d(n,"p",function(){return v.a}),r.d(n,"q",function(){return v.b});var g=r(299);r.d(n,"r",function(){return g.a});var y=r(297);r.d(n,"s",function(){return y.a}),r.d(n,"t",function(){return y.b});var _=r(296);r.d(n,"u",function(){return _.a}),r.d(n,"v",function(){return _.b});var b=r(300);r.d(n,"w",function(){return b.a})},function(t,n,r){"use strict";function e(t,n){this._groups=t,this._parents=n}function i(){return new e([[document.documentElement]],L)}var u=r(386),o=r(387),a=r(375),c=r(369),f=r(147),s=r(374),l=r(379),h=r(382),d=r(389),p=r(367),v=r(381),g=r(380),y=r(388),_=r(373),b=r(372),m=r(366),x=r(149),w=r(383),M=r(368),k=r(390),T=r(376),E=r(384),A=r(378),N=r(365),S=r(377),C=r(385),q=r(370),z=r(77),P=r(371);r.d(n,"c",function(){return L}),n.b=e;var L=[null];e.prototype=i.prototype={constructor:e,select:u.a,selectAll:o.a,filter:a.a,data:c.a,enter:f.a,exit:s.a,merge:l.a,order:h.a,sort:d.a,call:p.a,nodes:v.a,node:g.a,size:y.a,empty:_.a,each:b.a,attr:m.a,style:x.b,property:w.a,classed:M.a,text:k.a,html:T.a,raise:E.a,lower:A.a,append:N.a,insert:S.a,remove:C.a,datum:q.a,on:z.c,dispatch:P.a},n.a=i},function(t,n,r){"use strict";function e(t,n){var r=u(t,n);if(r.state>l)throw new Error("too late; already scheduled");return r}function i(t,n){var r=u(t,n);if(r.state>d)throw new Error("too late; already started");return r}function u(t,n){var r=t.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function o(t,n,e){function i(t){e.state=h,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(i){var l,g,_,b;if(e.state!==h)return a();for(l in s)if(b=s[l],b.name===e.name){if(b.state===p)return r.i(c.d)(u);b.state===v?(b.state=y,b.timer.stop(),b.on.call("interrupt",t,t.__data__,b.index,b.group),delete s[l]):+l2?t[2]%360*l.g:0,d()):[P*l.h,L*l.h,D*l.h]},n.precision=function(t){return arguments.length?(F=r.i(v.a)(u,I=t*t),y()):r.i(l.n)(I)},n.fitExtent=function(t,e){return r.i(p.a)(n,t,e)},n.fitSize=function(t,e){return r.i(p.b)(n,t,e)},n.fitWidth=function(t,e){return r.i(p.c)(n,t,e)},n.fitHeight=function(t,e){return r.i(p.d)(n,t,e)},function(){return _=t.apply(this,arguments),n.invert=_.invert&&i,d()}}var o=r(115),a=r(117),c=r(34),f=r(120),s=r(60),l=r(0),h=r(35),d=r(36),p=r(63),v=r(271);n.a=i,n.b=u;var g=r.i(d.b)({point:function(t,n){this.stream.point(t*l.g,n*l.g)}})},function(t,n,r){"use strict";r.d(n,"e",function(){return e}),r.d(n,"d",function(){return i}),r.d(n,"c",function(){return u}),r.d(n,"b",function(){return o}),r.d(n,"a",function(){return a});var e=1e3,i=6e4,u=36e5,o=864e5,a=6048e5},function(t,n,r){"use strict";function e(){}n.a=e},function(t,n,r){"use strict";function e(t,n,r,e){this._groups=t,this._parents=n,this._name=r,this._id=e}function i(t){return r.i(o.j)().transition(t)}function u(){return++k}var o=r(1),a=r(439),c=r(440),f=r(441),s=r(442),l=r(443),h=r(444),d=r(445),p=r(446),v=r(447),g=r(448),y=r(449),_=r(450),b=r(451),m=r(452),x=r(453),w=r(454),M=r(48);n.b=e,n.a=i,n.c=u;var k=0,T=o.j.prototype;e.prototype=i.prototype={constructor:e,select:g.a,selectAll:y.a,filter:h.a,merge:d.a,selection:_.a,transition:w.a,call:T.call,nodes:T.nodes,node:T.node,size:T.size,empty:T.empty,each:T.each,on:p.a,attr:a.a,attrTween:c.a,style:b.a,styleTween:m.a,text:x.a,remove:v.a,tween:M.a,delay:f.a,duration:s.a,ease:l.a}},function(t,n,r){"use strict";var e=r(213);r.d(n,"a",function(){return e.a})},function(t,n,r){"use strict";function e(t,n){t&&a.hasOwnProperty(t.type)&&a[t.type](t,n)}function i(t,n,r){var e,i=-1,u=t.length-r;for(n.lineStart();++in?1:t>=n?0:NaN}},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(){this.reset()}function i(t,n,r){var e=t.s=n+r,i=e-n,u=e-i;t.t=n-u+(r-i)}n.a=function(){return new e},e.prototype={constructor:e,reset:function(){this.s=this.t=0},add:function(t){i(u,t,this.t),i(this,u.s,this.s),this.s?this.t+=u.t:this.s=u.t},valueOf:function(){return this.s}};var u=new e},function(t,n,r){"use strict";n.a=function(){return Math.random()}},function(t,n,r){"use strict";n.a=function(t){return null===t?NaN:+t}},function(t,n,r){"use strict";var e=r(208);r.d(n,"a",function(){return e.a});var i=r(209);r.d(n,"b",function(){return i.a});var u=r(51);r.d(n,"c",function(){return u.a});var o=r(207);r.d(n,"d",function(){return o.a});var a=r(210);r.d(n,"e",function(){return a.a});var c=r(206);r.d(n,"f",function(){return c.a})},function(t,n,r){"use strict";function e(t){return[r.i(s.e)(t[1],t[0]),r.i(s.f)(t[2])]}function i(t){var n=t[0],e=t[1],i=r.i(s.c)(e);return[i*r.i(s.c)(n),i*r.i(s.d)(n),r.i(s.d)(e)]}function u(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function o(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 a(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function c(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function f(t){var n=r.i(s.n)(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var s=r(0);n.g=e,n.a=i,n.d=u,n.b=o,n.f=a,n.e=c,n.c=f},function(t,n,r){"use strict";function e(t){return function(n,e){var i=r.i(u.c)(n),o=r.i(u.c)(e),a=t(i*o);return[a*o*r.i(u.d)(n),a*r.i(u.d)(e)]}}function i(t){return function(n,e){var i=r.i(u.n)(n*n+e*e),o=t(i),a=r.i(u.d)(o),c=r.i(u.c)(o);return[r.i(u.e)(n*a,i*c),r.i(u.f)(i&&e*a/i)]}}var u=r(0);n.b=e,n.a=i},function(t,n,r){"use strict";n.a=function(t,n,r,e,i){for(var u,o=t.children,a=-1,c=o.length,f=t.value&&(e-n)/t.value;++a180||i<-180?i-360*Math.round(i/360):i):r.i(c.a)(isNaN(t)?n:t)}function o(t){return 1==(t=+t)?a:function(n,e){return e-n?i(n,e,t):r.i(c.a)(isNaN(n)?e:n)}}function a(t,n){var i=n-t;return i?e(t,i):r.i(c.a)(isNaN(t)?n:t)}var c=r(134);n.b=u,n.c=o,n.a=a},function(t,n,r){"use strict";n.a=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})}},function(t,n,r){"use strict";function e(t){var n=t.domain;return t.ticks=function(t){var e=n();return r.i(u.z)(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){return r.i(c.a)(n(),t,e)},t.nice=function(e){null==e&&(e=10);var i,o=n(),a=0,c=o.length-1,f=o[a],s=o[c];return s0?(f=Math.floor(f/i)*i,s=Math.ceil(s/i)*i,i=r.i(u.A)(f,s,e)):i<0&&(f=Math.ceil(f*i)/i,s=Math.floor(s*i)/i,i=r.i(u.A)(f,s,e)),i>0?(o[a]=Math.floor(f/i)*i,o[c]=Math.ceil(s/i)*i,n(o)):i<0&&(o[a]=Math.ceil(f*i)/i,o[c]=Math.floor(s*i)/i,n(o)),t},t}function i(){var t=r.i(a.a)(a.b,o.f);return t.copy=function(){return r.i(a.c)(t,i())},e(t)}var u=r(3),o=r(4),a=r(40),c=r(357);n.b=e,n.a=i},function(t,n,r){"use strict";function e(t){return t>1?0:t<-1?d:Math.acos(t)}function i(t){return t>=1?p:t<=-1?-p:Math.asin(t)}r.d(n,"g",function(){return u}),r.d(n,"m",function(){return o}),r.d(n,"h",function(){return a}),r.d(n,"e",function(){return c}),r.d(n,"j",function(){return f}),r.d(n,"i",function(){return s}),r.d(n,"d",function(){return l}),r.d(n,"a",function(){return h}),r.d(n,"b",function(){return d}),r.d(n,"f",function(){return p}),r.d(n,"c",function(){return v}),n.l=e,n.k=i;var u=Math.abs,o=Math.atan2,a=Math.cos,c=Math.max,f=Math.min,s=Math.sin,l=Math.sqrt,h=1e-12,d=Math.PI,p=d/2,v=2*d},function(t,n,r){"use strict";n.a=function(t,n){if((i=t.length)>1)for(var r,e,i,u=1,o=t[n[0]],a=o.length;u=0;)r[n]=n;return r}},function(t,n,r){"use strict";function e(t,n,r){return(t[0]-r[0])*(n[1]-t[1])-(t[0]-n[0])*(r[1]-t[1])}function i(t,n){return n[1]-t[1]||n[0]-t[0]}function u(t,n){var e,u,v,g=t.sort(i).pop();for(p=[],h=new Array(t.length),l=new s.a,d=new s.a;;)if(v=c.a,g&&(!v||g[1]=a)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=u.cells[e=o],o=null,i.halfedges.forEach(function(r){var e=u.edges[r],a=e.left;if(a!==i.site&&a||(a=e.right)){var c=t-a[0],f=n-a[1],l=c*c+f*f;l0)do{o.point(0===a||3===a?t:e,a>1?l:n)}while((a=(a+u+4)%4)!==c);else o.point(i[0],i[1])}function p(u,o){return r.i(i.p)(u[0]-t)0?0:3:r.i(i.p)(u[0]-e)0?2:1:r.i(i.p)(u[1]-n)0?1:0:o>0?3:2}function v(t,n){return g(t.x,n.x)}function g(t,n){var r=p(t,1),e=p(n,1);return r!==e?r-e:0===r?n[1]-t[1]:1===r?t[0]-n[0]:2===r?t[1]-n[1]:n[0]-t[0]}return function(i){function p(t,n){h(t,n)&&P.point(t,n)}function g(){for(var n=0,r=0,e=M.length;rl&&(s-i)*(l-u)>(h-u)*(t-i)&&++n:h<=l&&(s-i)*(l-u)<(h-u)*(t-i)&&--n;return n}function y(){P=L,w=[],M=[],z=!0}function _(){var t=g(),n=z&&t,e=(w=r.i(c.q)(w)).length;(n||e)&&(i.polygonStart(),n&&(i.lineStart(),d(null,null,1,i),i.lineEnd()),e&&r.i(a.a)(w,v,t,d,i),i.polygonEnd()),P=i,w=M=k=null}function b(){D.point=x,M&&M.push(k=[]),q=!0,C=!1,N=S=NaN}function m(){w&&(x(T,E),A&&C&&L.rejoin(),w.push(L.result())),D.point=p,C&&P.lineEnd()}function x(i,u){var a=h(i,u);if(M&&k.push([i,u]),q)T=i,E=u,A=a,q=!1,a&&(P.lineStart(),P.point(i,u));else if(a&&C)P.point(i,u);else{var c=[N=Math.max(s,Math.min(f,N)),S=Math.max(s,Math.min(f,S))],d=[i=Math.max(s,Math.min(f,i)),u=Math.max(s,Math.min(f,u))];r.i(o.a)(c,d,t,n,e,l)?(C||(P.lineStart(),P.point(c[0],c[1])),P.point(d[0],d[1]),a||P.lineEnd(),z=!1):a&&(P.lineStart(),P.point(i,u),z=!1)}N=i,S=u,C=a}var w,M,k,T,E,A,N,S,C,q,z,P=i,L=r.i(u.a)(),D={point:p,lineStart:b,lineEnd:m,polygonStart:y,polygonEnd:_};return D}}var i=r(0),u=r(116),o=r(250),a=r(119),c=r(3);n.a=e;var f=1e9,s=-f},function(t,n,r){"use strict";function e(t,n){return[t>f.a?t-f.b:t<-f.a?t+f.b:t,n]}function i(t,n,i){return(t%=f.b)?n||i?r.i(c.a)(o(t),a(n,i)):o(t):n||i?a(n,i):e}function u(t){return function(n,r){return n+=t,[n>f.a?n-f.b:n<-f.a?n+f.b:n,r]}}function o(t){var n=u(t);return n.invert=u(-t),n}function a(t,n){function e(t,n){var e=r.i(f.c)(n),c=r.i(f.c)(t)*e,s=r.i(f.d)(t)*e,l=r.i(f.d)(n),h=l*i+c*u;return[r.i(f.e)(s*o-h*a,c*i-l*u),r.i(f.f)(h*o+s*a)]}var i=r.i(f.c)(t),u=r.i(f.d)(t),o=r.i(f.c)(n),a=r.i(f.d)(n);return e.invert=function(t,n){var e=r.i(f.c)(n),c=r.i(f.c)(t)*e,s=r.i(f.d)(t)*e,l=r.i(f.d)(n),h=l*o-s*a;return[r.i(f.e)(s*o+l*a,c*i+h*u),r.i(f.f)(h*i-c*u)]},e}var c=r(120),f=r(0);n.b=i,e.invert=e,n.a=function(t){function n(n){return n=t(n[0]*f.g,n[1]*f.g),n[0]*=f.h,n[1]*=f.h,n}return t=i(t[0]*f.g,t[1]*f.g,t.length>2?t[2]*f.g:0),n.invert=function(n){return n=t.invert(n[0]*f.g,n[1]*f.g),n[0]*=f.h,n[1]*=f.h,n},n}},function(t,n,r){"use strict";function e(t){return function(n){var r=new i;for(var e in t)r[e]=t[e];return r.stream=n,r}}function i(){}n.b=e,n.a=function(t){return{stream:e(t)}},i.prototype={constructor:i,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()}}},function(t,n,r){"use strict";n.a=function(t,n,r,e,i){for(var u,o=t.children,a=-1,c=o.length,f=t.value&&(i-r)/t.value;++a=r?1:e(t)}}}function u(t){return function(n,r){var e=t(n=+n,r=+r);return function(t){return t<=0?n:t>=1?r:e(t)}}}function o(t,n,r,e){var i=t[0],u=t[1],o=n[0],a=n[1];return u2?a:o,s=d=null,c}function c(n){return(s||(s=f(g,y,b?i(t):t,_)))(+n)}var f,s,d,g=v,y=v,_=l.a,b=!1;return c.invert=function(t){return(d||(d=f(y,g,e,b?u(n):n)))(+t)},c.domain=function(t){return arguments.length?(g=h.a.call(t,p.a),r()):g.slice()},c.range=function(t){return arguments.length?(y=h.b.call(t),r()):y.slice()},c.rangeRound=function(t){return y=h.b.call(t),_=l.h,r()},c.clamp=function(t){return arguments.length?(b=!!t,r()):b},c.interpolate=function(t){return arguments.length?(_=t,r()):_},r()}var s=r(3),l=r(4),h=r(15),d=r(73),p=r(143);n.b=e,n.c=c,n.a=f;var v=[0,1]},function(t,n,r){"use strict";n.a=function(t,n){var r=t.ownerSVGElement||t;if(r.createSVGPoint){var e=r.createSVGPoint();return e.x=n.clientX,e.y=n.clientY,e=e.matrixTransform(t.getScreenCTM().inverse()),[e.x,e.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}},function(t,n,r){"use strict";function e(t,n,r){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+r)/6)}function i(t){this._context=t}n.c=e,n.b=i,i.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:e(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:e(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},n.a=function(t){return new i(t)}},function(t,n,r){"use strict";function e(t,n,r){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-r),t._x2,t._y2)}function i(t,n){this._context=t,this._k=(1-n)/6}n.c=e,n.b=i,i.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:e(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:e(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}},n.a=function t(n){function r(t){return new i(t,n)}return r.tension=function(n){return t(+n)},r}(0)},function(t,n,r){"use strict";function e(t){this._context=t}e.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)}}},n.a=function(t){return new e(t)}},function(t,n,r){"use strict";n.a=function(){}},function(t,n,r){"use strict";var e=r(2);r.d(n,"a",function(){return e.a});var i=r(421);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b}),r.d(n,"d",function(){return i.a}),r.d(n,"e",function(){return i.b});var u=r(424);r.d(n,"f",function(){return u.a}),r.d(n,"g",function(){return u.b}),r.d(n,"h",function(){return u.a}),r.d(n,"i",function(){return u.b});var o=r(422);r.d(n,"j",function(){return o.a}),r.d(n,"k",function(){return o.b});var a=r(420);r.d(n,"l",function(){return a.a}),r.d(n,"m",function(){return a.b});var c=r(419);r.d(n,"n",function(){return c.a}),r.d(n,"o",function(){return c.b});var f=r(431);r.d(n,"p",function(){return f.a}),r.d(n,"q",function(){return f.b}),r.d(n,"r",function(){return f.a}),r.d(n,"s",function(){return f.b}),r.d(n,"t",function(){return f.c}),r.d(n,"u",function(){return f.d}),r.d(n,"v",function(){return f.e}),r.d(n,"w",function(){return f.f}),r.d(n,"x",function(){return f.g}),r.d(n,"y",function(){return f.h}),r.d(n,"z",function(){return f.i}),r.d(n,"A",function(){return f.j}),r.d(n,"B",function(){return f.k}),r.d(n,"C",function(){return f.l}),r.d(n,"D",function(){return f.m}),r.d(n,"E",function(){return f.n});var s=r(423);r.d(n,"F",function(){return s.a}),r.d(n,"G",function(){return s.b});var l=r(432);r.d(n,"H",function(){return l.a}),r.d(n,"I",function(){return l.b});var h=r(427);r.d(n,"J",function(){return h.a}),r.d(n,"K",function(){return h.b});var d=r(426);r.d(n,"L",function(){return d.a}),r.d(n,"M",function(){return d.b});var p=r(425);r.d(n,"N",function(){return p.a}),r.d(n,"O",function(){return p.b});var v=r(429);r.d(n,"P",function(){return v.a}),r.d(n,"Q",function(){return v.b}),r.d(n,"R",function(){return v.a}),r.d(n,"S",function(){return v.b}),r.d(n,"T",function(){return v.c}),r.d(n,"U",function(){return v.d}),r.d(n,"V",function(){return v.e}),r.d(n,"W",function(){return v.f}),r.d(n,"X",function(){return v.g}),r.d(n,"Y",function(){return v.h}),r.d(n,"Z",function(){return v.i}),r.d(n,"_0",function(){return v.j}),r.d(n,"_1",function(){return v.k}),r.d(n,"_2",function(){return v.l}),r.d(n,"_3",function(){return v.m}),r.d(n,"_4",function(){return v.n});var g=r(428);r.d(n,"_5",function(){return g.a}),r.d(n,"_6",function(){return g.b});var y=r(430);r.d(n,"_7",function(){return y.a}),r.d(n,"_8",function(){return y.b})},function(t,n,r){"use strict";var e=r(87);r.d(n,"a",function(){return e.a}),r.d(n,"b",function(){return e.b}),r.d(n,"c",function(){return e.c});var i=r(434);r.d(n,"d",function(){return i.a});var u=r(433);r.d(n,"e",function(){return u.a})},function(t,n,r){"use strict";function e(t,n){var e,i;return function(){var u=r.i(o.e)(this,t),a=u.tween;if(a!==e){i=e=a;for(var c=0,f=i.length;c=1)return+r(t[i-1],i-1,t);var i,u=(i-1)*n,o=Math.floor(u),a=+r(t[o],o,t);return a+(+r(t[o+1],o+1,t)-a)*(u-o)}}},function(t,n,r){"use strict";function e(){}function i(t,n){var r=new e;if(t instanceof e)t.each(function(t,n){r.set(n,t)});else if(Array.isArray(t)){var i,u=-1,o=t.length;if(null==n)for(;++u>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=w.exec(t))?u(parseInt(n[1],16)):(n=M.exec(t))?new f(n[1],n[2],n[3],1):(n=k.exec(t))?new f(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=T.exec(t))?o(n[1],n[2],n[3],n[4]):(n=E.exec(t))?o(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=A.exec(t))?s(n[1],n[2]/100,n[3]/100,1):(n=N.exec(t))?s(n[1],n[2]/100,n[3]/100,n[4]):S.hasOwnProperty(t)?u(S[t]):"transparent"===t?new f(NaN,NaN,NaN,0):null}function u(t){return new f(t>>16&255,t>>8&255,255&t,1)}function o(t,n,r,e){return e<=0&&(t=n=r=NaN),new f(t,n,r,e)}function a(t){return t instanceof e||(t=i(t)),t?(t=t.rgb(),new f(t.r,t.g,t.b,t.opacity)):new f}function c(t,n,r,e){return 1===arguments.length?a(t):new f(t,n,r,null==e?1:e)}function f(t,n,r,e){this.r=+t,this.g=+n,this.b=+r,this.opacity=+e}function s(t,n,r,e){return e<=0?t=n=r=NaN:r<=0||r>=1?t=n=NaN:n<=0&&(t=NaN),new d(t,n,r,e)}function l(t){if(t instanceof d)return new d(t.h,t.s,t.l,t.opacity);if(t instanceof e||(t=i(t)),!t)return new d;if(t instanceof d)return t;t=t.rgb();var n=t.r/255,r=t.g/255,u=t.b/255,o=Math.min(n,r,u),a=Math.max(n,r,u),c=NaN,f=a-o,s=(a+o)/2;return f?(c=n===a?(r-u)/f+6*(r0&&s<1?0:c,new d(c,f,s,t.opacity)}function h(t,n,r,e){return 1===arguments.length?l(t):new d(t,n,r,null==e?1:e)}function d(t,n,r,e){this.h=+t,this.s=+n,this.l=+r,this.opacity=+e}function p(t,n,r){return 255*(t<60?n+(r-n)*t/60:t<180?r:t<240?n+(r-n)*(240-t)/60:n)}var v=r(53);n.f=e,r.d(n,"h",function(){return g}),r.d(n,"g",function(){return y}),n.a=i,n.e=a,n.b=c,n.d=f,n.c=h;var g=.7,y=1/g,_="\\s*([+-]?\\d+)\\s*",b="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",m="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",x=/^#([0-9a-f]{3})$/,w=/^#([0-9a-f]{6})$/,M=new RegExp("^rgb\\("+[_,_,_]+"\\)$"),k=new RegExp("^rgb\\("+[m,m,m]+"\\)$"),T=new RegExp("^rgba\\("+[_,_,_,b]+"\\)$"),E=new RegExp("^rgba\\("+[m,m,m,b]+"\\)$"),A=new RegExp("^hsl\\("+[b,m,m]+"\\)$"),N=new RegExp("^hsla\\("+[b,m,m,b]+"\\)$"),S={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};r.i(v.a)(e,i,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),r.i(v.a)(f,c,r.i(v.b)(e,{brighter:function(t){return t=null==t?y:Math.pow(y,t),new f(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new f(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},toString:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(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+")")}})),r.i(v.a)(d,h,r.i(v.b)(e,{brighter:function(t){return t=null==t?y:Math.pow(y,t),new d(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new d(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,r=this.l,e=r+(r<.5?r:1-r)*n,i=2*r-e;return new f(p(t>=240?t-240:t+120,i,e),p(t,i,e),p(t<120?t+240:t-120,i,e),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}}))},function(t,n,r){"use strict";function e(t,n){var r=Object.create(t.prototype);for(var e in n)r[e]=n[e];return r}n.b=e,n.a=function(t,n,r){t.prototype=n.prototype=r,r.constructor=t}},function(t,n,r){"use strict";var e=r(215);r.d(n,"a",function(){return e.a});var i=r(105);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b})},function(t,n,r){"use strict";var e=r(56);r.d(n,"a",function(){return e.a});var i=r(217);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b}),r.d(n,"d",function(){return i.c}),r.d(n,"e",function(){return i.d});var u=r(218);r.d(n,"f",function(){return u.a}),r.d(n,"g",function(){return u.b}),r.d(n,"h",function(){return u.c}),r.d(n,"i",function(){return u.d})},function(t,n,r){"use strict";function e(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}")}function i(t,n){var r=e(t);return function(e,i){return n(r(e),i,t)}}function u(t){var n=Object.create(null),r=[];return t.forEach(function(t){for(var e in t)e in n||r.push(n[e]=e)}),r}var o={},a={},c=34,f=10,s=13;n.a=function(t){function n(t,n){var u,o,a=r(t,function(t,r){if(u)return u(t,r-1);o=t,u=n?i(t,n):e(t)});return a.columns=o||[],a}function r(t,n){function r(){if(d)return a;if(p)return p=!1,o;var n,r,e=l;if(t.charCodeAt(e)===c){for(;l++=u?d=!0:(r=t.charCodeAt(l++))===f?p=!0:r===s&&(p=!0,t.charCodeAt(l)===f&&++l),t.slice(e+1,n-1).replace(/""/g,'"')}for(;l1?e[0]+e.slice(2):e,+t.slice(r+1)]}},function(t,n,r){"use strict";n.a=function(t){return t}},function(t,n,r){"use strict";function e(t){var n=0,e=i.a/3,o=r.i(u.b)(t),a=o(n,e);return a.parallels=function(t){return arguments.length?o(n=t[0]*i.g,e=t[1]*i.g):[n*i.h,e*i.h]},a}var i=r(0),u=r(8);n.a=e},function(t,n,r){"use strict";function e(t,n){function e(t,n){var e=r.i(i.n)(c-2*a*r.i(i.d)(n))/a;return[e*r.i(i.d)(t*=a),f-e*r.i(i.c)(t)]}var u=r.i(i.d)(t),a=(u+r.i(i.d)(n))/2;if(r.i(i.p)(a)=0;--o)h.push(e=r.children[o]=new c(i[o])),e.parent=r,e.depth=r.depth+1;return s.eachBefore(a)}function i(){return e(this).eachBefore(o)}function u(t){return t.children}function o(t){t.data=t.data.data}function a(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}var f=r(278),s=r(280),l=r(282),h=r(281),d=r(287),p=r(286),v=r(285),g=r(277),y=r(279),_=r(283),b=r(284);n.a=e,n.c=a,n.b=c,c.prototype=e.prototype={constructor:c,count:f.a,each:s.a,eachAfter:h.a,eachBefore:l.a,sum:d.a,sort:p.a,path:v.a,ancestors:g.a,descendants:y.a,leaves:_.a,links:b.a,copy:i}},function(t,n,r){"use strict";function e(t,n,e,o,a,c){for(var f,s,l,h,d,p,v,g,y,_,b,m=[],x=n.children,w=0,M=0,k=x.length,T=n.value;wv&&(v=s),b=d*d*_,(g=Math.max(v/b,b/p))>y){d-=s;break}y=g}m.push(f={value:d,dice:l1?n:1)},r}(o)},function(t,n,r){"use strict";function e(t,n,r,e,i){var u=t*t,o=u*t;return((1-3*t+3*u-o)*n+(4-6*u+3*o)*r+(1+3*t+3*u-3*o)*e+o*i)/6}n.b=e,n.a=function(t){var n=t.length-1;return function(r){var i=r<=0?r=0:r>=1?(r=1,n-1):Math.floor(r*n),u=t[i],o=t[i+1],a=i>0?t[i-1]:2*u-o,c=i=200&&r<300||304===r){if(s)try{n=s.call(c,p)}catch(t){return void h.call("error",c,t)}else n=p;h.call("load",c,n)}else h.call("error",c,t)}var c,f,s,l,h=r.i(o.a)("beforesend","progress","load","error"),d=r.i(u.c)(),p=new XMLHttpRequest,v=null,g=null,y=0;if("undefined"==typeof XDomainRequest||"withCredentials"in p||!/^(http(s)?:)?\/\//.test(t)||(p=new XDomainRequest),"onload"in p?p.onload=p.onerror=p.ontimeout=a:p.onreadystatechange=function(t){p.readyState>3&&a(t)},p.onprogress=function(t){h.call("progress",c,t)},c={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?d.get(t):(null==n?d.remove(t):d.set(t,n+""),c)},mimeType:function(t){return arguments.length?(f=null==t?null:t+"",c):f},responseType:function(t){return arguments.length?(l=t,c):l},timeout:function(t){return arguments.length?(y=+t,c):y},user:function(t){return arguments.length<1?v:(v=null==t?null:t+"",c)},password:function(t){return arguments.length<1?g:(g=null==t?null:t+"",c)},response:function(t){return s=t,c},get:function(t,n){return c.send("GET",t,n)},post:function(t,n){return c.send("POST",t,n)},send:function(n,r,i){return p.open(n,t,!0,v,g),null==f||d.has("accept")||d.set("accept",f+",*/*"),p.setRequestHeader&&d.each(function(t,n){p.setRequestHeader(n,t)}),null!=f&&p.overrideMimeType&&p.overrideMimeType(f),null!=l&&(p.responseType=l),y>0&&(p.timeout=y),null==i&&"function"==typeof r&&(i=r,r=null),null!=i&&1===i.length&&(i=e(i)),null!=i&&c.on("error",i).on("load",function(t){i(null,t)}),h.call("beforesend",c,p),p.send(null==r?null:r),c},abort:function(){return p.abort(),c},on:function(){var t=h.on.apply(h,arguments);return t===h?c:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return c.get(n)}return c}},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===o.b&&n.documentElement.namespaceURI===o.b?n.createElement(t):n.createElementNS(r,t)}}function i(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var u=r(75),o=r(76);n.a=function(t){var n=r.i(u.a)(t);return(n.local?i:e)(n)}},function(t,n,r){"use strict";var e=r(76);n.a=function(t){var n=t+="",r=n.indexOf(":");return r>=0&&"xmlns"!==(n=t.slice(0,r))&&(t=t.slice(r+1)),e.a.hasOwnProperty(n)?{space:e.a[n],local:t}:t}},function(t,n,r){"use strict";r.d(n,"b",function(){return e});var e="http://www.w3.org/1999/xhtml";n.a={svg:"http://www.w3.org/2000/svg",xhtml:e,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},function(t,n,r){"use strict";function e(t,n,r){return t=i(t,n,r),function(n){var r=n.relatedTarget;r&&(r===this||8&r.compareDocumentPosition(this))||t.call(this,n)}}function i(t,n,r){return function(e){var i=s;s=e;try{t.call(this,this.__data__,n,r)}finally{s=i}}}function u(t){return t.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function o(t){return function(){var n=this.__on;if(n){for(var r,e=0,i=-1,u=n.length;eu.a){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,f=3*t._l01_a*(t._l01_a+t._l12_a);e=(e*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/f,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/f}if(t._l23_a>u.a){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-n*t._l12_2a)/l,a=(a*s+t._y1*t._l23_2a-r*t._l12_2a)/l}t._context.bezierCurveTo(e,i,o,a,t._x2,t._y2)}function i(t,n){this._context=t,this._alpha=n}var u=r(29),o=r(43);n.b=e,i.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 r=this._x2-t,i=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,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:e(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}},n.a=function t(n){function r(t){return n?new i(t,n):new o.b(t,0)}return r.alpha=function(n){return t(+n)},r}(.5)},function(t,n,r){"use strict";var e=r(14),i=r(16),u=r(44),o=r(84);n.a=function(){function t(t){var i,u,o,h=t.length,d=!1;for(null==f&&(l=s(o=r.i(e.a)())),i=0;i<=h;++i)!(i=0&&n._call.call(null,t),n=n._next;--p}function c(){b=(_=x.now())+m,p=v=0;try{a()}finally{p=0,s(),b=0}}function f(){var t=x.now(),n=t-_;n>y&&(m-=n,_=t)}function s(){for(var t,n,r=h,e=1/0;r;)r._call?(e>r._time&&(e=r._time),t=r,r=r._next):(n=r._next,r._next=null,r=t?t._next=n:h=n);d=t,l(e)}function l(t){if(!p){v&&(v=clearTimeout(v));t-b>24?(t<1/0&&(v=setTimeout(c,t-x.now()-m)),g&&(g=clearInterval(g))):(g||(_=x.now(),g=setInterval(f,y)),p=1,w(c))}}n.a=e,n.d=u,n.b=o,n.c=a;var h,d,p=0,v=0,g=0,y=1e3,_=0,b=0,m=0,x="object"==typeof performance&&performance.now?performance:Date,w="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};u.prototype=o.prototype={constructor:u,restart:function(t,n,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?e():+r)+(null==n?0:+n),this._next||d===this||(d?d._next=this:h=this,d=this),this._call=t,this._time=r,l()},stop:function(){this._call&&(this._call=null,this._time=1/0,l())}}},function(t,n,r){"use strict";var e=(r(436),r(11));r.d(n,"a",function(){return e.a});var i=r(435);r.d(n,"b",function(){return i.a});var u=r(167);r.d(n,"c",function(){return u.a})},function(t,n,r){"use strict";function e(t,n,r,e){var i=[null,null],o=f.d.push(i)-1;return i.left=t,i.right=n,r&&u(i,t,n,r),e&&u(i,n,t,e),f.c[t.index].halfedges.push(o),f.c[n.index].halfedges.push(o),i}function i(t,n,r){var e=[n,r];return e.left=t,e}function u(t,n,r,e){t[0]||t[1]?t.left===r?t[1]=e:t[0]=e:(t[0]=e,t.left=n,t.right=r)}function o(t,n,r,e,i){var u,o=t[0],a=t[1],c=o[0],f=o[1],s=a[0],l=a[1],h=0,d=1,p=s-c,v=l-f;if(u=n-c,p||!(u>0)){if(u/=p,p<0){if(u0){if(u>d)return;u>h&&(h=u)}if(u=e-c,p||!(u<0)){if(u/=p,p<0){if(u>d)return;u>h&&(h=u)}else if(p>0){if(u0)){if(u/=v,v<0){if(u0){if(u>d)return;u>h&&(h=u)}if(u=i-f,v||!(u<0)){if(u/=v,v<0){if(u>d)return;u>h&&(h=u)}else if(v>0){if(u0||d<1)||(h>0&&(t[0]=[c+h*p,f+h*v]),d<1&&(t[1]=[c+d*p,f+d*v]),!0)}}}}}function a(t,n,r,e,i){var u=t[1];if(u)return!0;var o,a,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v=e)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,r];u=[v,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(r-a)/o,r];u=[(i-a)/o,i]}else{if(c){if(c[1]=e)return}else c=[n,o*n+a];u=[e,o*e+a]}else{if(c){if(c[0]f.b||Math.abs(i[0][1]-i[1][1])>f.b)||delete f.d[u]}var f=r(32);n.d=e,n.b=i,n.c=u,n.a=c},function(t,n,r){"use strict";function e(){this._=null}function i(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function u(t,n){var r=n,e=n.R,i=r.U;i?i.L===r?i.L=e:i.R=e:t._=e,e.U=i,r.U=e,r.R=e.L,r.R&&(r.R.U=r),e.L=r}function o(t,n){var r=n,e=n.L,i=r.U;i?i.L===r?i.L=e:i.R=e:t._=e,e.U=i,r.U=e,r.L=e.R,r.L&&(r.L.U=r),e.R=r}function a(t){for(;t.L;)t=t.L;return t}n.b=i,e.prototype={constructor:e,insert:function(t,n){var r,e,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;r=t}else this._?(t=a(this._),n.P=null,n.N=t,t.P=t.L=n,r=t):(n.P=n.N=null,this._=n,r=null);for(n.L=n.R=null,n.U=r,n.C=!0,t=n;r&&r.C;)e=r.U,r===e.L?(i=e.R,i&&i.C?(r.C=i.C=!1,e.C=!0,t=e):(t===r.R&&(u(this,r),t=r,r=t.U),r.C=!1,e.C=!0,o(this,e))):(i=e.L,i&&i.C?(r.C=i.C=!1,e.C=!0,t=e):(t===r.L&&(o(this,r),t=r,r=t.U),r.C=!1,e.C=!0,u(this,e))),r=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,r,e,i=t.U,c=t.L,f=t.R;if(r=c?f?a(f):c:f,i?i.L===t?i.L=r:i.R=r:this._=r,c&&f?(e=r.C,r.C=t.C,r.L=c,c.U=r,r!==f?(i=r.U,r.U=t.U,t=r.R,i.L=t,r.R=f,f.U=r):(r.U=i,i=r,t=r.R)):(e=t.C,t=r),t&&(t.U=i),!e){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===i.L){if(n=i.R,n.C&&(n.C=!1,i.C=!0,u(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,o(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,u(this,i),t=this._;break}}else if(n=i.L,n.C&&(n.C=!1,i.C=!0,o(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,u(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,o(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}},n.a=e},function(t,n,r){"use strict";r.d(n,"b",function(){return i}),r.d(n,"a",function(){return u});var e=Array.prototype,i=e.slice,u=e.map},function(t,n,r){"use strict";var e=r(17),i=r(93);r.d(n,"b",function(){return o}),r.d(n,"c",function(){return a});var u=r.i(i.a)(e.a),o=u.right,a=u.left;n.a=o},function(t,n,r){"use strict";function e(t){return function(n,e){return r.i(i.a)(t(n),e)}}var i=r(17);n.a=function(t){return 1===t.length&&(t=e(t)),{left:function(n,r,e,i){for(null==e&&(e=0),null==i&&(i=n.length);e>>1;t(n[u],r)<0?e=u+1:i=u}return e},right:function(n,r,e,i){for(null==e&&(e=0),null==i&&(i=n.length);e>>1;t(n[u],r)>0?i=u:e=u+1}return e}}}},function(t,n,r){"use strict";var e=r(102);n.a=function(t,n){var i=r.i(e.a)(t,n);return i?Math.sqrt(i):i}},function(t,n,r){"use strict";n.a=function(t,n){var r,e,i,u=t.length,o=-1;if(null==n){for(;++o=r)for(e=i=r;++or&&(e=r),i=r)for(e=i=r;++or&&(e=r),i=r)for(e=r;++ur&&(e=r)}else for(;++u=r)for(e=r;++ur&&(e=r);return e}},function(t,n,r){"use strict";function e(t,n){return[t,n]}n.b=e,n.a=function(t,n){null==n&&(n=e);for(var r=0,i=t.length-1,u=t[0],o=new Array(i<0?0:i);r=0?(c>=u?10:c>=o?5:c>=a?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(c>=u?10:c>=o?5:c>=a?2:1)}function i(t,n,r){var e=Math.abs(n-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),c=e/i;return c>=u?i*=10:c>=o?i*=5:c>=a&&(i*=2),n0)return[t];if((i=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(u=Math.ceil(n-t+1));++c1)return s/(a-1)}},function(t,n,r){"use strict";r.d(n,"b",function(){return e}),r.d(n,"c",function(){return i}),r.d(n,"a",function(){return o}),r.d(n,"e",function(){return a}),r.d(n,"d",function(){return c});var e=Math.cos,i=Math.sin,u=Math.PI,o=u/2,a=2*u,c=Math.max},function(t,n,r){"use strict";r.d(n,"b",function(){return e}),r.d(n,"a",function(){return i});var e=Math.PI/180,i=180/Math.PI},function(t,n,r){"use strict";function e(t,n){var e=t.document.documentElement,o=r.i(i.h)(t).on("dragstart.drag",null);n&&(o.on("click.drag",u.a,!0),setTimeout(function(){o.on("click.drag",null)},0)),"onselectstart"in e?o.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var i=r(1),u=r(106);n.b=e,n.a=function(t){var n=t.document.documentElement,e=r.i(i.h)(t).on("dragstart.drag",u.a,!0);"onselectstart"in n?e.on("selectstart.drag",u.a,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}},function(t,n,r){"use strict";function e(){i.q.stopImmediatePropagation()}var i=r(1);n.b=e,n.a=function(){i.q.preventDefault(),i.q.stopImmediatePropagation()}},function(t,n,r){"use strict";var e=r(225);r.d(n,"a",function(){return e.a});var i=r(227);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b}),r.d(n,"d",function(){return i.c}),r.d(n,"e",function(){return i.a});var u=r(222);r.d(n,"f",function(){return u.a}),r.d(n,"g",function(){return u.b}),r.d(n,"h",function(){return u.c}),r.d(n,"i",function(){return u.a});var o=r(226);r.d(n,"j",function(){return o.a}),r.d(n,"k",function(){return o.b}),r.d(n,"l",function(){return o.c}),r.d(n,"m",function(){return o.a});var a=r(228);r.d(n,"n",function(){return a.a}),r.d(n,"o",function(){return a.b}),r.d(n,"p",function(){return a.c}),r.d(n,"q",function(){return a.a});var c=r(224);r.d(n,"r",function(){return c.a}),r.d(n,"s",function(){return c.b}),r.d(n,"t",function(){return c.c}),r.d(n,"u",function(){return c.a});var f=r(221);r.d(n,"v",function(){return f.a}),r.d(n,"w",function(){return f.b}),r.d(n,"x",function(){return f.c}),r.d(n,"y",function(){return f.a});var s=r(220);r.d(n,"z",function(){return s.a}),r.d(n,"A",function(){return s.b}),r.d(n,"B",function(){return s.a}),r.d(n,"C",function(){return s.c});var l=r(219);r.d(n,"D",function(){return l.a}),r.d(n,"E",function(){return l.b}),r.d(n,"F",function(){return l.c}),r.d(n,"G",function(){return l.a});var h=r(223);r.d(n,"H",function(){return h.a}),r.d(n,"I",function(){return h.b}),r.d(n,"J",function(){return h.a}),r.d(n,"K",function(){return h.c})},function(t,n,r){"use strict";function e(t){return t.x}function i(t){return t.y}var u=r(12),o=r(22),a=r(47);n.b=e,n.c=i;var c=Math.PI*(3-Math.sqrt(5));n.a=function(t){function n(){e(),_.call("tick",s),l1?(null==n?g.remove(t):g.set(t,f(n)),s):g.get(t)},find:function(n,r,e){var i,u,o,a,c,f=0,s=t.length;for(null==e?e=1/0:e*=e,f=0;f1?(_.on(t,n),s):_.on(t)}}}},function(t,n,r){"use strict";var e=r(59);r.d(n,"b",function(){return i});var i;n.a=function(t,n){var u=r.i(e.a)(t,n);if(!u)return t+"";var o=u[0],a=u[1],c=a-(i=3*Math.max(-8,Math.min(8,Math.floor(a/3))))+1,f=o.length;return c===f?o:c>f?o+new Array(c-f+1).join("0"):c>0?o.slice(0,c)+"."+o.slice(c):"0."+new Array(1-c).join("0")+r.i(e.a)(t,Math.max(0,n+c-1))[0]}},function(t,n,r){"use strict";function e(t){return new i(t)}function i(t){if(!(n=o.exec(t)))throw new Error("invalid format: "+t);var n,r=n[1]||" ",e=n[2]||">",i=n[3]||"-",a=n[4]||"",c=!!n[5],f=n[6]&&+n[6],s=!!n[7],l=n[8]&&+n[8].slice(1),h=n[9]||"";"n"===h?(s=!0,h="g"):u.a[h]||(h=""),(c||"0"===r&&"="===e)&&(c=!0,r="0",e="="),this.fill=r,this.align=e,this.sign=i,this.symbol=a,this.zero=c,this.width=f,this.comma=s,this.precision=l,this.type=h}var u=r(111);n.a=e;var o=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;e.prototype=i.prototype,i.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.type}},function(t,n,r){"use strict";var e=r(238),i=r(109),u=r(241);n.a={"":e.a,"%":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 r.i(u.a)(100*t,n)},r:u.a,s:i.a,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}}},function(t,n,r){"use strict";var e=r(33),i=r(239),u=r(240),o=r(110),a=r(111),c=r(109),f=r(242),s=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];n.a=function(t){function n(t){function n(t){var n,r,o,a=x,f=w;if("c"===m)f=M(t)+f,t="";else{t=+t;var d=t<0;if(t=M(Math.abs(t),b),d&&0==+t&&(d=!1),a=(d?"("===u?u:"-":"-"===u||"("===u?"":u)+a,f=f+("s"===m?s[8+c.b/3]:"")+(d&&"("===u?")":""),k)for(n=-1,r=t.length;++n(o=t.charCodeAt(n))||o>57){f=(46===o?p+t.slice(n+1):t.slice(n))+f,t=t.slice(0,n);break}}_&&!l&&(t=h(t,1/0));var g=a.length+t.length+f.length,T=g>1)+a+t+f+T.slice(g);break;default:t=T+a+t+f}return v(t)}t=r.i(o.a)(t);var e=t.fill,i=t.align,u=t.sign,f=t.symbol,l=t.zero,y=t.width,_=t.comma,b=t.precision,m=t.type,x="$"===f?d[0]:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",w="$"===f?d[1]:/[%p]/.test(m)?g:"",M=a.a[m],k=!m||/[defgprs%]/.test(m);return b=null==b?m?6:12:/[gprs]/.test(m)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),n.toString=function(){return t+""},n}function l(t,i){var u=n((t=r.i(o.a)(t),t.type="f",t)),a=3*Math.max(-8,Math.min(8,Math.floor(r.i(e.a)(i)/3))),c=Math.pow(10,-a),f=s[8+a/3];return function(t){return u(c*t)+f}}var h=t.grouping&&t.thousands?r.i(i.a)(t.grouping,t.thousands):f.a,d=t.currency,p=t.decimal,v=t.numerals?r.i(u.a)(t.numerals):f.a,g=t.percent||"%";return{format:n,formatPrefix:l}}},function(t,n,r){"use strict";function e(){_.point=u}function i(){o(l,h)}function u(t,n){_.point=o,l=t,h=n,t*=c.g,n*=c.g,d=t,p=r.i(c.c)(n=n/2+c.v),v=r.i(c.d)(n)}function o(t,n){t*=c.g,n*=c.g,n=n/2+c.v;var e=t-d,i=e>=0?1:-1,u=i*e,o=r.i(c.c)(n),a=r.i(c.d)(n),f=v*a,s=p*o+f*r.i(c.c)(u),l=f*i*r.i(c.d)(u);g.add(r.i(c.e)(l,s)),d=t,p=o,v=a}var a=r(19),c=r(0),f=r(10),s=r(13);r.d(n,"c",function(){return g}),r.d(n,"b",function(){return _});var l,h,d,p,v,g=r.i(a.a)(),y=r.i(a.a)(),_={point:f.a,lineStart:f.a,lineEnd:f.a,polygonStart:function(){g.reset(),_.lineStart=e,_.lineEnd=i},polygonEnd:function(){var t=+g;y.add(t<0?c.b+t:t),this.lineStart=this.lineEnd=this.point=f.a},sphere:function(){y.add(c.b)}};n.a=function(t){return y.reset(),r.i(s.a)(t,_),2*y}},function(t,n,r){"use strict";function e(t,n,e,o,c,f){if(e){var s=r.i(a.c)(n),l=r.i(a.d)(n),h=o*e;null==c?(c=n+o*a.b,f=n-h/2):(c=i(s,c),f=i(s,f),(o>0?cf)&&(c+=o*a.b));for(var d,p=c;o>0?p>f:p0?a.a:-a.a,l=r.i(a.p)(c-e);r.i(a.p)(l-a.a)0?a.k:-a.k),t.point(o,u),t.lineEnd(),t.lineStart(),t.point(s,u),t.point(c,u),n=0):o!==s&&l>=a.a&&(r.i(a.p)(e-o)a.o?r.i(a.l)((r.i(a.d)(n)*(o=r.i(a.c)(i))*r.i(a.d)(e)-r.i(a.d)(i)*(u=r.i(a.c)(n))*r.i(a.d)(t))/(u*o*c)):(n+i)/2}function u(t,n,e,i){var u;if(null==t)u=e*a.k,i.point(-a.a,u),i.point(0,u),i.point(a.a,u),i.point(a.a,0),i.point(a.a,-u),i.point(0,-u),i.point(-a.a,-u),i.point(-a.a,0),i.point(-a.a,u);else if(r.i(a.p)(t[0]-n[0])>a.o){var o=t[0]1&&n.push(n.pop().concat(n.shift()))},result:function(){var r=n;return n=[],t=null,r}}}},function(t,n,r){"use strict";var e=r(23),i=r(114),u=r(0),o=r(124),a=r(118);n.a=function(t){function n(n,e,u,o){r.i(i.b)(o,t,d,u,n,e)}function c(t,n){return r.i(u.c)(t)*r.i(u.c)(n)>h}function f(t){var n,e,i,a,f;return{lineStart:function(){a=i=!1,f=1},point:function(h,d){var g,y=[h,d],_=c(h,d),b=p?_?0:l(h,d):_?l(h+(h<0?u.a:-u.a),d):0;if(!n&&(a=i=_)&&t.lineStart(),_!==i&&(!(g=s(n,y))||r.i(o.a)(n,g)||r.i(o.a)(y,g))&&(y[0]+=u.o,y[1]+=u.o,_=c(y[0],y[1])),_!==i)f=0,_?(t.lineStart(),g=s(y,n),t.point(g[0],g[1])):(g=s(n,y),t.point(g[0],g[1]),t.lineEnd()),n=g;else if(v&&n&&p^_){var m;b&e||!(m=s(y,n,!0))||(f=0,p?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1])))}!_||n&&r.i(o.a)(n,y)||t.point(y[0],y[1]),n=y,i=_,e=b},lineEnd:function(){i&&t.lineEnd(),n=null},clean:function(){return f|(a&&i)<<1}}}function s(t,n,i){var o=r.i(e.a)(t),a=r.i(e.a)(n),c=[1,0,0],f=r.i(e.b)(o,a),s=r.i(e.d)(f,f),l=f[0],d=s-l*l;if(!d)return!i&&t;var p=h*s/d,v=-h*l/d,g=r.i(e.b)(c,f),y=r.i(e.e)(c,p),_=r.i(e.e)(f,v);r.i(e.f)(y,_);var b=g,m=r.i(e.d)(y,b),x=r.i(e.d)(b,b),w=m*m-x*(r.i(e.d)(y,y)-1);if(!(w<0)){var M=r.i(u.n)(w),k=r.i(e.e)(b,(-m-M)/x);if(r.i(e.f)(k,y),k=r.i(e.g)(k),!i)return k;var T,E=t[0],A=n[0],N=t[1],S=n[1];A0^k[1]<(r.i(u.p)(k[0]-E)u.a^(E<=k[0]&&k[0]<=A)){var P=r.i(e.e)(b,(-m+M)/x);return r.i(e.f)(P,y),[k,r.i(e.g)(P)]}}}function l(n,r){var e=p?t:u.a-t,i=0;return n<-e?i|=1:n>e&&(i|=2),r<-e?i|=4:r>e&&(i|=8),i}var h=r.i(u.c)(t),d=6*u.g,p=h>0,v=r.i(u.p)(h)>u.o;return r.i(a.a)(c,f,n,p?[0,-t]:[-u.a,t-u.a])}},function(t,n,r){"use strict";function e(t){return t.length>1}function i(t,n){return((t=t.x)[0]<0?t[1]-a.k-a.o:a.k-t[1])-((n=n.x)[0]<0?n[1]-a.k-a.o:a.k-n[1])}var u=r(116),o=r(119),a=r(0),c=r(125),f=r(3);n.a=function(t,n,a,s){return function(l){function h(n,r){t(n,r)&&l.point(n,r)}function d(t,n){w.point(t,n)}function p(){E.point=d,w.lineStart()}function v(){E.point=h,w.lineEnd()}function g(t,n){x.push([t,n]),k.point(t,n)}function y(){k.lineStart(),x=[]}function _(){g(x[0][0],x[0][1]),k.lineEnd();var t,n,r,i,u=k.clean(),o=M.result(),a=o.length;if(x.pop(),b.push(x),x=null,a)if(1&u){if(r=o[0],(n=r.length-1)>0){for(T||(l.polygonStart(),T=!0),l.lineStart(),t=0;t1&&2&u&&o.push(o.pop().concat(o.shift())),m.push(o.filter(e))}var b,m,x,w=n(l),M=r.i(u.a)(),k=n(M),T=!1,E={point:h,lineStart:p,lineEnd:v,polygonStart:function(){E.point=g,E.lineStart=y,E.lineEnd=_,m=[],b=[]},polygonEnd:function(){E.point=h,E.lineStart=p,E.lineEnd=v,m=r.i(f.q)(m);var t=r.i(c.a)(b,s);m.length?(T||(l.polygonStart(),T=!0),r.i(o.a)(m,i,t,a,l)):t&&(T||(l.polygonStart(),T=!0),l.lineStart(),a(null,null,1,l),l.lineEnd()),T&&(l.polygonEnd(),T=!1),m=b=null},sphere:function(){l.polygonStart(),l.lineStart(),a(null,null,1,l),l.lineEnd(),l.polygonEnd()}};return E}}},function(t,n,r){"use strict";function e(t,n,r,e){this.x=t,this.z=n,this.o=r,this.e=e,this.v=!1,this.n=this.p=null}function i(t){if(n=t.length){for(var n,r,e=0,i=t[0];++e=0;--f)c.point((p=d[f])[0],p[1]);else a(g.x,g.p.x,-1,c);g=g.p}g=g.o,d=g.z,y=!y}while(!g.v);c.lineEnd()}}}},function(t,n,r){"use strict";n.a=function(t,n){function r(r,e){return r=t(r,e),n(r[0],r[1])}return t.invert&&n.invert&&(r.invert=function(r,e){return(r=n.invert(r,e))&&t.invert(r[0],r[1])}),r}},function(t,n,r){"use strict";var e=r(122),i=[null,null],u={type:"LineString",coordinates:i};n.a=function(t,n){return i[0]=t,i[1]=n,r.i(e.a)(u)}},function(t,n,r){"use strict";function e(){v.point=u,v.lineEnd=i}function i(){v.point=v.lineEnd=h.a}function u(t,n){t*=l.g,n*=l.g,a=t,c=r.i(l.d)(n),f=r.i(l.c)(n),v.point=o}function o(t,n){t*=l.g,n*=l.g;var e=r.i(l.d)(n),i=r.i(l.c)(n),u=r.i(l.p)(t-a),o=r.i(l.c)(u),s=r.i(l.d)(u),h=i*s,d=f*e-c*i*o,v=c*e+f*i*o;p.add(r.i(l.e)(r.i(l.n)(h*h+d*d),v)),a=t,c=e,f=i}var a,c,f,s=r(19),l=r(0),h=r(10),d=r(13),p=r.i(s.a)(),v={sphere:h.a,point:h.a,lineStart:e,lineEnd:h.a,polygonStart:h.a,polygonEnd:h.a};n.a=function(t){return p.reset(),r.i(d.a)(t,v),+p}},function(t,n,r){"use strict";function e(t,n){ta&&(a=t),nc&&(c=n)}var i=r(10),u=1/0,o=u,a=-u,c=a,f={point:e,lineStart:i.a,lineEnd:i.a,polygonStart:i.a,polygonEnd:i.a,result:function(){var t=[[u,o],[a,c]];return a=c=-(o=u=1/0),t}};n.a=f},function(t,n,r){"use strict";var e=r(0);n.a=function(t,n){return r.i(e.p)(t[0]-n[0])=0?1:-1,N=A*E,S=N>u.a,C=_*k;if(o.add(r.i(u.e)(C*A*r.i(u.d)(N),b*T+C*r.i(u.c)(N))),f+=S?E+A*u.b:E,S^g>=e^w>=e){var q=r.i(i.b)(r.i(i.a)(v),r.i(i.a)(x));r.i(i.c)(q);var z=r.i(i.b)(c,q);r.i(i.c)(z);var P=(S^E>=0?-1:1)*r.i(u.f)(z[2]);(a>P||a===P&&(q[0]||q[1]))&&(s+=S^E>=0?1:-1)}}return(f<-u.o||f0&&r*r>e*e+i*i}function o(t,n){for(var r=0;rr*r+e*e}function u(t){var n=t._,r=t.next._,e=n.r+r.r,i=(n.x*r.r+r.x*n.r)/e,u=(n.y*r.r+r.y*n.r)/e;return i*i+u*u}function o(t){this._=t,this.next=null,this.previous=null}function a(t){if(!(s=t.length))return 0;var n,a,f,s,l,h,d,p,v,g,y;if(n=t[0],n.x=0,n.y=0,!(s>1))return n.r;if(a=t[1],n.x=-a.r,a.x=n.r,a.y=0,!(s>2))return n.r+a.r;e(a,n,f=t[2]),n=new o(n),a=new o(a),f=new o(f),n.next=f.previous=a,a.next=n.previous=f,f.next=a.previous=n;t:for(d=3;dl&&(s=n.slice(l,s),d[h]?d[h]+=s:d[++h]=s),(c=c[0])===(f=f[0])?d[h]?d[h]+=f:d[++h]=f:(d[++h]=null,p.push({i:h,x:r.i(u.a)(c,f)})),l=a.lastIndex;return l1);return t+r*u*Math.sqrt(-2*Math.log(i)/i)}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";function e(t,n){return function(r){return t(r.responseText,n)}}var i=r(72);n.a=function(t,n){return function(u,o,a){arguments.length<3&&(a=o,o=null);var c=r.i(i.a)(u).mimeType(t);return c.row=function(t){return arguments.length?c.response(e(n,o=t)):o},c.row(o),a?c.get(a):c}}},function(t,n,r){"use strict";n.a=function(t,n){t=t.slice();var r,e=0,i=t.length-1,u=t[e],o=t[i];return o1?this.each((null==n?e:"function"==typeof n?u:i)(t,n,null==r?"":r)):o(this.node(),t)}},function(t,n,r){"use strict";function e(){return[]}n.a=function(t){return null==t?e:function(){return this.querySelectorAll(t)}}},function(t,n,r){"use strict";var e=r(14),i=r(16),u=r(44),o=r(82),a=r(84);n.a=function(){function t(t){var n,i,u,o,a,g=t.length,y=!1,_=new Array(g),b=new Array(g);for(null==d&&(v=p(a=r.i(e.a)())),n=0;n<=g;++n){if(!(n=i;--u)v.point(_[u],b[u]);v.lineEnd(),v.areaEnd()}y&&(_[n]=+c(o,n,t),b[n]=+s(o,n,t),v.point(f?+f(o,n,t):_[n],l?+l(o,n,t):b[n]))}if(a)return v=null,a+""||null}function n(){return r.i(o.a)().defined(h).curve(p).context(d)}var c=a.a,f=null,s=r.i(i.a)(0),l=a.b,h=r.i(i.a)(!0),d=null,p=u.a,v=null;return t.x=function(n){return arguments.length?(c="function"==typeof n?n:r.i(i.a)(+n),f=null,t):c},t.x0=function(n){return arguments.length?(c="function"==typeof n?n:r.i(i.a)(+n),t):c},t.x1=function(n){return arguments.length?(f=null==n?null:"function"==typeof n?n:r.i(i.a)(+n),t):f},t.y=function(n){return arguments.length?(s="function"==typeof n?n:r.i(i.a)(+n),l=null,t):s},t.y0=function(n){return arguments.length?(s="function"==typeof n?n:r.i(i.a)(+n),t):s},t.y1=function(n){return arguments.length?(l=null==n?null:"function"==typeof n?n:r.i(i.a)(+n),t):l},t.lineX0=t.lineY0=function(){return n().x(c).y(s)},t.lineY1=function(){return n().x(c).y(l)},t.lineX1=function(){return n().x(f).y(s)},t.defined=function(n){return arguments.length?(h="function"==typeof n?n:r.i(i.a)(!!n),t):h},t.curve=function(n){return arguments.length?(p=n,null!=d&&(v=p(d)),t):p},t.context=function(n){return arguments.length?(null==n?d=v=null:v=p(d=n),t):d},t}},function(t,n,r){"use strict";r.d(n,"a",function(){return e});var e=Array.prototype.slice},function(t,n,r){"use strict";function e(t,n){this._context=t,this._k=(1-n)/6}var i=r(45),u=r(43);n.b=e,e.prototype={areaStart:i.a,areaEnd:i.a,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:r.i(u.c)(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}},n.a=function t(n){function r(t){return new e(t,n)}return r.tension=function(n){return t(+n)},r}(0)},function(t,n,r){"use strict";function e(t,n){this._context=t,this._k=(1-n)/6}var i=r(43);n.b=e,e.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:r.i(i.c)(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}},n.a=function t(n){function r(t){return new e(t,n)}return r.tension=function(n){return t(+n)},r}(0)},function(t,n,r){"use strict";function e(t){this._curve=t}function i(t){function n(n){return new e(t(n))}return n._curve=t,n}var u=r(44);r.d(n,"b",function(){return o}),n.a=i;var o=i(u.a);e.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}}},function(t,n,r){"use strict";function e(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(r.i(i.a)(t)):n()._curve},t}var i=r(155),u=r(82);n.b=e,n.a=function(){return e(r.i(u.a)().curve(i.b))}},function(t,n,r){"use strict";n.a=function(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}},function(t,n,r){"use strict";var e=r(29);n.a={draw:function(t,n){var r=Math.sqrt(n/e.b);t.moveTo(r,0),t.arc(0,0,r,0,e.c)}}},function(t,n,r){"use strict";n.a={draw:function(t,n){var r=Math.sqrt(n/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}}},function(t,n,r){"use strict";var e=Math.sqrt(1/3),i=2*e;n.a={draw:function(t,n){var r=Math.sqrt(n/i),u=r*e;t.moveTo(0,-r),t.lineTo(u,0),t.lineTo(0,r),t.lineTo(-u,0),t.closePath()}}},function(t,n,r){"use strict";n.a={draw:function(t,n){var r=Math.sqrt(n),e=-r/2;t.rect(e,e,r,r)}}},function(t,n,r){"use strict";var e=r(29),i=Math.sin(e.b/10)/Math.sin(7*e.b/10),u=Math.sin(e.c/10)*i,o=-Math.cos(e.c/10)*i;n.a={draw:function(t,n){var r=Math.sqrt(.8908130915292852*n),i=u*r,a=o*r;t.moveTo(0,-r),t.lineTo(i,a);for(var c=1;c<5;++c){var f=e.c*c/5,s=Math.cos(f),l=Math.sin(f);t.lineTo(l*r,-s*r),t.lineTo(s*i-l*a,l*i+s*a)}t.closePath()}}},function(t,n,r){"use strict";var e=Math.sqrt(3);n.a={draw:function(t,n){var r=-Math.sqrt(n/(3*e));t.moveTo(0,2*r),t.lineTo(-e*r,-r),t.lineTo(e*r,-r),t.closePath()}}},function(t,n,r){"use strict";var e=-.5,i=Math.sqrt(3)/2,u=1/Math.sqrt(12),o=3*(u/2+1);n.a={draw:function(t,n){var r=Math.sqrt(n/o),a=r/2,c=r*u,f=a,s=r*u+r,l=-f,h=s;t.moveTo(a,c),t.lineTo(f,s),t.lineTo(l,h),t.lineTo(e*a-i*c,i*a+e*c),t.lineTo(e*f-i*s,i*f+e*s),t.lineTo(e*l-i*h,i*l+e*h),t.lineTo(e*a+i*c,e*c-i*a),t.lineTo(e*f+i*s,e*s-i*f),t.lineTo(e*l+i*h,e*h-i*l),t.closePath()}}},function(t,n,r){"use strict";function e(t){return t.toISOString()}var i=r(86);r.d(n,"b",function(){return u});var u="%Y-%m-%dT%H:%M:%S.%LZ",o=Date.prototype.toISOString?e:r.i(i.d)(u);n.a=o},function(t,n,r){"use strict";function e(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 i(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 u(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function o(t){function n(t,n){return function(r){var e,i,u,o=[],a=-1,c=0,f=t.length;for(r instanceof Date||(r=new Date(+r));++a53)return null;"w"in f||(f.w=1),"Z"in f?(o=i(u(f.y)),c=o.getUTCDay(),o=c>4||0===c?dt.T.ceil(o):r.i(dt.T)(o),o=dt.N.offset(o,7*(f.V-1)),f.y=o.getUTCFullYear(),f.m=o.getUTCMonth(),f.d=o.getUTCDate()+(f.w+6)%7):(o=n(u(f.y)),c=o.getDay(),o=c>4||0===c?dt.t.ceil(o):r.i(dt.t)(o),o=dt.n.offset(o,7*(f.V-1)),f.y=o.getFullYear(),f.m=o.getMonth(),f.d=o.getDate()+(f.w+6)%7)}else("W"in f||"U"in f)&&("w"in f||(f.w="u"in f?f.u%7:"W"in f?1:0),c="Z"in f?i(u(f.y)).getUTCDay():n(u(f.y)).getDay(),f.m=0,f.d="W"in f?(f.w+6)%7+7*f.W-(c+5)%7:f.w+7*f.U-(c+6)%7);return"Z"in f?(f.H+=f.Z/100|0,f.M+=f.Z%100,i(f)):n(f)}}function a(t,n,r,e){for(var i,u,o=0,a=n.length,c=r.length;o=c)return-1;if(37===(i=n.charCodeAt(o++))){if(i=n.charAt(o++),!(u=Jt[i in pt?n.charAt(o++):i])||(e=u(t,r,e))<0)return-1}else if(i!=r.charCodeAt(e++))return-1}return e}function c(t,n,r){var e=It.exec(n.slice(r));return e?(t.p=Ft[e[0].toLowerCase()],r+e[0].length):-1}function vt(t,n,r){var e=Ht.exec(n.slice(r));return e?(t.w=Xt[e[0].toLowerCase()],r+e[0].length):-1}function gt(t,n,r){var e=Yt.exec(n.slice(r));return e?(t.w=Bt[e[0].toLowerCase()],r+e[0].length):-1}function yt(t,n,r){var e=Wt.exec(n.slice(r));return e?(t.m=Zt[e[0].toLowerCase()],r+e[0].length):-1}function _t(t,n,r){var e=Vt.exec(n.slice(r));return e?(t.m=Gt[e[0].toLowerCase()],r+e[0].length):-1}function bt(t,n,r){return a(t,zt,n,r)}function mt(t,n,r){return a(t,Pt,n,r)}function xt(t,n,r){return a(t,Lt,n,r)}function wt(t){return Ut[t.getDay()]}function Mt(t){return Rt[t.getDay()]}function kt(t){return jt[t.getMonth()]}function Tt(t){return Ot[t.getMonth()]}function Et(t){return Dt[+(t.getHours()>=12)]}function At(t){return Ut[t.getUTCDay()]}function Nt(t){return Rt[t.getUTCDay()]}function St(t){return jt[t.getUTCMonth()]}function Ct(t){return Ot[t.getUTCMonth()]}function qt(t){return Dt[+(t.getUTCHours()>=12)]}var zt=t.dateTime,Pt=t.date,Lt=t.time,Dt=t.periods,Rt=t.days,Ut=t.shortDays,Ot=t.months,jt=t.shortMonths,It=f(Dt),Ft=s(Dt),Yt=f(Rt),Bt=s(Rt),Ht=f(Ut),Xt=s(Ut),Vt=f(Ot),Gt=s(Ot),Wt=f(jt),Zt=s(jt),$t={a:wt,A:Mt,b:kt,B:Tt,c:null,d:C,e:C,f:D,H:q,I:z,j:P,L:L,m:R,M:U,p:Et,Q:lt,s:ht,S:O,u:j,U:I,V:F,w:Y,W:B,x:null,X:null,y:H,Y:X,Z:V,"%":st},Qt={a:At,A:Nt,b:St,B:Ct,c:null,d:G,e:G,f:J,H:W,I:Z,j:$,L:Q,m:K,M:tt,p:qt,Q:lt,s:ht,S:nt,u:rt,U:et,V:it,w:ut,W:ot,x:null,X:null,y:at,Y:ct,Z:ft,"%":st},Jt={a:vt,A:gt,b:yt,B:_t,c:bt,d:m,e:m,f:E,H:w,I:w,j:x,L:T,m:b,M:M,p:c,Q:N,s:S,S:k,u:h,U:d,V:p,w:l,W:v,x:mt,X:xt,y:y,Y:g,Z:_,"%":A};return $t.x=n(Pt,$t),$t.X=n(Lt,$t),$t.c=n(zt,$t),Qt.x=n(Pt,Qt),Qt.X=n(Lt,Qt),Qt.c=n(zt,Qt),{format:function(t){var r=n(t+="",$t);return r.toString=function(){return t},r},parse:function(t){var n=o(t+="",e);return n.toString=function(){return t},n},utcFormat:function(t){var r=n(t+="",Qt);return r.toString=function(){return t},r},utcParse:function(t){var n=o(t,i);return n.toString=function(){return t},n}}}function a(t,n,r){var e=t<0?"-":"",i=(e?-t:t)+"",u=i.length;return e+(u68?1900:2e3),r+e[0].length):-1}function _(t,n,r){var e=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(r,r+6));return e?(t.Z=e[1]?0:-(e[2]+(e[3]||"00")),r+e[0].length):-1}function b(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.m=e[0]-1,r+e[0].length):-1}function m(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.d=+e[0],r+e[0].length):-1}function x(t,n,r){var e=vt.exec(n.slice(r,r+3));return e?(t.m=0,t.d=+e[0],r+e[0].length):-1}function w(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.H=+e[0],r+e[0].length):-1}function M(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.M=+e[0],r+e[0].length):-1}function k(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.S=+e[0],r+e[0].length):-1}function T(t,n,r){var e=vt.exec(n.slice(r,r+3));return e?(t.L=+e[0],r+e[0].length):-1}function E(t,n,r){var e=vt.exec(n.slice(r,r+6));return e?(t.L=Math.floor(e[0]/1e3),r+e[0].length):-1}function A(t,n,r){var e=gt.exec(n.slice(r,r+1));return e?r+e[0].length:-1}function N(t,n,r){var e=vt.exec(n.slice(r));return e?(t.Q=+e[0],r+e[0].length):-1}function S(t,n,r){var e=vt.exec(n.slice(r));return e?(t.Q=1e3*+e[0],r+e[0].length):-1}function C(t,n){return a(t.getDate(),n,2)}function q(t,n){return a(t.getHours(),n,2)}function z(t,n){return a(t.getHours()%12||12,n,2)}function P(t,n){return a(1+dt.n.count(r.i(dt.H)(t),t),n,3)}function L(t,n){return a(t.getMilliseconds(),n,3)}function D(t,n){return L(t,n)+"000"}function R(t,n){return a(t.getMonth()+1,n,2)}function U(t,n){return a(t.getMinutes(),n,2)}function O(t,n){return a(t.getSeconds(),n,2)}function j(t){var n=t.getDay();return 0===n?7:n}function I(t,n){return a(dt.r.count(r.i(dt.H)(t),t),n,2)}function F(t,n){var e=t.getDay();return t=e>=4||0===e?r.i(dt.z)(t):dt.z.ceil(t),a(dt.z.count(r.i(dt.H)(t),t)+(4===r.i(dt.H)(t).getDay()),n,2)}function Y(t){return t.getDay()}function B(t,n){return a(dt.t.count(r.i(dt.H)(t),t),n,2)}function H(t,n){return a(t.getFullYear()%100,n,2)}function X(t,n){return a(t.getFullYear()%1e4,n,4)}function V(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+a(n/60|0,"0",2)+a(n%60,"0",2)}function G(t,n){return a(t.getUTCDate(),n,2)}function W(t,n){return a(t.getUTCHours(),n,2)}function Z(t,n){return a(t.getUTCHours()%12||12,n,2)}function $(t,n){return a(1+dt.N.count(r.i(dt._7)(t),t),n,3)}function Q(t,n){return a(t.getUTCMilliseconds(),n,3)}function J(t,n){return Q(t,n)+"000"}function K(t,n){return a(t.getUTCMonth()+1,n,2)}function tt(t,n){return a(t.getUTCMinutes(),n,2)}function nt(t,n){return a(t.getUTCSeconds(),n,2)}function rt(t){var n=t.getUTCDay();return 0===n?7:n}function et(t,n){return a(dt.R.count(r.i(dt._7)(t),t),n,2)}function it(t,n){var e=t.getUTCDay();return t=e>=4||0===e?r.i(dt.Z)(t):dt.Z.ceil(t),a(dt.Z.count(r.i(dt._7)(t),t)+(4===r.i(dt._7)(t).getUTCDay()),n,2)}function ut(t){return t.getUTCDay()}function ot(t,n){return a(dt.T.count(r.i(dt._7)(t),t),n,2)}function at(t,n){return a(t.getUTCFullYear()%100,n,2)}function ct(t,n){return a(t.getUTCFullYear()%1e4,n,4)}function ft(){return"+0000"}function st(){return"%"}function lt(t){return+t}function ht(t){return Math.floor(+t/1e3)}var dt=r(46);n.a=o;var pt={"-":"",_:" ",0:"0"},vt=/^\s*\d+/,gt=/^%/,yt=/[\\^$*+?|[\]().{}]/g},function(t,n,r){"use strict";var e=r(6);n.a=function(t,n){var r,i,u,o=t.__transition,a=!0;if(o){n=null==n?null:n+"";for(u in o)(r=o[u]).name===n?(i=r.state>e.a&&r.states.b||Math.abs(m-y)>s.b)&&(d.splice(h,0,s.d.push(r.i(f.b)(l,_,Math.abs(b-t)s.b?[t,Math.abs(g-t)s.b?[Math.abs(y-i)s.b?[e,Math.abs(g-e)s.b?[Math.abs(y-n)=-a.f)){var y=h*h+d*d,_=p*p+v*v,b=(v*y-d*_)/g,m=(h*_-p*y)/g,x=f.pop()||new e;x.arc=t,x.site=u,x.x=b+s,x.y=(x.cy=m+l)+Math.sqrt(b*b+m*m),t.circle=x;for(var w=null,M=a.g._;M;)if(x.y=n-t.span&&r.timestamp<=n}),i=this.ag.selectAll("line.annotation").data(r).attr("x1",function(n){return t.x(n.timestamp)}).attr("x2",function(n){return t.x(n.timestamp)});i.enter().append("line").classed("annotation",!0).attr("stroke",function(t){return"continued"===t.type?"rgba(0, 255, 0, 0.25)":"rgba(255, 0, 0, 0.25)"}).attr("stroke-width",1).attr("y1",0).attr("y2",this.height).attr("x1",function(n){return t.x(n.timestamp)}).attr("x2",function(n){return t.x(n.timestamp)}),i.exit().remove(),this.paths.forEach(function(r){try{var e=t.datasource.getData(r.port,n-t.span,n,!0);r.path.datum(e).attr("d",t.line)}catch(t){console.log("Error Updating Plot: ",t)}}),this.spaths.forEach(function(r){try{var e=t.datasource.sampleData(r.port,t.width,t.start,n);r.path.datum(e).attr("d",t.sline)}catch(t){console.log("Error Updating Plot: ",t)}});var u=n-this.span;u0){var r=this.points[this.points.length-1];this.points=this.points.filter(function(t){return t.timestamp>=n}),0===this.points.length&&this.points.push(r),this.path.datum(this.points).attr("d",this.line)}}catch(t){console.log("Error Updating Plot: ",t)}window.requestAnimationFrame(this.updateGraph.bind(this))},t}();n.XYGraph=i},function(t,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var e=function(){function t(t){var n=this;this.data={},this.subscriptions={},t.forEach(function(t){return n.addPort(t)})}return t.prototype.addPort=function(t){this.data[t]=[]},t.prototype.receiveMessage=function(t){var n={timestamp:t.timestamp,value:t.data,raw:t.raw},r=t.port;this.data[r]&&this.data[r].push(n),this.subscriptions[r]&&this.subscriptions[r].forEach(function(t){return t(n)})},t.prototype.getData=function(t,n,r,e){void 0===e&&(e=!0);var i=this.data[t];if(!i)return[];if(i=i.filter(function(t){return t.timestamp>=n&&t.timestamp<=r}),e&&i.length>=1){var u=i[i.length-1];i.push({timestamp:r,value:u.value,raw:u.raw});var o=i[0];i.unshift({timestamp:n,value:o.value,raw:o.raw})}return i},t.prototype.sampleData=function(t,n,r,e){void 0===r&&(r=null),void 0===e&&(e=null);var i=this.data[t];if(!i)return[];if(null===r&&(r=0),null==e&&(e=(new Date).getTime()),i=i.filter(function(t){return t.timestamp>=r&&t.timestamp<=e}),i.length>1.5*n){var u=Math.round(i.length/n);i=i.filter(function(t,n){return n%u==0})}return i},t.prototype.subscribe=function(t,n){this.subscriptions[t]||(this.subscriptions[t]=[]),this.subscriptions[t].push(n)},t}();n.GraphDataSource=e},function(t,n,r){function e(t,n){this._id=t,this._clearFn=n}var i=Function.prototype.apply;n.setTimeout=function(){return new e(i.call(setTimeout,window,arguments),clearTimeout)},n.setInterval=function(){return new e(i.call(setInterval,window,arguments),clearInterval)},n.clearTimeout=n.clearInterval=function(t){t&&t.close()},e.prototype.unref=e.prototype.ref=function(){},e.prototype.close=function(){this._clearFn.call(window,this._id)},n.enroll=function(t,n){clearTimeout(t._idleTimeoutId),t._idleTimeout=n},n.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},n._unrefActive=n.active=function(t){clearTimeout(t._idleTimeoutId);var n=t._idleTimeout;n>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},n))},r(467),n.setImmediate=setImmediate,n.clearImmediate=clearImmediate},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";var e=r(97);n.a=function(t,n,r){var i,u,o,a,c=t.length,f=n.length,s=new Array(c*f);for(null==r&&(r=e.b),i=o=0;it?1:n>=t?0:NaN}},function(t,n,r){"use strict";var e=r(91),i=r(92),u=r(176),o=r(95),a=r(180),c=r(98),f=r(100),s=r(99);n.a=function(){function t(t){var e,u,o=t.length,a=new Array(o);for(e=0;ep;)v.pop(),--g;var y,_=new Array(g+1);for(e=0;e<=g;++e)y=_[e]=[],y.x0=e>0?v[e-1]:d,y.x1=e=r)for(e=r;++ue&&(e=r)}else for(;++u=r)for(e=r;++ue&&(e=r);return e}},function(t,n,r){"use strict";var e=r(21);n.a=function(t,n){var i,u=t.length,o=u,a=-1,c=0;if(null==n)for(;++a=0;)for(e=t[i],n=e.length;--n>=0;)r[--o]=e[n];return r}},function(t,n,r){"use strict";n.a=function(t,n){for(var r=n.length,e=new Array(r);r--;)e[r]=t[n[r]];return e}},function(t,n,r){"use strict";var e=r(17);n.a=function(t,n){if(r=t.length){var r,i,u=0,o=0,a=t[o];for(null==n&&(n=e.a);++uMath.abs(t[1]-nt[1])?I=!0:j=!0),nt=t,O=!0,r.i(b.a)(),e()}function e(){var t;switch(R=nt[0]-tt[0],U=nt[1]-tt[1],B){case x:case m:H&&(R=Math.max(Z-l,Math.min(Q-_,R)),h=l+R,E=_+R),X&&(U=Math.max($-p,Math.min(J-P,U)),y=p+U,D=P+U);break;case w:H<0?(R=Math.max(Z-l,Math.min(Q-l,R)),h=l+R,E=_):H>0&&(R=Math.max(Z-_,Math.min(Q-_,R)),h=l,E=_+R),X<0?(U=Math.max($-p,Math.min(J-p,U)),y=p+U,D=P):X>0&&(U=Math.max($-P,Math.min(J-P,U)),y=p,D=P+U);break;case M:H&&(h=Math.max(Z,Math.min(Q,l-R*H)),E=Math.max(Z,Math.min(Q,_+R*H))),X&&(y=Math.max($,Math.min(J,p-U*X)),D=Math.max($,Math.min(J,P+U*X)))}E0&&(l=h-R),X<0?P=D-U:X>0&&(p=y-U),B=x,it.attr("cursor",A.selection),e());break;default:return}r.i(b.a)()}function s(){switch(v.q.keyCode){case 16:K&&(j=I=K=!1,e());break;case 18:B===M&&(H<0?_=E:H>0&&(l=h),X<0?P=D:X>0&&(p=y),B=w,e());break;case 32:B===x&&(v.q.altKey?(H&&(_=E-R*H,l=h+R*H),X&&(P=D-U*X,p=y+U*X),B=M):(H<0?_=E:H>0&&(l=h),X<0?P=D:X>0&&(p=y),B=w),it.attr("cursor",A[Y]),e());break;default:return}r.i(b.a)()}if(v.q.touches){if(v.q.changedTouches.length=l.length)return null!=c&&n.sort(c),null!=f?f(n):n;for(var o,s,h,d=-1,p=n.length,v=l[e++],g=r.i(a.a)(),y=i();++dl.length)return t;var e,i=h[r-1];return null!=f&&r>=l.length?e=t.entries():(e=[],t.each(function(t,i){e.push({key:i,values:n(t,r)})})),null!=i?e.sort(function(t,n){return i(t.key,n.key)}):e}var c,f,s,l=[],h=[];return s={object:function(n){return t(n,0,e,i)},map:function(n){return t(n,0,u,o)},entries:function(r){return n(t(r,0,u,o),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return h[l.length-1]=t,s},sortValues:function(t){return c=t,s},rollup:function(t){return f=t,s}}}},function(t,n,r){"use strict";function e(){}function i(t,n){var r=new e;if(t instanceof e)t.each(function(t){r.add(t)});else if(t){var i=-1,u=t.length;if(null==n)for(;++iM?Math.pow(t,1/3):t/w+m}function a(t){return t>x?t*t*t:w*(t-m)}function c(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function f(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function s(t){if(t instanceof h)return new h(t.h,t.c,t.l,t.opacity);t instanceof u||(t=e(t));var n=Math.atan2(t.b,t.a)*v.a;return new h(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function l(t,n,r,e){return 1===arguments.length?s(t):new h(t,n,r,null==e?1:e)}function h(t,n,r,e){this.h=+t,this.c=+n,this.l=+r,this.opacity=+e}var d=r(53),p=r(52),v=r(104);n.a=i,n.b=l;var g=18,y=.95047,_=1,b=1.08883,m=4/29,x=6/29,w=3*x*x,M=x*x*x;r.i(d.a)(u,i,r.i(d.b)(p.f,{brighter:function(t){return new u(this.l+g*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new u(this.l-g*(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,r=isNaN(this.b)?t:t-this.b/200;return t=_*a(t),n=y*a(n),r=b*a(r),new p.d(c(3.2404542*n-1.5371385*t-.4985314*r),c(-.969266*n+1.8760108*t+.041556*r),c(.0556434*n-.2040259*t+1.0572252*r),this.opacity)}})),r.i(d.a)(h,l,r.i(d.b)(p.f,{brighter:function(t){return new h(this.h,this.c,this.l+g*(null==t?1:t),this.opacity)},darker:function(t){return new h(this.h,this.c,this.l-g*(null==t?1:t),this.opacity)},rgb:function(){return e(this).rgb()}}))},function(t,n,r){"use strict";function e(){for(var t,n=0,r=arguments.length,e={};n=0&&(r=t.slice(e+1),t=t.slice(0,e)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:r}})}function o(t,n){for(var r,e=0,i=t.length;e0)for(var r,e,i=new Array(r),u=0;uC}A.mouse("drag")}function p(){r.i(c.h)(c.q.view).on("mousemove.drag mouseup.drag",null),r.i(f.b)(c.q.view,x),r.i(s.a)(),A.mouse("end")}function v(){if(M.apply(this,arguments)){var t,n,e=c.q.changedTouches,i=k.apply(this,arguments),u=e.length;for(t=0;tp+s||iv+s||uf.index){var l=p-a.x-a.vx,d=v-a.y-a.vy,_=l*l+d*d;_t.r&&(t.r=t[n].r)}function f(){if(s){var n,r,e=s.length;for(l=new Array(e),n=0;n=v)){(t.data!==s||t.next)&&(0===o&&(o=r.i(i.a)(),f+=o*o),0===a&&(a=r.i(i.a)(),f+=a*a),f0&&(u=0)}return u>0?t.slice(0,u)+t.slice(r+1):t}},function(t,n,r){"use strict";n.a=function(t,n){return function(r,e){for(var i=r.length,u=[],o=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>e&&(a=Math.max(1,e-c)),u.push(r.substring(i-=a,i+a)),!((c+=a+1)>e));)a=t[o=(o+1)%t.length];return u.reverse().join(n)}}},function(t,n,r){"use strict";n.a=function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}},function(t,n,r){"use strict";var e=r(59);n.a=function(t,n){var i=r.i(e.a)(t,n);if(!i)return t+"";var u=i[0],o=i[1];return o<0?"0."+new Array(-o).join("0")+u:u.length>o+1?u.slice(0,o+1)+"."+u.slice(o+1):u+new Array(o-u.length+2).join("0")}},function(t,n,r){"use strict";n.a=function(t){return t}},function(t,n,r){"use strict";var e=r(33);n.a=function(t){return Math.max(0,-r.i(e.a)(Math.abs(t)))}},function(t,n,r){"use strict";var e=r(33);n.a=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r.i(e.a)(n)/3)))-r.i(e.a)(Math.abs(t)))}},function(t,n,r){"use strict";var e=r(33);n.a=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,r.i(e.a)(n)-r.i(e.a)(t))+1}},function(t,n,r){"use strict";var e=r(113);r.d(n,"a",function(){return e.a});var i=r(247);r.d(n,"b",function(){return i.a});var u=r(248);r.d(n,"c",function(){return u.a});var o=r(114);r.d(n,"d",function(){return o.a});var a=r(115);r.d(n,"e",function(){return a.a});var c=r(117);r.d(n,"f",function(){return c.a});var f=r(249);r.d(n,"g",function(){return f.a});var s=r(34);r.d(n,"h",function(){return s.a});var l=r(252);r.d(n,"i",function(){return l.a});var h=r(121);r.d(n,"j",function(){return h.a});var d=r(253);r.d(n,"k",function(){return d.a}),r.d(n,"l",function(){return d.b});var p=r(254);r.d(n,"m",function(){return p.a});var v=r(122);r.d(n,"n",function(){return v.a});var g=r(258);r.d(n,"o",function(){return g.a});var y=r(126);r.d(n,"p",function(){return y.a});var _=r(261);r.d(n,"q",function(){return _.a});var b=r(262);r.d(n,"r",function(){return b.a}),r.d(n,"s",function(){return b.b});var m=r(263);r.d(n,"t",function(){return m.a}),r.d(n,"u",function(){return m.b});var x=r(264);r.d(n,"v",function(){return x.a}),r.d(n,"w",function(){return x.b});var w=r(62);r.d(n,"x",function(){return w.a}),r.d(n,"y",function(){return w.b});var M=r(265);r.d(n,"z",function(){return M.a}),r.d(n,"A",function(){return M.b});var k=r(127);r.d(n,"B",function(){return k.a}),r.d(n,"C",function(){return k.b});var T=r(267);r.d(n,"D",function(){return T.a}),r.d(n,"E",function(){return T.b});var E=r(268);r.d(n,"F",function(){return E.a});var A=r(8);r.d(n,"G",function(){return A.a}),r.d(n,"H",function(){return A.b});var N=r(64);r.d(n,"I",function(){return N.a}),r.d(n,"J",function(){return N.b});var S=r(269);r.d(n,"K",function(){return S.a}),r.d(n,"L",function(){return S.b});var C=r(270);r.d(n,"M",function(){return C.a}),r.d(n,"N",function(){return C.b});var q=r(272);r.d(n,"O",function(){return q.a}),r.d(n,"P",function(){return q.b});var z=r(273);r.d(n,"Q",function(){return z.a}),r.d(n,"R",function(){return z.b});var P=r(35);r.d(n,"S",function(){return P.a});var L=r(13);r.d(n,"T",function(){return L.a});var D=r(36);r.d(n,"U",function(){return D.a})},function(t,n,r){"use strict";function e(t,n){x.push(w=[d=t,v=t]),ng&&(g=n)}function i(t,n){var e=r.i(T.a)([t*E.g,n*E.g]);if(m){var i=r.i(T.b)(m,e),u=[i[1],-i[0],0],o=r.i(T.b)(u,i);r.i(T.c)(o),o=r.i(T.g)(o);var a,c=t-y,f=c>0?1:-1,l=o[0]*E.h*f,h=r.i(E.p)(c)>180;h^(f*yg&&(g=a):(l=(l+360)%360-180,h^(f*yg&&(g=n))),h?ts(d,v)&&(v=t):s(t,v)>s(d,v)&&(d=t):v>=d?(tv&&(v=t)):t>y?s(d,t)>s(d,v)&&(v=t):s(t,v)>s(d,v)&&(d=t)}else x.push(w=[d=t,v=t]);ng&&(g=n),m=e,y=t}function u(){S.point=i}function o(){w[0]=d,w[1]=v,S.point=e,m=null}function a(t,n){if(m){var e=t-y;N.add(r.i(E.p)(e)>180?e+(e>0?360:-360):e)}else _=t,b=n;k.b.point(t,n),i(t,n)}function c(){k.b.lineStart()}function f(){a(_,b),k.b.lineEnd(),r.i(E.p)(N)>E.o&&(d=-(v=180)),w[0]=d,w[1]=v,m=null}function s(t,n){return(n-=t)<0?n+360:n}function l(t,n){return t[0]-n[0]}function h(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nE.o?g=90:N<-E.o&&(p=-90),w[0]=d,w[1]=v}};n.a=function(t){var n,e,i,u,o,a,c;if(g=v=-(d=p=1/0),x=[],r.i(A.a)(t,S),e=x.length){for(x.sort(l),n=1,i=x[0],o=[i];ns(i[0],i[1])&&(i[1]=u[1]),s(u[0],i[1])>s(i[0],i[1])&&(i[0]=u[0])):o.push(i=u);for(a=-1/0,e=o.length-1,n=0,i=o[e];n<=e;i=u,++n)u=o[n],(c=s(i[1],u[0]))>a&&(a=c,d=u[0],v=i[1])}return x=w=null,d===1/0||p===1/0?[[NaN,NaN],[NaN,NaN]]:[[d,p],[v,g]]}},function(t,n,r){"use strict";function e(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n);i(e*r.i(S.c)(t),e*r.i(S.d)(t),r.i(S.d)(n))}function i(t,n,r){++d,v+=(t-v)/d,g+=(n-g)/d,y+=(r-y)/d}function u(){z.point=o}function o(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n);E=e*r.i(S.c)(t),A=e*r.i(S.d)(t),N=r.i(S.d)(n),z.point=a,i(E,A,N)}function a(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n),u=e*r.i(S.c)(t),o=e*r.i(S.d)(t),a=r.i(S.d)(n),c=r.i(S.e)(r.i(S.n)((c=A*a-N*o)*c+(c=N*u-E*a)*c+(c=E*o-A*u)*c),E*u+A*o+N*a);p+=c,_+=c*(E+(E=u)),b+=c*(A+(A=o)),m+=c*(N+(N=a)),i(E,A,N)}function c(){z.point=e}function f(){z.point=l}function s(){h(k,T),z.point=e}function l(t,n){k=t,T=n,t*=S.g,n*=S.g,z.point=h;var e=r.i(S.c)(n);E=e*r.i(S.c)(t),A=e*r.i(S.d)(t),N=r.i(S.d)(n),i(E,A,N)}function h(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n),u=e*r.i(S.c)(t),o=e*r.i(S.d)(t),a=r.i(S.d)(n),c=A*a-N*o,f=N*u-E*a,s=E*o-A*u,l=r.i(S.n)(c*c+f*f+s*s),h=r.i(S.f)(l),d=l&&-h/l;x+=d*c,w+=d*f,M+=d*s,p+=h,_+=h*(E+(E=u)),b+=h*(A+(A=o)),m+=h*(N+(N=a)),i(E,A,N)}var d,p,v,g,y,_,b,m,x,w,M,k,T,E,A,N,S=r(0),C=r(10),q=r(13),z={sphere:C.a,point:e,lineStart:u,lineEnd:c,polygonStart:function(){z.lineStart=f,z.lineEnd=s},polygonEnd:function(){z.lineStart=u,z.lineEnd=c}};n.a=function(t){d=p=v=g=y=_=b=m=x=w=M=0,r.i(q.a)(t,z);var n=x,e=w,i=M,u=n*n+e*e+i*i;return u0)){if(o/=d,d<0){if(o0){if(o>h)return;o>l&&(l=o)}if(o=i-a,d||!(o<0)){if(o/=d,d<0){if(o>h)return;o>l&&(l=o)}else if(d>0){if(o0)){if(o/=p,p<0){if(o0){if(o>h)return;o>l&&(l=o)}if(o=u-c,p||!(o<0)){if(o/=p,p<0){if(o>h)return;o>l&&(l=o)}else if(p>0){if(o0&&(t[0]=a+l*d,t[1]=c+l*p),h<1&&(n[0]=a+h*d,n[1]=c+h*p),!0}}}}}},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t,n){return!(!t||!d.hasOwnProperty(t.type))&&d[t.type](t,n)}function i(t,n){return 0===r.i(s.a)(t,n)}function u(t,n){var e=r.i(s.a)(t[0],t[1]);return r.i(s.a)(t[0],n)+r.i(s.a)(n,t[1])<=e+l.o}function o(t,n){return!!r.i(f.a)(t.map(a),c(n))}function a(t){return t=t.map(c),t.pop(),t}function c(t){return[t[0]*l.g,t[1]*l.g]}var f=r(125),s=r(121),l=r(0),h={Feature:function(t,n){return e(t.geometry,n)},FeatureCollection:function(t,n){for(var r=t.features,i=-1,u=r.length;++ic.o}).map(v)).concat(r.i(a.v)(r.i(c.u)(h/m)*m,l,m).filter(function(t){return r.i(c.p)(t%w)>c.o}).map(g))}var u,o,f,s,l,h,d,p,v,g,y,_,b=10,m=b,x=90,w=360,M=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[y(s).concat(_(d).slice(1),y(f).reverse().slice(1),_(p).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(s=+n[0][0],f=+n[1][0],p=+n[0][1],d=+n[1][1],s>f&&(n=s,s=f,f=n),p>d&&(n=p,p=d,d=n),t.precision(M)):[[s,p],[f,d]]},t.extentMinor=function(n){return arguments.length?(o=+n[0][0],u=+n[1][0],h=+n[0][1],l=+n[1][1],o>u&&(n=o,o=u,u=n),h>l&&(n=h,h=l,l=n),t.precision(M)):[[o,h],[u,l]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(x=+n[0],w=+n[1],t):[x,w]},t.stepMinor=function(n){return arguments.length?(b=+n[0],m=+n[1],t):[b,m]},t.precision=function(n){return arguments.length?(M=+n,v=e(h,l,90),g=i(o,u,M),y=e(p,d,90),_=i(s,f,M),t):M},t.extentMajor([[-180,-90+c.o],[180,90-c.o]]).extentMinor([[-180,-80-c.o],[180,80+c.o]])}function o(){return u()()}var a=r(3),c=r(0);n.a=u,n.b=o},function(t,n,r){"use strict";var e=r(0);n.a=function(t,n){var i=t[0]*e.g,u=t[1]*e.g,o=n[0]*e.g,a=n[1]*e.g,c=r.i(e.c)(u),f=r.i(e.d)(u),s=r.i(e.c)(a),l=r.i(e.d)(a),h=c*r.i(e.c)(i),d=c*r.i(e.d)(i),p=s*r.i(e.c)(o),v=s*r.i(e.d)(o),g=2*r.i(e.f)(r.i(e.n)(r.i(e.t)(a-u)+c*s*r.i(e.t)(o-i))),y=r.i(e.d)(g),_=g?function(t){var n=r.i(e.d)(t*=g)/y,i=r.i(e.d)(g-t)/y,u=i*h+n*p,o=i*d+n*v,a=i*f+n*l;return[r.i(e.e)(o,u)*e.h,r.i(e.e)(a,r.i(e.n)(u*u+o*o))*e.h]}:function(){return[i*e.h,u*e.h]};return _.distance=g,_}},function(t,n,r){"use strict";function e(){g.point=i}function i(t,n){g.point=u,a=f=t,c=s=n}function u(t,n){v.add(s*t-f*n),f=t,s=n}function o(){u(a,c)}var a,c,f,s,l=r(19),h=r(0),d=r(10),p=r.i(l.a)(),v=r.i(l.a)(),g={point:d.a,lineStart:d.a,lineEnd:d.a,polygonStart:function(){g.lineStart=e,g.lineEnd=o},polygonEnd:function(){g.lineStart=g.lineEnd=g.point=d.a,p.add(r.i(h.p)(v)),v.reset()},result:function(){var t=p/2;return p.reset(),t}};n.a=g},function(t,n,r){"use strict";function e(t,n){y+=t,_+=n,++b}function i(){E.point=u}function u(t,n){E.point=o,e(p=t,v=n)}function o(t,n){var i=t-p,u=n-v,o=r.i(g.n)(i*i+u*u);m+=o*(p+t)/2,x+=o*(v+n)/2,w+=o,e(p=t,v=n)}function a(){E.point=e}function c(){E.point=s}function f(){l(h,d)}function s(t,n){E.point=l,e(h=p=t,d=v=n)}function l(t,n){var i=t-p,u=n-v,o=r.i(g.n)(i*i+u*u);m+=o*(p+t)/2,x+=o*(v+n)/2,w+=o,o=v*t-p*n,M+=o*(p+t),k+=o*(v+n),T+=3*o,e(p=t,v=n)}var h,d,p,v,g=r(0),y=0,_=0,b=0,m=0,x=0,w=0,M=0,k=0,T=0,E={point:e,lineStart:i,lineEnd:a,polygonStart:function(){E.lineStart=c,E.lineEnd=f},polygonEnd:function(){E.point=e,E.lineStart=i,E.lineEnd=a},result:function(){var t=T?[M/T,k/T]:w?[m/w,x/w]:b?[y/b,_/b]:[NaN,NaN];return y=_=b=m=x=w=M=k=T=0,t}};n.a=E},function(t,n,r){"use strict";function e(t){this._context=t}var i=r(0),u=r(10);n.a=e,e.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,i.b)}},result:u.a}},function(t,n,r){"use strict";var e=r(60),i=r(13),u=r(255),o=r(123),a=r(256),c=r(257),f=r(259),s=r(260);n.a=function(t,n){function l(t){return t&&("function"==typeof p&&d.pointRadius(+p.apply(this,arguments)),r.i(i.a)(t,h(d))),d.result()}var h,d,p=4.5;return l.area=function(t){return r.i(i.a)(t,h(u.a)),u.a.result()},l.measure=function(t){return r.i(i.a)(t,h(f.a)),f.a.result()},l.bounds=function(t){return r.i(i.a)(t,h(o.a)),o.a.result()},l.centroid=function(t){return r.i(i.a)(t,h(a.a)),a.a.result()},l.projection=function(n){return arguments.length?(h=null==n?(t=null,e.a):(t=n).stream,l):t},l.context=function(t){return arguments.length?(d=null==t?(n=null,new s.a):new c.a(n=t),"function"!=typeof p&&d.pointRadius(p),l):n},l.pointRadius=function(t){return arguments.length?(p="function"==typeof t?t:(d.pointRadius(+t),+t),l):p},l.projection(t).context(n)}},function(t,n,r){"use strict";function e(t,n){p.point=i,o=c=t,a=f=n}function i(t,n){c-=t,f-=n,d.add(r.i(l.n)(c*c+f*f)),c=t,f=n}var u,o,a,c,f,s=r(19),l=r(0),h=r(10),d=r.i(s.a)(),p={point:h.a,lineStart:function(){p.point=e},lineEnd:function(){u&&i(o,a),p.point=h.a},polygonStart:function(){u=!0},polygonEnd:function(){u=null},result:function(){var t=+d;return d.reset(),t}};n.a=p},function(t,n,r){"use strict";function e(){this._string=[]}function i(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}n.a=e,e.prototype={_radius:4.5,_circle:i(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=i(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}}},function(t,n,r){"use strict";function e(t){var n=t.length;return{point:function(r,e){for(var i=-1;++i=.12&&i<.234&&e>=-.425&&e<-.214?v:i>=.166&&i<.234&&e>=-.214&&e<-.115?g:p).invert(t)},t.stream=function(t){return c&&f===t?c:c=e([p.stream(f=t),v.stream(t),g.stream(t)])},t.precision=function(t){return arguments.length?(p.precision(t),v.precision(t),g.precision(t),n()):p.precision()},t.scale=function(n){return arguments.length?(p.scale(n),v.scale(.35*n),g.scale(n),t.translate(p.translate())):p.scale()},t.translate=function(t){if(!arguments.length)return p.translate();var r=p.scale(),e=+t[0],u=+t[1];return s=p.translate(t).clipExtent([[e-.455*r,u-.238*r],[e+.455*r,u+.238*r]]).stream(y),l=v.translate([e-.307*r,u+.201*r]).clipExtent([[e-.425*r+i.o,u+.12*r+i.o],[e-.214*r-i.o,u+.234*r-i.o]]).stream(y),h=g.translate([e-.205*r,u+.212*r]).clipExtent([[e-.214*r+i.o,u+.166*r+i.o],[e-.115*r-i.o,u+.234*r-i.o]]).stream(y),n()},t.fitExtent=function(n,e){return r.i(a.a)(t,n,e)},t.fitSize=function(n,e){return r.i(a.b)(t,n,e)},t.fitWidth=function(n,e){return r.i(a.c)(t,n,e)},t.fitHeight=function(n,e){return r.i(a.d)(t,n,e)},t.scale(1070)}},function(t,n,r){"use strict";var e=r(0),i=r(24),u=r(8);r.d(n,"b",function(){return o});var o=r.i(i.b)(function(t){return r.i(e.n)(2/(1+t))});o.invert=r.i(i.a)(function(t){return 2*r.i(e.f)(t/2)}),n.a=function(){return r.i(u.a)(o).scale(124.75).clipAngle(179.999)}},function(t,n,r){"use strict";var e=r(0),i=r(24),u=r(8);r.d(n,"b",function(){return o});var o=r.i(i.b)(function(t){return(t=r.i(e.s)(t))&&t/r.i(e.d)(t)});o.invert=r.i(i.a)(function(t){return t}),n.a=function(){return r.i(u.a)(o).scale(79.4188).clipAngle(179.999)}},function(t,n,r){"use strict";function e(t){return r.i(u.j)((u.k+t)/2)}function i(t,n){function i(t,n){f>0?n<-u.k+u.o&&(n=-u.k+u.o):n>u.k-u.o&&(n=u.k-u.o);var i=f/r.i(u.r)(e(n),c);return[i*r.i(u.d)(c*t),f-i*r.i(u.c)(c*t)]}var o=r.i(u.c)(t),c=t===n?r.i(u.d)(t):r.i(u.i)(o/r.i(u.c)(n))/r.i(u.i)(e(n)/e(t)),f=o*r.i(u.r)(e(t),c)/c;return c?(i.invert=function(t,n){var e=f-n,i=r.i(u.q)(c)*r.i(u.n)(t*t+e*e);return[r.i(u.e)(t,r.i(u.p)(e))/c*r.i(u.q)(e),2*r.i(u.l)(r.i(u.r)(f/i,1/c))-u.k]},i):a.b}var u=r(0),o=r(61),a=r(64);n.b=i,n.a=function(){return r.i(o.a)(i).scale(109.5).parallels([30,30])}},function(t,n,r){"use strict";function e(t,n){function e(t,n){var e=c-n,u=a*t;return[e*r.i(i.d)(u),c-e*r.i(i.c)(u)]}var u=r.i(i.c)(t),a=t===n?r.i(i.d)(t):(u-r.i(i.c)(n))/(n-t),c=u/a+t;return r.i(i.p)(a)u.o&&--o>0);return[t/(.8707+(a=i*i)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),i]},n.a=function(){return r.i(i.a)(e).scale(175.295)}},function(t,n,r){"use strict";function e(t,n){return[r.i(i.c)(n)*r.i(i.d)(t),r.i(i.d)(n)]}var i=r(0),u=r(24),o=r(8);n.b=e,e.invert=r.i(u.a)(i.f),n.a=function(){return r.i(o.a)(e).scale(249.5).clipAngle(90+i.o)}},function(t,n,r){"use strict";function e(t){return r.i(a.b)({point:function(n,r){n=t(n,r),this.stream.point(n[0],n[1])}})}function i(t,n){function e(i,u,a,c,s,l,h,d,p,v,g,y,_,b){var m=h-i,x=d-u,w=m*m+x*x;if(w>4*n&&_--){var M=c+v,k=s+g,T=l+y,E=r.i(o.n)(M*M+k*k+T*T),A=r.i(o.f)(T/=E),N=r.i(o.p)(r.i(o.p)(T)-1)n||r.i(o.p)((m*z+x*P)/w-.5)>.3||c*v+s*g+l*y2?t[2]+90:90]):(t=i(),[t[0],t[1],t[2]-90])},i([0,0,90]).scale(159.155)}},function(t,n,r){"use strict";var e=r(276);r.d(n,"a",function(){return e.a});var i=r(66);r.d(n,"b",function(){return i.a});var u=r(288);r.d(n,"c",function(){return u.a});var o=r(130);r.d(n,"d",function(){return o.a});var a=r(129);r.d(n,"e",function(){return a.a});var c=r(289);r.d(n,"f",function(){return c.a});var f=r(290);r.d(n,"g",function(){return f.a});var s=r(291);r.d(n,"h",function(){return s.a});var l=r(293);r.d(n,"i",function(){return l.a});var h=r(292);r.d(n,"j",function(){return h.a});var d=r(25);r.d(n,"k",function(){return d.a});var p=r(37);r.d(n,"l",function(){return p.a});var v=r(295);r.d(n,"m",function(){return v.a});var g=r(67);r.d(n,"n",function(){return g.a});var y=r(294);r.d(n,"o",function(){return y.a})},function(t,n,r){"use strict";function e(t){for(var n,r,e=t.length;e;)r=Math.random()*e--|0,n=t[e],t[e]=t[r],t[r]=n;return t}r.d(n,"b",function(){return i}),n.a=e;var i=Array.prototype.slice},function(t,n,r){"use strict";function e(t,n){return t.parent===n.parent?1:2}function i(t){return t.reduce(u,0)/t.length}function u(t,n){return t+n.x}function o(t){return 1+t.reduce(a,0)}function a(t,n){return Math.max(t,n.y)}function c(t){for(var n;n=t.children;)t=n[0];return t}function f(t){for(var n;n=t.children;)t=n[n.length-1];return t}n.a=function(){function t(t){var e,s=0;t.eachAfter(function(t){var r=t.children;r?(t.x=i(r),t.y=o(r)):(t.x=e?s+=n(t,e):0,t.y=0,e=t)});var l=c(t),h=f(t),d=l.x-n(l,h)/2,p=h.x+n(h,l)/2;return t.eachAfter(a?function(n){n.x=(n.x-t.x)*r,n.y=(t.y-n.y)*u}:function(n){n.x=(n.x-d)/(p-d)*r,n.y=(1-(t.y?n.y/t.y:1))*u})}var n=e,r=1,u=1,a=!1;return t.separation=function(r){return arguments.length?(n=r,t):n},t.size=function(n){return arguments.length?(a=!1,r=+n[0],u=+n[1],t):a?null:[r,u]},t.nodeSize=function(n){return arguments.length?(a=!0,r=+n[0],u=+n[1],t):a?[r,u]:null},t}},function(t,n,r){"use strict";n.a=function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n}},function(t,n,r){"use strict";function e(t){var n=0,r=t.children,e=r&&r.length;if(e)for(;--e>=0;)n+=r[e].value;else n=1;t.value=n}n.a=function(){return this.eachAfter(e)}},function(t,n,r){"use strict";n.a=function(){var t=[];return this.each(function(n){t.push(n)}),t}},function(t,n,r){"use strict";n.a=function(t){var n,r,e,i,u=this,o=[u];do{for(n=o.reverse(),o=[];u=n.pop();)if(t(u),r=u.children)for(e=0,i=r.length;e=0;--r)i.push(n[r]);return this}},function(t,n,r){"use strict";n.a=function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t}},function(t,n,r){"use strict";n.a=function(){var t=this,n=[];return t.each(function(r){r!==t&&n.push({source:r.parent,target:r})}),n}},function(t,n,r){"use strict";function e(t,n){if(t===n)return t;var r=t.ancestors(),e=n.ancestors(),i=null;for(t=r.pop(),n=e.pop();t===n;)i=t,t=r.pop(),n=e.pop();return i}n.a=function(t){for(var n=this,r=e(n,t),i=[n];n!==r;)n=n.parent,i.push(n);for(var u=i.length;t!==r;)i.splice(u,0,t),t=t.parent;return i}},function(t,n,r){"use strict";n.a=function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})}},function(t,n,r){"use strict";n.a=function(t){return this.eachAfter(function(n){for(var r=+t(n.data)||0,e=n.children,i=e&&e.length;--i>=0;)r+=e[i].value;n.value=r})}},function(t,n,r){"use strict";function e(t){return Math.sqrt(t.value)}function i(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function u(t,n){return function(e){if(i=e.children){var i,u,o,c=i.length,f=t(e)*n||0;if(f)for(u=0;u0)throw new Error("cycle");return i}var n=e,s=i;return t.id=function(e){return arguments.length?(n=r.i(u.a)(e),t):n},t.parentId=function(n){return arguments.length?(s=r.i(u.a)(n),t):s},t}},function(t,n,r){"use strict";function e(t,n){return t.parent===n.parent?1:2}function i(t){var n=t.children;return n?n[0]:t.t}function u(t){var n=t.children;return n?n[n.length-1]:t.t}function o(t,n,r){var e=r/(n.i-t.i);n.c-=e,n.s+=r,t.c+=e,n.z+=r,n.m+=r}function a(t){for(var n,r=0,e=0,i=t.children,u=i.length;--u>=0;)n=i[u],n.z+=r,n.m+=r,r+=n.s+(e+=n.c)}function c(t,n,r){return t.a.parent===n.parent?t.a:r}function f(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 s(t){for(var n,r,e,i,u,o=new f(t,0),a=[o];n=a.pop();)if(e=n._.children)for(n.children=new Array(u=e.length),i=u-1;i>=0;--i)a.push(r=n.children[i]=new f(e[i],i)),r.parent=n;return(o.parent=new f(null,0)).children=[o],o}var l=r(66);f.prototype=Object.create(l.b.prototype),n.a=function(){function t(t){var e=s(t);if(e.eachAfter(n),e.parent.m=-e.z,e.eachBefore(r),v)t.eachBefore(l);else{var i=t,u=t,o=t;t.eachBefore(function(t){t.xu.x&&(u=t),t.depth>o.depth&&(o=t)});var a=i===u?1:h(i,u)/2,c=a-i.x,f=d/(u.x+a+c),g=p/(o.depth||1);t.eachBefore(function(t){t.x=(t.x+c)*f,t.y=t.depth*g})}return t}function n(t){var n=t.children,r=t.parent.children,e=t.i?r[t.i-1]:null;if(n){a(t);var i=(n[0].z+n[n.length-1].z)/2;e?(t.z=e.z+h(t._,e._),t.m=t.z-i):t.z=i}else e&&(t.z=e.z+h(t._,e._));t.parent.A=f(t,e,t.parent.A||r[0])}function r(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function f(t,n,r){if(n){for(var e,a=t,f=t,s=n,l=a.parent.children[0],d=a.m,p=f.m,v=s.m,g=l.m;s=u(s),a=i(a),s&&a;)l=i(l),f=u(f),f.a=t,e=s.z+v-a.z-d+h(s._,a._),e>0&&(o(c(s,t,r),t,e),d+=e,p+=e),v+=s.m,d+=a.m,g+=l.m,p+=f.m;s&&!u(f)&&(f.t=s,f.m+=v-p),a&&!i(l)&&(l.t=a,l.m+=d-g,r=t)}return r}function l(t){t.x*=d,t.y=t.depth*p}var h=e,d=1,p=1,v=null;return t.separation=function(n){return arguments.length?(h=n,t):h},t.size=function(n){return arguments.length?(v=!1,d=+n[0],p=+n[1],t):v?null:[d,p]},t.nodeSize=function(n){return arguments.length?(v=!0,d=+n[0],p=+n[1],t):v?[d,p]:null},t}},function(t,n,r){"use strict";n.a=function(t,n,r,e,i){function u(t,n,r,e,i,o,a){if(t>=n-1){var f=c[t];return f.x0=e,f.y0=i,f.x1=o,f.y1=a,void 0}for(var l=s[t],h=r/2+l,d=t+1,p=n-1;d>>1;s[v]a-i){var _=(e*y+o*g)/r;u(t,d,g,e,i,_,a),u(d,n,y,_,i,o,a)}else{var b=(i*y+a*g)/r;u(t,d,g,e,i,o,b),u(d,n,y,e,b,o,a)}}var o,a,c=t.children,f=c.length,s=new Array(f+1);for(s[0]=a=o=0;o1?n:1)},o}(u.c)},function(t,n,r){"use strict";var e=r(25),i=r(37);n.a=function(t,n,r,u,o){(1&t.depth?i.a:e.a)(t,n,r,u,o)}},function(t,n,r){"use strict";function e(t){return function n(e){function o(n,o){var a=t((n=r.i(i.f)(n)).h,(o=r.i(i.f)(o)).h),c=r.i(u.a)(n.s,o.s),f=r.i(u.a)(n.l,o.l),s=r.i(u.a)(n.opacity,o.opacity);return function(t){return n.h=a(t),n.s=c(t),n.l=f(Math.pow(t,e)),n.opacity=s(t),n+""}}return e=+e,o.gamma=n,o}(1)}var i=r(7),u=r(26);r.d(n,"b",function(){return o}),n.a=e(u.b);var o=e(u.a)},function(t,n,r){"use strict";function e(t){return function(n,e){var o=t((n=r.i(i.e)(n)).h,(e=r.i(i.e)(e)).h),a=r.i(u.a)(n.c,e.c),c=r.i(u.a)(n.l,e.l),f=r.i(u.a)(n.opacity,e.opacity);return function(t){return n.h=o(t),n.c=a(t),n.l=c(t),n.opacity=f(t),n+""}}}var i=r(7),u=r(26);r.d(n,"b",function(){return o}),n.a=e(u.b);var o=e(u.a)},function(t,n,r){"use strict";function e(t){return function(n,e){var o=t((n=r.i(i.c)(n)).h,(e=r.i(i.c)(e)).h),a=r.i(u.a)(n.s,e.s),c=r.i(u.a)(n.l,e.l),f=r.i(u.a)(n.opacity,e.opacity);return function(t){return n.h=o(t),n.s=a(t),n.l=c(t),n.opacity=f(t),n+""}}}var i=r(7),u=r(26);r.d(n,"b",function(){return o}),n.a=e(u.b);var o=e(u.a)},function(t,n,r){"use strict";function e(t,n){var e=r.i(u.a)((t=r.i(i.d)(t)).l,(n=r.i(i.d)(n)).l),o=r.i(u.a)(t.a,n.a),a=r.i(u.a)(t.b,n.b),c=r.i(u.a)(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=o(n),t.b=a(n),t.opacity=c(n),t+""}}var i=r(7),u=r(26);n.a=e},function(t,n,r){"use strict";n.a=function(t,n){for(var r=new Array(n),e=0;e180?n+=360:n-t>180&&(t+=360),a.push({i:e.push(o(e)+"rotate(",null,u)-2,x:r.i(i.a)(t,n)})):n&&e.push(o(e)+"rotate("+n+u)}function f(t,n,e,a){t!==n?a.push({i:e.push(o(e)+"skewX(",null,u)-2,x:r.i(i.a)(t,n)}):n&&e.push(o(e)+"skewX("+n+u)}function s(t,n,e,u,a,c){if(t!==e||n!==u){var f=a.push(o(a)+"scale(",null,",",null,")");c.push({i:f-4,x:r.i(i.a)(t,e)},{i:f-2,x:r.i(i.a)(n,u)})}else 1===e&&1===u||a.push(o(a)+"scale("+e+","+u+")")}return function(n,r){var e=[],i=[];return n=t(n),r=t(r),a(n.translateX,n.translateY,r.translateX,r.translateY,e,i),c(n.rotate,r.rotate,e,i),f(n.skewX,r.skewX,e,i),s(n.scaleX,n.scaleY,r.scaleX,r.scaleY,e,i),n=r=null,function(t){for(var n,r=-1,u=i.length;++ra)if(Math.abs(h*f-s*l)>a&&i){var p=r-o,v=e-c,g=f*f+s*s,y=p*p+v*v,_=Math.sqrt(g),b=Math.sqrt(d),m=i*Math.tan((u-Math.acos((g+d-y)/(2*_*b)))/2),x=m/b,w=m/_;Math.abs(x-1)>a&&(this._+="L"+(t+x*l)+","+(n+x*h)),this._+="A"+i+","+i+",0,0,"+ +(h*p>l*v)+","+(this._x1=t+w*f)+","+(this._y1=n+w*s)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,r,e,i,f){t=+t,n=+n,r=+r;var s=r*Math.cos(e),l=r*Math.sin(e),h=t+s,d=n+l,p=1^f,v=f?e-i:i-e;if(r<0)throw new Error("negative radius: "+r);null===this._x1?this._+="M"+h+","+d:(Math.abs(this._x1-h)>a||Math.abs(this._y1-d)>a)&&(this._+="L"+h+","+d),r&&(v<0&&(v=v%o+o),v>c?this._+="A"+r+","+r+",0,1,"+p+","+(t-s)+","+(n-l)+"A"+r+","+r+",0,1,"+p+","+(this._x1=h)+","+(this._y1=d):v>a&&(this._+="A"+r+","+r+",0,"+ +(v>=u)+","+p+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=n+r*Math.sin(i))))},rect:function(t,n,r,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +r+"v"+ +e+"h"+-r+"Z"},toString:function(){return this._}},n.a=i},function(t,n,r){"use strict";var e=r(308);r.d(n,"a",function(){return e.a});var i=r(309);r.d(n,"b",function(){return i.a});var u=r(312);r.d(n,"c",function(){return u.a});var o=r(310);r.d(n,"d",function(){return o.a});var a=r(313);r.d(n,"e",function(){return a.a})},function(t,n,r){"use strict";n.a=function(t){for(var n,r=-1,e=t.length,i=t[e-1],u=0;++ra!=f>a&&o<(c-r)*(a-e)/(f-e)+r&&(s=!s),c=r,f=e;return s}},function(t,n,r){"use strict";n.a=function(t,n,r){return(n[0]-t[0])*(r[1]-t[1])-(n[1]-t[1])*(r[0]-t[0])}},function(t,n,r){"use strict";function e(t,n){return t[0]-n[0]||t[1]-n[1]}function i(t){for(var n=t.length,e=[0,1],i=2,o=2;o1&&r.i(u.a)(t[e[i-2]],t[e[i-1]],t[o])<=0;)--i;e[i++]=o}return e.slice(0,i)}var u=r(311);n.a=function(t){if((r=t.length)<3)return null;var n,r,u=new Array(r),o=new Array(r);for(n=0;n=0;--n)l.push(t[u[a[n]][2]]);for(n=+f;n=(u=(v+y)/2))?v=u:y=u,(s=r>=(o=(g+_)/2))?g=o:_=o,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(a=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===a&&r===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(u=(v+y)/2))?v=u:y=u,(s=r>=(o=(g+_)/2))?g=o:_=o}while((l=s<<1|f)==(h=(c>=o)<<1|a>=u));return i[h]=d,i[l]=p,t}function i(t){var n,r,i,u,o=t.length,a=new Array(o),c=new Array(o),f=1/0,s=1/0,l=-1/0,h=-1/0;for(r=0;rl&&(l=i),uh&&(h=u));for(lt||t>i||e>n||n>u))return this;var o,a,c=i-r,f=this._root;switch(a=(n<(e+u)/2)<<1|t<(r+i)/2){case 0:do{o=new Array(4),o[a]=f,f=o}while(c*=2,i=r+c,u=e+c,t>i||n>u);break;case 1:do{o=new Array(4),o[a]=f,f=o}while(c*=2,r=i-c,u=e+c,r>t||n>u);break;case 2:do{o=new Array(4),o[a]=f,f=o}while(c*=2,i=r+c,e=u-c,t>i||e>n);break;case 3:do{o=new Array(4),o[a]=f,f=o}while(c*=2,r=i-c,e=u-c,r>t||e>n)}this._root&&this._root.length&&(this._root=f)}return this._x0=r,this._y0=e,this._x1=i,this._y1=u,this}},function(t,n,r){"use strict";n.a=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t}},function(t,n,r){"use strict";n.a=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]]}},function(t,n,r){"use strict";var e=r(71);n.a=function(t,n,r){var i,u,o,a,c,f,s,l=this._x0,h=this._y0,d=this._x1,p=this._y1,v=[],g=this._root;for(g&&v.push(new e.a(g,l,h,d,p)),null==r?r=1/0:(l=t-r,h=n-r,d=t+r,p=n+r,r*=r);f=v.pop();)if(!(!(g=f.node)||(u=f.x0)>d||(o=f.y0)>p||(a=f.x1)=_)<<1|t>=y)&&(f=v[v.length-1],v[v.length-1]=v[v.length-1-s],v[v.length-1-s]=f)}else{var b=t-+this._x.call(null,g.data),m=n-+this._y.call(null,g.data),x=b*b+m*m;if(x=(a=(p+g)/2))?p=a:g=a,(s=o>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(r=n,h=l)}for(;d.data!==t;)if(e=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,e?(i?e.next=i:delete e.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(r?r[h]=d:this._root=d),this):(this._root=i,this)}},function(t,n,r){"use strict";n.a=function(){return this._root}},function(t,n,r){"use strict";n.a=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t}},function(t,n,r){"use strict";var e=r(71);n.a=function(t){var n,r,i,u,o,a,c=[],f=this._root;for(f&&c.push(new e.a(f,this._x0,this._y0,this._x1,this._y1));n=c.pop();)if(!t(f=n.node,i=n.x0,u=n.y0,o=n.x1,a=n.y1)&&f.length){var s=(i+o)/2,l=(u+a)/2;(r=f[3])&&c.push(new e.a(r,s,l,o,a)),(r=f[2])&&c.push(new e.a(r,i,l,s,a)),(r=f[1])&&c.push(new e.a(r,s,u,o,l)),(r=f[0])&&c.push(new e.a(r,i,u,s,l))}return this}},function(t,n,r){"use strict";var e=r(71);n.a=function(t){var n,r=[],i=[];for(this._root&&r.push(new e.a(this._root,this._x0,this._y0,this._x1,this._y1));n=r.pop();){var u=n.node;if(u.length){var o,a=n.x0,c=n.y0,f=n.x1,s=n.y1,l=(a+f)/2,h=(c+s)/2;(o=u[0])&&r.push(new e.a(o,a,c,l,h)),(o=u[1])&&r.push(new e.a(o,l,c,f,h)),(o=u[2])&&r.push(new e.a(o,a,h,l,s)),(o=u[3])&&r.push(new e.a(o,l,h,f,s))}i.push(n)}for(;n=i.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this}},function(t,n,r){"use strict";function e(t){return t[0]}n.a=e,n.b=function(t){return arguments.length?(this._x=t,this):this._x}},function(t,n,r){"use strict";function e(t){return t[1]}n.a=e,n.b=function(t){return arguments.length?(this._y=t,this):this._y}},function(t,n,r){"use strict";var e=r(329);r.d(n,"a",function(){return e.a})},function(t,n,r){"use strict";r.d(n,"a",function(){return e});var e=[].slice},function(t,n,r){"use strict";function e(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function i(t){if(!t._start)try{u(t)}catch(n){if(t._tasks[t._ended+t._active-1])a(t,n);else if(!t._data)throw n}}function u(t){for(;t._start=t._waiting&&t._active=0;)if((r=t._tasks[e])&&(t._tasks[e]=null,r.abort))try{r.abort()}catch(n){}t._active=NaN,c(t)}function c(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function f(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new e(t)}var s=r(328);n.a=f;var l={};e.prototype=f.prototype={constructor:e,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var n=s.a.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),i(this),this},abort:function(){return null==this._error&&a(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(n,r){t.apply(null,[n].concat(r))},c(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,c(this),this}}},function(t,n,r){"use strict";var e=r(334);r.d(n,"a",function(){return e.a});var i=r(140);r.d(n,"b",function(){return i.a});var u=r(333);r.d(n,"c",function(){return u.a});var o=r(331);r.d(n,"d",function(){return o.a});var a=r(139);r.d(n,"e",function(){return a.a});var c=r(332);r.d(n,"f",function(){return c.a})},function(t,n,r){"use strict";var e=r(20),i=r(139);n.a=function t(n){function r(t){var r=i.a.source(n)(t);return function(){return r()/t}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(20);n.a=function t(n){function r(t){return function(){return-Math.log(1-n())/t}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(20),i=r(140);n.a=function t(n){function r(){var t=i.a.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(20);n.a=function t(n){function r(t,r){return t=null==t?0:+t,r=null==r?1:+r,1===arguments.length?(r=t,t=0):r-=t,function(){return n()*r+t}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(72);r.d(n,"a",function(){return e.a});var i=r(337);r.d(n,"b",function(){return i.a});var u=r(338);r.d(n,"c",function(){return u.a});var o=r(339);r.d(n,"d",function(){return o.a});var a=r(341);r.d(n,"e",function(){return a.a});var c=r(336);r.d(n,"f",function(){return c.a});var f=r(340);r.d(n,"g",function(){return f.a})},function(t,n,r){"use strict";var e=r(55),i=r(141);n.a=r.i(i.a)("text/csv",e.b)},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)})},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("application/json",function(t){return JSON.parse(t.responseText)})},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("text/plain",function(t){return t.responseText})},function(t,n,r){"use strict";var e=r(55),i=r(141);n.a=r.i(i.a)("text/tab-separated-values",e.f)},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n})},function(t,n,r){"use strict";var e=r(343);r.d(n,"a",function(){return e.a}),r.d(n,"b",function(){return e.b});var i=r(349);r.d(n,"c",function(){return i.a});var u=r(28);r.d(n,"d",function(){return u.a});var o=r(350);r.d(n,"e",function(){return o.a});var a=r(144);r.d(n,"f",function(){return a.a}),r.d(n,"g",function(){return a.b});var c=r(351);r.d(n,"h",function(){return c.a}),r.d(n,"i",function(){return c.b});var f=r(352);r.d(n,"j",function(){return f.a});var s=r(353);r.d(n,"k",function(){return s.a});var l=r(356);r.d(n,"l",function(){return l.a});var h=r(145);r.d(n,"m",function(){return h.a});var d=r(358);r.d(n,"n",function(){return d.a});var p=r(344);r.d(n,"o",function(){return p.a});var v=r(346);r.d(n,"p",function(){return v.a});var g=r(347);r.d(n,"q",function(){return g.a});var y=r(345);r.d(n,"r",function(){return y.a});var _=r(348);r.d(n,"s",function(){return _.a});var b=r(354);r.d(n,"t",function(){return b.a}),r.d(n,"u",function(){return b.b}),r.d(n,"v",function(){return b.c});var m=r(359);r.d(n,"w",function(){return m.a}),r.d(n,"x",function(){return m.b}),r.d(n,"y",function(){return m.c}),r.d(n,"z",function(){return m.d});var x=r(355);r.d(n,"A",function(){return x.a})},function(t,n,r){"use strict";function e(){function t(){var t=c().length,e=s[1]0){for(;lo)break;y.push(f)}}else for(;l=1;--c)if(!((f=a*c)o)break;y.push(f)}}else y=r.i(s.z)(l,d,Math.min(d-l,p)).map(g);return n?y.reverse():y},n.tickFormat=function(t,e){if(null==e&&(e=10===h?".0e":","),"function"!=typeof e&&(e=r.i(l.b)(e)),t===1/0)return e;null==t&&(t=10);var i=Math.max(1,h*t/n.ticks().length);return function(t){var n=t/g(Math.round(v(t)));return n*h0?c[n-1]:o[0],n=f?[s[f-1],c]:[s[n-1],s[n]]},t.copy=function(){return e().domain([a,c]).range(l)},r.i(o.b)(t)}var i=r(3),u=r(15),o=r(28);n.a=e},function(t,n,r){"use strict";var e=r(7),i=r(4);r.d(n,"b",function(){return u}),r.d(n,"c",function(){return o});var u=r.i(i.v)(r.i(e.f)(-100,.75,.35),r.i(e.f)(80,1.5,.8)),o=r.i(i.v)(r.i(e.f)(260,.75,.35),r.i(e.f)(80,1.5,.8)),a=r.i(e.f)();n.a=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return a.h=360*t-100,a.s=1.5-1.5*n,a.l=.8-.9*n,a+""}},function(t,n,r){"use strict";function e(t){function n(n){var r=(n-u)/(o-u);return t(a?Math.max(0,Math.min(1,r)):r)}var u=0,o=1,a=!1;return n.domain=function(t){return arguments.length?(u=+t[0],o=+t[1],n):[u,o]},n.clamp=function(t){return arguments.length?(a=!!t,n):a},n.interpolator=function(r){return arguments.length?(t=r,n):t},n.copy=function(){return e(t).domain([u,o]).clamp(a)},r.i(i.b)(n)}var i=r(28);n.a=e},function(t,n,r){"use strict";function e(){function t(t){if(t<=t)return o[r.i(i.a)(n,t,0,a)]}var n=[.5],o=[0,1],a=1;return t.domain=function(r){return arguments.length?(n=u.b.call(r),a=Math.min(n.length,o.length-1),t):n.slice()},t.range=function(r){return arguments.length?(o=u.b.call(r),a=Math.min(n.length,o.length-1),t):o.slice()},t.invertExtent=function(t){var r=o.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return e().domain(n).range(o)},t}var i=r(3),u=r(15);n.a=e},function(t,n,r){"use strict";var e=r(3),i=r(58);n.a=function(t,n,u){var o,a=t[0],c=t[t.length-1],f=r.i(e.B)(a,c,null==n?10:n);switch(u=r.i(i.e)(null==u?",f":u),u.type){case"s":var s=Math.max(Math.abs(a),Math.abs(c));return null!=u.precision||isNaN(o=r.i(i.g)(f,s))||(u.precision=o),r.i(i.c)(u,s);case"":case"e":case"g":case"p":case"r":null!=u.precision||isNaN(o=r.i(i.h)(f,Math.max(Math.abs(a),Math.abs(c))))||(u.precision=o-("e"===u.type));break;case"f":case"%":null!=u.precision||isNaN(o=r.i(i.f)(f))||(u.precision=o-2*("%"===u.type))}return r.i(i.b)(u)}},function(t,n,r){"use strict";var e=r(145),i=r(85),u=r(46);n.a=function(){return r.i(e.b)(u._7,u._5,u.P,u.N,u.L,u.J,u.h,u.d,i.d).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])}},function(t,n,r){"use strict";function e(t){var n=t.length;return function(r){return t[Math.max(0,Math.min(n-1,Math.floor(r*n)))]}}var i=r(27);r.d(n,"b",function(){return u}),r.d(n,"c",function(){return o}),r.d(n,"d",function(){return a}),n.a=e(r.i(i.a)("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var u=e(r.i(i.a)("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),o=e(r.i(i.a)("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),a=e(r.i(i.a)("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"))},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(){return new i}function i(){this._="@"+(++u).toString(36)}n.a=e;var u=0;i.prototype=e.prototype={constructor:i,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}}},function(t,n,r){"use strict";var e=r(79),i=r(41);n.a=function(t){var n=r.i(e.a)();return n.changedTouches&&(n=n.changedTouches[0]),r.i(i.a)(t,n)}},function(t,n,r){"use strict";var e=r(5);n.a=function(t){return"string"==typeof t?new e.b([[document.querySelector(t)]],[document.documentElement]):new e.b([[t]],e.c)}},function(t,n,r){"use strict";var e=r(5);n.a=function(t){return"string"==typeof t?new e.b([document.querySelectorAll(t)],[document.documentElement]):new e.b([null==t?[]:t],e.c)}},function(t,n,r){"use strict";var e=r(74);n.a=function(t){var n="function"==typeof t?t:r.i(e.a)(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}},function(t,n,r){"use strict";function e(t){return function(){this.removeAttribute(t)}}function i(t){return function(){this.removeAttributeNS(t.space,t.local)}}function u(t,n){return function(){this.setAttribute(t,n)}}function o(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function a(t,n){return function(){var r=n.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function c(t,n){return function(){var r=n.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}var f=r(75);n.a=function(t,n){var s=r.i(f.a)(t);if(arguments.length<2){var l=this.node();return s.local?l.getAttributeNS(s.space,s.local):l.getAttribute(s)}return this.each((null==n?s.local?i:e:"function"==typeof n?s.local?c:a:s.local?o:u)(s,n))}},function(t,n,r){"use strict";n.a=function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}},function(t,n,r){"use strict";function e(t){return t.trim().split(/^|\s+/)}function i(t){return t.classList||new u(t)}function u(t){this._node=t,this._names=e(t.getAttribute("class")||"")}function o(t,n){for(var r=i(t),e=-1,u=n.length;++e=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}},n.a=function(t,n){var r=e(t+"");if(arguments.length<2){for(var u=i(this.node()),o=-1,a=r.length;++o=T&&(T=k+1);!(M=x[T])&&++T=0;)(e=i[u])&&(o&&o!==e.nextSibling&&o.parentNode.insertBefore(e,o),o=e);return this}},function(t,n,r){"use strict";function e(t){return function(){delete this[t]}}function i(t,n){return function(){this[t]=n}}function u(t,n){return function(){var r=n.apply(this,arguments);null==r?delete this[t]:this[t]=r}}n.a=function(t,n){return arguments.length>1?this.each((null==n?e:"function"==typeof n?u:i)(t,n)):this.node()[t]}},function(t,n,r){"use strict";function e(){this.nextSibling&&this.parentNode.appendChild(this)}n.a=function(){return this.each(e)}},function(t,n,r){"use strict";function e(){var t=this.parentNode;t&&t.removeChild(this)}n.a=function(){return this.each(e)}},function(t,n,r){"use strict";var e=r(5),i=r(78);n.a=function(t){"function"!=typeof t&&(t=r.i(i.a)(t));for(var n=this._groups,u=n.length,o=new Array(u),a=0;an?1:t>=n?0:NaN}var i=r(5);n.a=function(t){function n(n,r){return n&&r?t(n.__data__,r.__data__):!n-!r}t||(t=e);for(var r=this._groups,u=r.length,o=new Array(u),a=0;az*z+P*P&&(E=N,A=S),{cx:E,cy:A,x01:-l,y01:-d,x11:E*(u/M-1),y11:A*(u/M-1)}}var s=r(14),l=r(16),h=r(29);n.a=function(){function t(){var t,e,i=+n.apply(this,arguments),u=+d.apply(this,arguments),o=g.apply(this,arguments)-h.f,a=y.apply(this,arguments)-h.f,l=r.i(h.g)(a-o),m=a>o;if(b||(b=t=r.i(s.a)()),uh.a)if(l>h.c-h.a)b.moveTo(u*r.i(h.h)(o),u*r.i(h.i)(o)),b.arc(0,0,u,o,a,!m),i>h.a&&(b.moveTo(i*r.i(h.h)(a),i*r.i(h.i)(a)),b.arc(0,0,i,a,o,m));else{var x,w,M=o,k=a,T=o,E=a,A=l,N=l,S=_.apply(this,arguments)/2,C=S>h.a&&(v?+v.apply(this,arguments):r.i(h.d)(i*i+u*u)),q=r.i(h.j)(r.i(h.g)(u-i)/2,+p.apply(this,arguments)),z=q,P=q;if(C>h.a){var L=r.i(h.k)(C/i*r.i(h.i)(S)),D=r.i(h.k)(C/u*r.i(h.i)(S));(A-=2*L)>h.a?(L*=m?1:-1,T+=L,E-=L):(A=0,T=E=(o+a)/2),(N-=2*D)>h.a?(D*=m?1:-1,M+=D,k-=D):(N=0,M=k=(o+a)/2)}var R=u*r.i(h.h)(M),U=u*r.i(h.i)(M),O=i*r.i(h.h)(E),j=i*r.i(h.i)(E);if(q>h.a){var I=u*r.i(h.h)(k),F=u*r.i(h.i)(k),Y=i*r.i(h.h)(T),B=i*r.i(h.i)(T);if(lh.a?c(R,U,Y,B,I,F,O,j):[O,j],X=R-H[0],V=U-H[1],G=I-H[0],W=F-H[1],Z=1/r.i(h.i)(r.i(h.l)((X*G+V*W)/(r.i(h.d)(X*X+V*V)*r.i(h.d)(G*G+W*W)))/2),$=r.i(h.d)(H[0]*H[0]+H[1]*H[1]);z=r.i(h.j)(q,(i-$)/(Z-1)),P=r.i(h.j)(q,(u-$)/(Z+1))}}N>h.a?P>h.a?(x=f(Y,B,R,U,u,P,m),w=f(I,F,O,j,u,P,m),b.moveTo(x.cx+x.x01,x.cy+x.y01),Ph.a&&A>h.a?z>h.a?(x=f(O,j,I,F,i,-z,m),w=f(R,U,Y,B,i,-z,m),b.lineTo(x.cx+x.x01,x.cy+x.y01),z0)for(var e,i=t[0],u=n[0],o=t[r]-i,a=n[r]-u,c=-1;++c<=r;)e=c/r,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+e*o),this._beta*n[c]+(1-this._beta)*(u+e*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}},n.a=function t(n){function r(t){return 1===n?new i.b(t):new e(t,n)}return r.beta=function(n){return t(+n)},r}(.85)},function(t,n,r){"use strict";function e(t,n){this._context=t,this._alpha=n}var i=r(153),u=r(45),o=r(81);e.prototype={areaStart:u.a,areaEnd:u.a,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,i=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,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:r.i(o.b)(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}},n.a=function t(n){function r(t){return n?new e(t,n):new i.b(t,0)}return r.alpha=function(n){return t(+n)},r}(.5)},function(t,n,r){"use strict";function e(t,n){this._context=t,this._alpha=n}var i=r(154),u=r(81);e.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,i=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,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:r.i(u.b)(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}},n.a=function t(n){function r(t){return n?new e(t,n):new i.b(t,0)}return r.alpha=function(n){return t(+n)},r}(.5)},function(t,n,r){"use strict";function e(t){this._context=t}var i=r(45);e.prototype={areaStart:i.a,areaEnd:i.a,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))}},n.a=function(t){return new e(t)}},function(t,n,r){"use strict";function e(t){return t<0?-1:1}function i(t,n,r){var i=t._x1-t._x0,u=n-t._x1,o=(t._y1-t._y0)/(i||u<0&&-0),a=(r-t._y1)/(u||i<0&&-0),c=(o*u+a*i)/(i+u);return(e(o)+e(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(c))||0}function u(t,n){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-n)/2:n}function o(t,n,r){var e=t._x0,i=t._y0,u=t._x1,o=t._y1,a=(u-e)/3;t._context.bezierCurveTo(e+a,i+a*n,u-a,o-a*r,u,o)}function a(t){this._context=t}function c(t){this._context=new f(t)}function f(t){this._context=t}function s(t){return new a(t)}function l(t){return new c(t)}n.a=s,n.b=l,a.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:o(this,this._t0,u(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var r=NaN;if(t=+t,n=+n,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,o(this,u(this,r=i(this,t,n)),r);break;default:o(this,this._t0,r=i(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=r}}},(c.prototype=Object.create(a.prototype)).point=function(t,n){a.prototype.point.call(this,n,t)},f.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,r,e,i,u){this._context.bezierCurveTo(n,t,e,r,u,i)}}},function(t,n,r){"use strict";function e(t){this._context=t}function i(t){var n,r,e=t.length-1,i=new Array(e),u=new Array(e),o=new Array(e);for(i[0]=0,u[0]=2,o[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(o[n]-i[n+1])/u[n];for(u[e-1]=(t[e]+i[e-1])/2,n=0;n=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 r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,n)}}this._x=t,this._y=n}},n.a=function(t){return new e(t,.5)}},function(t,n,r){"use strict";n.a=function(t,n){return nt?1:n>=t?0:NaN}},function(t,n,r){"use strict";n.a=function(t){return t}},function(t,n,r){"use strict";function e(t){return t.source}function i(t){return t.target}function u(t){function n(){var n,e=d.a.call(arguments),i=u.apply(this,e),s=o.apply(this,e);if(f||(f=n=r.i(h.a)()),t(f,+a.apply(this,(e[0]=i,e)),+c.apply(this,e),+a.apply(this,(e[0]=s,e)),+c.apply(this,e)),n)return f=null,n+""||null}var u=e,o=i,a=v.a,c=v.b,f=null;return n.source=function(t){return arguments.length?(u=t,n):u},n.target=function(t){return arguments.length?(o=t,n):o},n.x=function(t){return arguments.length?(a="function"==typeof t?t:r.i(p.a)(+t),n):a},n.y=function(t){return arguments.length?(c="function"==typeof t?t:r.i(p.a)(+t),n):c},n.context=function(t){return arguments.length?(f=null==t?null:t,n):f},n}function o(t,n,r,e,i){t.moveTo(n,r),t.bezierCurveTo(n=(n+e)/2,r,n,i,e,i)}function a(t,n,r,e,i){t.moveTo(n,r),t.bezierCurveTo(n,r=(r+i)/2,e,r,e,i)}function c(t,n,e,i,u){var o=r.i(g.a)(n,e),a=r.i(g.a)(n,e=(e+u)/2),c=r.i(g.a)(i,e),f=r.i(g.a)(i,u);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],c[0],c[1],f[0],f[1])}function f(){return u(o)}function s(){return u(a)}function l(){var t=u(c);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var h=r(14),d=r(152),p=r(16),v=r(84),g=r(157);n.a=f,n.b=s,n.c=l},function(t,n,r){"use strict";n.a=function(t,n){if((a=t.length)>1)for(var r,e,i,u,o,a,c=0,f=t[n[0]].length;c=0?(e[0]=u,e[1]=u+=i):i<0?(e[1]=o,e[0]=o+=i):e[0]=u}},function(t,n,r){"use strict";var e=r(30);n.a=function(t,n){if((u=t.length)>0){for(var i,u,o,a=0,c=t[0].length;a0){for(var i,u=0,o=t[n[0]],a=o.length;u0&&(u=(i=t[n[0]]).length)>0){for(var i,u,o,a=0,c=1;c0&&(p+=h);for(null!=a?v.sort(function(t,n){return a(g[t],g[n])}):null!=c&&v.sort(function(n,r){return c(t[n],t[r])}),r=0,i=p?(_-d*m)/p:0;r0?h*i:0)+m,g[e]={data:t[e],index:r,value:h,startAngle:y,endAngle:u,padAngle:b};return g}var n=u.a,a=i.a,c=null,f=r.i(e.a)(0),s=r.i(e.a)(o.c),l=r.i(e.a)(0);return t.value=function(i){return arguments.length?(n="function"==typeof i?i:r.i(e.a)(+i),t):n},t.sortValues=function(n){return arguments.length?(a=n,c=null,t):a},t.sort=function(n){return arguments.length?(c=n,a=null,t):c},t.startAngle=function(n){return arguments.length?(f="function"==typeof n?n:r.i(e.a)(+n),t):f},t.endAngle=function(n){return arguments.length?(s="function"==typeof n?n:r.i(e.a)(+n),t):s},t.padAngle=function(n){return arguments.length?(l="function"==typeof n?n:r.i(e.a)(+n),t):l},t}},function(t,n,r){"use strict";function e(t,n){return t[n]}var i=r(152),u=r(16),o=r(30),a=r(31);n.a=function(){function t(t){var r,e,i=n.apply(this,arguments),u=t.length,o=i.length,a=new Array(o);for(r=0;r0?t>1?r.i(e.a)(function(n){n.setTime(Math.floor(n/t)*t)},function(n,r){n.setTime(+n+r*t)},function(n,r){return(r-n)/t}):i:null},n.a=i;var u=i.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return o});var u=r.i(e.a)(function(t){t.setTime(Math.floor(t/i.d)*i.d)},function(t,n){t.setTime(+t+n*i.d)},function(t,n){return(n-t)/i.d},function(t){return t.getMinutes()});n.a=u;var o=u.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});n.a=i;var u=i.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return o});var u=r.i(e.a)(function(t){t.setTime(Math.floor(t/i.e)*i.e)},function(t,n){t.setTime(+t+n*i.e)},function(t,n){return(n-t)/i.e},function(t){return t.getUTCSeconds()});n.a=u;var o=u.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return o});var u=r.i(e.a)(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/i.b},function(t){return t.getUTCDate()-1});n.a=u;var o=u.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return o});var u=r.i(e.a)(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+n*i.c)},function(t,n){return(n-t)/i.c},function(t){return t.getUTCHours()});n.a=u;var o=u.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return o});var u=r.i(e.a)(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*i.d)},function(t,n){return(n-t)/i.d},function(t){return t.getUTCMinutes()});n.a=u;var o=u.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});n.a=i;var u=i.range},function(t,n,r){"use strict";function e(t){return r.i(i.a)(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)/u.a})}var i=r(2),u=r(9);r.d(n,"a",function(){return o}),r.d(n,"c",function(){return a}),r.d(n,"e",function(){return c}),r.d(n,"g",function(){return f}),r.d(n,"i",function(){return s}),r.d(n,"k",function(){return l}),r.d(n,"m",function(){return h}),r.d(n,"b",function(){return d}),r.d(n,"d",function(){return p}),r.d(n,"f",function(){return v}),r.d(n,"h",function(){return g}),r.d(n,"j",function(){return y}),r.d(n,"l",function(){return _}),r.d(n,"n",function(){return b});var o=e(0),a=e(1),c=e(2),f=e(3),s=e(4),l=e(5),h=e(6),d=o.range,p=a.range,v=c.range,g=f.range,y=s.range,_=l.range,b=h.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?r.i(e.a)(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,r){n.setUTCFullYear(n.getUTCFullYear()+r*t)}):null},n.a=i;var u=i.range},function(t,n,r){"use strict";function e(t){return r.i(i.a)(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())*u.d)/u.a})}var i=r(2),u=r(9);r.d(n,"a",function(){return o}),r.d(n,"c",function(){return a}),r.d(n,"e",function(){return c}),r.d(n,"g",function(){return f}),r.d(n,"i",function(){return s}),r.d(n,"k",function(){return l}),r.d(n,"m",function(){return h}),r.d(n,"b",function(){return d}),r.d(n,"d",function(){return p}),r.d(n,"f",function(){return v}),r.d(n,"h",function(){return g}),r.d(n,"j",function(){return y}),r.d(n,"l",function(){return _}),r.d(n,"n",function(){return b});var o=e(0),a=e(1),c=e(2),f=e(3),s=e(4),l=e(5),h=e(6),d=o.range,p=a.range,v=c.range,g=f.range,y=s.range,_=l.range,b=h.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?r.i(e.a)(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,r){n.setFullYear(n.getFullYear()+r*t)}):null},n.a=i;var u=i.range},function(t,n,r){"use strict";var e=r(87);n.a=function(t,n,i){var u=new e.d,o=n;return null==n?(u.restart(t,n,i),u):(n=+n,i=null==i?r.i(e.a)():+i,u.restart(function r(e){e+=o,u.restart(r,o+=n,i),t(e)},n,i),u)}},function(t,n,r){"use strict";var e=r(87);n.a=function(t,n,r){var i=new e.d;return n=null==n?0:+n,i.restart(function(r){i.stop(),t(r+n)},n,r),i}},function(t,n,r){"use strict";var e=r(11),i=r(6),u=[null];n.a=function(t,n){var r,o,a=t.__transition;if(a){n=null==n?null:n+"";for(o in a)if((r=a[o]).state>i.d&&r.name===n)return new e.b([[t]],u,n,+o)}return null}},function(t,n,r){"use strict";var e=r(1),i=r(437),u=r(438);e.j.prototype.interrupt=i.a,e.j.prototype.transition=u.a},function(t,n,r){"use strict";var e=r(167);n.a=function(t){return this.each(function(){r.i(e.a)(this,t)})}},function(t,n,r){"use strict";function e(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return c.time=r.i(a.a)(),c;return e}var i=r(11),u=r(6),o=r(107),a=r(47),c={time:null,delay:0,duration:250,ease:o.i};n.a=function(t){var n,o;t instanceof i.b?(n=t._id,t=t._name):(n=r.i(i.c)(),(o=c).time=r.i(a.a)(),t=null==t?null:t+"");for(var f=this._groups,s=f.length,l=0;l=0&&(t=t.slice(0,n)),!t||"start"===t})}function i(t,n,r){var i,o,a=e(n)?u.g:u.e;return function(){var e=a(this,t),u=e.on;u!==i&&(o=(i=u).copy()).on(n,r),e.on=o}}var u=r(6);n.a=function(t,n){var e=this._id;return arguments.length<2?r.i(u.f)(this.node(),e).on.on(t):this.each(i(e,t,n))}},function(t,n,r){"use strict";function e(t){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==t)return;n&&n.removeChild(this)}}n.a=function(){return this.on("end.remove",e(this._id))}},function(t,n,r){"use strict";var e=r(1),i=r(11),u=r(6);n.a=function(t){var n=this._name,o=this._id;"function"!=typeof t&&(t=r.i(e.k)(t));for(var a=this._groups,c=a.length,f=new Array(c),s=0;sp.b)v=v.L;else{if(!((o=a-f(v,s))>p.b)){u>-p.b?(n=v.P,e=v):o>-p.b?(n=v,e=v.N):n=e=v;break}if(!v.R){n=v;break}v=v.R}r.i(l.d)(t);var g=i(t);if(p.e.insert(n,g),n||e){if(n===e)return r.i(h.b)(n),e=i(n.site),p.e.insert(g,e),g.edge=e.edge=r.i(d.d)(n.site,g.site),r.i(h.c)(n),void r.i(h.c)(e);if(!e)return void(g.edge=r.i(d.d)(n.site,g.site));r.i(h.b)(n),r.i(h.b)(e);var y=n.site,_=y[0],b=y[1],m=t[0]-_,x=t[1]-b,w=e.site,M=w[0]-_,k=w[1]-b,T=2*(m*k-x*M),E=m*m+x*x,A=M*M+k*k,N=[(k*E-x*A)/T+_,(m*A-M*E)/T+b];r.i(d.c)(e.edge,y,w,N),g.edge=r.i(d.d)(y,t,null,N),e.edge=r.i(d.d)(t,w,null,N),r.i(h.c)(n),r.i(h.c)(e)}}function c(t,n){var r=t.site,e=r[0],i=r[1],u=i-n;if(!u)return e;var o=t.P;if(!o)return-1/0;r=o.site;var a=r[0],c=r[1],f=c-n;if(!f)return a;var s=a-e,l=1/u-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-u/2)))/l+e:(e+a)/2}function f(t,n){var r=t.N;if(r)return c(r,n);var e=t.site;return e[1]===n?e[0]:1/0}var s=r(90),l=r(169),h=r(170),d=r(89),p=r(32);n.b=o,n.a=a;var v=[]},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t){return t[0]}function i(t){return t[1]}n.a=e,n.b=i},function(t,n,r){"use strict";var e=r(457),i=r(458),u=r(32);n.a=function(){function t(t){return new u.a(t.map(function(r,e){var i=[Math.round(n(r,e,t)/u.b)*u.b,Math.round(o(r,e,t)/u.b)*u.b];return i.index=e,i.data=r,i}),a)}var n=i.a,o=i.b,a=null;return t.polygons=function(n){return t(n).polygons()},t.links=function(n){return t(n).links()},t.triangles=function(n){return t(n).triangles()},t.x=function(i){return arguments.length?(n="function"==typeof i?i:r.i(e.a)(+i),t):n},t.y=function(n){return arguments.length?(o="function"==typeof n?n:r.i(e.a)(+n),t):o},t.extent=function(n){return arguments.length?(a=null==n?null:[[+n[0][0],+n[0][1]],[+n[1][0],+n[1][1]]],t):a&&[[a[0][0],a[0][1]],[a[1][0],a[1][1]]]},t.size=function(n){return arguments.length?(a=null==n?null:[[0,0],[+n[0],+n[1]]],t):a&&[a[1][0]-a[0][0],a[1][1]-a[0][1]]},t}},function(t,n,r){"use strict";var e=r(464);r.d(n,"a",function(){return e.a});var i=r(171);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b})},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t,n,r){this.target=t,this.type=n,this.transform=r}n.a=e},function(t,n,r){"use strict";function e(){i.q.stopImmediatePropagation()}var i=r(1);n.b=e,n.a=function(){i.q.preventDefault(),i.q.stopImmediatePropagation()}},function(t,n,r){"use strict";function e(){return!h.q.button}function i(){var t,n,r=this;return r instanceof SVGElement?(r=r.ownerSVGElement||r,t=r.width.baseVal.value,n=r.height.baseVal.value):(t=r.clientWidth,n=r.clientHeight),[[0,0],[t,n]]}function u(){return this.__zoom||g.b}function o(){return-h.q.deltaY*(h.q.deltaMode?120:1)/500}function a(){return"ontouchstart"in this}function c(t,n,r){var e=t.invertX(n[0][0])-r[0][0],i=t.invertX(n[1][0])-r[1][0],u=t.invertY(n[0][1])-r[0][1],o=t.invertY(n[1][1])-r[1][1];return t.translate(i>e?(e+i)/2:Math.min(0,e)||Math.max(0,i),o>u?(u+o)/2:Math.min(0,u)||Math.max(0,o))}var f=r(12),s=r(54),l=r(4),h=r(1),d=r(88),p=r(461),v=r(462),g=r(171),y=r(463);n.a=function(){function t(t){t.property("__zoom",u).on("wheel.zoom",M).on("mousedown.zoom",k).on("dblclick.zoom",T).filter(D).on("touchstart.zoom",E).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",N).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function n(t,n){return n=Math.max(R[0],Math.min(R[1],n)),n===t.k?t:new g.c(n,t.x,t.y)}function _(t,n,r){var e=n[0]-r[0]*t.k,i=n[1]-r[1]*t.k;return e===t.x&&i===t.y?t:new g.c(t.k,e,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,n,r){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=this,e=arguments,i=x(t,e),u=z.apply(t,e),o=r||b(u),a=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),c=t.__zoom,f="function"==typeof n?n.apply(t,e):n,s=j(c.invert(o).concat(a/c.k),f.invert(o).concat(a/f.k));return function(t){if(1===t)t=f;else{var n=s(t),r=a/n[2];t=new g.c(r,o[0]-n[0]*r,o[1]-n[1]*r)}i.zoom(null,t)}})}function x(t,n){for(var r,e=0,i=I.length;eH}e.zoom("mouse",P(_(e.that.__zoom,e.mouse[0]=r.i(h.d)(e.that),e.mouse[1]),e.extent,U))}function n(){i.on("mousemove.zoom mouseup.zoom",null),r.i(s.c)(h.q.view,e.moved),r.i(y.a)(),e.end()}if(!C&&q.apply(this,arguments)){var e=x(this,arguments),i=r.i(h.h)(h.q.view).on("mousemove.zoom",t,!0).on("mouseup.zoom",n,!0),u=r.i(h.d)(this),o=h.q.clientX,a=h.q.clientY;r.i(s.b)(h.q.view),r.i(y.b)(),e.mouse=[u,this.__zoom.invert(u)],r.i(d.c)(this),e.start()}}function T(){if(q.apply(this,arguments)){var e=this.__zoom,i=r.i(h.d)(this),u=e.invert(i),o=e.k*(h.q.shiftKey?.5:2),a=P(_(n(e,o),i,u),z.apply(this,arguments),U);r.i(y.a)(),O>0?r.i(h.h)(this).transition().duration(O).call(m,a,i):r.i(h.h)(this).call(t.transform,a)}}function E(){if(q.apply(this,arguments)){var t,n,e,i,u=x(this,arguments),o=h.q.changedTouches,a=o.length;for(r.i(y.b)(),n=0;n1)for(var r=1;r0&&(l=e("port",s.attr("href"))),l||(l="53333");var h=new WebSocket("ws://localhost:"+l);h.onopen=function(t){console.log("Opened: ",t)},h.onclose=function(t){console.log("Closed: ",t),f.forEach(function(t){return t.stop()})},h.onmessage=function(e){var i=JSON.parse(e.data);switch(i.type){case"configure":t(i);break;case"data":r(i);break;case"status":n(i);break;default:console.log("Got unrecognized message type: "+i.type)}}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(172),o=r(173),a=r(174),c=(r(175),r(49));i()}]); +!function(t){function n(e){if(r[e])return r[e].exports;var i=r[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var r={};n.m=t,n.c=r,n.i=function(t){return t},n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=465)}([function(t,n,r){"use strict";function e(t){return t>1?0:t<-1?c:Math.acos(t)}function i(t){return t>1?f:t<-1?-f:Math.asin(t)}function u(t){return(t=w(t/2))*t}r.d(n,"o",function(){return a}),r.d(n,"w",function(){return o}),r.d(n,"a",function(){return c}),r.d(n,"k",function(){return f}),r.d(n,"v",function(){return s}),r.d(n,"b",function(){return l}),r.d(n,"h",function(){return h}),r.d(n,"g",function(){return d}),r.d(n,"p",function(){return p}),r.d(n,"l",function(){return v}),r.d(n,"e",function(){return g}),r.d(n,"c",function(){return y}),r.d(n,"u",function(){return _}),r.d(n,"m",function(){return b}),r.d(n,"i",function(){return m}),r.d(n,"r",function(){return x}),r.d(n,"d",function(){return w}),r.d(n,"q",function(){return M}),r.d(n,"n",function(){return k}),r.d(n,"j",function(){return T}),n.s=e,n.f=i,n.t=u;var a=1e-6,o=1e-12,c=Math.PI,f=c/2,s=c/4,l=2*c,h=180/c,d=c/180,p=Math.abs,v=Math.atan,g=Math.atan2,y=Math.cos,_=Math.ceil,b=Math.exp,m=(Math.floor,Math.log),x=Math.pow,w=Math.sin,M=Math.sign||function(t){return t>0?1:t<0?-1:0},k=Math.sqrt,T=Math.tan},function(t,n,r){"use strict";var e=r(74);r.d(n,"a",function(){return e.a});var i=r(360);r.d(n,"b",function(){return i.a});var u=r(146);r.d(n,"c",function(){return u.a});var a=r(361);r.d(n,"d",function(){return a.a});var o=r(75);r.d(n,"e",function(){return o.a});var c=r(76);r.d(n,"f",function(){return c.a});var f=r(41);r.d(n,"g",function(){return f.a});var s=r(362);r.d(n,"h",function(){return s.a});var l=r(363);r.d(n,"i",function(){return l.a});var h=r(5);r.d(n,"j",function(){return h.a});var d=r(78);r.d(n,"k",function(){return d.a});var p=r(150);r.d(n,"l",function(){return p.a});var v=r(149);r.d(n,"m",function(){return v.a});var g=r(390);r.d(n,"n",function(){return g.a});var y=r(391);r.d(n,"o",function(){return y.a});var _=r(80);r.d(n,"p",function(){return _.a});var b=r(77);r.d(n,"q",function(){return b.a}),r.d(n,"r",function(){return b.b})},function(t,n,r){"use strict";function e(t,n,r,a){function o(n){return t(n=new Date(+n)),n}return o.floor=o,o.ceil=function(r){return t(r=new Date(r-1)),n(r,1),t(r),r},o.round=function(t){var n=o(t),r=o.ceil(t);return t-n0))return a;do{a.push(u=new Date(+r)),n(r,i),t(r)}while(u=n)for(;t(n),!r(n);)n.setTime(n-1)},function(t,e){if(t>=t)if(e<0)for(;++e<=0;)for(;n(t,-1),!r(t););else for(;--e>=0;)for(;n(t,1),!r(t););})},r&&(o.count=function(n,e){return i.setTime(+n),u.setTime(+e),t(i),t(u),Math.floor(r(i,u))},o.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?o.filter(a?function(n){return a(n)%t==0}:function(n){return o.count(0,n)%t==0}):o:null}),o}n.a=e;var i=new Date,u=new Date},function(t,n,r){"use strict";var e=r(92);r.d(n,"a",function(){return e.a}),r.d(n,"b",function(){return e.b}),r.d(n,"c",function(){return e.c});var i=r(17);r.d(n,"d",function(){return i.a});var u=r(93);r.d(n,"e",function(){return u.a});var a=r(176);r.d(n,"f",function(){return a.a});var o=r(177);r.d(n,"g",function(){return o.a});var c=r(94);r.d(n,"h",function(){return c.a});var f=r(95);r.d(n,"i",function(){return f.a});var s=r(178);r.d(n,"j",function(){return s.a});var l=r(188);r.d(n,"k",function(){return l.a});var h=r(189);r.d(n,"l",function(){return h.a});var d=r(99);r.d(n,"m",function(){return d.a});var p=r(180);r.d(n,"n",function(){return p.a});var v=r(181);r.d(n,"o",function(){return v.a});var g=r(182);r.d(n,"p",function(){return g.a});var y=r(183);r.d(n,"q",function(){return y.a});var _=r(96);r.d(n,"r",function(){return _.a});var b=r(97);r.d(n,"s",function(){return b.a});var m=r(184);r.d(n,"t",function(){return m.a});var x=r(50);r.d(n,"u",function(){return x.a});var w=r(98);r.d(n,"v",function(){return w.a});var M=r(185);r.d(n,"w",function(){return M.a});var k=r(186);r.d(n,"x",function(){return k.a});var T=r(187);r.d(n,"y",function(){return T.a});var N=r(100);r.d(n,"z",function(){return N.a}),r.d(n,"A",function(){return N.b}),r.d(n,"B",function(){return N.c});var A=r(101);r.d(n,"C",function(){return A.a});var E=r(102);r.d(n,"D",function(){return E.a});var S=r(190);r.d(n,"E",function(){return S.a})},function(t,n,r){"use strict";var e=r(69);r.d(n,"a",function(){return e.a});var i=r(132);r.d(n,"b",function(){return i.a});var u=r(68);r.d(n,"c",function(){return u.a});var a=r(133);r.d(n,"d",function(){return a.a});var o=r(135);r.d(n,"e",function(){return o.a});var c=r(38);r.d(n,"f",function(){return c.a});var f=r(136);r.d(n,"g",function(){return f.a});var s=r(300);r.d(n,"h",function(){return s.a});var l=r(138);r.d(n,"i",function(){return l.a});var h=r(302);r.d(n,"j",function(){return h.a}),r.d(n,"k",function(){return h.b});var d=r(304);r.d(n,"l",function(){return d.a});var p=r(137);r.d(n,"m",function(){return p.a}),r.d(n,"n",function(){return p.b}),r.d(n,"o",function(){return p.c});var v=r(297);r.d(n,"p",function(){return v.a}),r.d(n,"q",function(){return v.b});var g=r(298);r.d(n,"r",function(){return g.a});var y=r(296);r.d(n,"s",function(){return y.a}),r.d(n,"t",function(){return y.b});var _=r(295);r.d(n,"u",function(){return _.a}),r.d(n,"v",function(){return _.b});var b=r(299);r.d(n,"w",function(){return b.a})},function(t,n,r){"use strict";function e(t,n){this._groups=t,this._parents=n}function i(){return new e([[document.documentElement]],D)}var u=r(385),a=r(386),o=r(374),c=r(368),f=r(147),s=r(373),l=r(378),h=r(381),d=r(388),p=r(366),v=r(380),g=r(379),y=r(387),_=r(372),b=r(371),m=r(365),x=r(149),w=r(382),M=r(367),k=r(389),T=r(375),N=r(383),A=r(377),E=r(364),S=r(376),C=r(384),q=r(369),z=r(77),P=r(370);r.d(n,"c",function(){return D}),n.b=e;var D=[null];e.prototype=i.prototype={constructor:e,select:u.a,selectAll:a.a,filter:o.a,data:c.a,enter:f.a,exit:s.a,merge:l.a,order:h.a,sort:d.a,call:p.a,nodes:v.a,node:g.a,size:y.a,empty:_.a,each:b.a,attr:m.a,style:x.b,property:w.a,classed:M.a,text:k.a,html:T.a,raise:N.a,lower:A.a,append:E.a,insert:S.a,remove:C.a,datum:q.a,on:z.c,dispatch:P.a},n.a=i},function(t,n,r){"use strict";function e(t,n){var r=u(t,n);if(r.state>l)throw new Error("too late; already scheduled");return r}function i(t,n){var r=u(t,n);if(r.state>d)throw new Error("too late; already started");return r}function u(t,n){var r=t.__transition;if(!r||!(r=r[n]))throw new Error("transition not found");return r}function a(t,n,e){function i(t){e.state=h,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(i){var l,g,_,b;if(e.state!==h)return o();for(l in s)if(b=s[l],b.name===e.name){if(b.state===p)return r.i(c.d)(u);b.state===v?(b.state=y,b.timer.stop(),b.on.call("interrupt",t,t.__data__,b.index,b.group),delete s[l]):+l2?t[2]%360*l.g:0,d()):[P*l.h,D*l.h,L*l.h]},n.precision=function(t){return arguments.length?(F=r.i(v.a)(u,I=t*t),y()):r.i(l.n)(I)},n.fitExtent=function(t,e){return r.i(p.a)(n,t,e)},n.fitSize=function(t,e){return r.i(p.b)(n,t,e)},n.fitWidth=function(t,e){return r.i(p.c)(n,t,e)},n.fitHeight=function(t,e){return r.i(p.d)(n,t,e)},function(){return _=t.apply(this,arguments),n.invert=_.invert&&i,d()}}var a=r(115),o=r(117),c=r(34),f=r(120),s=r(60),l=r(0),h=r(35),d=r(36),p=r(63),v=r(270);n.a=i,n.b=u;var g=r.i(d.b)({point:function(t,n){this.stream.point(t*l.g,n*l.g)}})},function(t,n,r){"use strict";r.d(n,"e",function(){return e}),r.d(n,"d",function(){return i}),r.d(n,"c",function(){return u}),r.d(n,"b",function(){return a}),r.d(n,"a",function(){return o});var e=1e3,i=6e4,u=36e5,a=864e5,o=6048e5},function(t,n,r){"use strict";function e(){}n.a=e},function(t,n,r){"use strict";function e(t,n,r,e){this._groups=t,this._parents=n,this._name=r,this._id=e}function i(t){return r.i(a.j)().transition(t)}function u(){return++k}var a=r(1),o=r(438),c=r(439),f=r(440),s=r(441),l=r(442),h=r(443),d=r(444),p=r(445),v=r(446),g=r(447),y=r(448),_=r(449),b=r(450),m=r(451),x=r(452),w=r(453),M=r(48);n.b=e,n.a=i,n.c=u;var k=0,T=a.j.prototype;e.prototype=i.prototype={constructor:e,select:g.a,selectAll:y.a,filter:h.a,merge:d.a,selection:_.a,transition:w.a,call:T.call,nodes:T.nodes,node:T.node,size:T.size,empty:T.empty,each:T.each,on:p.a,attr:o.a,attrTween:c.a,style:b.a,styleTween:m.a,text:x.a,remove:v.a,tween:M.a,delay:f.a,duration:s.a,ease:l.a}},function(t,n,r){"use strict";var e=r(212);r.d(n,"a",function(){return e.a})},function(t,n,r){"use strict";function e(t,n){t&&o.hasOwnProperty(t.type)&&o[t.type](t,n)}function i(t,n,r){var e,i=-1,u=t.length-r;for(n.lineStart();++in?1:t>=n?0:NaN}},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(){this.reset()}function i(t,n,r){var e=t.s=n+r,i=e-n,u=e-i;t.t=n-u+(r-i)}n.a=function(){return new e},e.prototype={constructor:e,reset:function(){this.s=this.t=0},add:function(t){i(u,t,this.t),i(this,u.s,this.s),this.s?this.t+=u.t:this.s=u.t},valueOf:function(){return this.s}};var u=new e},function(t,n,r){"use strict";n.a=function(){return Math.random()}},function(t,n,r){"use strict";n.a=function(t){return null===t?NaN:+t}},function(t,n,r){"use strict";var e=r(207);r.d(n,"a",function(){return e.a});var i=r(208);r.d(n,"b",function(){return i.a});var u=r(51);r.d(n,"c",function(){return u.a});var a=r(206);r.d(n,"d",function(){return a.a});var o=r(209);r.d(n,"e",function(){return o.a});var c=r(205);r.d(n,"f",function(){return c.a})},function(t,n,r){"use strict";function e(t){return[r.i(s.e)(t[1],t[0]),r.i(s.f)(t[2])]}function i(t){var n=t[0],e=t[1],i=r.i(s.c)(e);return[i*r.i(s.c)(n),i*r.i(s.d)(n),r.i(s.d)(e)]}function u(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function a(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 o(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function c(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function f(t){var n=r.i(s.n)(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var s=r(0);n.g=e,n.a=i,n.d=u,n.b=a,n.f=o,n.e=c,n.c=f},function(t,n,r){"use strict";function e(t){return function(n,e){var i=r.i(u.c)(n),a=r.i(u.c)(e),o=t(i*a);return[o*a*r.i(u.d)(n),o*r.i(u.d)(e)]}}function i(t){return function(n,e){var i=r.i(u.n)(n*n+e*e),a=t(i),o=r.i(u.d)(a),c=r.i(u.c)(a);return[r.i(u.e)(n*o,i*c),r.i(u.f)(i&&e*o/i)]}}var u=r(0);n.b=e,n.a=i},function(t,n,r){"use strict";n.a=function(t,n,r,e,i){for(var u,a=t.children,o=-1,c=a.length,f=t.value&&(e-n)/t.value;++o180||i<-180?i-360*Math.round(i/360):i):r.i(c.a)(isNaN(t)?n:t)}function a(t){return 1==(t=+t)?o:function(n,e){return e-n?i(n,e,t):r.i(c.a)(isNaN(n)?e:n)}}function o(t,n){var i=n-t;return i?e(t,i):r.i(c.a)(isNaN(t)?n:t)}var c=r(134);n.b=u,n.c=a,n.a=o},function(t,n,r){"use strict";n.a=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})}},function(t,n,r){"use strict";function e(t){var n=t.domain;return t.ticks=function(t){var e=n();return r.i(u.z)(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){return r.i(c.a)(n(),t,e)},t.nice=function(e){null==e&&(e=10);var i,a=n(),o=0,c=a.length-1,f=a[o],s=a[c];return s0?(f=Math.floor(f/i)*i,s=Math.ceil(s/i)*i,i=r.i(u.A)(f,s,e)):i<0&&(f=Math.ceil(f*i)/i,s=Math.floor(s*i)/i,i=r.i(u.A)(f,s,e)),i>0?(a[o]=Math.floor(f/i)*i,a[c]=Math.ceil(s/i)*i,n(a)):i<0&&(a[o]=Math.ceil(f*i)/i,a[c]=Math.floor(s*i)/i,n(a)),t},t}function i(){var t=r.i(o.a)(o.b,a.f);return t.copy=function(){return r.i(o.c)(t,i())},e(t)}var u=r(3),a=r(4),o=r(40),c=r(356);n.b=e,n.a=i},function(t,n,r){"use strict";function e(t){return t>1?0:t<-1?d:Math.acos(t)}function i(t){return t>=1?p:t<=-1?-p:Math.asin(t)}r.d(n,"g",function(){return u}),r.d(n,"m",function(){return a}),r.d(n,"h",function(){return o}),r.d(n,"e",function(){return c}),r.d(n,"j",function(){return f}),r.d(n,"i",function(){return s}),r.d(n,"d",function(){return l}),r.d(n,"a",function(){return h}),r.d(n,"b",function(){return d}),r.d(n,"f",function(){return p}),r.d(n,"c",function(){return v}),n.l=e,n.k=i;var u=Math.abs,a=Math.atan2,o=Math.cos,c=Math.max,f=Math.min,s=Math.sin,l=Math.sqrt,h=1e-12,d=Math.PI,p=d/2,v=2*d},function(t,n,r){"use strict";n.a=function(t,n){if((i=t.length)>1)for(var r,e,i,u=1,a=t[n[0]],o=a.length;u=0;)r[n]=n;return r}},function(t,n,r){"use strict";function e(t,n,r){return(t[0]-r[0])*(n[1]-t[1])-(t[0]-n[0])*(r[1]-t[1])}function i(t,n){return n[1]-t[1]||n[0]-t[0]}function u(t,n){var e,u,v,g=t.sort(i).pop();for(p=[],h=new Array(t.length),l=new s.a,d=new s.a;;)if(v=c.a,g&&(!v||g[1]=o)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=u.cells[e=a],a=null,i.halfedges.forEach(function(r){var e=u.edges[r],o=e.left;if(o!==i.site&&o||(o=e.right)){var c=t-o[0],f=n-o[1],l=c*c+f*f;l0)do{a.point(0===o||3===o?t:e,o>1?l:n)}while((o=(o+u+4)%4)!==c);else a.point(i[0],i[1])}function p(u,a){return r.i(i.p)(u[0]-t)0?0:3:r.i(i.p)(u[0]-e)0?2:1:r.i(i.p)(u[1]-n)0?1:0:a>0?3:2}function v(t,n){return g(t.x,n.x)}function g(t,n){var r=p(t,1),e=p(n,1);return r!==e?r-e:0===r?n[1]-t[1]:1===r?t[0]-n[0]:2===r?t[1]-n[1]:n[0]-t[0]}return function(i){function p(t,n){h(t,n)&&P.point(t,n)}function g(){for(var n=0,r=0,e=M.length;rl&&(s-i)*(l-u)>(h-u)*(t-i)&&++n:h<=l&&(s-i)*(l-u)<(h-u)*(t-i)&&--n;return n}function y(){P=D,w=[],M=[],z=!0}function _(){var t=g(),n=z&&t,e=(w=r.i(c.q)(w)).length;(n||e)&&(i.polygonStart(),n&&(i.lineStart(),d(null,null,1,i),i.lineEnd()),e&&r.i(o.a)(w,v,t,d,i),i.polygonEnd()),P=i,w=M=k=null}function b(){L.point=x,M&&M.push(k=[]),q=!0,C=!1,E=S=NaN}function m(){w&&(x(T,N),A&&C&&D.rejoin(),w.push(D.result())),L.point=p,C&&P.lineEnd()}function x(i,u){var o=h(i,u);if(M&&k.push([i,u]),q)T=i,N=u,A=o,q=!1,o&&(P.lineStart(),P.point(i,u));else if(o&&C)P.point(i,u);else{var c=[E=Math.max(s,Math.min(f,E)),S=Math.max(s,Math.min(f,S))],d=[i=Math.max(s,Math.min(f,i)),u=Math.max(s,Math.min(f,u))];r.i(a.a)(c,d,t,n,e,l)?(C||(P.lineStart(),P.point(c[0],c[1])),P.point(d[0],d[1]),o||P.lineEnd(),z=!1):o&&(P.lineStart(),P.point(i,u),z=!1)}E=i,S=u,C=o}var w,M,k,T,N,A,E,S,C,q,z,P=i,D=r.i(u.a)(),L={point:p,lineStart:b,lineEnd:m,polygonStart:y,polygonEnd:_};return L}}var i=r(0),u=r(116),a=r(249),o=r(119),c=r(3);n.a=e;var f=1e9,s=-f},function(t,n,r){"use strict";function e(t,n){return[t>f.a?t-f.b:t<-f.a?t+f.b:t,n]}function i(t,n,i){return(t%=f.b)?n||i?r.i(c.a)(a(t),o(n,i)):a(t):n||i?o(n,i):e}function u(t){return function(n,r){return n+=t,[n>f.a?n-f.b:n<-f.a?n+f.b:n,r]}}function a(t){var n=u(t);return n.invert=u(-t),n}function o(t,n){function e(t,n){var e=r.i(f.c)(n),c=r.i(f.c)(t)*e,s=r.i(f.d)(t)*e,l=r.i(f.d)(n),h=l*i+c*u;return[r.i(f.e)(s*a-h*o,c*i-l*u),r.i(f.f)(h*a+s*o)]}var i=r.i(f.c)(t),u=r.i(f.d)(t),a=r.i(f.c)(n),o=r.i(f.d)(n);return e.invert=function(t,n){var e=r.i(f.c)(n),c=r.i(f.c)(t)*e,s=r.i(f.d)(t)*e,l=r.i(f.d)(n),h=l*a-s*o;return[r.i(f.e)(s*a+l*o,c*i+h*u),r.i(f.f)(h*i-c*u)]},e}var c=r(120),f=r(0);n.b=i,e.invert=e,n.a=function(t){function n(n){return n=t(n[0]*f.g,n[1]*f.g),n[0]*=f.h,n[1]*=f.h,n}return t=i(t[0]*f.g,t[1]*f.g,t.length>2?t[2]*f.g:0),n.invert=function(n){return n=t.invert(n[0]*f.g,n[1]*f.g),n[0]*=f.h,n[1]*=f.h,n},n}},function(t,n,r){"use strict";function e(t){return function(n){var r=new i;for(var e in t)r[e]=t[e];return r.stream=n,r}}function i(){}n.b=e,n.a=function(t){return{stream:e(t)}},i.prototype={constructor:i,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()}}},function(t,n,r){"use strict";n.a=function(t,n,r,e,i){for(var u,a=t.children,o=-1,c=a.length,f=t.value&&(i-r)/t.value;++o=r?1:e(t)}}}function u(t){return function(n,r){var e=t(n=+n,r=+r);return function(t){return t<=0?n:t>=1?r:e(t)}}}function a(t,n,r,e){var i=t[0],u=t[1],a=n[0],o=n[1];return u2?o:a,s=d=null,c}function c(n){return(s||(s=f(g,y,b?i(t):t,_)))(+n)}var f,s,d,g=v,y=v,_=l.a,b=!1;return c.invert=function(t){return(d||(d=f(y,g,e,b?u(n):n)))(+t)},c.domain=function(t){return arguments.length?(g=h.a.call(t,p.a),r()):g.slice()},c.range=function(t){return arguments.length?(y=h.b.call(t),r()):y.slice()},c.rangeRound=function(t){return y=h.b.call(t),_=l.h,r()},c.clamp=function(t){return arguments.length?(b=!!t,r()):b},c.interpolate=function(t){return arguments.length?(_=t,r()):_},r()}var s=r(3),l=r(4),h=r(15),d=r(73),p=r(143);n.b=e,n.c=c,n.a=f;var v=[0,1]},function(t,n,r){"use strict";n.a=function(t,n){var r=t.ownerSVGElement||t;if(r.createSVGPoint){var e=r.createSVGPoint();return e.x=n.clientX,e.y=n.clientY,e=e.matrixTransform(t.getScreenCTM().inverse()),[e.x,e.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]}},function(t,n,r){"use strict";function e(t,n,r){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+r)/6)}function i(t){this._context=t}n.c=e,n.b=i,i.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:e(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:e(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},n.a=function(t){return new i(t)}},function(t,n,r){"use strict";function e(t,n,r){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-r),t._x2,t._y2)}function i(t,n){this._context=t,this._k=(1-n)/6}n.c=e,n.b=i,i.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:e(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:e(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}},n.a=function t(n){function r(t){return new i(t,n)}return r.tension=function(n){return t(+n)},r}(0)},function(t,n,r){"use strict";function e(t){this._context=t}e.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)}}},n.a=function(t){return new e(t)}},function(t,n,r){"use strict";n.a=function(){}},function(t,n,r){"use strict";var e=r(2);r.d(n,"a",function(){return e.a});var i=r(420);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b}),r.d(n,"d",function(){return i.a}),r.d(n,"e",function(){return i.b});var u=r(423);r.d(n,"f",function(){return u.a}),r.d(n,"g",function(){return u.b}),r.d(n,"h",function(){return u.a}),r.d(n,"i",function(){return u.b});var a=r(421);r.d(n,"j",function(){return a.a}),r.d(n,"k",function(){return a.b});var o=r(419);r.d(n,"l",function(){return o.a}),r.d(n,"m",function(){return o.b});var c=r(418);r.d(n,"n",function(){return c.a}),r.d(n,"o",function(){return c.b});var f=r(430);r.d(n,"p",function(){return f.a}),r.d(n,"q",function(){return f.b}),r.d(n,"r",function(){return f.a}),r.d(n,"s",function(){return f.b}),r.d(n,"t",function(){return f.c}),r.d(n,"u",function(){return f.d}),r.d(n,"v",function(){return f.e}),r.d(n,"w",function(){return f.f}),r.d(n,"x",function(){return f.g}),r.d(n,"y",function(){return f.h}),r.d(n,"z",function(){return f.i}),r.d(n,"A",function(){return f.j}),r.d(n,"B",function(){return f.k}),r.d(n,"C",function(){return f.l}),r.d(n,"D",function(){return f.m}),r.d(n,"E",function(){return f.n});var s=r(422);r.d(n,"F",function(){return s.a}),r.d(n,"G",function(){return s.b});var l=r(431);r.d(n,"H",function(){return l.a}),r.d(n,"I",function(){return l.b});var h=r(426);r.d(n,"J",function(){return h.a}),r.d(n,"K",function(){return h.b});var d=r(425);r.d(n,"L",function(){return d.a}),r.d(n,"M",function(){return d.b});var p=r(424);r.d(n,"N",function(){return p.a}),r.d(n,"O",function(){return p.b});var v=r(428);r.d(n,"P",function(){return v.a}),r.d(n,"Q",function(){return v.b}),r.d(n,"R",function(){return v.a}),r.d(n,"S",function(){return v.b}),r.d(n,"T",function(){return v.c}),r.d(n,"U",function(){return v.d}),r.d(n,"V",function(){return v.e}),r.d(n,"W",function(){return v.f}),r.d(n,"X",function(){return v.g}),r.d(n,"Y",function(){return v.h}),r.d(n,"Z",function(){return v.i}),r.d(n,"_0",function(){return v.j}),r.d(n,"_1",function(){return v.k}),r.d(n,"_2",function(){return v.l}),r.d(n,"_3",function(){return v.m}),r.d(n,"_4",function(){return v.n});var g=r(427);r.d(n,"_5",function(){return g.a}),r.d(n,"_6",function(){return g.b});var y=r(429);r.d(n,"_7",function(){return y.a}),r.d(n,"_8",function(){return y.b})},function(t,n,r){"use strict";var e=r(87);r.d(n,"a",function(){return e.a}),r.d(n,"b",function(){return e.b}),r.d(n,"c",function(){return e.c});var i=r(433);r.d(n,"d",function(){return i.a});var u=r(432);r.d(n,"e",function(){return u.a})},function(t,n,r){"use strict";function e(t,n){var e,i;return function(){var u=r.i(a.e)(this,t),o=u.tween;if(o!==e){i=e=o;for(var c=0,f=i.length;c=1)return+r(t[i-1],i-1,t);var i,u=(i-1)*n,a=Math.floor(u),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(u-a)}}},function(t,n,r){"use strict";function e(){}function i(t,n){var r=new e;if(t instanceof e)t.each(function(t,n){r.set(n,t)});else if(Array.isArray(t)){var i,u=-1,a=t.length;if(null==n)for(;++u>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=w.exec(t))?u(parseInt(n[1],16)):(n=M.exec(t))?new f(n[1],n[2],n[3],1):(n=k.exec(t))?new f(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=T.exec(t))?a(n[1],n[2],n[3],n[4]):(n=N.exec(t))?a(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=A.exec(t))?s(n[1],n[2]/100,n[3]/100,1):(n=E.exec(t))?s(n[1],n[2]/100,n[3]/100,n[4]):S.hasOwnProperty(t)?u(S[t]):"transparent"===t?new f(NaN,NaN,NaN,0):null}function u(t){return new f(t>>16&255,t>>8&255,255&t,1)}function a(t,n,r,e){return e<=0&&(t=n=r=NaN),new f(t,n,r,e)}function o(t){return t instanceof e||(t=i(t)),t?(t=t.rgb(),new f(t.r,t.g,t.b,t.opacity)):new f}function c(t,n,r,e){return 1===arguments.length?o(t):new f(t,n,r,null==e?1:e)}function f(t,n,r,e){this.r=+t,this.g=+n,this.b=+r,this.opacity=+e}function s(t,n,r,e){return e<=0?t=n=r=NaN:r<=0||r>=1?t=n=NaN:n<=0&&(t=NaN),new d(t,n,r,e)}function l(t){if(t instanceof d)return new d(t.h,t.s,t.l,t.opacity);if(t instanceof e||(t=i(t)),!t)return new d;if(t instanceof d)return t;t=t.rgb();var n=t.r/255,r=t.g/255,u=t.b/255,a=Math.min(n,r,u),o=Math.max(n,r,u),c=NaN,f=o-a,s=(o+a)/2;return f?(c=n===o?(r-u)/f+6*(r0&&s<1?0:c,new d(c,f,s,t.opacity)}function h(t,n,r,e){return 1===arguments.length?l(t):new d(t,n,r,null==e?1:e)}function d(t,n,r,e){this.h=+t,this.s=+n,this.l=+r,this.opacity=+e}function p(t,n,r){return 255*(t<60?n+(r-n)*t/60:t<180?r:t<240?n+(r-n)*(240-t)/60:n)}var v=r(53);n.f=e,r.d(n,"h",function(){return g}),r.d(n,"g",function(){return y}),n.a=i,n.e=o,n.b=c,n.d=f,n.c=h;var g=.7,y=1/g,_="\\s*([+-]?\\d+)\\s*",b="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",m="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",x=/^#([0-9a-f]{3})$/,w=/^#([0-9a-f]{6})$/,M=new RegExp("^rgb\\("+[_,_,_]+"\\)$"),k=new RegExp("^rgb\\("+[m,m,m]+"\\)$"),T=new RegExp("^rgba\\("+[_,_,_,b]+"\\)$"),N=new RegExp("^rgba\\("+[m,m,m,b]+"\\)$"),A=new RegExp("^hsl\\("+[b,m,m]+"\\)$"),E=new RegExp("^hsla\\("+[b,m,m,b]+"\\)$"),S={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};r.i(v.a)(e,i,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),r.i(v.a)(f,c,r.i(v.b)(e,{brighter:function(t){return t=null==t?y:Math.pow(y,t),new f(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new f(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},toString:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(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+")")}})),r.i(v.a)(d,h,r.i(v.b)(e,{brighter:function(t){return t=null==t?y:Math.pow(y,t),new d(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new d(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,r=this.l,e=r+(r<.5?r:1-r)*n,i=2*r-e;return new f(p(t>=240?t-240:t+120,i,e),p(t,i,e),p(t<120?t+240:t-120,i,e),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}}))},function(t,n,r){"use strict";function e(t,n){var r=Object.create(t.prototype);for(var e in n)r[e]=n[e];return r}n.b=e,n.a=function(t,n,r){t.prototype=n.prototype=r,r.constructor=t}},function(t,n,r){"use strict";var e=r(214);r.d(n,"a",function(){return e.a});var i=r(105);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b})},function(t,n,r){"use strict";var e=r(56);r.d(n,"a",function(){return e.a});var i=r(216);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b}),r.d(n,"d",function(){return i.c}),r.d(n,"e",function(){return i.d});var u=r(217);r.d(n,"f",function(){return u.a}),r.d(n,"g",function(){return u.b}),r.d(n,"h",function(){return u.c}),r.d(n,"i",function(){return u.d})},function(t,n,r){"use strict";function e(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}")}function i(t,n){var r=e(t);return function(e,i){return n(r(e),i,t)}}function u(t){var n=Object.create(null),r=[];return t.forEach(function(t){for(var e in t)e in n||r.push(n[e]=e)}),r}var a={},o={},c=34,f=10,s=13;n.a=function(t){function n(t,n){var u,a,o=r(t,function(t,r){if(u)return u(t,r-1);a=t,u=n?i(t,n):e(t)});return o.columns=a||[],o}function r(t,n){function r(){if(d)return o;if(p)return p=!1,a;var n,r,e=l;if(t.charCodeAt(e)===c){for(;l++=u?d=!0:(r=t.charCodeAt(l++))===f?p=!0:r===s&&(p=!0,t.charCodeAt(l)===f&&++l),t.slice(e+1,n-1).replace(/""/g,'"')}for(;l1?e[0]+e.slice(2):e,+t.slice(r+1)]}},function(t,n,r){"use strict";n.a=function(t){return t}},function(t,n,r){"use strict";function e(t){var n=0,e=i.a/3,a=r.i(u.b)(t),o=a(n,e);return o.parallels=function(t){return arguments.length?a(n=t[0]*i.g,e=t[1]*i.g):[n*i.h,e*i.h]},o}var i=r(0),u=r(8);n.a=e},function(t,n,r){"use strict";function e(t,n){function e(t,n){var e=r.i(i.n)(c-2*o*r.i(i.d)(n))/o;return[e*r.i(i.d)(t*=o),f-e*r.i(i.c)(t)]}var u=r.i(i.d)(t),o=(u+r.i(i.d)(n))/2;if(r.i(i.p)(o)=0;--a)h.push(e=r.children[a]=new c(i[a])),e.parent=r,e.depth=r.depth+1;return s.eachBefore(o)}function i(){return e(this).eachBefore(a)}function u(t){return t.children}function a(t){t.data=t.data.data}function o(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}var f=r(277),s=r(279),l=r(281),h=r(280),d=r(286),p=r(285),v=r(284),g=r(276),y=r(278),_=r(282),b=r(283);n.a=e,n.c=o,n.b=c,c.prototype=e.prototype={constructor:c,count:f.a,each:s.a,eachAfter:h.a,eachBefore:l.a,sum:d.a,sort:p.a,path:v.a,ancestors:g.a,descendants:y.a,leaves:_.a,links:b.a,copy:i}},function(t,n,r){"use strict";function e(t,n,e,a,o,c){for(var f,s,l,h,d,p,v,g,y,_,b,m=[],x=n.children,w=0,M=0,k=x.length,T=n.value;wv&&(v=s),b=d*d*_,(g=Math.max(v/b,b/p))>y){d-=s;break}y=g}m.push(f={value:d,dice:l1?n:1)},r}(a)},function(t,n,r){"use strict";function e(t,n,r,e,i){var u=t*t,a=u*t;return((1-3*t+3*u-a)*n+(4-6*u+3*a)*r+(1+3*t+3*u-3*a)*e+a*i)/6}n.b=e,n.a=function(t){var n=t.length-1;return function(r){var i=r<=0?r=0:r>=1?(r=1,n-1):Math.floor(r*n),u=t[i],a=t[i+1],o=i>0?t[i-1]:2*u-a,c=i=200&&r<300||304===r){if(s)try{n=s.call(c,p)}catch(t){return void h.call("error",c,t)}else n=p;h.call("load",c,n)}else h.call("error",c,t)}var c,f,s,l,h=r.i(a.a)("beforesend","progress","load","error"),d=r.i(u.c)(),p=new XMLHttpRequest,v=null,g=null,y=0;if("undefined"==typeof XDomainRequest||"withCredentials"in p||!/^(http(s)?:)?\/\//.test(t)||(p=new XDomainRequest),"onload"in p?p.onload=p.onerror=p.ontimeout=o:p.onreadystatechange=function(t){p.readyState>3&&o(t)},p.onprogress=function(t){h.call("progress",c,t)},c={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?d.get(t):(null==n?d.remove(t):d.set(t,n+""),c)},mimeType:function(t){return arguments.length?(f=null==t?null:t+"",c):f},responseType:function(t){return arguments.length?(l=t,c):l},timeout:function(t){return arguments.length?(y=+t,c):y},user:function(t){return arguments.length<1?v:(v=null==t?null:t+"",c)},password:function(t){return arguments.length<1?g:(g=null==t?null:t+"",c)},response:function(t){return s=t,c},get:function(t,n){return c.send("GET",t,n)},post:function(t,n){return c.send("POST",t,n)},send:function(n,r,i){return p.open(n,t,!0,v,g),null==f||d.has("accept")||d.set("accept",f+",*/*"),p.setRequestHeader&&d.each(function(t,n){p.setRequestHeader(n,t)}),null!=f&&p.overrideMimeType&&p.overrideMimeType(f),null!=l&&(p.responseType=l),y>0&&(p.timeout=y),null==i&&"function"==typeof r&&(i=r,r=null),null!=i&&1===i.length&&(i=e(i)),null!=i&&c.on("error",i).on("load",function(t){i(null,t)}),h.call("beforesend",c,p),p.send(null==r?null:r),c},abort:function(){return p.abort(),c},on:function(){var t=h.on.apply(h,arguments);return t===h?c:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return c.get(n)}return c}},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t){return function(){var n=this.ownerDocument,r=this.namespaceURI;return r===a.b&&n.documentElement.namespaceURI===a.b?n.createElement(t):n.createElementNS(r,t)}}function i(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var u=r(75),a=r(76);n.a=function(t){var n=r.i(u.a)(t);return(n.local?i:e)(n)}},function(t,n,r){"use strict";var e=r(76);n.a=function(t){var n=t+="",r=n.indexOf(":");return r>=0&&"xmlns"!==(n=t.slice(0,r))&&(t=t.slice(r+1)),e.a.hasOwnProperty(n)?{space:e.a[n],local:t}:t}},function(t,n,r){"use strict";r.d(n,"b",function(){return e});var e="http://www.w3.org/1999/xhtml";n.a={svg:"http://www.w3.org/2000/svg",xhtml:e,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},function(t,n,r){"use strict";function e(t,n,r){return t=i(t,n,r),function(n){var r=n.relatedTarget;r&&(r===this||8&r.compareDocumentPosition(this))||t.call(this,n)}}function i(t,n,r){return function(e){var i=s;s=e;try{t.call(this,this.__data__,n,r)}finally{s=i}}}function u(t){return t.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function a(t){return function(){var n=this.__on;if(n){for(var r,e=0,i=-1,u=n.length;eu.a){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,f=3*t._l01_a*(t._l01_a+t._l12_a);e=(e*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/f,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/f}if(t._l23_a>u.a){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,l=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*s+t._x1*t._l23_2a-n*t._l12_2a)/l,o=(o*s+t._y1*t._l23_2a-r*t._l12_2a)/l}t._context.bezierCurveTo(e,i,a,o,t._x2,t._y2)}function i(t,n){this._context=t,this._alpha=n}var u=r(29),a=r(43);n.b=e,i.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 r=this._x2-t,i=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,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:e(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}},n.a=function t(n){function r(t){return n?new i(t,n):new a.b(t,0)}return r.alpha=function(n){return t(+n)},r}(.5)},function(t,n,r){"use strict";var e=r(14),i=r(16),u=r(44),a=r(84);n.a=function(){function t(t){var i,u,a,h=t.length,d=!1;for(null==f&&(l=s(a=r.i(e.a)())),i=0;i<=h;++i)!(i=0&&n._call.call(null,t),n=n._next;--p}function c(){b=(_=x.now())+m,p=v=0;try{o()}finally{p=0,s(),b=0}}function f(){var t=x.now(),n=t-_;n>y&&(m-=n,_=t)}function s(){for(var t,n,r=h,e=1/0;r;)r._call?(e>r._time&&(e=r._time),t=r,r=r._next):(n=r._next,r._next=null,r=t?t._next=n:h=n);d=t,l(e)}function l(t){if(!p){v&&(v=clearTimeout(v));t-b>24?(t<1/0&&(v=setTimeout(c,t-x.now()-m)),g&&(g=clearInterval(g))):(g||(_=x.now(),g=setInterval(f,y)),p=1,w(c))}}n.a=e,n.d=u,n.b=a,n.c=o;var h,d,p=0,v=0,g=0,y=1e3,_=0,b=0,m=0,x="object"==typeof performance&&performance.now?performance:Date,w="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};u.prototype=a.prototype={constructor:u,restart:function(t,n,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?e():+r)+(null==n?0:+n),this._next||d===this||(d?d._next=this:h=this,d=this),this._call=t,this._time=r,l()},stop:function(){this._call&&(this._call=null,this._time=1/0,l())}}},function(t,n,r){"use strict";var e=(r(435),r(11));r.d(n,"a",function(){return e.a});var i=r(434);r.d(n,"b",function(){return i.a});var u=r(167);r.d(n,"c",function(){return u.a})},function(t,n,r){"use strict";function e(t,n,r,e){var i=[null,null],a=f.d.push(i)-1;return i.left=t,i.right=n,r&&u(i,t,n,r),e&&u(i,n,t,e),f.c[t.index].halfedges.push(a),f.c[n.index].halfedges.push(a),i}function i(t,n,r){var e=[n,r];return e.left=t,e}function u(t,n,r,e){t[0]||t[1]?t.left===r?t[1]=e:t[0]=e:(t[0]=e,t.left=n,t.right=r)}function a(t,n,r,e,i){var u,a=t[0],o=t[1],c=a[0],f=a[1],s=o[0],l=o[1],h=0,d=1,p=s-c,v=l-f;if(u=n-c,p||!(u>0)){if(u/=p,p<0){if(u0){if(u>d)return;u>h&&(h=u)}if(u=e-c,p||!(u<0)){if(u/=p,p<0){if(u>d)return;u>h&&(h=u)}else if(p>0){if(u0)){if(u/=v,v<0){if(u0){if(u>d)return;u>h&&(h=u)}if(u=i-f,v||!(u<0)){if(u/=v,v<0){if(u>d)return;u>h&&(h=u)}else if(v>0){if(u0||d<1)||(h>0&&(t[0]=[c+h*p,f+h*v]),d<1&&(t[1]=[c+d*p,f+d*v]),!0)}}}}}function o(t,n,r,e,i){var u=t[1];if(u)return!0;var a,o,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v=e)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,r];u=[v,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(r-o)/a,r];u=[(i-o)/a,i]}else{if(c){if(c[1]=e)return}else c=[n,a*n+o];u=[e,a*e+o]}else{if(c){if(c[0]f.b||Math.abs(i[0][1]-i[1][1])>f.b)||delete f.d[u]}var f=r(32);n.d=e,n.b=i,n.c=u,n.a=c},function(t,n,r){"use strict";function e(){this._=null}function i(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function u(t,n){var r=n,e=n.R,i=r.U;i?i.L===r?i.L=e:i.R=e:t._=e,e.U=i,r.U=e,r.R=e.L,r.R&&(r.R.U=r),e.L=r}function a(t,n){var r=n,e=n.L,i=r.U;i?i.L===r?i.L=e:i.R=e:t._=e,e.U=i,r.U=e,r.L=e.R,r.L&&(r.L.U=r),e.R=r}function o(t){for(;t.L;)t=t.L;return t}n.b=i,e.prototype={constructor:e,insert:function(t,n){var r,e,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;r=t}else this._?(t=o(this._),n.P=null,n.N=t,t.P=t.L=n,r=t):(n.P=n.N=null,this._=n,r=null);for(n.L=n.R=null,n.U=r,n.C=!0,t=n;r&&r.C;)e=r.U,r===e.L?(i=e.R,i&&i.C?(r.C=i.C=!1,e.C=!0,t=e):(t===r.R&&(u(this,r),t=r,r=t.U),r.C=!1,e.C=!0,a(this,e))):(i=e.L,i&&i.C?(r.C=i.C=!1,e.C=!0,t=e):(t===r.L&&(a(this,r),t=r,r=t.U),r.C=!1,e.C=!0,u(this,e))),r=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,r,e,i=t.U,c=t.L,f=t.R;if(r=c?f?o(f):c:f,i?i.L===t?i.L=r:i.R=r:this._=r,c&&f?(e=r.C,r.C=t.C,r.L=c,c.U=r,r!==f?(i=r.U,r.U=t.U,t=r.R,i.L=t,r.R=f,f.U=r):(r.U=i,i=r,t=r.R)):(e=t.C,t=r),t&&(t.U=i),!e){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===i.L){if(n=i.R,n.C&&(n.C=!1,i.C=!0,u(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,a(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,u(this,i),t=this._;break}}else if(n=i.L,n.C&&(n.C=!1,i.C=!0,a(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,u(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,a(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}},n.a=e},function(t,n,r){"use strict";r.d(n,"b",function(){return i}),r.d(n,"a",function(){return u});var e=Array.prototype,i=e.slice,u=e.map},function(t,n,r){"use strict";var e=r(17),i=r(93);r.d(n,"b",function(){return a}),r.d(n,"c",function(){return o});var u=r.i(i.a)(e.a),a=u.right,o=u.left;n.a=a},function(t,n,r){"use strict";function e(t){return function(n,e){return r.i(i.a)(t(n),e)}}var i=r(17);n.a=function(t){return 1===t.length&&(t=e(t)),{left:function(n,r,e,i){for(null==e&&(e=0),null==i&&(i=n.length);e>>1;t(n[u],r)<0?e=u+1:i=u}return e},right:function(n,r,e,i){for(null==e&&(e=0),null==i&&(i=n.length);e>>1;t(n[u],r)>0?i=u:e=u+1}return e}}}},function(t,n,r){"use strict";var e=r(102);n.a=function(t,n){var i=r.i(e.a)(t,n);return i?Math.sqrt(i):i}},function(t,n,r){"use strict";n.a=function(t,n){var r,e,i,u=t.length,a=-1;if(null==n){for(;++a=r)for(e=i=r;++ar&&(e=r),i=r)for(e=i=r;++ar&&(e=r),i=r)for(e=r;++ur&&(e=r)}else for(;++u=r)for(e=r;++ur&&(e=r);return e}},function(t,n,r){"use strict";function e(t,n){return[t,n]}n.b=e,n.a=function(t,n){null==n&&(n=e);for(var r=0,i=t.length-1,u=t[0],a=new Array(i<0?0:i);r=0?(c>=u?10:c>=a?5:c>=o?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(c>=u?10:c>=a?5:c>=o?2:1)}function i(t,n,r){var e=Math.abs(n-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),c=e/i;return c>=u?i*=10:c>=a?i*=5:c>=o&&(i*=2),n0)return[t];if((i=n0)for(t=Math.ceil(t/o),n=Math.floor(n/o),a=new Array(u=Math.ceil(n-t+1));++c1)return s/(o-1)}},function(t,n,r){"use strict";r.d(n,"b",function(){return e}),r.d(n,"c",function(){return i}),r.d(n,"a",function(){return a}),r.d(n,"e",function(){return o}),r.d(n,"d",function(){return c});var e=Math.cos,i=Math.sin,u=Math.PI,a=u/2,o=2*u,c=Math.max},function(t,n,r){"use strict";r.d(n,"b",function(){return e}),r.d(n,"a",function(){return i});var e=Math.PI/180,i=180/Math.PI},function(t,n,r){"use strict";function e(t,n){var e=t.document.documentElement,a=r.i(i.h)(t).on("dragstart.drag",null);n&&(a.on("click.drag",u.a,!0),setTimeout(function(){a.on("click.drag",null)},0)),"onselectstart"in e?a.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var i=r(1),u=r(106);n.b=e,n.a=function(t){var n=t.document.documentElement,e=r.i(i.h)(t).on("dragstart.drag",u.a,!0);"onselectstart"in n?e.on("selectstart.drag",u.a,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}},function(t,n,r){"use strict";function e(){i.q.stopImmediatePropagation()}var i=r(1);n.b=e,n.a=function(){i.q.preventDefault(),i.q.stopImmediatePropagation()}},function(t,n,r){"use strict";var e=r(224);r.d(n,"a",function(){return e.a});var i=r(226);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b}),r.d(n,"d",function(){return i.c}),r.d(n,"e",function(){return i.a});var u=r(221);r.d(n,"f",function(){return u.a}),r.d(n,"g",function(){return u.b}),r.d(n,"h",function(){return u.c}),r.d(n,"i",function(){return u.a});var a=r(225);r.d(n,"j",function(){return a.a}),r.d(n,"k",function(){return a.b}),r.d(n,"l",function(){return a.c}),r.d(n,"m",function(){return a.a});var o=r(227);r.d(n,"n",function(){return o.a}),r.d(n,"o",function(){return o.b}),r.d(n,"p",function(){return o.c}),r.d(n,"q",function(){return o.a});var c=r(223);r.d(n,"r",function(){return c.a}),r.d(n,"s",function(){return c.b}),r.d(n,"t",function(){return c.c}),r.d(n,"u",function(){return c.a});var f=r(220);r.d(n,"v",function(){return f.a}),r.d(n,"w",function(){return f.b}),r.d(n,"x",function(){return f.c}),r.d(n,"y",function(){return f.a});var s=r(219);r.d(n,"z",function(){return s.a}),r.d(n,"A",function(){return s.b}),r.d(n,"B",function(){return s.a}),r.d(n,"C",function(){return s.c});var l=r(218);r.d(n,"D",function(){return l.a}),r.d(n,"E",function(){return l.b}),r.d(n,"F",function(){return l.c}),r.d(n,"G",function(){return l.a});var h=r(222);r.d(n,"H",function(){return h.a}),r.d(n,"I",function(){return h.b}),r.d(n,"J",function(){return h.a}),r.d(n,"K",function(){return h.c})},function(t,n,r){"use strict";function e(t){return t.x}function i(t){return t.y}var u=r(12),a=r(22),o=r(47);n.b=e,n.c=i;var c=Math.PI*(3-Math.sqrt(5));n.a=function(t){function n(){e(),_.call("tick",s),l1?(null==n?g.remove(t):g.set(t,f(n)),s):g.get(t)},find:function(n,r,e){var i,u,a,o,c,f=0,s=t.length;for(null==e?e=1/0:e*=e,f=0;f1?(_.on(t,n),s):_.on(t)}}}},function(t,n,r){"use strict";var e=r(59);r.d(n,"b",function(){return i});var i;n.a=function(t,n){var u=r.i(e.a)(t,n);if(!u)return t+"";var a=u[0],o=u[1],c=o-(i=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,f=a.length;return c===f?a:c>f?a+new Array(c-f+1).join("0"):c>0?a.slice(0,c)+"."+a.slice(c):"0."+new Array(1-c).join("0")+r.i(e.a)(t,Math.max(0,n+c-1))[0]}},function(t,n,r){"use strict";function e(t){return new i(t)}function i(t){if(!(n=a.exec(t)))throw new Error("invalid format: "+t);var n,r=n[1]||" ",e=n[2]||">",i=n[3]||"-",o=n[4]||"",c=!!n[5],f=n[6]&&+n[6],s=!!n[7],l=n[8]&&+n[8].slice(1),h=n[9]||"";"n"===h?(s=!0,h="g"):u.a[h]||(h=""),(c||"0"===r&&"="===e)&&(c=!0,r="0",e="="),this.fill=r,this.align=e,this.sign=i,this.symbol=o,this.zero=c,this.width=f,this.comma=s,this.precision=l,this.type=h}var u=r(111);n.a=e;var a=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;e.prototype=i.prototype,i.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.type}},function(t,n,r){"use strict";var e=r(237),i=r(109),u=r(240);n.a={"":e.a,"%":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 r.i(u.a)(100*t,n)},r:u.a,s:i.a,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}}},function(t,n,r){"use strict";var e=r(33),i=r(238),u=r(239),a=r(110),o=r(111),c=r(109),f=r(241),s=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];n.a=function(t){function n(t){function n(t){var n,r,a,o=x,f=w;if("c"===m)f=M(t)+f,t="";else{t=+t;var d=t<0;if(t=M(Math.abs(t),b),d&&0==+t&&(d=!1),o=(d?"("===u?u:"-":"-"===u||"("===u?"":u)+o,f=f+("s"===m?s[8+c.b/3]:"")+(d&&"("===u?")":""),k)for(n=-1,r=t.length;++n(a=t.charCodeAt(n))||a>57){f=(46===a?p+t.slice(n+1):t.slice(n))+f,t=t.slice(0,n);break}}_&&!l&&(t=h(t,1/0));var g=o.length+t.length+f.length,T=g>1)+o+t+f+T.slice(g);break;default:t=T+o+t+f}return v(t)}t=r.i(a.a)(t);var e=t.fill,i=t.align,u=t.sign,f=t.symbol,l=t.zero,y=t.width,_=t.comma,b=t.precision,m=t.type,x="$"===f?d[0]:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",w="$"===f?d[1]:/[%p]/.test(m)?g:"",M=o.a[m],k=!m||/[defgprs%]/.test(m);return b=null==b?m?6:12:/[gprs]/.test(m)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),n.toString=function(){return t+""},n}function l(t,i){var u=n((t=r.i(a.a)(t),t.type="f",t)),o=3*Math.max(-8,Math.min(8,Math.floor(r.i(e.a)(i)/3))),c=Math.pow(10,-o),f=s[8+o/3];return function(t){return u(c*t)+f}}var h=t.grouping&&t.thousands?r.i(i.a)(t.grouping,t.thousands):f.a,d=t.currency,p=t.decimal,v=t.numerals?r.i(u.a)(t.numerals):f.a,g=t.percent||"%";return{format:n,formatPrefix:l}}},function(t,n,r){"use strict";function e(){_.point=u}function i(){a(l,h)}function u(t,n){_.point=a,l=t,h=n,t*=c.g,n*=c.g,d=t,p=r.i(c.c)(n=n/2+c.v),v=r.i(c.d)(n)}function a(t,n){t*=c.g,n*=c.g,n=n/2+c.v;var e=t-d,i=e>=0?1:-1,u=i*e,a=r.i(c.c)(n),o=r.i(c.d)(n),f=v*o,s=p*a+f*r.i(c.c)(u),l=f*i*r.i(c.d)(u);g.add(r.i(c.e)(l,s)),d=t,p=a,v=o}var o=r(19),c=r(0),f=r(10),s=r(13);r.d(n,"c",function(){return g}),r.d(n,"b",function(){return _});var l,h,d,p,v,g=r.i(o.a)(),y=r.i(o.a)(),_={point:f.a,lineStart:f.a,lineEnd:f.a,polygonStart:function(){g.reset(),_.lineStart=e,_.lineEnd=i},polygonEnd:function(){var t=+g;y.add(t<0?c.b+t:t),this.lineStart=this.lineEnd=this.point=f.a},sphere:function(){y.add(c.b)}};n.a=function(t){return y.reset(),r.i(s.a)(t,_),2*y}},function(t,n,r){"use strict";function e(t,n,e,a,c,f){if(e){var s=r.i(o.c)(n),l=r.i(o.d)(n),h=a*e;null==c?(c=n+a*o.b,f=n-h/2):(c=i(s,c),f=i(s,f),(a>0?cf)&&(c+=a*o.b));for(var d,p=c;a>0?p>f:p0?o.a:-o.a,l=r.i(o.p)(c-e);r.i(o.p)(l-o.a)0?o.k:-o.k),t.point(a,u),t.lineEnd(),t.lineStart(),t.point(s,u),t.point(c,u),n=0):a!==s&&l>=o.a&&(r.i(o.p)(e-a)o.o?r.i(o.l)((r.i(o.d)(n)*(a=r.i(o.c)(i))*r.i(o.d)(e)-r.i(o.d)(i)*(u=r.i(o.c)(n))*r.i(o.d)(t))/(u*a*c)):(n+i)/2}function u(t,n,e,i){var u;if(null==t)u=e*o.k,i.point(-o.a,u),i.point(0,u),i.point(o.a,u),i.point(o.a,0),i.point(o.a,-u),i.point(0,-u),i.point(-o.a,-u),i.point(-o.a,0),i.point(-o.a,u);else if(r.i(o.p)(t[0]-n[0])>o.o){var a=t[0]1&&n.push(n.pop().concat(n.shift()))},result:function(){var r=n;return n=[],t=null,r}}}},function(t,n,r){"use strict";var e=r(23),i=r(114),u=r(0),a=r(124),o=r(118);n.a=function(t){function n(n,e,u,a){r.i(i.b)(a,t,d,u,n,e)}function c(t,n){return r.i(u.c)(t)*r.i(u.c)(n)>h}function f(t){var n,e,i,o,f;return{lineStart:function(){o=i=!1,f=1},point:function(h,d){var g,y=[h,d],_=c(h,d),b=p?_?0:l(h,d):_?l(h+(h<0?u.a:-u.a),d):0;if(!n&&(o=i=_)&&t.lineStart(),_!==i&&(!(g=s(n,y))||r.i(a.a)(n,g)||r.i(a.a)(y,g))&&(y[0]+=u.o,y[1]+=u.o,_=c(y[0],y[1])),_!==i)f=0,_?(t.lineStart(),g=s(y,n),t.point(g[0],g[1])):(g=s(n,y),t.point(g[0],g[1]),t.lineEnd()),n=g;else if(v&&n&&p^_){var m;b&e||!(m=s(y,n,!0))||(f=0,p?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1])))}!_||n&&r.i(a.a)(n,y)||t.point(y[0],y[1]),n=y,i=_,e=b},lineEnd:function(){i&&t.lineEnd(),n=null},clean:function(){return f|(o&&i)<<1}}}function s(t,n,i){var a=r.i(e.a)(t),o=r.i(e.a)(n),c=[1,0,0],f=r.i(e.b)(a,o),s=r.i(e.d)(f,f),l=f[0],d=s-l*l;if(!d)return!i&&t;var p=h*s/d,v=-h*l/d,g=r.i(e.b)(c,f),y=r.i(e.e)(c,p),_=r.i(e.e)(f,v);r.i(e.f)(y,_);var b=g,m=r.i(e.d)(y,b),x=r.i(e.d)(b,b),w=m*m-x*(r.i(e.d)(y,y)-1);if(!(w<0)){var M=r.i(u.n)(w),k=r.i(e.e)(b,(-m-M)/x);if(r.i(e.f)(k,y),k=r.i(e.g)(k),!i)return k;var T,N=t[0],A=n[0],E=t[1],S=n[1];A0^k[1]<(r.i(u.p)(k[0]-N)u.a^(N<=k[0]&&k[0]<=A)){var P=r.i(e.e)(b,(-m+M)/x);return r.i(e.f)(P,y),[k,r.i(e.g)(P)]}}}function l(n,r){var e=p?t:u.a-t,i=0;return n<-e?i|=1:n>e&&(i|=2),r<-e?i|=4:r>e&&(i|=8),i}var h=r.i(u.c)(t),d=6*u.g,p=h>0,v=r.i(u.p)(h)>u.o;return r.i(o.a)(c,f,n,p?[0,-t]:[-u.a,t-u.a])}},function(t,n,r){"use strict";function e(t){return t.length>1}function i(t,n){return((t=t.x)[0]<0?t[1]-o.k-o.o:o.k-t[1])-((n=n.x)[0]<0?n[1]-o.k-o.o:o.k-n[1])}var u=r(116),a=r(119),o=r(0),c=r(125),f=r(3);n.a=function(t,n,o,s){return function(l){function h(n,r){t(n,r)&&l.point(n,r)}function d(t,n){w.point(t,n)}function p(){N.point=d,w.lineStart()}function v(){N.point=h,w.lineEnd()}function g(t,n){x.push([t,n]),k.point(t,n)}function y(){k.lineStart(),x=[]}function _(){g(x[0][0],x[0][1]),k.lineEnd();var t,n,r,i,u=k.clean(),a=M.result(),o=a.length;if(x.pop(),b.push(x),x=null,o)if(1&u){if(r=a[0],(n=r.length-1)>0){for(T||(l.polygonStart(),T=!0),l.lineStart(),t=0;t1&&2&u&&a.push(a.pop().concat(a.shift())),m.push(a.filter(e))}var b,m,x,w=n(l),M=r.i(u.a)(),k=n(M),T=!1,N={point:h,lineStart:p,lineEnd:v,polygonStart:function(){N.point=g,N.lineStart=y,N.lineEnd=_,m=[],b=[]},polygonEnd:function(){N.point=h,N.lineStart=p,N.lineEnd=v,m=r.i(f.q)(m);var t=r.i(c.a)(b,s);m.length?(T||(l.polygonStart(),T=!0),r.i(a.a)(m,i,t,o,l)):t&&(T||(l.polygonStart(),T=!0),l.lineStart(),o(null,null,1,l),l.lineEnd()),T&&(l.polygonEnd(),T=!1),m=b=null},sphere:function(){l.polygonStart(),l.lineStart(),o(null,null,1,l),l.lineEnd(),l.polygonEnd()}};return N}}},function(t,n,r){"use strict";function e(t,n,r,e){this.x=t,this.z=n,this.o=r,this.e=e,this.v=!1,this.n=this.p=null}function i(t){if(n=t.length){for(var n,r,e=0,i=t[0];++e=0;--f)c.point((p=d[f])[0],p[1]);else o(g.x,g.p.x,-1,c);g=g.p}g=g.o,d=g.z,y=!y}while(!g.v);c.lineEnd()}}}},function(t,n,r){"use strict";n.a=function(t,n){function r(r,e){return r=t(r,e),n(r[0],r[1])}return t.invert&&n.invert&&(r.invert=function(r,e){return(r=n.invert(r,e))&&t.invert(r[0],r[1])}),r}},function(t,n,r){"use strict";var e=r(122),i=[null,null],u={type:"LineString",coordinates:i};n.a=function(t,n){return i[0]=t,i[1]=n,r.i(e.a)(u)}},function(t,n,r){"use strict";function e(){v.point=u,v.lineEnd=i}function i(){v.point=v.lineEnd=h.a}function u(t,n){t*=l.g,n*=l.g,o=t,c=r.i(l.d)(n),f=r.i(l.c)(n),v.point=a}function a(t,n){t*=l.g,n*=l.g;var e=r.i(l.d)(n),i=r.i(l.c)(n),u=r.i(l.p)(t-o),a=r.i(l.c)(u),s=r.i(l.d)(u),h=i*s,d=f*e-c*i*a,v=c*e+f*i*a;p.add(r.i(l.e)(r.i(l.n)(h*h+d*d),v)),o=t,c=e,f=i}var o,c,f,s=r(19),l=r(0),h=r(10),d=r(13),p=r.i(s.a)(),v={sphere:h.a,point:h.a,lineStart:e,lineEnd:h.a,polygonStart:h.a,polygonEnd:h.a};n.a=function(t){return p.reset(),r.i(d.a)(t,v),+p}},function(t,n,r){"use strict";function e(t,n){to&&(o=t),nc&&(c=n)}var i=r(10),u=1/0,a=u,o=-u,c=o,f={point:e,lineStart:i.a,lineEnd:i.a,polygonStart:i.a,polygonEnd:i.a,result:function(){var t=[[u,a],[o,c]];return o=c=-(a=u=1/0),t}};n.a=f},function(t,n,r){"use strict";var e=r(0);n.a=function(t,n){return r.i(e.p)(t[0]-n[0])=0?1:-1,E=A*N,S=E>u.a,C=_*k;if(a.add(r.i(u.e)(C*A*r.i(u.d)(E),b*T+C*r.i(u.c)(E))),f+=S?N+A*u.b:N,S^g>=e^w>=e){var q=r.i(i.b)(r.i(i.a)(v),r.i(i.a)(x));r.i(i.c)(q);var z=r.i(i.b)(c,q);r.i(i.c)(z);var P=(S^N>=0?-1:1)*r.i(u.f)(z[2]);(o>P||o===P&&(q[0]||q[1]))&&(s+=S^N>=0?1:-1)}}return(f<-u.o||f0&&r*r>e*e+i*i}function a(t,n){for(var r=0;rr*r+e*e}function u(t){var n=t._,r=t.next._,e=n.r+r.r,i=(n.x*r.r+r.x*n.r)/e,u=(n.y*r.r+r.y*n.r)/e;return i*i+u*u}function a(t){this._=t,this.next=null,this.previous=null}function o(t){if(!(s=t.length))return 0;var n,o,f,s,l,h,d,p,v,g,y;if(n=t[0],n.x=0,n.y=0,!(s>1))return n.r;if(o=t[1],n.x=-o.r,o.x=n.r,o.y=0,!(s>2))return n.r+o.r;e(o,n,f=t[2]),n=new a(n),o=new a(o),f=new a(f),n.next=f.previous=o,o.next=n.previous=f,f.next=o.previous=n;t:for(d=3;dl&&(s=n.slice(l,s),d[h]?d[h]+=s:d[++h]=s),(c=c[0])===(f=f[0])?d[h]?d[h]+=f:d[++h]=f:(d[++h]=null,p.push({i:h,x:r.i(u.a)(c,f)})),l=o.lastIndex;return l1);return t+r*u*Math.sqrt(-2*Math.log(i)/i)}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";function e(t,n){return function(r){return t(r.responseText,n)}}var i=r(72);n.a=function(t,n){return function(u,a,o){arguments.length<3&&(o=a,a=null);var c=r.i(i.a)(u).mimeType(t);return c.row=function(t){return arguments.length?c.response(e(n,a=t)):a},c.row(a),o?c.get(o):c}}},function(t,n,r){"use strict";n.a=function(t,n){t=t.slice();var r,e=0,i=t.length-1,u=t[e],a=t[i];return a1?this.each((null==n?e:"function"==typeof n?u:i)(t,n,null==r?"":r)):a(this.node(),t)}},function(t,n,r){"use strict";function e(){return[]}n.a=function(t){return null==t?e:function(){return this.querySelectorAll(t)}}},function(t,n,r){"use strict";var e=r(14),i=r(16),u=r(44),a=r(82),o=r(84);n.a=function(){function t(t){var n,i,u,a,o,g=t.length,y=!1,_=new Array(g),b=new Array(g);for(null==d&&(v=p(o=r.i(e.a)())),n=0;n<=g;++n){if(!(n=i;--u)v.point(_[u],b[u]);v.lineEnd(),v.areaEnd()}y&&(_[n]=+c(a,n,t),b[n]=+s(a,n,t),v.point(f?+f(a,n,t):_[n],l?+l(a,n,t):b[n]))}if(o)return v=null,o+""||null}function n(){return r.i(a.a)().defined(h).curve(p).context(d)}var c=o.a,f=null,s=r.i(i.a)(0),l=o.b,h=r.i(i.a)(!0),d=null,p=u.a,v=null;return t.x=function(n){return arguments.length?(c="function"==typeof n?n:r.i(i.a)(+n),f=null,t):c},t.x0=function(n){return arguments.length?(c="function"==typeof n?n:r.i(i.a)(+n),t):c},t.x1=function(n){return arguments.length?(f=null==n?null:"function"==typeof n?n:r.i(i.a)(+n),t):f},t.y=function(n){return arguments.length?(s="function"==typeof n?n:r.i(i.a)(+n),l=null,t):s},t.y0=function(n){return arguments.length?(s="function"==typeof n?n:r.i(i.a)(+n),t):s},t.y1=function(n){return arguments.length?(l=null==n?null:"function"==typeof n?n:r.i(i.a)(+n),t):l},t.lineX0=t.lineY0=function(){return n().x(c).y(s)},t.lineY1=function(){return n().x(c).y(l)},t.lineX1=function(){return n().x(f).y(s)},t.defined=function(n){return arguments.length?(h="function"==typeof n?n:r.i(i.a)(!!n),t):h},t.curve=function(n){return arguments.length?(p=n,null!=d&&(v=p(d)),t):p},t.context=function(n){return arguments.length?(null==n?d=v=null:v=p(d=n),t):d},t}},function(t,n,r){"use strict";r.d(n,"a",function(){return e});var e=Array.prototype.slice},function(t,n,r){"use strict";function e(t,n){this._context=t,this._k=(1-n)/6}var i=r(45),u=r(43);n.b=e,e.prototype={areaStart:i.a,areaEnd:i.a,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:r.i(u.c)(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}},n.a=function t(n){function r(t){return new e(t,n)}return r.tension=function(n){return t(+n)},r}(0)},function(t,n,r){"use strict";function e(t,n){this._context=t,this._k=(1-n)/6}var i=r(43);n.b=e,e.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:r.i(i.c)(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}},n.a=function t(n){function r(t){return new e(t,n)}return r.tension=function(n){return t(+n)},r}(0)},function(t,n,r){"use strict";function e(t){this._curve=t}function i(t){function n(n){return new e(t(n))}return n._curve=t,n}var u=r(44);r.d(n,"b",function(){return a}),n.a=i;var a=i(u.a);e.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}}},function(t,n,r){"use strict";function e(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(r.i(i.a)(t)):n()._curve},t}var i=r(155),u=r(82);n.b=e,n.a=function(){return e(r.i(u.a)().curve(i.b))}},function(t,n,r){"use strict";n.a=function(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}},function(t,n,r){"use strict";var e=r(29);n.a={draw:function(t,n){var r=Math.sqrt(n/e.b);t.moveTo(r,0),t.arc(0,0,r,0,e.c)}}},function(t,n,r){"use strict";n.a={draw:function(t,n){var r=Math.sqrt(n/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}}},function(t,n,r){"use strict";var e=Math.sqrt(1/3),i=2*e;n.a={draw:function(t,n){var r=Math.sqrt(n/i),u=r*e;t.moveTo(0,-r),t.lineTo(u,0),t.lineTo(0,r),t.lineTo(-u,0),t.closePath()}}},function(t,n,r){"use strict";n.a={draw:function(t,n){var r=Math.sqrt(n),e=-r/2;t.rect(e,e,r,r)}}},function(t,n,r){"use strict";var e=r(29),i=Math.sin(e.b/10)/Math.sin(7*e.b/10),u=Math.sin(e.c/10)*i,a=-Math.cos(e.c/10)*i;n.a={draw:function(t,n){var r=Math.sqrt(.8908130915292852*n),i=u*r,o=a*r;t.moveTo(0,-r),t.lineTo(i,o);for(var c=1;c<5;++c){var f=e.c*c/5,s=Math.cos(f),l=Math.sin(f);t.lineTo(l*r,-s*r),t.lineTo(s*i-l*o,l*i+s*o)}t.closePath()}}},function(t,n,r){"use strict";var e=Math.sqrt(3);n.a={draw:function(t,n){var r=-Math.sqrt(n/(3*e));t.moveTo(0,2*r),t.lineTo(-e*r,-r),t.lineTo(e*r,-r),t.closePath()}}},function(t,n,r){"use strict";var e=-.5,i=Math.sqrt(3)/2,u=1/Math.sqrt(12),a=3*(u/2+1);n.a={draw:function(t,n){var r=Math.sqrt(n/a),o=r/2,c=r*u,f=o,s=r*u+r,l=-f,h=s;t.moveTo(o,c),t.lineTo(f,s),t.lineTo(l,h),t.lineTo(e*o-i*c,i*o+e*c),t.lineTo(e*f-i*s,i*f+e*s),t.lineTo(e*l-i*h,i*l+e*h),t.lineTo(e*o+i*c,e*c-i*o),t.lineTo(e*f+i*s,e*s-i*f),t.lineTo(e*l+i*h,e*h-i*l),t.closePath()}}},function(t,n,r){"use strict";function e(t){return t.toISOString()}var i=r(86);r.d(n,"b",function(){return u});var u="%Y-%m-%dT%H:%M:%S.%LZ",a=Date.prototype.toISOString?e:r.i(i.d)(u);n.a=a},function(t,n,r){"use strict";function e(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 i(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 u(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function a(t){function n(t,n){return function(r){var e,i,u,a=[],o=-1,c=0,f=t.length;for(r instanceof Date||(r=new Date(+r));++o53)return null;"w"in f||(f.w=1),"Z"in f?(a=i(u(f.y)),c=a.getUTCDay(),a=c>4||0===c?dt.T.ceil(a):r.i(dt.T)(a),a=dt.N.offset(a,7*(f.V-1)),f.y=a.getUTCFullYear(),f.m=a.getUTCMonth(),f.d=a.getUTCDate()+(f.w+6)%7):(a=n(u(f.y)),c=a.getDay(),a=c>4||0===c?dt.t.ceil(a):r.i(dt.t)(a),a=dt.n.offset(a,7*(f.V-1)),f.y=a.getFullYear(),f.m=a.getMonth(),f.d=a.getDate()+(f.w+6)%7)}else("W"in f||"U"in f)&&("w"in f||(f.w="u"in f?f.u%7:"W"in f?1:0),c="Z"in f?i(u(f.y)).getUTCDay():n(u(f.y)).getDay(),f.m=0,f.d="W"in f?(f.w+6)%7+7*f.W-(c+5)%7:f.w+7*f.U-(c+6)%7);return"Z"in f?(f.H+=f.Z/100|0,f.M+=f.Z%100,i(f)):n(f)}}function o(t,n,r,e){for(var i,u,a=0,o=n.length,c=r.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(u=Jt[i in pt?n.charAt(a++):i])||(e=u(t,r,e))<0)return-1}else if(i!=r.charCodeAt(e++))return-1}return e}function c(t,n,r){var e=It.exec(n.slice(r));return e?(t.p=Ft[e[0].toLowerCase()],r+e[0].length):-1}function vt(t,n,r){var e=Ht.exec(n.slice(r));return e?(t.w=Xt[e[0].toLowerCase()],r+e[0].length):-1}function gt(t,n,r){var e=Yt.exec(n.slice(r));return e?(t.w=Bt[e[0].toLowerCase()],r+e[0].length):-1}function yt(t,n,r){var e=Wt.exec(n.slice(r));return e?(t.m=Zt[e[0].toLowerCase()],r+e[0].length):-1}function _t(t,n,r){var e=Vt.exec(n.slice(r));return e?(t.m=Gt[e[0].toLowerCase()],r+e[0].length):-1}function bt(t,n,r){return o(t,zt,n,r)}function mt(t,n,r){return o(t,Pt,n,r)}function xt(t,n,r){return o(t,Dt,n,r)}function wt(t){return Ut[t.getDay()]}function Mt(t){return Rt[t.getDay()]}function kt(t){return Ot[t.getMonth()]}function Tt(t){return jt[t.getMonth()]}function Nt(t){return Lt[+(t.getHours()>=12)]}function At(t){return Ut[t.getUTCDay()]}function Et(t){return Rt[t.getUTCDay()]}function St(t){return Ot[t.getUTCMonth()]}function Ct(t){return jt[t.getUTCMonth()]}function qt(t){return Lt[+(t.getUTCHours()>=12)]}var zt=t.dateTime,Pt=t.date,Dt=t.time,Lt=t.periods,Rt=t.days,Ut=t.shortDays,jt=t.months,Ot=t.shortMonths,It=f(Lt),Ft=s(Lt),Yt=f(Rt),Bt=s(Rt),Ht=f(Ut),Xt=s(Ut),Vt=f(jt),Gt=s(jt),Wt=f(Ot),Zt=s(Ot),Qt={a:wt,A:Mt,b:kt,B:Tt,c:null,d:C,e:C,f:L,H:q,I:z,j:P,L:D,m:R,M:U,p:Nt,Q:lt,s:ht,S:j,u:O,U:I,V:F,w:Y,W:B,x:null,X:null,y:H,Y:X,Z:V,"%":st},$t={a:At,A:Et,b:St,B:Ct,c:null,d:G,e:G,f:J,H:W,I:Z,j:Q,L:$,m:K,M:tt,p:qt,Q:lt,s:ht,S:nt,u:rt,U:et,V:it,w:ut,W:at,x:null,X:null,y:ot,Y:ct,Z:ft,"%":st},Jt={a:vt,A:gt,b:yt,B:_t,c:bt,d:m,e:m,f:N,H:w,I:w,j:x,L:T,m:b,M:M,p:c,Q:E,s:S,S:k,u:h,U:d,V:p,w:l,W:v,x:mt,X:xt,y:y,Y:g,Z:_,"%":A};return Qt.x=n(Pt,Qt),Qt.X=n(Dt,Qt),Qt.c=n(zt,Qt),$t.x=n(Pt,$t),$t.X=n(Dt,$t),$t.c=n(zt,$t),{format:function(t){var r=n(t+="",Qt);return r.toString=function(){return t},r},parse:function(t){var n=a(t+="",e);return n.toString=function(){return t},n},utcFormat:function(t){var r=n(t+="",$t);return r.toString=function(){return t},r},utcParse:function(t){var n=a(t,i);return n.toString=function(){return t},n}}}function o(t,n,r){var e=t<0?"-":"",i=(e?-t:t)+"",u=i.length;return e+(u68?1900:2e3),r+e[0].length):-1}function _(t,n,r){var e=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(r,r+6));return e?(t.Z=e[1]?0:-(e[2]+(e[3]||"00")),r+e[0].length):-1}function b(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.m=e[0]-1,r+e[0].length):-1}function m(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.d=+e[0],r+e[0].length):-1}function x(t,n,r){var e=vt.exec(n.slice(r,r+3));return e?(t.m=0,t.d=+e[0],r+e[0].length):-1}function w(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.H=+e[0],r+e[0].length):-1}function M(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.M=+e[0],r+e[0].length):-1}function k(t,n,r){var e=vt.exec(n.slice(r,r+2));return e?(t.S=+e[0],r+e[0].length):-1}function T(t,n,r){var e=vt.exec(n.slice(r,r+3));return e?(t.L=+e[0],r+e[0].length):-1}function N(t,n,r){var e=vt.exec(n.slice(r,r+6));return e?(t.L=Math.floor(e[0]/1e3),r+e[0].length):-1}function A(t,n,r){var e=gt.exec(n.slice(r,r+1));return e?r+e[0].length:-1}function E(t,n,r){var e=vt.exec(n.slice(r));return e?(t.Q=+e[0],r+e[0].length):-1}function S(t,n,r){var e=vt.exec(n.slice(r));return e?(t.Q=1e3*+e[0],r+e[0].length):-1}function C(t,n){return o(t.getDate(),n,2)}function q(t,n){return o(t.getHours(),n,2)}function z(t,n){return o(t.getHours()%12||12,n,2)}function P(t,n){return o(1+dt.n.count(r.i(dt.H)(t),t),n,3)}function D(t,n){return o(t.getMilliseconds(),n,3)}function L(t,n){return D(t,n)+"000"}function R(t,n){return o(t.getMonth()+1,n,2)}function U(t,n){return o(t.getMinutes(),n,2)}function j(t,n){return o(t.getSeconds(),n,2)}function O(t){var n=t.getDay();return 0===n?7:n}function I(t,n){return o(dt.r.count(r.i(dt.H)(t),t),n,2)}function F(t,n){var e=t.getDay();return t=e>=4||0===e?r.i(dt.z)(t):dt.z.ceil(t),o(dt.z.count(r.i(dt.H)(t),t)+(4===r.i(dt.H)(t).getDay()),n,2)}function Y(t){return t.getDay()}function B(t,n){return o(dt.t.count(r.i(dt.H)(t),t),n,2)}function H(t,n){return o(t.getFullYear()%100,n,2)}function X(t,n){return o(t.getFullYear()%1e4,n,4)}function V(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+o(n/60|0,"0",2)+o(n%60,"0",2)}function G(t,n){return o(t.getUTCDate(),n,2)}function W(t,n){return o(t.getUTCHours(),n,2)}function Z(t,n){return o(t.getUTCHours()%12||12,n,2)}function Q(t,n){return o(1+dt.N.count(r.i(dt._7)(t),t),n,3)}function $(t,n){return o(t.getUTCMilliseconds(),n,3)}function J(t,n){return $(t,n)+"000"}function K(t,n){return o(t.getUTCMonth()+1,n,2)}function tt(t,n){return o(t.getUTCMinutes(),n,2)}function nt(t,n){return o(t.getUTCSeconds(),n,2)}function rt(t){var n=t.getUTCDay();return 0===n?7:n}function et(t,n){return o(dt.R.count(r.i(dt._7)(t),t),n,2)}function it(t,n){var e=t.getUTCDay();return t=e>=4||0===e?r.i(dt.Z)(t):dt.Z.ceil(t),o(dt.Z.count(r.i(dt._7)(t),t)+(4===r.i(dt._7)(t).getUTCDay()),n,2)}function ut(t){return t.getUTCDay()}function at(t,n){return o(dt.T.count(r.i(dt._7)(t),t),n,2)}function ot(t,n){return o(t.getUTCFullYear()%100,n,2)}function ct(t,n){return o(t.getUTCFullYear()%1e4,n,4)}function ft(){return"+0000"}function st(){return"%"}function lt(t){return+t}function ht(t){return Math.floor(+t/1e3)}var dt=r(46);n.a=a;var pt={"-":"",_:" ",0:"0"},vt=/^\s*\d+/,gt=/^%/,yt=/[\\^$*+?|[\]().{}]/g},function(t,n,r){"use strict";var e=r(6);n.a=function(t,n){var r,i,u,a=t.__transition,o=!0;if(a){n=null==n?null:n+"";for(u in a)(r=a[u]).name===n?(i=r.state>e.a&&r.states.b||Math.abs(m-y)>s.b)&&(d.splice(h,0,s.d.push(r.i(f.b)(l,_,Math.abs(b-t)s.b?[t,Math.abs(g-t)s.b?[Math.abs(y-i)s.b?[e,Math.abs(g-e)s.b?[Math.abs(y-n)=-o.f)){var y=h*h+d*d,_=p*p+v*v,b=(v*y-d*_)/g,m=(h*_-p*y)/g,x=f.pop()||new e;x.arc=t,x.site=u,x.x=b+s,x.y=(x.cy=m+l)+Math.sqrt(b*b+m*m),t.circle=x;for(var w=null,M=o.g._;M;)if(x.y=n-t.span&&r.timestamp<=n}),i=this.ag.selectAll("line.annotation").data(r).attr("x1",function(n){return t.x(n.timestamp)}).attr("x2",function(n){return t.x(n.timestamp)});i.enter().append("line").classed("annotation",!0).attr("stroke",function(t){return"continued"===t.type?"rgba(0, 255, 0, 0.25)":"rgba(255, 0, 0, 0.25)"}).attr("stroke-width",1).attr("y1",0).attr("y2",this.height).attr("x1",function(n){return t.x(n.timestamp)}).attr("x2",function(n){return t.x(n.timestamp)}),i.exit().remove(),this.paths.forEach(function(r){try{var e=t.datasource.getData(r.graphId,n-t.span,n,!0);r.path.datum(e).attr("d",t.line)}catch(t){console.log("Error Updating Plot: ",t)}}),this.spaths.forEach(function(r){try{var e=t.datasource.sampleData(r.graphId,t.width,t.start,n);r.path.datum(e).attr("d",t.sline)}catch(t){console.log("Error Updating Plot: ",t)}});var u=n-this.span;u0){var r=this.points[this.points.length-1];this.points=this.points.filter(function(t){return t.timestamp>=n}),0===this.points.length&&this.points.push(r),this.path.datum(this.points).attr("d",this.line)}}catch(t){console.log("Error Updating Plot: ",t)}window.requestAnimationFrame(this.updateGraph.bind(this))},t}();n.XYGraph=i},function(t,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var e=function(){function t(){this.data={},this.subscriptions={}}return t.prototype.receiveMessage=function(t){var n={timestamp:t.timestamp,value:t.data},r=t.id;this.data[r]||(this.data[r]=[]),this.data[r]&&this.data[r].push(n),this.subscriptions[r]&&this.subscriptions[r].forEach(function(t){return t(n)})},t.prototype.getData=function(t,n,r,e){void 0===e&&(e=!0);var i=this.data[t];if(!i)return[];if(i=i.filter(function(t){return t.timestamp>=n&&t.timestamp<=r}),e&&i.length>=1){var u=i[i.length-1];i.push({timestamp:r,value:u.value});var a=i[0];i.unshift({timestamp:n,value:a.value})}return i},t.prototype.sampleData=function(t,n,r,e){void 0===r&&(r=null),void 0===e&&(e=null);var i=this.data[t];if(!i)return[];if(null===r&&(r=0),null==e&&(e=(new Date).getTime()),i=i.filter(function(t){return t.timestamp>=r&&t.timestamp<=e}),i.length>1.5*n){var u=Math.round(i.length/n);i=i.filter(function(t,n){return n%u==0})}return i},t.prototype.subscribe=function(t,n){this.subscriptions[t]||(this.subscriptions[t]=[]),this.subscriptions[t].push(n)},t}();n.GraphDataSource=e},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";var e=r(97);n.a=function(t,n,r){var i,u,a,o,c=t.length,f=n.length,s=new Array(c*f);for(null==r&&(r=e.b),i=a=0;it?1:n>=t?0:NaN}},function(t,n,r){"use strict";var e=r(91),i=r(92),u=r(175),a=r(95),o=r(179),c=r(98),f=r(100),s=r(99);n.a=function(){function t(t){var e,u,a=t.length,o=new Array(a);for(e=0;ep;)v.pop(),--g;var y,_=new Array(g+1);for(e=0;e<=g;++e)y=_[e]=[],y.x0=e>0?v[e-1]:d,y.x1=e=r)for(e=r;++ue&&(e=r)}else for(;++u=r)for(e=r;++ue&&(e=r);return e}},function(t,n,r){"use strict";var e=r(21);n.a=function(t,n){var i,u=t.length,a=u,o=-1,c=0;if(null==n)for(;++o=0;)for(e=t[i],n=e.length;--n>=0;)r[--a]=e[n];return r}},function(t,n,r){"use strict";n.a=function(t,n){for(var r=n.length,e=new Array(r);r--;)e[r]=t[n[r]];return e}},function(t,n,r){"use strict";var e=r(17);n.a=function(t,n){if(r=t.length){var r,i,u=0,a=0,o=t[a];for(null==n&&(n=e.a);++uMath.abs(t[1]-nt[1])?I=!0:O=!0),nt=t,j=!0,r.i(b.a)(),e()}function e(){var t;switch(R=nt[0]-tt[0],U=nt[1]-tt[1],B){case x:case m:H&&(R=Math.max(Z-l,Math.min($-_,R)),h=l+R,N=_+R),X&&(U=Math.max(Q-p,Math.min(J-P,U)),y=p+U,L=P+U);break;case w:H<0?(R=Math.max(Z-l,Math.min($-l,R)),h=l+R,N=_):H>0&&(R=Math.max(Z-_,Math.min($-_,R)),h=l,N=_+R),X<0?(U=Math.max(Q-p,Math.min(J-p,U)),y=p+U,L=P):X>0&&(U=Math.max(Q-P,Math.min(J-P,U)),y=p,L=P+U);break;case M:H&&(h=Math.max(Z,Math.min($,l-R*H)),N=Math.max(Z,Math.min($,_+R*H))),X&&(y=Math.max(Q,Math.min(J,p-U*X)),L=Math.max(Q,Math.min(J,P+U*X)))}N0&&(l=h-R),X<0?P=L-U:X>0&&(p=y-U),B=x,it.attr("cursor",A.selection),e());break;default:return}r.i(b.a)()}function s(){switch(v.q.keyCode){case 16:K&&(O=I=K=!1,e());break;case 18:B===M&&(H<0?_=N:H>0&&(l=h),X<0?P=L:X>0&&(p=y),B=w,e());break;case 32:B===x&&(v.q.altKey?(H&&(_=N-R*H,l=h+R*H),X&&(P=L-U*X,p=y+U*X),B=M):(H<0?_=N:H>0&&(l=h),X<0?P=L:X>0&&(p=y),B=w),it.attr("cursor",A[Y]),e());break;default:return}r.i(b.a)()}if(v.q.touches){if(v.q.changedTouches.length=l.length)return null!=c&&n.sort(c),null!=f?f(n):n;for(var a,s,h,d=-1,p=n.length,v=l[e++],g=r.i(o.a)(),y=i();++dl.length)return t;var e,i=h[r-1];return null!=f&&r>=l.length?e=t.entries():(e=[],t.each(function(t,i){e.push({key:i,values:n(t,r)})})),null!=i?e.sort(function(t,n){return i(t.key,n.key)}):e}var c,f,s,l=[],h=[];return s={object:function(n){return t(n,0,e,i)},map:function(n){return t(n,0,u,a)},entries:function(r){return n(t(r,0,u,a),0)},key:function(t){return l.push(t),s},sortKeys:function(t){return h[l.length-1]=t,s},sortValues:function(t){return c=t,s},rollup:function(t){return f=t,s}}}},function(t,n,r){"use strict";function e(){}function i(t,n){var r=new e;if(t instanceof e)t.each(function(t){r.add(t)});else if(t){var i=-1,u=t.length;if(null==n)for(;++iM?Math.pow(t,1/3):t/w+m}function o(t){return t>x?t*t*t:w*(t-m)}function c(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function f(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function s(t){if(t instanceof h)return new h(t.h,t.c,t.l,t.opacity);t instanceof u||(t=e(t));var n=Math.atan2(t.b,t.a)*v.a;return new h(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function l(t,n,r,e){return 1===arguments.length?s(t):new h(t,n,r,null==e?1:e)}function h(t,n,r,e){this.h=+t,this.c=+n,this.l=+r,this.opacity=+e}var d=r(53),p=r(52),v=r(104);n.a=i,n.b=l;var g=18,y=.95047,_=1,b=1.08883,m=4/29,x=6/29,w=3*x*x,M=x*x*x;r.i(d.a)(u,i,r.i(d.b)(p.f,{brighter:function(t){return new u(this.l+g*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new u(this.l-g*(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,r=isNaN(this.b)?t:t-this.b/200;return t=_*o(t),n=y*o(n),r=b*o(r),new p.d(c(3.2404542*n-1.5371385*t-.4985314*r),c(-.969266*n+1.8760108*t+.041556*r),c(.0556434*n-.2040259*t+1.0572252*r),this.opacity)}})),r.i(d.a)(h,l,r.i(d.b)(p.f,{brighter:function(t){return new h(this.h,this.c,this.l+g*(null==t?1:t),this.opacity)},darker:function(t){return new h(this.h,this.c,this.l-g*(null==t?1:t),this.opacity)},rgb:function(){return e(this).rgb()}}))},function(t,n,r){"use strict";function e(){for(var t,n=0,r=arguments.length,e={};n=0&&(r=t.slice(e+1),t=t.slice(0,e)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:r}})}function a(t,n){for(var r,e=0,i=t.length;e0)for(var r,e,i=new Array(r),u=0;uC}A.mouse("drag")}function p(){r.i(c.h)(c.q.view).on("mousemove.drag mouseup.drag",null),r.i(f.b)(c.q.view,x),r.i(s.a)(),A.mouse("end")}function v(){if(M.apply(this,arguments)){var t,n,e=c.q.changedTouches,i=k.apply(this,arguments),u=e.length;for(t=0;tp+s||iv+s||uf.index){var l=p-o.x-o.vx,d=v-o.y-o.vy,_=l*l+d*d;_t.r&&(t.r=t[n].r)}function f(){if(s){var n,r,e=s.length;for(l=new Array(e),n=0;n=v)){(t.data!==s||t.next)&&(0===a&&(a=r.i(i.a)(),f+=a*a),0===o&&(o=r.i(i.a)(),f+=o*o),f0&&(u=0)}return u>0?t.slice(0,u)+t.slice(r+1):t}},function(t,n,r){"use strict";n.a=function(t,n){return function(r,e){for(var i=r.length,u=[],a=0,o=t[0],c=0;i>0&&o>0&&(c+o+1>e&&(o=Math.max(1,e-c)),u.push(r.substring(i-=o,i+o)),!((c+=o+1)>e));)o=t[a=(a+1)%t.length];return u.reverse().join(n)}}},function(t,n,r){"use strict";n.a=function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}},function(t,n,r){"use strict";var e=r(59);n.a=function(t,n){var i=r.i(e.a)(t,n);if(!i)return t+"";var u=i[0],a=i[1];return a<0?"0."+new Array(-a).join("0")+u:u.length>a+1?u.slice(0,a+1)+"."+u.slice(a+1):u+new Array(a-u.length+2).join("0")}},function(t,n,r){"use strict";n.a=function(t){return t}},function(t,n,r){"use strict";var e=r(33);n.a=function(t){return Math.max(0,-r.i(e.a)(Math.abs(t)))}},function(t,n,r){"use strict";var e=r(33);n.a=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r.i(e.a)(n)/3)))-r.i(e.a)(Math.abs(t)))}},function(t,n,r){"use strict";var e=r(33);n.a=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,r.i(e.a)(n)-r.i(e.a)(t))+1}},function(t,n,r){"use strict";var e=r(113);r.d(n,"a",function(){return e.a});var i=r(246);r.d(n,"b",function(){return i.a});var u=r(247);r.d(n,"c",function(){return u.a});var a=r(114);r.d(n,"d",function(){return a.a});var o=r(115);r.d(n,"e",function(){return o.a});var c=r(117);r.d(n,"f",function(){return c.a});var f=r(248);r.d(n,"g",function(){return f.a});var s=r(34);r.d(n,"h",function(){return s.a});var l=r(251);r.d(n,"i",function(){return l.a});var h=r(121);r.d(n,"j",function(){return h.a});var d=r(252);r.d(n,"k",function(){return d.a}),r.d(n,"l",function(){return d.b});var p=r(253);r.d(n,"m",function(){return p.a});var v=r(122);r.d(n,"n",function(){return v.a});var g=r(257);r.d(n,"o",function(){return g.a});var y=r(126);r.d(n,"p",function(){return y.a});var _=r(260);r.d(n,"q",function(){return _.a});var b=r(261);r.d(n,"r",function(){return b.a}),r.d(n,"s",function(){return b.b});var m=r(262);r.d(n,"t",function(){return m.a}),r.d(n,"u",function(){return m.b});var x=r(263);r.d(n,"v",function(){return x.a}),r.d(n,"w",function(){return x.b});var w=r(62);r.d(n,"x",function(){return w.a}),r.d(n,"y",function(){return w.b});var M=r(264);r.d(n,"z",function(){return M.a}),r.d(n,"A",function(){return M.b});var k=r(127);r.d(n,"B",function(){return k.a}),r.d(n,"C",function(){return k.b});var T=r(266);r.d(n,"D",function(){return T.a}),r.d(n,"E",function(){return T.b});var N=r(267);r.d(n,"F",function(){return N.a});var A=r(8);r.d(n,"G",function(){return A.a}),r.d(n,"H",function(){return A.b});var E=r(64);r.d(n,"I",function(){return E.a}),r.d(n,"J",function(){return E.b});var S=r(268);r.d(n,"K",function(){return S.a}),r.d(n,"L",function(){return S.b});var C=r(269);r.d(n,"M",function(){return C.a}),r.d(n,"N",function(){return C.b});var q=r(271);r.d(n,"O",function(){return q.a}),r.d(n,"P",function(){return q.b});var z=r(272);r.d(n,"Q",function(){return z.a}),r.d(n,"R",function(){return z.b});var P=r(35);r.d(n,"S",function(){return P.a});var D=r(13);r.d(n,"T",function(){return D.a});var L=r(36);r.d(n,"U",function(){return L.a})},function(t,n,r){"use strict";function e(t,n){x.push(w=[d=t,v=t]),ng&&(g=n)}function i(t,n){var e=r.i(T.a)([t*N.g,n*N.g]);if(m){var i=r.i(T.b)(m,e),u=[i[1],-i[0],0],a=r.i(T.b)(u,i);r.i(T.c)(a),a=r.i(T.g)(a);var o,c=t-y,f=c>0?1:-1,l=a[0]*N.h*f,h=r.i(N.p)(c)>180;h^(f*yg&&(g=o):(l=(l+360)%360-180,h^(f*yg&&(g=n))),h?ts(d,v)&&(v=t):s(t,v)>s(d,v)&&(d=t):v>=d?(tv&&(v=t)):t>y?s(d,t)>s(d,v)&&(v=t):s(t,v)>s(d,v)&&(d=t)}else x.push(w=[d=t,v=t]);ng&&(g=n),m=e,y=t}function u(){S.point=i}function a(){w[0]=d,w[1]=v,S.point=e,m=null}function o(t,n){if(m){var e=t-y;E.add(r.i(N.p)(e)>180?e+(e>0?360:-360):e)}else _=t,b=n;k.b.point(t,n),i(t,n)}function c(){k.b.lineStart()}function f(){o(_,b),k.b.lineEnd(),r.i(N.p)(E)>N.o&&(d=-(v=180)),w[0]=d,w[1]=v,m=null}function s(t,n){return(n-=t)<0?n+360:n}function l(t,n){return t[0]-n[0]}function h(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nN.o?g=90:E<-N.o&&(p=-90),w[0]=d,w[1]=v}};n.a=function(t){var n,e,i,u,a,o,c;if(g=v=-(d=p=1/0),x=[],r.i(A.a)(t,S),e=x.length){for(x.sort(l),n=1,i=x[0],a=[i];ns(i[0],i[1])&&(i[1]=u[1]),s(u[0],i[1])>s(i[0],i[1])&&(i[0]=u[0])):a.push(i=u);for(o=-1/0,e=a.length-1,n=0,i=a[e];n<=e;i=u,++n)u=a[n],(c=s(i[1],u[0]))>o&&(o=c,d=u[0],v=i[1])}return x=w=null,d===1/0||p===1/0?[[NaN,NaN],[NaN,NaN]]:[[d,p],[v,g]]}},function(t,n,r){"use strict";function e(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n);i(e*r.i(S.c)(t),e*r.i(S.d)(t),r.i(S.d)(n))}function i(t,n,r){++d,v+=(t-v)/d,g+=(n-g)/d,y+=(r-y)/d}function u(){z.point=a}function a(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n);N=e*r.i(S.c)(t),A=e*r.i(S.d)(t),E=r.i(S.d)(n),z.point=o,i(N,A,E)}function o(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n),u=e*r.i(S.c)(t),a=e*r.i(S.d)(t),o=r.i(S.d)(n),c=r.i(S.e)(r.i(S.n)((c=A*o-E*a)*c+(c=E*u-N*o)*c+(c=N*a-A*u)*c),N*u+A*a+E*o);p+=c,_+=c*(N+(N=u)),b+=c*(A+(A=a)),m+=c*(E+(E=o)),i(N,A,E)}function c(){z.point=e}function f(){z.point=l}function s(){h(k,T),z.point=e}function l(t,n){k=t,T=n,t*=S.g,n*=S.g,z.point=h;var e=r.i(S.c)(n);N=e*r.i(S.c)(t),A=e*r.i(S.d)(t),E=r.i(S.d)(n),i(N,A,E)}function h(t,n){t*=S.g,n*=S.g;var e=r.i(S.c)(n),u=e*r.i(S.c)(t),a=e*r.i(S.d)(t),o=r.i(S.d)(n),c=A*o-E*a,f=E*u-N*o,s=N*a-A*u,l=r.i(S.n)(c*c+f*f+s*s),h=r.i(S.f)(l),d=l&&-h/l;x+=d*c,w+=d*f,M+=d*s,p+=h,_+=h*(N+(N=u)),b+=h*(A+(A=a)),m+=h*(E+(E=o)),i(N,A,E)}var d,p,v,g,y,_,b,m,x,w,M,k,T,N,A,E,S=r(0),C=r(10),q=r(13),z={sphere:C.a,point:e,lineStart:u,lineEnd:c,polygonStart:function(){z.lineStart=f,z.lineEnd=s},polygonEnd:function(){z.lineStart=u,z.lineEnd=c}};n.a=function(t){d=p=v=g=y=_=b=m=x=w=M=0,r.i(q.a)(t,z);var n=x,e=w,i=M,u=n*n+e*e+i*i;return u0)){if(a/=d,d<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=i-o,d||!(a<0)){if(a/=d,d<0){if(a>h)return;a>l&&(l=a)}else if(d>0){if(a0)){if(a/=p,p<0){if(a0){if(a>h)return;a>l&&(l=a)}if(a=u-c,p||!(a<0)){if(a/=p,p<0){if(a>h)return;a>l&&(l=a)}else if(p>0){if(a0&&(t[0]=o+l*d,t[1]=c+l*p),h<1&&(n[0]=o+h*d,n[1]=c+h*p),!0}}}}}},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t,n){return!(!t||!d.hasOwnProperty(t.type))&&d[t.type](t,n)}function i(t,n){return 0===r.i(s.a)(t,n)}function u(t,n){var e=r.i(s.a)(t[0],t[1]);return r.i(s.a)(t[0],n)+r.i(s.a)(n,t[1])<=e+l.o}function a(t,n){return!!r.i(f.a)(t.map(o),c(n))}function o(t){return t=t.map(c),t.pop(),t}function c(t){return[t[0]*l.g,t[1]*l.g]}var f=r(125),s=r(121),l=r(0),h={Feature:function(t,n){return e(t.geometry,n)},FeatureCollection:function(t,n){for(var r=t.features,i=-1,u=r.length;++ic.o}).map(v)).concat(r.i(o.v)(r.i(c.u)(h/m)*m,l,m).filter(function(t){return r.i(c.p)(t%w)>c.o}).map(g))}var u,a,f,s,l,h,d,p,v,g,y,_,b=10,m=b,x=90,w=360,M=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[y(s).concat(_(d).slice(1),y(f).reverse().slice(1),_(p).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(s=+n[0][0],f=+n[1][0],p=+n[0][1],d=+n[1][1],s>f&&(n=s,s=f,f=n),p>d&&(n=p,p=d,d=n),t.precision(M)):[[s,p],[f,d]]},t.extentMinor=function(n){return arguments.length?(a=+n[0][0],u=+n[1][0],h=+n[0][1],l=+n[1][1],a>u&&(n=a,a=u,u=n),h>l&&(n=h,h=l,l=n),t.precision(M)):[[a,h],[u,l]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(x=+n[0],w=+n[1],t):[x,w]},t.stepMinor=function(n){return arguments.length?(b=+n[0],m=+n[1],t):[b,m]},t.precision=function(n){return arguments.length?(M=+n,v=e(h,l,90),g=i(a,u,M),y=e(p,d,90),_=i(s,f,M),t):M},t.extentMajor([[-180,-90+c.o],[180,90-c.o]]).extentMinor([[-180,-80-c.o],[180,80+c.o]])}function a(){return u()()}var o=r(3),c=r(0);n.a=u,n.b=a},function(t,n,r){"use strict";var e=r(0);n.a=function(t,n){var i=t[0]*e.g,u=t[1]*e.g,a=n[0]*e.g,o=n[1]*e.g,c=r.i(e.c)(u),f=r.i(e.d)(u),s=r.i(e.c)(o),l=r.i(e.d)(o),h=c*r.i(e.c)(i),d=c*r.i(e.d)(i),p=s*r.i(e.c)(a),v=s*r.i(e.d)(a),g=2*r.i(e.f)(r.i(e.n)(r.i(e.t)(o-u)+c*s*r.i(e.t)(a-i))),y=r.i(e.d)(g),_=g?function(t){var n=r.i(e.d)(t*=g)/y,i=r.i(e.d)(g-t)/y,u=i*h+n*p,a=i*d+n*v,o=i*f+n*l;return[r.i(e.e)(a,u)*e.h,r.i(e.e)(o,r.i(e.n)(u*u+a*a))*e.h]}:function(){return[i*e.h,u*e.h]};return _.distance=g,_}},function(t,n,r){"use strict";function e(){g.point=i}function i(t,n){g.point=u,o=f=t,c=s=n}function u(t,n){v.add(s*t-f*n),f=t,s=n}function a(){u(o,c)}var o,c,f,s,l=r(19),h=r(0),d=r(10),p=r.i(l.a)(),v=r.i(l.a)(),g={point:d.a,lineStart:d.a,lineEnd:d.a,polygonStart:function(){g.lineStart=e,g.lineEnd=a},polygonEnd:function(){g.lineStart=g.lineEnd=g.point=d.a,p.add(r.i(h.p)(v)),v.reset()},result:function(){var t=p/2;return p.reset(),t}};n.a=g},function(t,n,r){"use strict";function e(t,n){y+=t,_+=n,++b}function i(){N.point=u}function u(t,n){N.point=a,e(p=t,v=n)}function a(t,n){var i=t-p,u=n-v,a=r.i(g.n)(i*i+u*u);m+=a*(p+t)/2,x+=a*(v+n)/2,w+=a,e(p=t,v=n)}function o(){N.point=e}function c(){N.point=s}function f(){l(h,d)}function s(t,n){N.point=l,e(h=p=t,d=v=n)}function l(t,n){var i=t-p,u=n-v,a=r.i(g.n)(i*i+u*u);m+=a*(p+t)/2,x+=a*(v+n)/2,w+=a,a=v*t-p*n,M+=a*(p+t),k+=a*(v+n),T+=3*a,e(p=t,v=n)}var h,d,p,v,g=r(0),y=0,_=0,b=0,m=0,x=0,w=0,M=0,k=0,T=0,N={point:e,lineStart:i,lineEnd:o,polygonStart:function(){N.lineStart=c,N.lineEnd=f},polygonEnd:function(){N.point=e,N.lineStart=i,N.lineEnd=o},result:function(){var t=T?[M/T,k/T]:w?[m/w,x/w]:b?[y/b,_/b]:[NaN,NaN];return y=_=b=m=x=w=M=k=T=0,t}};n.a=N},function(t,n,r){"use strict";function e(t){this._context=t}var i=r(0),u=r(10);n.a=e,e.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,i.b)}},result:u.a}},function(t,n,r){"use strict";var e=r(60),i=r(13),u=r(254),a=r(123),o=r(255),c=r(256),f=r(258),s=r(259);n.a=function(t,n){function l(t){return t&&("function"==typeof p&&d.pointRadius(+p.apply(this,arguments)),r.i(i.a)(t,h(d))),d.result()}var h,d,p=4.5;return l.area=function(t){return r.i(i.a)(t,h(u.a)),u.a.result()},l.measure=function(t){return r.i(i.a)(t,h(f.a)),f.a.result()},l.bounds=function(t){return r.i(i.a)(t,h(a.a)),a.a.result()},l.centroid=function(t){return r.i(i.a)(t,h(o.a)),o.a.result()},l.projection=function(n){return arguments.length?(h=null==n?(t=null,e.a):(t=n).stream,l):t},l.context=function(t){return arguments.length?(d=null==t?(n=null,new s.a):new c.a(n=t),"function"!=typeof p&&d.pointRadius(p),l):n},l.pointRadius=function(t){return arguments.length?(p="function"==typeof t?t:(d.pointRadius(+t),+t),l):p},l.projection(t).context(n)}},function(t,n,r){"use strict";function e(t,n){p.point=i,a=c=t,o=f=n}function i(t,n){c-=t,f-=n,d.add(r.i(l.n)(c*c+f*f)),c=t,f=n}var u,a,o,c,f,s=r(19),l=r(0),h=r(10),d=r.i(s.a)(),p={point:h.a,lineStart:function(){p.point=e},lineEnd:function(){u&&i(a,o),p.point=h.a},polygonStart:function(){u=!0},polygonEnd:function(){u=null},result:function(){var t=+d;return d.reset(),t}};n.a=p},function(t,n,r){"use strict";function e(){this._string=[]}function i(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}n.a=e,e.prototype={_radius:4.5,_circle:i(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=i(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}}},function(t,n,r){"use strict";function e(t){var n=t.length;return{point:function(r,e){for(var i=-1;++i=.12&&i<.234&&e>=-.425&&e<-.214?v:i>=.166&&i<.234&&e>=-.214&&e<-.115?g:p).invert(t)},t.stream=function(t){return c&&f===t?c:c=e([p.stream(f=t),v.stream(t),g.stream(t)])},t.precision=function(t){return arguments.length?(p.precision(t),v.precision(t),g.precision(t),n()):p.precision()},t.scale=function(n){return arguments.length?(p.scale(n),v.scale(.35*n),g.scale(n),t.translate(p.translate())):p.scale()},t.translate=function(t){if(!arguments.length)return p.translate();var r=p.scale(),e=+t[0],u=+t[1];return s=p.translate(t).clipExtent([[e-.455*r,u-.238*r],[e+.455*r,u+.238*r]]).stream(y),l=v.translate([e-.307*r,u+.201*r]).clipExtent([[e-.425*r+i.o,u+.12*r+i.o],[e-.214*r-i.o,u+.234*r-i.o]]).stream(y),h=g.translate([e-.205*r,u+.212*r]).clipExtent([[e-.214*r+i.o,u+.166*r+i.o],[e-.115*r-i.o,u+.234*r-i.o]]).stream(y),n()},t.fitExtent=function(n,e){return r.i(o.a)(t,n,e)},t.fitSize=function(n,e){return r.i(o.b)(t,n,e)},t.fitWidth=function(n,e){return r.i(o.c)(t,n,e)},t.fitHeight=function(n,e){return r.i(o.d)(t,n,e)},t.scale(1070)}},function(t,n,r){"use strict";var e=r(0),i=r(24),u=r(8);r.d(n,"b",function(){return a});var a=r.i(i.b)(function(t){return r.i(e.n)(2/(1+t))});a.invert=r.i(i.a)(function(t){return 2*r.i(e.f)(t/2)}),n.a=function(){return r.i(u.a)(a).scale(124.75).clipAngle(179.999)}},function(t,n,r){"use strict";var e=r(0),i=r(24),u=r(8);r.d(n,"b",function(){return a});var a=r.i(i.b)(function(t){return(t=r.i(e.s)(t))&&t/r.i(e.d)(t)});a.invert=r.i(i.a)(function(t){return t}),n.a=function(){return r.i(u.a)(a).scale(79.4188).clipAngle(179.999)}},function(t,n,r){"use strict";function e(t){return r.i(u.j)((u.k+t)/2)}function i(t,n){function i(t,n){f>0?n<-u.k+u.o&&(n=-u.k+u.o):n>u.k-u.o&&(n=u.k-u.o);var i=f/r.i(u.r)(e(n),c);return[i*r.i(u.d)(c*t),f-i*r.i(u.c)(c*t)]}var a=r.i(u.c)(t),c=t===n?r.i(u.d)(t):r.i(u.i)(a/r.i(u.c)(n))/r.i(u.i)(e(n)/e(t)),f=a*r.i(u.r)(e(t),c)/c;return c?(i.invert=function(t,n){var e=f-n,i=r.i(u.q)(c)*r.i(u.n)(t*t+e*e);return[r.i(u.e)(t,r.i(u.p)(e))/c*r.i(u.q)(e),2*r.i(u.l)(r.i(u.r)(f/i,1/c))-u.k]},i):o.b}var u=r(0),a=r(61),o=r(64);n.b=i,n.a=function(){return r.i(a.a)(i).scale(109.5).parallels([30,30])}},function(t,n,r){"use strict";function e(t,n){function e(t,n){var e=c-n,u=o*t;return[e*r.i(i.d)(u),c-e*r.i(i.c)(u)]}var u=r.i(i.c)(t),o=t===n?r.i(i.d)(t):(u-r.i(i.c)(n))/(n-t),c=u/o+t;return r.i(i.p)(o)u.o&&--a>0);return[t/(.8707+(o=i*i)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),i]},n.a=function(){return r.i(i.a)(e).scale(175.295)}},function(t,n,r){"use strict";function e(t,n){return[r.i(i.c)(n)*r.i(i.d)(t),r.i(i.d)(n)]}var i=r(0),u=r(24),a=r(8);n.b=e,e.invert=r.i(u.a)(i.f),n.a=function(){return r.i(a.a)(e).scale(249.5).clipAngle(90+i.o)}},function(t,n,r){"use strict";function e(t){return r.i(o.b)({point:function(n,r){n=t(n,r),this.stream.point(n[0],n[1])}})}function i(t,n){function e(i,u,o,c,s,l,h,d,p,v,g,y,_,b){var m=h-i,x=d-u,w=m*m+x*x;if(w>4*n&&_--){var M=c+v,k=s+g,T=l+y,N=r.i(a.n)(M*M+k*k+T*T),A=r.i(a.f)(T/=N),E=r.i(a.p)(r.i(a.p)(T)-1)n||r.i(a.p)((m*z+x*P)/w-.5)>.3||c*v+s*g+l*y2?t[2]+90:90]):(t=i(),[t[0],t[1],t[2]-90])},i([0,0,90]).scale(159.155)}},function(t,n,r){"use strict";var e=r(275);r.d(n,"a",function(){return e.a});var i=r(66);r.d(n,"b",function(){return i.a});var u=r(287);r.d(n,"c",function(){return u.a});var a=r(130);r.d(n,"d",function(){return a.a});var o=r(129);r.d(n,"e",function(){return o.a});var c=r(288);r.d(n,"f",function(){return c.a});var f=r(289);r.d(n,"g",function(){return f.a});var s=r(290);r.d(n,"h",function(){return s.a});var l=r(292);r.d(n,"i",function(){return l.a});var h=r(291);r.d(n,"j",function(){return h.a});var d=r(25);r.d(n,"k",function(){return d.a});var p=r(37);r.d(n,"l",function(){return p.a});var v=r(294);r.d(n,"m",function(){return v.a});var g=r(67);r.d(n,"n",function(){return g.a});var y=r(293);r.d(n,"o",function(){return y.a})},function(t,n,r){"use strict";function e(t){for(var n,r,e=t.length;e;)r=Math.random()*e--|0,n=t[e],t[e]=t[r],t[r]=n;return t}r.d(n,"b",function(){return i}),n.a=e;var i=Array.prototype.slice},function(t,n,r){"use strict";function e(t,n){return t.parent===n.parent?1:2}function i(t){return t.reduce(u,0)/t.length}function u(t,n){return t+n.x}function a(t){return 1+t.reduce(o,0)}function o(t,n){return Math.max(t,n.y)}function c(t){for(var n;n=t.children;)t=n[0];return t}function f(t){for(var n;n=t.children;)t=n[n.length-1];return t}n.a=function(){function t(t){var e,s=0;t.eachAfter(function(t){var r=t.children;r?(t.x=i(r),t.y=a(r)):(t.x=e?s+=n(t,e):0,t.y=0,e=t)});var l=c(t),h=f(t),d=l.x-n(l,h)/2,p=h.x+n(h,l)/2;return t.eachAfter(o?function(n){n.x=(n.x-t.x)*r,n.y=(t.y-n.y)*u}:function(n){n.x=(n.x-d)/(p-d)*r,n.y=(1-(t.y?n.y/t.y:1))*u})}var n=e,r=1,u=1,o=!1;return t.separation=function(r){return arguments.length?(n=r,t):n},t.size=function(n){return arguments.length?(o=!1,r=+n[0],u=+n[1],t):o?null:[r,u]},t.nodeSize=function(n){return arguments.length?(o=!0,r=+n[0],u=+n[1],t):o?[r,u]:null},t}},function(t,n,r){"use strict";n.a=function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n}},function(t,n,r){"use strict";function e(t){var n=0,r=t.children,e=r&&r.length;if(e)for(;--e>=0;)n+=r[e].value;else n=1;t.value=n}n.a=function(){return this.eachAfter(e)}},function(t,n,r){"use strict";n.a=function(){var t=[];return this.each(function(n){t.push(n)}),t}},function(t,n,r){"use strict";n.a=function(t){var n,r,e,i,u=this,a=[u];do{for(n=a.reverse(),a=[];u=n.pop();)if(t(u),r=u.children)for(e=0,i=r.length;e=0;--r)i.push(n[r]);return this}},function(t,n,r){"use strict";n.a=function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t}},function(t,n,r){"use strict";n.a=function(){var t=this,n=[];return t.each(function(r){r!==t&&n.push({source:r.parent,target:r})}),n}},function(t,n,r){"use strict";function e(t,n){if(t===n)return t;var r=t.ancestors(),e=n.ancestors(),i=null;for(t=r.pop(),n=e.pop();t===n;)i=t,t=r.pop(),n=e.pop();return i}n.a=function(t){for(var n=this,r=e(n,t),i=[n];n!==r;)n=n.parent,i.push(n);for(var u=i.length;t!==r;)i.splice(u,0,t),t=t.parent;return i}},function(t,n,r){"use strict";n.a=function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})}},function(t,n,r){"use strict";n.a=function(t){return this.eachAfter(function(n){for(var r=+t(n.data)||0,e=n.children,i=e&&e.length;--i>=0;)r+=e[i].value;n.value=r})}},function(t,n,r){"use strict";function e(t){return Math.sqrt(t.value)}function i(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function u(t,n){return function(e){if(i=e.children){var i,u,a,c=i.length,f=t(e)*n||0;if(f)for(u=0;u0)throw new Error("cycle");return i}var n=e,s=i;return t.id=function(e){return arguments.length?(n=r.i(u.a)(e),t):n},t.parentId=function(n){return arguments.length?(s=r.i(u.a)(n),t):s},t}},function(t,n,r){"use strict";function e(t,n){return t.parent===n.parent?1:2}function i(t){var n=t.children;return n?n[0]:t.t}function u(t){var n=t.children;return n?n[n.length-1]:t.t}function a(t,n,r){var e=r/(n.i-t.i);n.c-=e,n.s+=r,t.c+=e,n.z+=r,n.m+=r}function o(t){for(var n,r=0,e=0,i=t.children,u=i.length;--u>=0;)n=i[u],n.z+=r,n.m+=r,r+=n.s+(e+=n.c)}function c(t,n,r){return t.a.parent===n.parent?t.a:r}function f(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 s(t){for(var n,r,e,i,u,a=new f(t,0),o=[a];n=o.pop();)if(e=n._.children)for(n.children=new Array(u=e.length),i=u-1;i>=0;--i)o.push(r=n.children[i]=new f(e[i],i)),r.parent=n;return(a.parent=new f(null,0)).children=[a],a}var l=r(66);f.prototype=Object.create(l.b.prototype),n.a=function(){function t(t){var e=s(t);if(e.eachAfter(n),e.parent.m=-e.z,e.eachBefore(r),v)t.eachBefore(l);else{var i=t,u=t,a=t;t.eachBefore(function(t){t.xu.x&&(u=t),t.depth>a.depth&&(a=t)});var o=i===u?1:h(i,u)/2,c=o-i.x,f=d/(u.x+o+c),g=p/(a.depth||1);t.eachBefore(function(t){t.x=(t.x+c)*f,t.y=t.depth*g})}return t}function n(t){var n=t.children,r=t.parent.children,e=t.i?r[t.i-1]:null;if(n){o(t);var i=(n[0].z+n[n.length-1].z)/2;e?(t.z=e.z+h(t._,e._),t.m=t.z-i):t.z=i}else e&&(t.z=e.z+h(t._,e._));t.parent.A=f(t,e,t.parent.A||r[0])}function r(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function f(t,n,r){if(n){for(var e,o=t,f=t,s=n,l=o.parent.children[0],d=o.m,p=f.m,v=s.m,g=l.m;s=u(s),o=i(o),s&&o;)l=i(l),f=u(f),f.a=t,e=s.z+v-o.z-d+h(s._,o._),e>0&&(a(c(s,t,r),t,e),d+=e,p+=e),v+=s.m,d+=o.m,g+=l.m,p+=f.m;s&&!u(f)&&(f.t=s,f.m+=v-p),o&&!i(l)&&(l.t=o,l.m+=d-g,r=t)}return r}function l(t){t.x*=d,t.y=t.depth*p}var h=e,d=1,p=1,v=null;return t.separation=function(n){return arguments.length?(h=n,t):h},t.size=function(n){return arguments.length?(v=!1,d=+n[0],p=+n[1],t):v?null:[d,p]},t.nodeSize=function(n){return arguments.length?(v=!0,d=+n[0],p=+n[1],t):v?[d,p]:null},t}},function(t,n,r){"use strict";n.a=function(t,n,r,e,i){function u(t,n,r,e,i,a,o){if(t>=n-1){var f=c[t];return f.x0=e,f.y0=i,f.x1=a,f.y1=o,void 0}for(var l=s[t],h=r/2+l,d=t+1,p=n-1;d>>1;s[v]o-i){var _=(e*y+a*g)/r;u(t,d,g,e,i,_,o),u(d,n,y,_,i,a,o)}else{var b=(i*y+o*g)/r;u(t,d,g,e,i,a,b),u(d,n,y,e,b,a,o)}}var a,o,c=t.children,f=c.length,s=new Array(f+1);for(s[0]=o=a=0;a1?n:1)},a}(u.c)},function(t,n,r){"use strict";var e=r(25),i=r(37);n.a=function(t,n,r,u,a){(1&t.depth?i.a:e.a)(t,n,r,u,a)}},function(t,n,r){"use strict";function e(t){return function n(e){function a(n,a){var o=t((n=r.i(i.f)(n)).h,(a=r.i(i.f)(a)).h),c=r.i(u.a)(n.s,a.s),f=r.i(u.a)(n.l,a.l),s=r.i(u.a)(n.opacity,a.opacity);return function(t){return n.h=o(t),n.s=c(t),n.l=f(Math.pow(t,e)),n.opacity=s(t),n+""}}return e=+e,a.gamma=n,a}(1)}var i=r(7),u=r(26);r.d(n,"b",function(){return a}),n.a=e(u.b);var a=e(u.a)},function(t,n,r){"use strict";function e(t){return function(n,e){var a=t((n=r.i(i.e)(n)).h,(e=r.i(i.e)(e)).h),o=r.i(u.a)(n.c,e.c),c=r.i(u.a)(n.l,e.l),f=r.i(u.a)(n.opacity,e.opacity);return function(t){return n.h=a(t),n.c=o(t),n.l=c(t),n.opacity=f(t),n+""}}}var i=r(7),u=r(26);r.d(n,"b",function(){return a}),n.a=e(u.b);var a=e(u.a)},function(t,n,r){"use strict";function e(t){return function(n,e){var a=t((n=r.i(i.c)(n)).h,(e=r.i(i.c)(e)).h),o=r.i(u.a)(n.s,e.s),c=r.i(u.a)(n.l,e.l),f=r.i(u.a)(n.opacity,e.opacity);return function(t){return n.h=a(t),n.s=o(t),n.l=c(t),n.opacity=f(t),n+""}}}var i=r(7),u=r(26);r.d(n,"b",function(){return a}),n.a=e(u.b);var a=e(u.a)},function(t,n,r){"use strict";function e(t,n){var e=r.i(u.a)((t=r.i(i.d)(t)).l,(n=r.i(i.d)(n)).l),a=r.i(u.a)(t.a,n.a),o=r.i(u.a)(t.b,n.b),c=r.i(u.a)(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=a(n),t.b=o(n),t.opacity=c(n),t+""}}var i=r(7),u=r(26);n.a=e},function(t,n,r){"use strict";n.a=function(t,n){for(var r=new Array(n),e=0;e180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(a(e)+"rotate(",null,u)-2,x:r.i(i.a)(t,n)})):n&&e.push(a(e)+"rotate("+n+u)}function f(t,n,e,o){t!==n?o.push({i:e.push(a(e)+"skewX(",null,u)-2,x:r.i(i.a)(t,n)}):n&&e.push(a(e)+"skewX("+n+u)}function s(t,n,e,u,o,c){if(t!==e||n!==u){var f=o.push(a(o)+"scale(",null,",",null,")");c.push({i:f-4,x:r.i(i.a)(t,e)},{i:f-2,x:r.i(i.a)(n,u)})}else 1===e&&1===u||o.push(a(o)+"scale("+e+","+u+")")}return function(n,r){var e=[],i=[];return n=t(n),r=t(r),o(n.translateX,n.translateY,r.translateX,r.translateY,e,i),c(n.rotate,r.rotate,e,i),f(n.skewX,r.skewX,e,i),s(n.scaleX,n.scaleY,r.scaleX,r.scaleY,e,i),n=r=null,function(t){for(var n,r=-1,u=i.length;++ro)if(Math.abs(h*f-s*l)>o&&i){var p=r-a,v=e-c,g=f*f+s*s,y=p*p+v*v,_=Math.sqrt(g),b=Math.sqrt(d),m=i*Math.tan((u-Math.acos((g+d-y)/(2*_*b)))/2),x=m/b,w=m/_;Math.abs(x-1)>o&&(this._+="L"+(t+x*l)+","+(n+x*h)),this._+="A"+i+","+i+",0,0,"+ +(h*p>l*v)+","+(this._x1=t+w*f)+","+(this._y1=n+w*s)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,r,e,i,f){t=+t,n=+n,r=+r;var s=r*Math.cos(e),l=r*Math.sin(e),h=t+s,d=n+l,p=1^f,v=f?e-i:i-e;if(r<0)throw new Error("negative radius: "+r);null===this._x1?this._+="M"+h+","+d:(Math.abs(this._x1-h)>o||Math.abs(this._y1-d)>o)&&(this._+="L"+h+","+d),r&&(v<0&&(v=v%a+a),v>c?this._+="A"+r+","+r+",0,1,"+p+","+(t-s)+","+(n-l)+"A"+r+","+r+",0,1,"+p+","+(this._x1=h)+","+(this._y1=d):v>o&&(this._+="A"+r+","+r+",0,"+ +(v>=u)+","+p+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=n+r*Math.sin(i))))},rect:function(t,n,r,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +r+"v"+ +e+"h"+-r+"Z"},toString:function(){return this._}},n.a=i},function(t,n,r){"use strict";var e=r(307);r.d(n,"a",function(){return e.a});var i=r(308);r.d(n,"b",function(){return i.a});var u=r(311);r.d(n,"c",function(){return u.a});var a=r(309);r.d(n,"d",function(){return a.a});var o=r(312);r.d(n,"e",function(){return o.a})},function(t,n,r){"use strict";n.a=function(t){for(var n,r=-1,e=t.length,i=t[e-1],u=0;++ro!=f>o&&a<(c-r)*(o-e)/(f-e)+r&&(s=!s),c=r,f=e;return s}},function(t,n,r){"use strict";n.a=function(t,n,r){return(n[0]-t[0])*(r[1]-t[1])-(n[1]-t[1])*(r[0]-t[0])}},function(t,n,r){"use strict";function e(t,n){return t[0]-n[0]||t[1]-n[1]}function i(t){for(var n=t.length,e=[0,1],i=2,a=2;a1&&r.i(u.a)(t[e[i-2]],t[e[i-1]],t[a])<=0;)--i;e[i++]=a}return e.slice(0,i)}var u=r(310);n.a=function(t){if((r=t.length)<3)return null;var n,r,u=new Array(r),a=new Array(r);for(n=0;n=0;--n)l.push(t[u[o[n]][2]]);for(n=+f;n=(u=(v+y)/2))?v=u:y=u,(s=r>=(a=(g+_)/2))?g=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(o=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===o&&r===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(u=(v+y)/2))?v=u:y=u,(s=r>=(a=(g+_)/2))?g=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|o>=u));return i[h]=d,i[l]=p,t}function i(t){var n,r,i,u,a=t.length,o=new Array(a),c=new Array(a),f=1/0,s=1/0,l=-1/0,h=-1/0;for(r=0;rl&&(l=i),uh&&(h=u));for(lt||t>i||e>n||n>u))return this;var a,o,c=i-r,f=this._root;switch(o=(n<(e+u)/2)<<1|t<(r+i)/2){case 0:do{a=new Array(4),a[o]=f,f=a}while(c*=2,i=r+c,u=e+c,t>i||n>u);break;case 1:do{a=new Array(4),a[o]=f,f=a}while(c*=2,r=i-c,u=e+c,r>t||n>u);break;case 2:do{a=new Array(4),a[o]=f,f=a}while(c*=2,i=r+c,e=u-c,t>i||e>n);break;case 3:do{a=new Array(4),a[o]=f,f=a}while(c*=2,r=i-c,e=u-c,r>t||e>n)}this._root&&this._root.length&&(this._root=f)}return this._x0=r,this._y0=e,this._x1=i,this._y1=u,this}},function(t,n,r){"use strict";n.a=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t}},function(t,n,r){"use strict";n.a=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]]}},function(t,n,r){"use strict";var e=r(71);n.a=function(t,n,r){var i,u,a,o,c,f,s,l=this._x0,h=this._y0,d=this._x1,p=this._y1,v=[],g=this._root;for(g&&v.push(new e.a(g,l,h,d,p)),null==r?r=1/0:(l=t-r,h=n-r,d=t+r,p=n+r,r*=r);f=v.pop();)if(!(!(g=f.node)||(u=f.x0)>d||(a=f.y0)>p||(o=f.x1)=_)<<1|t>=y)&&(f=v[v.length-1],v[v.length-1]=v[v.length-1-s],v[v.length-1-s]=f)}else{var b=t-+this._x.call(null,g.data),m=n-+this._y.call(null,g.data),x=b*b+m*m;if(x=(o=(p+g)/2))?p=o:g=o,(s=a>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(r=n,h=l)}for(;d.data!==t;)if(e=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,e?(i?e.next=i:delete e.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(r?r[h]=d:this._root=d),this):(this._root=i,this)}},function(t,n,r){"use strict";n.a=function(){return this._root}},function(t,n,r){"use strict";n.a=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t}},function(t,n,r){"use strict";var e=r(71);n.a=function(t){var n,r,i,u,a,o,c=[],f=this._root;for(f&&c.push(new e.a(f,this._x0,this._y0,this._x1,this._y1));n=c.pop();)if(!t(f=n.node,i=n.x0,u=n.y0,a=n.x1,o=n.y1)&&f.length){var s=(i+a)/2,l=(u+o)/2;(r=f[3])&&c.push(new e.a(r,s,l,a,o)),(r=f[2])&&c.push(new e.a(r,i,l,s,o)),(r=f[1])&&c.push(new e.a(r,s,u,a,l)),(r=f[0])&&c.push(new e.a(r,i,u,s,l))}return this}},function(t,n,r){"use strict";var e=r(71);n.a=function(t){var n,r=[],i=[];for(this._root&&r.push(new e.a(this._root,this._x0,this._y0,this._x1,this._y1));n=r.pop();){var u=n.node;if(u.length){var a,o=n.x0,c=n.y0,f=n.x1,s=n.y1,l=(o+f)/2,h=(c+s)/2;(a=u[0])&&r.push(new e.a(a,o,c,l,h)),(a=u[1])&&r.push(new e.a(a,l,c,f,h)),(a=u[2])&&r.push(new e.a(a,o,h,l,s)),(a=u[3])&&r.push(new e.a(a,l,h,f,s))}i.push(n)}for(;n=i.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this}},function(t,n,r){"use strict";function e(t){return t[0]}n.a=e,n.b=function(t){return arguments.length?(this._x=t,this):this._x}},function(t,n,r){"use strict";function e(t){return t[1]}n.a=e,n.b=function(t){return arguments.length?(this._y=t,this):this._y}},function(t,n,r){"use strict";var e=r(328);r.d(n,"a",function(){return e.a})},function(t,n,r){"use strict";r.d(n,"a",function(){return e});var e=[].slice},function(t,n,r){"use strict";function e(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function i(t){if(!t._start)try{u(t)}catch(n){if(t._tasks[t._ended+t._active-1])o(t,n);else if(!t._data)throw n}}function u(t){for(;t._start=t._waiting&&t._active=0;)if((r=t._tasks[e])&&(t._tasks[e]=null,r.abort))try{r.abort()}catch(n){}t._active=NaN,c(t)}function c(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function f(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new e(t)}var s=r(327);n.a=f;var l={};e.prototype=f.prototype={constructor:e,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var n=s.a.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),i(this),this},abort:function(){return null==this._error&&o(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(n,r){t.apply(null,[n].concat(r))},c(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,c(this),this}}},function(t,n,r){"use strict";var e=r(333);r.d(n,"a",function(){return e.a});var i=r(140);r.d(n,"b",function(){return i.a});var u=r(332);r.d(n,"c",function(){return u.a});var a=r(330);r.d(n,"d",function(){return a.a});var o=r(139);r.d(n,"e",function(){return o.a});var c=r(331);r.d(n,"f",function(){return c.a})},function(t,n,r){"use strict";var e=r(20),i=r(139);n.a=function t(n){function r(t){var r=i.a.source(n)(t);return function(){return r()/t}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(20);n.a=function t(n){function r(t){return function(){return-Math.log(1-n())/t}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(20),i=r(140);n.a=function t(n){function r(){var t=i.a.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(20);n.a=function t(n){function r(t,r){return t=null==t?0:+t,r=null==r?1:+r,1===arguments.length?(r=t,t=0):r-=t,function(){return n()*r+t}}return r.source=t,r}(e.a)},function(t,n,r){"use strict";var e=r(72);r.d(n,"a",function(){return e.a});var i=r(336);r.d(n,"b",function(){return i.a});var u=r(337);r.d(n,"c",function(){return u.a});var a=r(338);r.d(n,"d",function(){return a.a});var o=r(340);r.d(n,"e",function(){return o.a});var c=r(335);r.d(n,"f",function(){return c.a});var f=r(339);r.d(n,"g",function(){return f.a})},function(t,n,r){"use strict";var e=r(55),i=r(141);n.a=r.i(i.a)("text/csv",e.b)},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)})},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("application/json",function(t){return JSON.parse(t.responseText)})},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("text/plain",function(t){return t.responseText})},function(t,n,r){"use strict";var e=r(55),i=r(141);n.a=r.i(i.a)("text/tab-separated-values",e.f)},function(t,n,r){"use strict";var e=r(39);n.a=r.i(e.a)("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n})},function(t,n,r){"use strict";var e=r(342);r.d(n,"a",function(){return e.a}),r.d(n,"b",function(){return e.b});var i=r(348);r.d(n,"c",function(){return i.a});var u=r(28);r.d(n,"d",function(){return u.a});var a=r(349);r.d(n,"e",function(){return a.a});var o=r(144);r.d(n,"f",function(){return o.a}),r.d(n,"g",function(){return o.b});var c=r(350);r.d(n,"h",function(){return c.a}),r.d(n,"i",function(){return c.b});var f=r(351);r.d(n,"j",function(){return f.a});var s=r(352);r.d(n,"k",function(){return s.a});var l=r(355);r.d(n,"l",function(){return l.a});var h=r(145);r.d(n,"m",function(){return h.a});var d=r(357);r.d(n,"n",function(){return d.a});var p=r(343);r.d(n,"o",function(){return p.a});var v=r(345);r.d(n,"p",function(){return v.a});var g=r(346);r.d(n,"q",function(){return g.a});var y=r(344);r.d(n,"r",function(){return y.a});var _=r(347);r.d(n,"s",function(){return _.a});var b=r(353);r.d(n,"t",function(){return b.a}),r.d(n,"u",function(){return b.b}),r.d(n,"v",function(){return b.c});var m=r(358);r.d(n,"w",function(){return m.a}),r.d(n,"x",function(){return m.b}),r.d(n,"y",function(){return m.c}),r.d(n,"z",function(){return m.d});var x=r(354);r.d(n,"A",function(){return x.a})},function(t,n,r){"use strict";function e(){function t(){var t=c().length,e=s[1]0){for(;la)break;y.push(f)}}else for(;l=1;--c)if(!((f=o*c)a)break;y.push(f)}}else y=r.i(s.z)(l,d,Math.min(d-l,p)).map(g);return n?y.reverse():y},n.tickFormat=function(t,e){if(null==e&&(e=10===h?".0e":","),"function"!=typeof e&&(e=r.i(l.b)(e)),t===1/0)return e;null==t&&(t=10);var i=Math.max(1,h*t/n.ticks().length);return function(t){var n=t/g(Math.round(v(t)));return n*h0?c[n-1]:a[0],n=f?[s[f-1],c]:[s[n-1],s[n]]},t.copy=function(){return e().domain([o,c]).range(l)},r.i(a.b)(t)}var i=r(3),u=r(15),a=r(28);n.a=e},function(t,n,r){"use strict";var e=r(7),i=r(4);r.d(n,"b",function(){return u}),r.d(n,"c",function(){return a});var u=r.i(i.v)(r.i(e.f)(-100,.75,.35),r.i(e.f)(80,1.5,.8)),a=r.i(i.v)(r.i(e.f)(260,.75,.35),r.i(e.f)(80,1.5,.8)),o=r.i(e.f)();n.a=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return o.h=360*t-100,o.s=1.5-1.5*n,o.l=.8-.9*n,o+""}},function(t,n,r){"use strict";function e(t){function n(n){var r=(n-u)/(a-u);return t(o?Math.max(0,Math.min(1,r)):r)}var u=0,a=1,o=!1;return n.domain=function(t){return arguments.length?(u=+t[0],a=+t[1],n):[u,a]},n.clamp=function(t){return arguments.length?(o=!!t,n):o},n.interpolator=function(r){return arguments.length?(t=r,n):t},n.copy=function(){return e(t).domain([u,a]).clamp(o)},r.i(i.b)(n)}var i=r(28);n.a=e},function(t,n,r){"use strict";function e(){function t(t){if(t<=t)return a[r.i(i.a)(n,t,0,o)]}var n=[.5],a=[0,1],o=1;return t.domain=function(r){return arguments.length?(n=u.b.call(r),o=Math.min(n.length,a.length-1),t):n.slice()},t.range=function(r){return arguments.length?(a=u.b.call(r),o=Math.min(n.length,a.length-1),t):a.slice()},t.invertExtent=function(t){var r=a.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return e().domain(n).range(a)},t}var i=r(3),u=r(15);n.a=e},function(t,n,r){"use strict";var e=r(3),i=r(58);n.a=function(t,n,u){var a,o=t[0],c=t[t.length-1],f=r.i(e.B)(o,c,null==n?10:n);switch(u=r.i(i.e)(null==u?",f":u),u.type){case"s":var s=Math.max(Math.abs(o),Math.abs(c));return null!=u.precision||isNaN(a=r.i(i.g)(f,s))||(u.precision=a),r.i(i.c)(u,s);case"":case"e":case"g":case"p":case"r":null!=u.precision||isNaN(a=r.i(i.h)(f,Math.max(Math.abs(o),Math.abs(c))))||(u.precision=a-("e"===u.type));break;case"f":case"%":null!=u.precision||isNaN(a=r.i(i.f)(f))||(u.precision=a-2*("%"===u.type))}return r.i(i.b)(u)}},function(t,n,r){"use strict";var e=r(145),i=r(85),u=r(46);n.a=function(){return r.i(e.b)(u._7,u._5,u.P,u.N,u.L,u.J,u.h,u.d,i.d).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])}},function(t,n,r){"use strict";function e(t){var n=t.length;return function(r){return t[Math.max(0,Math.min(n-1,Math.floor(r*n)))]}}var i=r(27);r.d(n,"b",function(){return u}),r.d(n,"c",function(){return a}),r.d(n,"d",function(){return o}),n.a=e(r.i(i.a)("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var u=e(r.i(i.a)("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),a=e(r.i(i.a)("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),o=e(r.i(i.a)("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"))},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(){return new i}function i(){this._="@"+(++u).toString(36)}n.a=e;var u=0;i.prototype=e.prototype={constructor:i,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}}},function(t,n,r){"use strict";var e=r(79),i=r(41);n.a=function(t){var n=r.i(e.a)();return n.changedTouches&&(n=n.changedTouches[0]),r.i(i.a)(t,n)}},function(t,n,r){"use strict";var e=r(5);n.a=function(t){return"string"==typeof t?new e.b([[document.querySelector(t)]],[document.documentElement]):new e.b([[t]],e.c)}},function(t,n,r){"use strict";var e=r(5);n.a=function(t){return"string"==typeof t?new e.b([document.querySelectorAll(t)],[document.documentElement]):new e.b([null==t?[]:t],e.c)}},function(t,n,r){"use strict";var e=r(74);n.a=function(t){var n="function"==typeof t?t:r.i(e.a)(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})}},function(t,n,r){"use strict";function e(t){return function(){this.removeAttribute(t)}}function i(t){return function(){this.removeAttributeNS(t.space,t.local)}}function u(t,n){return function(){this.setAttribute(t,n)}}function a(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function o(t,n){return function(){var r=n.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function c(t,n){return function(){var r=n.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}var f=r(75);n.a=function(t,n){var s=r.i(f.a)(t);if(arguments.length<2){var l=this.node();return s.local?l.getAttributeNS(s.space,s.local):l.getAttribute(s)}return this.each((null==n?s.local?i:e:"function"==typeof n?s.local?c:o:s.local?a:u)(s,n))}},function(t,n,r){"use strict";n.a=function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}},function(t,n,r){"use strict";function e(t){return t.trim().split(/^|\s+/)}function i(t){return t.classList||new u(t)}function u(t){this._node=t,this._names=e(t.getAttribute("class")||"")}function a(t,n){for(var r=i(t),e=-1,u=n.length;++e=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}},n.a=function(t,n){var r=e(t+"");if(arguments.length<2){for(var u=i(this.node()),a=-1,o=r.length;++a=T&&(T=k+1);!(M=x[T])&&++T=0;)(e=i[u])&&(a&&a!==e.nextSibling&&a.parentNode.insertBefore(e,a),a=e);return this}},function(t,n,r){"use strict";function e(t){return function(){delete this[t]}}function i(t,n){return function(){this[t]=n}}function u(t,n){return function(){var r=n.apply(this,arguments);null==r?delete this[t]:this[t]=r}}n.a=function(t,n){return arguments.length>1?this.each((null==n?e:"function"==typeof n?u:i)(t,n)):this.node()[t]}},function(t,n,r){"use strict";function e(){this.nextSibling&&this.parentNode.appendChild(this)}n.a=function(){return this.each(e)}},function(t,n,r){"use strict";function e(){var t=this.parentNode;t&&t.removeChild(this)}n.a=function(){return this.each(e)}},function(t,n,r){"use strict";var e=r(5),i=r(78);n.a=function(t){"function"!=typeof t&&(t=r.i(i.a)(t));for(var n=this._groups,u=n.length,a=new Array(u),o=0;on?1:t>=n?0:NaN}var i=r(5);n.a=function(t){function n(n,r){return n&&r?t(n.__data__,r.__data__):!n-!r}t||(t=e);for(var r=this._groups,u=r.length,a=new Array(u),o=0;oz*z+P*P&&(N=E,A=S),{cx:N,cy:A,x01:-l,y01:-d,x11:N*(u/M-1),y11:A*(u/M-1)}}var s=r(14),l=r(16),h=r(29);n.a=function(){function t(){var t,e,i=+n.apply(this,arguments),u=+d.apply(this,arguments),a=g.apply(this,arguments)-h.f,o=y.apply(this,arguments)-h.f,l=r.i(h.g)(o-a),m=o>a;if(b||(b=t=r.i(s.a)()),uh.a)if(l>h.c-h.a)b.moveTo(u*r.i(h.h)(a),u*r.i(h.i)(a)),b.arc(0,0,u,a,o,!m),i>h.a&&(b.moveTo(i*r.i(h.h)(o),i*r.i(h.i)(o)),b.arc(0,0,i,o,a,m));else{var x,w,M=a,k=o,T=a,N=o,A=l,E=l,S=_.apply(this,arguments)/2,C=S>h.a&&(v?+v.apply(this,arguments):r.i(h.d)(i*i+u*u)),q=r.i(h.j)(r.i(h.g)(u-i)/2,+p.apply(this,arguments)),z=q,P=q;if(C>h.a){var D=r.i(h.k)(C/i*r.i(h.i)(S)),L=r.i(h.k)(C/u*r.i(h.i)(S));(A-=2*D)>h.a?(D*=m?1:-1,T+=D,N-=D):(A=0,T=N=(a+o)/2),(E-=2*L)>h.a?(L*=m?1:-1,M+=L,k-=L):(E=0,M=k=(a+o)/2)}var R=u*r.i(h.h)(M),U=u*r.i(h.i)(M),j=i*r.i(h.h)(N),O=i*r.i(h.i)(N);if(q>h.a){var I=u*r.i(h.h)(k),F=u*r.i(h.i)(k),Y=i*r.i(h.h)(T),B=i*r.i(h.i)(T);if(lh.a?c(R,U,Y,B,I,F,j,O):[j,O],X=R-H[0],V=U-H[1],G=I-H[0],W=F-H[1],Z=1/r.i(h.i)(r.i(h.l)((X*G+V*W)/(r.i(h.d)(X*X+V*V)*r.i(h.d)(G*G+W*W)))/2),Q=r.i(h.d)(H[0]*H[0]+H[1]*H[1]);z=r.i(h.j)(q,(i-Q)/(Z-1)),P=r.i(h.j)(q,(u-Q)/(Z+1))}}E>h.a?P>h.a?(x=f(Y,B,R,U,u,P,m),w=f(I,F,j,O,u,P,m),b.moveTo(x.cx+x.x01,x.cy+x.y01),Ph.a&&A>h.a?z>h.a?(x=f(j,O,I,F,i,-z,m),w=f(R,U,Y,B,i,-z,m),b.lineTo(x.cx+x.x01,x.cy+x.y01),z0)for(var e,i=t[0],u=n[0],a=t[r]-i,o=n[r]-u,c=-1;++c<=r;)e=c/r,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+e*a),this._beta*n[c]+(1-this._beta)*(u+e*o));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}},n.a=function t(n){function r(t){return 1===n?new i.b(t):new e(t,n)}return r.beta=function(n){return t(+n)},r}(.85)},function(t,n,r){"use strict";function e(t,n){this._context=t,this._alpha=n}var i=r(153),u=r(45),a=r(81);e.prototype={areaStart:u.a,areaEnd:u.a,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,i=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,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:r.i(a.b)(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}},n.a=function t(n){function r(t){return n?new e(t,n):new i.b(t,0)}return r.alpha=function(n){return t(+n)},r}(.5)},function(t,n,r){"use strict";function e(t,n){this._context=t,this._alpha=n}var i=r(154),u=r(81);e.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,i=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,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:r.i(u.b)(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}},n.a=function t(n){function r(t){return n?new e(t,n):new i.b(t,0)}return r.alpha=function(n){return t(+n)},r}(.5)},function(t,n,r){"use strict";function e(t){this._context=t}var i=r(45);e.prototype={areaStart:i.a,areaEnd:i.a,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))}},n.a=function(t){return new e(t)}},function(t,n,r){"use strict";function e(t){return t<0?-1:1}function i(t,n,r){var i=t._x1-t._x0,u=n-t._x1,a=(t._y1-t._y0)/(i||u<0&&-0),o=(r-t._y1)/(u||i<0&&-0),c=(a*u+o*i)/(i+u);return(e(a)+e(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(c))||0}function u(t,n){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-n)/2:n}function a(t,n,r){var e=t._x0,i=t._y0,u=t._x1,a=t._y1,o=(u-e)/3;t._context.bezierCurveTo(e+o,i+o*n,u-o,a-o*r,u,a)}function o(t){this._context=t}function c(t){this._context=new f(t)}function f(t){this._context=t}function s(t){return new o(t)}function l(t){return new c(t)}n.a=s,n.b=l,o.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:a(this,this._t0,u(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var r=NaN;if(t=+t,n=+n,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,a(this,u(this,r=i(this,t,n)),r);break;default:a(this,this._t0,r=i(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=r}}},(c.prototype=Object.create(o.prototype)).point=function(t,n){o.prototype.point.call(this,n,t)},f.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,r,e,i,u){this._context.bezierCurveTo(n,t,e,r,u,i)}}},function(t,n,r){"use strict";function e(t){this._context=t}function i(t){var n,r,e=t.length-1,i=new Array(e),u=new Array(e),a=new Array(e);for(i[0]=0,u[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/u[n];for(u[e-1]=(t[e]+i[e-1])/2,n=0;n=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 r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,n)}}this._x=t,this._y=n}},n.a=function(t){return new e(t,.5)}},function(t,n,r){"use strict";n.a=function(t,n){return nt?1:n>=t?0:NaN}},function(t,n,r){"use strict";n.a=function(t){return t}},function(t,n,r){"use strict";function e(t){return t.source}function i(t){return t.target}function u(t){function n(){var n,e=d.a.call(arguments),i=u.apply(this,e),s=a.apply(this,e);if(f||(f=n=r.i(h.a)()),t(f,+o.apply(this,(e[0]=i,e)),+c.apply(this,e),+o.apply(this,(e[0]=s,e)),+c.apply(this,e)),n)return f=null,n+""||null}var u=e,a=i,o=v.a,c=v.b,f=null;return n.source=function(t){return arguments.length?(u=t,n):u},n.target=function(t){return arguments.length?(a=t,n):a},n.x=function(t){return arguments.length?(o="function"==typeof t?t:r.i(p.a)(+t),n):o},n.y=function(t){return arguments.length?(c="function"==typeof t?t:r.i(p.a)(+t),n):c},n.context=function(t){return arguments.length?(f=null==t?null:t,n):f},n}function a(t,n,r,e,i){t.moveTo(n,r),t.bezierCurveTo(n=(n+e)/2,r,n,i,e,i)}function o(t,n,r,e,i){t.moveTo(n,r),t.bezierCurveTo(n,r=(r+i)/2,e,r,e,i)}function c(t,n,e,i,u){var a=r.i(g.a)(n,e),o=r.i(g.a)(n,e=(e+u)/2),c=r.i(g.a)(i,e),f=r.i(g.a)(i,u);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],c[0],c[1],f[0],f[1])}function f(){return u(a)}function s(){return u(o)}function l(){var t=u(c);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var h=r(14),d=r(152),p=r(16),v=r(84),g=r(157);n.a=f,n.b=s,n.c=l},function(t,n,r){"use strict";n.a=function(t,n){if((o=t.length)>1)for(var r,e,i,u,a,o,c=0,f=t[n[0]].length;c=0?(e[0]=u,e[1]=u+=i):i<0?(e[1]=a,e[0]=a+=i):e[0]=u}},function(t,n,r){"use strict";var e=r(30);n.a=function(t,n){if((u=t.length)>0){for(var i,u,a,o=0,c=t[0].length;o0){for(var i,u=0,a=t[n[0]],o=a.length;u0&&(u=(i=t[n[0]]).length)>0){for(var i,u,a,o=0,c=1;c0&&(p+=h);for(null!=o?v.sort(function(t,n){return o(g[t],g[n])}):null!=c&&v.sort(function(n,r){return c(t[n],t[r])}),r=0,i=p?(_-d*m)/p:0;r0?h*i:0)+m,g[e]={data:t[e],index:r,value:h,startAngle:y,endAngle:u,padAngle:b};return g}var n=u.a,o=i.a,c=null,f=r.i(e.a)(0),s=r.i(e.a)(a.c),l=r.i(e.a)(0);return t.value=function(i){return arguments.length?(n="function"==typeof i?i:r.i(e.a)(+i),t):n},t.sortValues=function(n){return arguments.length?(o=n,c=null,t):o},t.sort=function(n){return arguments.length?(c=n,o=null,t):c},t.startAngle=function(n){return arguments.length?(f="function"==typeof n?n:r.i(e.a)(+n),t):f},t.endAngle=function(n){return arguments.length?(s="function"==typeof n?n:r.i(e.a)(+n),t):s},t.padAngle=function(n){return arguments.length?(l="function"==typeof n?n:r.i(e.a)(+n),t):l},t}},function(t,n,r){"use strict";function e(t,n){return t[n]}var i=r(152),u=r(16),a=r(30),o=r(31);n.a=function(){function t(t){var r,e,i=n.apply(this,arguments),u=t.length,a=i.length,o=new Array(a);for(r=0;r0?t>1?r.i(e.a)(function(n){n.setTime(Math.floor(n/t)*t)},function(n,r){n.setTime(+n+r*t)},function(n,r){return(r-n)/t}):i:null},n.a=i;var u=i.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return a});var u=r.i(e.a)(function(t){t.setTime(Math.floor(t/i.d)*i.d)},function(t,n){t.setTime(+t+n*i.d)},function(t,n){return(n-t)/i.d},function(t){return t.getMinutes()});n.a=u;var a=u.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});n.a=i;var u=i.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return a});var u=r.i(e.a)(function(t){t.setTime(Math.floor(t/i.e)*i.e)},function(t,n){t.setTime(+t+n*i.e)},function(t,n){return(n-t)/i.e},function(t){return t.getUTCSeconds()});n.a=u;var a=u.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return a});var u=r.i(e.a)(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/i.b},function(t){return t.getUTCDate()-1});n.a=u;var a=u.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return a});var u=r.i(e.a)(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+n*i.c)},function(t,n){return(n-t)/i.c},function(t){return t.getUTCHours()});n.a=u;var a=u.range},function(t,n,r){"use strict";var e=r(2),i=r(9);r.d(n,"b",function(){return a});var u=r.i(e.a)(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*i.d)},function(t,n){return(n-t)/i.d},function(t){return t.getUTCMinutes()});n.a=u;var a=u.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});n.a=i;var u=i.range},function(t,n,r){"use strict";function e(t){return r.i(i.a)(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)/u.a})}var i=r(2),u=r(9);r.d(n,"a",function(){return a}),r.d(n,"c",function(){return o}),r.d(n,"e",function(){return c}),r.d(n,"g",function(){return f}),r.d(n,"i",function(){return s}),r.d(n,"k",function(){return l}),r.d(n,"m",function(){return h}),r.d(n,"b",function(){return d}),r.d(n,"d",function(){return p}),r.d(n,"f",function(){return v}),r.d(n,"h",function(){return g}),r.d(n,"j",function(){return y}),r.d(n,"l",function(){return _}),r.d(n,"n",function(){return b});var a=e(0),o=e(1),c=e(2),f=e(3),s=e(4),l=e(5),h=e(6),d=a.range,p=o.range,v=c.range,g=f.range,y=s.range,_=l.range,b=h.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?r.i(e.a)(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,r){n.setUTCFullYear(n.getUTCFullYear()+r*t)}):null},n.a=i;var u=i.range},function(t,n,r){"use strict";function e(t){return r.i(i.a)(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())*u.d)/u.a})}var i=r(2),u=r(9);r.d(n,"a",function(){return a}),r.d(n,"c",function(){return o}),r.d(n,"e",function(){return c}),r.d(n,"g",function(){return f}),r.d(n,"i",function(){return s}),r.d(n,"k",function(){return l}),r.d(n,"m",function(){return h}),r.d(n,"b",function(){return d}),r.d(n,"d",function(){return p}),r.d(n,"f",function(){return v}),r.d(n,"h",function(){return g}),r.d(n,"j",function(){return y}),r.d(n,"l",function(){return _}),r.d(n,"n",function(){return b});var a=e(0),o=e(1),c=e(2),f=e(3),s=e(4),l=e(5),h=e(6),d=a.range,p=o.range,v=c.range,g=f.range,y=s.range,_=l.range,b=h.range},function(t,n,r){"use strict";var e=r(2);r.d(n,"b",function(){return u});var i=r.i(e.a)(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()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?r.i(e.a)(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,r){n.setFullYear(n.getFullYear()+r*t)}):null},n.a=i;var u=i.range},function(t,n,r){"use strict";var e=r(87);n.a=function(t,n,i){var u=new e.d,a=n;return null==n?(u.restart(t,n,i),u):(n=+n,i=null==i?r.i(e.a)():+i,u.restart(function r(e){e+=a,u.restart(r,a+=n,i),t(e)},n,i),u)}},function(t,n,r){"use strict";var e=r(87);n.a=function(t,n,r){var i=new e.d;return n=null==n?0:+n,i.restart(function(r){i.stop(),t(r+n)},n,r),i}},function(t,n,r){"use strict";var e=r(11),i=r(6),u=[null];n.a=function(t,n){var r,a,o=t.__transition;if(o){n=null==n?null:n+"";for(a in o)if((r=o[a]).state>i.d&&r.name===n)return new e.b([[t]],u,n,+a)}return null}},function(t,n,r){"use strict";var e=r(1),i=r(436),u=r(437);e.j.prototype.interrupt=i.a,e.j.prototype.transition=u.a},function(t,n,r){"use strict";var e=r(167);n.a=function(t){return this.each(function(){r.i(e.a)(this,t)})}},function(t,n,r){"use strict";function e(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return c.time=r.i(o.a)(),c;return e}var i=r(11),u=r(6),a=r(107),o=r(47),c={time:null,delay:0,duration:250,ease:a.i};n.a=function(t){var n,a;t instanceof i.b?(n=t._id,t=t._name):(n=r.i(i.c)(),(a=c).time=r.i(o.a)(),t=null==t?null:t+"");for(var f=this._groups,s=f.length,l=0;l=0&&(t=t.slice(0,n)),!t||"start"===t})}function i(t,n,r){var i,a,o=e(n)?u.g:u.e;return function(){var e=o(this,t),u=e.on;u!==i&&(a=(i=u).copy()).on(n,r),e.on=a}}var u=r(6);n.a=function(t,n){var e=this._id;return arguments.length<2?r.i(u.f)(this.node(),e).on.on(t):this.each(i(e,t,n))}},function(t,n,r){"use strict";function e(t){return function(){var n=this.parentNode;for(var r in this.__transition)if(+r!==t)return;n&&n.removeChild(this)}}n.a=function(){return this.on("end.remove",e(this._id))}},function(t,n,r){"use strict";var e=r(1),i=r(11),u=r(6);n.a=function(t){var n=this._name,a=this._id;"function"!=typeof t&&(t=r.i(e.k)(t));for(var o=this._groups,c=o.length,f=new Array(c),s=0;sp.b)v=v.L;else{if(!((a=o-f(v,s))>p.b)){u>-p.b?(n=v.P,e=v):a>-p.b?(n=v,e=v.N):n=e=v;break}if(!v.R){n=v;break}v=v.R}r.i(l.d)(t);var g=i(t);if(p.e.insert(n,g),n||e){if(n===e)return r.i(h.b)(n),e=i(n.site),p.e.insert(g,e),g.edge=e.edge=r.i(d.d)(n.site,g.site),r.i(h.c)(n),void r.i(h.c)(e);if(!e)return void(g.edge=r.i(d.d)(n.site,g.site));r.i(h.b)(n),r.i(h.b)(e);var y=n.site,_=y[0],b=y[1],m=t[0]-_,x=t[1]-b,w=e.site,M=w[0]-_,k=w[1]-b,T=2*(m*k-x*M),N=m*m+x*x,A=M*M+k*k,E=[(k*N-x*A)/T+_,(m*A-M*N)/T+b];r.i(d.c)(e.edge,y,w,E),g.edge=r.i(d.d)(y,t,null,E),e.edge=r.i(d.d)(t,w,null,E),r.i(h.c)(n),r.i(h.c)(e)}}function c(t,n){var r=t.site,e=r[0],i=r[1],u=i-n;if(!u)return e;var a=t.P;if(!a)return-1/0;r=a.site;var o=r[0],c=r[1],f=c-n;if(!f)return o;var s=o-e,l=1/u-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-u/2)))/l+e:(e+o)/2}function f(t,n){var r=t.N;if(r)return c(r,n);var e=t.site;return e[1]===n?e[0]:1/0}var s=r(90),l=r(169),h=r(170),d=r(89),p=r(32);n.b=a,n.a=o;var v=[]},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t){return t[0]}function i(t){return t[1]}n.a=e,n.b=i},function(t,n,r){"use strict";var e=r(456),i=r(457),u=r(32);n.a=function(){function t(t){return new u.a(t.map(function(r,e){var i=[Math.round(n(r,e,t)/u.b)*u.b,Math.round(a(r,e,t)/u.b)*u.b];return i.index=e,i.data=r,i}),o)}var n=i.a,a=i.b,o=null;return t.polygons=function(n){return t(n).polygons()},t.links=function(n){return t(n).links()},t.triangles=function(n){return t(n).triangles()},t.x=function(i){return arguments.length?(n="function"==typeof i?i:r.i(e.a)(+i),t):n},t.y=function(n){return arguments.length?(a="function"==typeof n?n:r.i(e.a)(+n),t):a},t.extent=function(n){return arguments.length?(o=null==n?null:[[+n[0][0],+n[0][1]],[+n[1][0],+n[1][1]]],t):o&&[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},t.size=function(n){return arguments.length?(o=null==n?null:[[0,0],[+n[0],+n[1]]],t):o&&[o[1][0]-o[0][0],o[1][1]-o[0][1]]},t}},function(t,n,r){"use strict";var e=r(463);r.d(n,"a",function(){return e.a});var i=r(171);r.d(n,"b",function(){return i.a}),r.d(n,"c",function(){return i.b})},function(t,n,r){"use strict";n.a=function(t){return function(){return t}}},function(t,n,r){"use strict";function e(t,n,r){this.target=t,this.type=n,this.transform=r}n.a=e},function(t,n,r){"use strict";function e(){i.q.stopImmediatePropagation()}var i=r(1);n.b=e,n.a=function(){i.q.preventDefault(),i.q.stopImmediatePropagation()}},function(t,n,r){"use strict";function e(){return!h.q.button}function i(){var t,n,r=this;return r instanceof SVGElement?(r=r.ownerSVGElement||r,t=r.width.baseVal.value,n=r.height.baseVal.value):(t=r.clientWidth,n=r.clientHeight),[[0,0],[t,n]]}function u(){return this.__zoom||g.b}function a(){return-h.q.deltaY*(h.q.deltaMode?120:1)/500}function o(){return"ontouchstart"in this}function c(t,n,r){var e=t.invertX(n[0][0])-r[0][0],i=t.invertX(n[1][0])-r[1][0],u=t.invertY(n[0][1])-r[0][1],a=t.invertY(n[1][1])-r[1][1];return t.translate(i>e?(e+i)/2:Math.min(0,e)||Math.max(0,i),a>u?(u+a)/2:Math.min(0,u)||Math.max(0,a))}var f=r(12),s=r(54),l=r(4),h=r(1),d=r(88),p=r(460),v=r(461),g=r(171),y=r(462);n.a=function(){function t(t){t.property("__zoom",u).on("wheel.zoom",M).on("mousedown.zoom",k).on("dblclick.zoom",T).filter(L).on("touchstart.zoom",N).on("touchmove.zoom",A).on("touchend.zoom touchcancel.zoom",E).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function n(t,n){return n=Math.max(R[0],Math.min(R[1],n)),n===t.k?t:new g.c(n,t.x,t.y)}function _(t,n,r){var e=n[0]-r[0]*t.k,i=n[1]-r[1]*t.k;return e===t.x&&i===t.y?t:new g.c(t.k,e,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,n,r){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=this,e=arguments,i=x(t,e),u=z.apply(t,e),a=r||b(u),o=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),c=t.__zoom,f="function"==typeof n?n.apply(t,e):n,s=O(c.invert(a).concat(o/c.k),f.invert(a).concat(o/f.k));return function(t){if(1===t)t=f;else{var n=s(t),r=o/n[2];t=new g.c(r,a[0]-n[0]*r,a[1]-n[1]*r)}i.zoom(null,t)}})}function x(t,n){for(var r,e=0,i=I.length;eH}e.zoom("mouse",P(_(e.that.__zoom,e.mouse[0]=r.i(h.d)(e.that),e.mouse[1]),e.extent,U))}function n(){i.on("mousemove.zoom mouseup.zoom",null),r.i(s.c)(h.q.view,e.moved),r.i(y.a)(),e.end()}if(!C&&q.apply(this,arguments)){var e=x(this,arguments),i=r.i(h.h)(h.q.view).on("mousemove.zoom",t,!0).on("mouseup.zoom",n,!0),u=r.i(h.d)(this),a=h.q.clientX,o=h.q.clientY;r.i(s.b)(h.q.view),r.i(y.b)(),e.mouse=[u,this.__zoom.invert(u)],r.i(d.c)(this),e.start()}}function T(){if(q.apply(this,arguments)){var e=this.__zoom,i=r.i(h.d)(this),u=e.invert(i),a=e.k*(h.q.shiftKey?.5:2),o=P(_(n(e,a),i,u),z.apply(this,arguments),U);r.i(y.a)(),j>0?r.i(h.h)(this).transition().duration(j).call(m,o,i):r.i(h.h)(this).call(t.transform,o)}}function N(){if(q.apply(this,arguments)){var t,n,e,i,u=x(this,arguments),a=h.q.changedTouches,o=a.length;for(r.i(y.b)(),n=0;n0&&(l=e("port",s.attr("href"))),l||(l="53333");var h=new WebSocket("ws://localhost:"+l);h.onopen=function(t){},h.onclose=function(t){f.forEach(function(t){return t.stop()})},h.onmessage=function(e){var i=JSON.parse(e.data);switch(i.type){case"configure":t(i);break;case"data":r(i);break;case"status":n(i);break;default:console.log("Got unrecognized message type: "+i.type)}}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(172),a=r(173),o=r(174),c=r(49);i()}]); //# sourceMappingURL=main.bundle.js.map \ No newline at end of file From 2ff13acab2e1e61614f02b96eb4f067124061a55 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 11:50:29 -0400 Subject: [PATCH 15/31] Fixed package declaration for advanced decoders. --- package.json | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d6efc446..1dc71889 100644 --- a/package.json +++ b/package.json @@ -325,7 +325,8 @@ { "properties": { "config": { - "type": "any" + "additionalProperties": true, + "type": "object" }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", @@ -665,7 +666,8 @@ { "properties": { "config": { - "type": "any" + "additionalProperties": true, + "type": "object" }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", @@ -1044,7 +1046,8 @@ { "properties": { "config": { - "type": "any" + "additionalProperties": true, + "type": "object" }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", @@ -1393,7 +1396,8 @@ { "properties": { "config": { - "type": "any" + "additionalProperties": true, + "type": "object" }, "decoder": { "description": "Path to a javascript module to implement the decoding functionality.", From 0ce3b374bc66112a746b8d92a0e3a1bd75c450ce Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 20:12:37 -0400 Subject: [PATCH 16/31] Updated publisher name and README.md --- README.md | 19 +++++++++++-------- package.json | 14 +++++++------- src/frontend/extension.ts | 4 ++-- src/reporting.ts | 2 +- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 69604a77..70cd886b 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,27 @@ # Cortex Debug +![Visual Studio Code with Cortex-Debug Installed](images/vs-code-screenshot.png) + Debugging support for ARM Cortex-M Microcontrollers with the following features: * Supports J-Link or OpenOCD GDB Server * Cortex Core Register Viewer * Peripheral Register Viewer (Defined through standard SVD file) -* SWO Deocding - "console" text output and binary data (signed and unsigned 32-bit integers, Q16.16 fixed point integers) - * Currently SWO decoding is not supported when using OpenOCD on Windows -* Live graphing of SWO decoded data. +* SWO Deocding - "console" text output and binary data (signed and unsigned 32-bit integers, Q16.16 fixed point integers, single percision floating point values) + * Currently decoding of ITM Timestamp and Synchronization packets are not supported; these features will need to be disabled in the code for the microcontroller. +* Support for Custom ITM Data Decoders: + * Ability to define JavaScript modules to decode complex data formats streamed over a particular ITM port. Data can be printed to a output window, or sent to the graphing system. +* Live graphing of decoded ITM data. +* Raw Memory Viewer (From the command menu select Cortex-Debug: View Memory) + +### In Progress Features +* RTOS/Muti-Threaded Support (Dependant on GDB server support) ### Planned Features * Additional Graphing Options -* Raw Memory Viewer * Enhanced SVD Auto-selection * Support for Black Magic Probe -* SWO Decoding for OpenOCD on Windows -* SWO Decoding for 32-bit floating point number ## Installation @@ -27,8 +32,6 @@ Requirements: * J-Link Software Tools - provides the J-Link GDB Server for J-Link based debuggers (https://www.segger.com/downloads/jlink) * OpenOCD - provides a GDB Server that can be used with a number of debuggers (http://openocd.org) -The extension is not currently available through the Visual Studio Code Extension Marketplace, to install download the cortex-debug.vsix extension file (from the releases page https://github.com/Marus/cortex-debug/releases) and install using the 'Extensions: Install from VSIX...' command in Visual Studio Code. - ## Usage See https://marcelball.ca/projects/cortex-debug/ for usage information diff --git a/package.json b/package.json index 1dc71889..0cabc82e 100644 --- a/package.json +++ b/package.json @@ -17,13 +17,13 @@ }, { "category": "Cortex-Debug", - "command": "marus.cortex-debug-openocd.examineMemory", - "title": "View Memory Content" + "command": "marus25.cortex-debug-openocd.examineMemory", + "title": "View Memory" }, { "category": "Cortex-Debug", - "command": "marus.cortex-debug-jlink.examineMemory", - "title": "View Memory Content" + "command": "marus25.cortex-debug-jlink.examineMemory", + "title": "View Memory" } ], "debuggers": [ @@ -1481,11 +1481,11 @@ "when": "false" }, { - "command": "marus.cortex-debug-openocd.examineMemory", + "command": "marus25.cortex-debug-openocd.examineMemory", "when": "debugType == openocd-gdb" }, { - "command": "marus.cortex-debug-jlink.examineMemory", + "command": "marus25.cortex-debug-jlink.examineMemory", "when": "debugType == jlink-gdb" } ], @@ -1563,7 +1563,7 @@ ], "main": "./out/src/frontend/extension", "name": "cortex-debug", - "publisher": "marus", + "publisher": "marus25", "repository": { "type": "git", "url": "https://github.com/Marus/cortex-debug.git" diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index b1af28ae..e86933b0 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -55,8 +55,8 @@ class CortexDebugExtension { context.subscriptions.push(vscode.commands.registerCommand('cortexPeripherals.updateNode', this.peripheralsUpdateNode.bind(this))); context.subscriptions.push(vscode.commands.registerCommand('cortexPeripherals.selectedNode', this.peripheralsSelectedNode.bind(this))); - context.subscriptions.push(vscode.commands.registerCommand('marus.cortex-debug-jlink.examineMemory', this.examineMemory.bind(this))); - context.subscriptions.push(vscode.commands.registerCommand('marus.cortex-debug-openocd.examineMemory', this.examineMemory.bind(this))); + context.subscriptions.push(vscode.commands.registerCommand('marus25.cortex-debug-jlink.examineMemory', this.examineMemory.bind(this))); + context.subscriptions.push(vscode.commands.registerCommand('marus25.cortex-debug-openocd.examineMemory', this.examineMemory.bind(this))); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-jlink', this.peripheralProvider)); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-openocd', this.peripheralProvider)); diff --git a/src/reporting.ts b/src/reporting.ts index 6950a01b..7a869e34 100644 --- a/src/reporting.ts +++ b/src/reporting.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import TelemetryReporter from 'vscode-extension-telemetry'; let reporter: TelemetryReporter; -const extension = vscode.extensions.getExtension('marus.cortex-debug'); +const extension = vscode.extensions.getExtension('marus25.cortex-debug'); const extensionId = extension.id; const extensionVersion = extension.packageJSON.version; From 591cc299bf9e5fb42d8ea1de207f05443270b3cc Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 20:13:45 -0400 Subject: [PATCH 17/31] Fix configuration base --- config_base.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_base.json b/config_base.json index 82d42ee4..56b46dfa 100644 --- a/config_base.json +++ b/config_base.json @@ -252,7 +252,7 @@ "type": "string", "description": "Path to a javascript module to implement the decoding functionality." }, - "config": { "type": "any" } + "config": { "type": "object", "additionalProperties": true } }, "required": ["number", "decoder"] } From af21a9029511b279a7853bbf0d99e7c04551962b Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 20:12:37 -0400 Subject: [PATCH 18/31] Updated publisher name and README.md --- src/frontend/swo/decoders/advanced.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/swo/decoders/advanced.ts b/src/frontend/swo/decoders/advanced.ts index a0d4f20a..7143895b 100644 --- a/src/frontend/swo/decoders/advanced.ts +++ b/src/frontend/swo/decoders/advanced.ts @@ -18,7 +18,7 @@ export class SWOAdvancedProcessor extends EventEmitter implements SWOProcessor { let decoderPath = config.decoder; if(decoderPath == 'protobuf') { - let extension = vscode.extensions.getExtension('marus.cortex-debug'); + let extension = vscode.extensions.getExtension('marus25.cortex-debug'); decoderPath = `${extension.extensionPath}/out/src/frontend/swo/decoders/protobuf.js`; } From 8b548a5ed2ffd666074326e0c23efe091061b33e Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 20:14:38 -0400 Subject: [PATCH 19/31] Update version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0cabc82e..08d6074e 100644 --- a/package.json +++ b/package.json @@ -1573,5 +1573,5 @@ "postinstall": "node ./node_modules/vscode/bin/install", "vscode:prepublish": "tsc -p ./" }, - "version": "0.1.2" + "version": "0.1.4" } \ No newline at end of file From f2347cfd86ef22254d075d80830f7d6d4a29ae9f Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 20:53:19 -0400 Subject: [PATCH 20/31] Updated error message for memory viewer --- src/frontend/memory_content_provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/memory_content_provider.ts b/src/frontend/memory_content_provider.ts index 722b5577..99c7f3b0 100644 --- a/src/frontend/memory_content_provider.ts +++ b/src/frontend/memory_content_provider.ts @@ -56,7 +56,7 @@ export class MemoryContentProvider implements vscode.TextDocumentContentProvider resolve(output); }, (error) => { - vscode.window.showErrorMessage(`Unable to read memory at ${address}`); + vscode.window.showErrorMessage(`Unable to read memory from ${hexFormat(address, 8)} to ${hexFormat(address + length, 8)}`); reject(error.toString()); }); }); From d7edf4c652078acc35f507844f8cde079df9d2f3 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 20:53:31 -0400 Subject: [PATCH 21/31] Added screenshot --- README.md | 2 +- images/vs-code-screenshot.png | Bin 0 -> 358163 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 images/vs-code-screenshot.png diff --git a/README.md b/README.md index 70cd886b..4ad9ae4c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Cortex Debug -![Visual Studio Code with Cortex-Debug Installed](images/vs-code-screenshot.png) +![Visual Studio Code with Cortex-Debug Installed](./images/vs-code-screenshot.png) Debugging support for ARM Cortex-M Microcontrollers with the following features: diff --git a/images/vs-code-screenshot.png b/images/vs-code-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..0392378162595e9eb876f0a3446df299e1ea341f GIT binary patch literal 358163 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
^lE#Vsd4nj0iqA`6ihHkc}%qPpP35b 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

R&KG{@WAjNBjyk@^RXWa+1H!}C#G}@ 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

g>8I(~rdYTG7Ae^P5T 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

Veau`Od5@aq0l34F)Y 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 QbSnzkPF}XJ$s} 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�s$vdYw|sV5%GxM<8&#>=teoS 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

oH6aObTO!FNTfOpM?B&))a#Q1r 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

-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 HT~7TQB?_Tt literal 0 HcmV?d00001 From 55935bd2169168f524c40e0b4783c802a79af783 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 21:45:08 -0400 Subject: [PATCH 22/31] Changed reset to just step-instruction instead of continue. --- src/jlink.ts | 2 +- src/openocd.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jlink.ts b/src/jlink.ts index bf0d1328..49124458 100644 --- a/src/jlink.ts +++ b/src/jlink.ts @@ -180,7 +180,7 @@ class JLinkGDBDebugSession extends GDBDebugSession { 'exec-interrupt', 'interpreter-exec console "monitor halt"', 'interpreter-exec console "monitor reset"', - 'exec-continue' + 'exec-step-instruction' ]; } diff --git a/src/openocd.ts b/src/openocd.ts index 81d73a6f..557ab6d7 100644 --- a/src/openocd.ts +++ b/src/openocd.ts @@ -172,7 +172,7 @@ class OpenOCDGDBDebugSession extends GDBDebugSession { return [ 'exec-interrupt', 'interpreter-exec console "monitor reset halt"', - 'exec-continue' + 'exec-step-instruction' ]; } From ce98d97173688b2ebbf38cc4aed66b2e626bd547 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 21:45:42 -0400 Subject: [PATCH 23/31] Added a timestamp to the memory viewer URI to force reload if you view the same address multiple times. --- src/frontend/extension.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index e86933b0..f9e97753 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -116,7 +116,8 @@ class CortexDebugExtension { } Reporting.sendEvent('examine-memory', {}, {}); - vscode.window.showTextDocument(vscode.Uri.parse(`examinememory:///Memory%20[${address}+${length}]?address=${address}&length=${length}`), { viewColumn: 2 }); + let timestamp = new Date().getTime(); + vscode.window.showTextDocument(vscode.Uri.parse(`examinememory:///Memory%20[${address}+${length}]?address=${address}&length=${length}×tamp=${timestamp}`), { viewColumn: 2 }); }, (error) => { From 418f8048d908b738f12a0c3315e3d3aee05cbe8c Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Fri, 12 Jan 2018 21:45:56 -0400 Subject: [PATCH 24/31] Added preview flag and updated version number. --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 08d6074e..f1265ec3 100644 --- a/package.json +++ b/package.json @@ -1573,5 +1573,6 @@ "postinstall": "node ./node_modules/vscode/bin/install", "vscode:prepublish": "tsc -p ./" }, - "version": "0.1.4" + "version": "0.1.5", + "preview": true } \ No newline at end of file From 6588f829de318e65a595b65073ea2e5096fd1321 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 17:44:24 -0400 Subject: [PATCH 25/31] Improve SVD parsing * Fixed parsing of different types of integer values (hex, decimal and binary) * Covered cases where registers have no fields under the register. * Added support for repeating register definitions (with , , elements) --- src/frontend/peripheral.ts | 146 +++++++++++++++++++++++++++++++------ 1 file changed, 123 insertions(+), 23 deletions(-) diff --git a/src/frontend/peripheral.ts b/src/frontend/peripheral.ts index 9a79186c..44d9c8be 100644 --- a/src/frontend/peripheral.ts +++ b/src/frontend/peripheral.ts @@ -47,6 +47,69 @@ export class BaseNode { } +function parseInteger(value: string): number { + if((/^0b([01]+)$/i).test(value)) { + return parseInt(value.substring(2), 2); + } + else if((/^0x([0-9a-f]+)$/i).test(value)) { + return parseInt(value.substring(2), 16); + } + else if ((/^[0-9]+/i).test(value)) { + return parseInt(value, 10); + } + else if ((/^#[0-1]+/i).test(value)) { + return parseInt(value.substring(1), 2); + } + return undefined; +} + +function parseDimIndex(spec: string, count: number) : string[] { + if (spec.indexOf(',') !== -1) { + let components = spec.split(',').map(c => c.trim()); + if (components.length !== count) { + throw new Error(`dimIndex Element has invalid specification.`); + } + return components; + } + + if (/^([0-9]+)\-([0-9]+)$/i.test(spec)) { + let parts = spec.split('-').map(p => parseInteger(p)); + let start = parts[0]; + let end = parts[1]; + + let diff = end - start; + if (diff < count) { + throw new Error(`dimIndex Element has invalid specification.`); + } + + let components = []; + for (let i = 0; i < count; i++) { + components.push(`${start + i}`); + } + + return components; + } + + if (/^[a-zA-Z]\-[a-zA-Z]$/.test(spec)) { + let start = spec.charCodeAt(0); + let end = spec.charCodeAt(2); + + let diff = end - start; + if (diff < count) { + throw new Error(`dimIndex Element has invalid specification.`); + } + + let components = []; + for (let i = 0; i < count; i++) { + components.push(String.fromCharCode(start + i)); + } + + return components; + } + + return []; +} + interface EnumerationMap { [value:number] : EnumeratedValue; @@ -155,12 +218,13 @@ export class RegisterNode extends BaseNode { else if(this.access == AccessType.WriteOnly) { cv = 'registerWO'; } let label = this.name + ' [' + hexFormat(this.offset, 2) + '] = ' + hexFormat(this.currentValue, this.length); - - return new TreeNode(label, this.expanded ? vscode.TreeItemCollapsibleState.Expanded : vscode.TreeItemCollapsibleState.Collapsed, cv, this); + let collapseState = this.fields && this.fields.length > 0 ? (this.expanded ? vscode.TreeItemCollapsibleState.Expanded : vscode.TreeItemCollapsibleState.Collapsed) : vscode.TreeItemCollapsibleState.None + + return new TreeNode(label, collapseState, cv, this); } getChildren(): FieldNode[] { - return this.fields; + return this.fields || []; } performUpdate() : Thenable { @@ -286,17 +350,8 @@ export class FieldNode extends BaseNode { } else { vscode.window.showInputBox({ prompt: "Enter new value: (prefix hex with 0x, binary with 0b)" }).then(val => { - let numval; - if((/^0b([01]+)$/i).test(val)) { - numval = parseInt(val.substring(2), 2); - } - else if((/^0x([0-9a-f]+)$/i).test(val)) { - numval = parseInt(val.substring(2), 16); - } - else if ((/^[0-9]+/i).test(val)) { - numval = parseInt(val, 10); - } - else { + let numval = parseInteger(val); + if (numval === undefined) { return reject('Unable to parse input value.'); } this.register.updateBits(this.offset, this.width, numval).then(resolve, reject); @@ -348,8 +403,9 @@ export class PeripheralTreeProvider implements vscode.TreeDataProvider ev.enumeratedValue.map(ev => { let evname = ev.name[0]; let evdesc = ev.description[0]; - let evvalue = parseInt(ev.value[0]); - + let val = ev.value[0].toLowerCase(); + let evvalue = parseInteger(val); + value_map[evvalue] = new EnumeratedValue(evname, evdesc, evvalue); }); } @@ -358,8 +414,10 @@ export class PeripheralTreeProvider implements vscode.TreeDataProvider }); } - _parseRegisters(registers: any[], peripheral: PeripheralNode): RegisterNode[] { - return registers.map(r => { + _parseRegisters(regInfo: any[], peripheral: PeripheralNode): RegisterNode[] { + let registers: RegisterNode[] = []; + + regInfo.forEach(r => { let accessType = AccessType.ReadWrite; if(r.access && r.access.length == 1) { let access = r.access[0]; @@ -372,11 +430,45 @@ export class PeripheralTreeProvider implements vscode.TreeDataProvider size = parseInt(r.size[0]); } - let register = new RegisterNode(r.name[0], parseInt(r.addressOffset[0], 16), size, accessType, parseInt(r.resetValue[0]), peripheral); - let fields = this._parseFields(r.fields[0].field, register); - register.fields = fields; - return register; + if (r.dim) { + if (!r.dimIncrement) { throw new Error(`Unable to parse SVD file: register ${r.name[0]} has dim element, with no dimIncrement element`); } + + let count = parseInteger(r.dim[0]); + let increment = parseInteger(r.dimIncrement[0]); + let index = parseDimIndex(r.dimIndex[0], count); + + let namebase: string = r.name[0]; + let offsetbase = parseInteger(r.addressOffset[0]); + let resetvalue = parseInteger(r.resetValue[0]); + + for (let i = 0; i < count; i++) { + let name = namebase.replace('%s', index[i]); + + let register = new RegisterNode(name, offsetbase + (increment * i), size, accessType, resetvalue, peripheral); + if (r.fields && r.fields.length == 1) { + let fields = this._parseFields(r.fields[0].field, register); + register.fields = fields; + } + registers.push(register); + } + } + else { + let register = new RegisterNode(r.name[0], parseInteger(r.addressOffset[0]), size, accessType, parseInteger(r.resetValue[0]), peripheral); + if (r.fields && r.fields.length == 1) { + let fields = this._parseFields(r.fields[0].field, register); + register.fields = fields; + } + registers.push(register); + } + }); + + registers.sort((a, b) => { + if (a.offset < b.offset) { return -1; } + else if(a.offset > b.offset) { return 1; } + else { return 0; } }); + + return registers; } _parsePeripheral(p: any): PeripheralNode { @@ -455,7 +547,15 @@ export class PeripheralTreeProvider implements vscode.TreeDataProvider this._loaded = false; if(svdfile) { - this._loadSVD(svdfile).then(_ => { resolve(); }); + try { + this._loadSVD(svdfile).then(resolve, reject); + } + catch (e) { + this._peripherials = []; + this._loaded = false; + vscode.window.showErrorMessage(`Unable to parse SVD file: ${e.toString()}`); + reject(); + } } else { resolve(); From c54aa075bc7fd1dc7c1739dedbd4d7cf5cfccc32 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 17:45:18 -0400 Subject: [PATCH 26/31] Added notes about semihosting being a planned feature --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4ad9ae4c..225463f3 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Debugging support for ARM Cortex-M Microcontrollers with the following features: * Additional Graphing Options * Enhanced SVD Auto-selection * Support for Black Magic Probe +* Semihosting Support ## Installation From 579a8e34e61bdd3a0fb91f6303286b594c9e5030 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 18:00:21 -0400 Subject: [PATCH 27/31] Updated updatePackage.py to have the ability to skip certain properties --- updatePackage.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/updatePackage.py b/updatePackage.py index 3cfe127e..1857179a 100644 --- a/updatePackage.py +++ b/updatePackage.py @@ -41,6 +41,11 @@ def make_config(dtype, request): properties.update(properties_2) properties.update(properties_3) properties.update(properties_4) + + if 'removeProperties' in config_base[dtype]: + for prop in config_base[dtype]['removeProperties']: + if prop in properties: + del properties[prop] return { 'required': required, 'properties': properties } From 15c66c26d6eeaecccb9fc75fa8f343e37d31eb16 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 18:03:09 -0400 Subject: [PATCH 28/31] Added initial support for PyOCD GDB Server * Initial PyOCD GDB Server Support * No support for SWO --- .vscode/launch.json | 16 +++ config_base.json | 30 +++++ package.json | 239 +++++++++++++++++++++++++++++++++++++- src/backend/pyocd.ts | 106 +++++++++++++++++ src/frontend/extension.ts | 3 + src/pyocd.ts | 226 +++++++++++++++++++++++++++++++++++ 6 files changed, 618 insertions(+), 2 deletions(-) create mode 100644 src/backend/pyocd.ts create mode 100644 src/pyocd.ts diff --git a/.vscode/launch.json b/.vscode/launch.json index 699ca991..f72e06f3 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,6 +2,7 @@ { "version": "0.1.0", "configurations": [ + { "name": "Launch Extension", "type": "extensionHost", @@ -45,6 +46,21 @@ "cwd": "${workspaceRoot}" // "preLaunchTask": "npm" }, + { + "name": "PyOCD debug server", + "type": "node", + "request": "launch", + "runtimeArgs": [ "--nolazy" ], + "program": "${workspaceRoot}/src/pyocd.ts", + "stopOnEntry": false, + "args": [ "--server=4711" ], + "sourceMaps": true, + "outFiles": [ + "${workspaceRoot}/out/**/*.js" + ], + "cwd": "${workspaceRoot}" + // "preLaunchTask": "npm" + }, { "name": "Launch Tests", "type": "extensionHost", diff --git a/config_base.json b/config_base.json index 56b46dfa..d8f19845 100644 --- a/config_base.json +++ b/config_base.json @@ -337,5 +337,35 @@ "required": [], "properties": {} } + }, + "pyocd-gdb": { + "common": { + "properties": { + "pyocdPath": { + "type": "string", + "description": "Path to the pyocd-gdbserver executable", + "default": "pyocd-gdbserver" + }, + "boardId": { + "type": "string", + "description": "Connect to board by board id. Only needed if multiple PyOCD compatible boards are connected." + }, + "target": { + "type": "string", + "description": "PyOCD Target identifier. Needed if debugging custom hardware; not needed for official MBed boards.", + "enum": ["kl25z","kl26z","lpc824","k82f25615","lpc11xx_32","kinetis","lpc800","lpc4088qsb","maxwsnenv","kl05z","k64f","lpc1768","lpc4088","lpc4330","max32600mbed","k66f18","w7500","ke18f16","k22f","lpc4088dm","ke15z7","kv11z7","nrf51","nrf52","kv10z7","k20d50m","kl46z","stm32f103rc","kl27z4","kw40z4","cortex_m","lpc11u24","stm32f051","kl02z","ncs36510","kl28z","kl43z4","kw01z4"] + } + }, + "required": [] + }, + "launch": { + "required": [], + "properties": {} + }, + "attach": { + "required": [], + "properties": {} + }, + "removeProperties": [ "swoConfig", "graphConfig" ] } } \ No newline at end of file diff --git a/package.json b/package.json index f1265ec3..e5708901 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,11 @@ "category": "Cortex-Debug", "command": "marus25.cortex-debug-jlink.examineMemory", "title": "View Memory" + }, + { + "category": "Cortex-Debug", + "command": "marus25.cortex-debug-pyocd.examineMemory", + "title": "View Memory" } ], "debuggers": [ @@ -1468,6 +1473,222 @@ "runtime": "node", "type": "jlink-gdb", "variables": {} + }, + { + "configurationAttributes": { + "attach": { + "properties": { + "boardId": { + "description": "Connect to board by board id. Only needed if multiple PyOCD compatible boards are connected.", + "type": "string" + }, + "cwd": { + "description": "Path of project", + "type": "string" + }, + "debugger_args": { + "default": [], + "description": "Additional arguments to pass to GDB", + "type": "array" + }, + "executable": { + "description": "Path of executable", + "type": "string" + }, + "gdbpath": { + "default": "arm-none-eabi-gdb", + "description": "Path to the gdb executable or the command if in PATH", + "type": "string" + }, + "printCalls": { + "default": false, + "description": "Prints all GDB calls to the console", + "type": "boolean" + }, + "pyocdPath": { + "default": "pyocd-gdbserver", + "description": "Path to the pyocd-gdbserver executable", + "type": "string" + }, + "showDevDebugOutput": { + "default": false, + "description": "Prints all GDB responses to the console", + "type": "boolean" + }, + "svdFile": { + "default": null, + "description": "Path to an SVD file describing the peripherals of the microcontroller; if not supplied then one may be selected based upon the 'device' entered.", + "type": "string" + }, + "target": { + "description": "PyOCD Target identifier. Needed if debugging custom hardware; not needed for official MBed boards.", + "enum": [ + "kl25z", + "kl26z", + "lpc824", + "k82f25615", + "lpc11xx_32", + "kinetis", + "lpc800", + "lpc4088qsb", + "maxwsnenv", + "kl05z", + "k64f", + "lpc1768", + "lpc4088", + "lpc4330", + "max32600mbed", + "k66f18", + "w7500", + "ke18f16", + "k22f", + "lpc4088dm", + "ke15z7", + "kv11z7", + "nrf51", + "nrf52", + "kv10z7", + "k20d50m", + "kl46z", + "stm32f103rc", + "kl27z4", + "kw40z4", + "cortex_m", + "lpc11u24", + "stm32f051", + "kl02z", + "ncs36510", + "kl28z", + "kl43z4", + "kw01z4" + ], + "type": "string" + } + }, + "required": [ + "executable" + ] + }, + "launch": { + "properties": { + "boardId": { + "description": "Connect to board by board id. Only needed if multiple PyOCD compatible boards are connected.", + "type": "string" + }, + "cwd": { + "description": "Path of project", + "type": "string" + }, + "debugger_args": { + "default": [], + "description": "Additional arguments to pass to GDB", + "type": "array" + }, + "executable": { + "description": "Path of executable", + "type": "string" + }, + "gdbpath": { + "default": "arm-none-eabi-gdb", + "description": "Path to the gdb executable or the command if in PATH", + "type": "string" + }, + "printCalls": { + "default": false, + "description": "Prints all GDB calls to the console", + "type": "boolean" + }, + "pyocdPath": { + "default": "pyocd-gdbserver", + "description": "Path to the pyocd-gdbserver executable", + "type": "string" + }, + "showDevDebugOutput": { + "default": false, + "description": "Prints all GDB responses to the console", + "type": "boolean" + }, + "svdFile": { + "default": null, + "description": "Path to an SVD file describing the peripherals of the microcontroller; if not supplied then one may be selected based upon the 'device' entered.", + "type": "string" + }, + "target": { + "description": "PyOCD Target identifier. Needed if debugging custom hardware; not needed for official MBed boards.", + "enum": [ + "kl25z", + "kl26z", + "lpc824", + "k82f25615", + "lpc11xx_32", + "kinetis", + "lpc800", + "lpc4088qsb", + "maxwsnenv", + "kl05z", + "k64f", + "lpc1768", + "lpc4088", + "lpc4330", + "max32600mbed", + "k66f18", + "w7500", + "ke18f16", + "k22f", + "lpc4088dm", + "ke15z7", + "kv11z7", + "nrf51", + "nrf52", + "kv10z7", + "k20d50m", + "kl46z", + "stm32f103rc", + "kl27z4", + "kw40z4", + "cortex_m", + "lpc11u24", + "stm32f051", + "kl02z", + "ncs36510", + "kl28z", + "kl43z4", + "kw01z4" + ], + "type": "string" + } + }, + "required": [ + "executable" + ] + } + }, + "configurationSnippets": [ + { + "body": { + "cwd": "^\"\\${workspaceRoot}\"", + "executable": "${1:./bin/executable.elf}", + "name": "${6:Debug Microcontroller}", + "request": "launch", + "type": "pyocd-gdb" + }, + "description": "Debugs an embedded ARM Cortex-M microcontroller using GDB + PyOCD", + "label": "Cortex Debug: PyOCD" + } + ], + "enableBreakpointsFor": { + "languageIds": [ + "c", + "cpp", + "asm" + ] + }, + "extensions": [], + "label": "Cortex Debug: PyOCD", + "program": "./out/src/pyocd.js", + "runtime": "node", + "type": "pyocd-gdb", + "variables": {} } ], "menus": { @@ -1487,6 +1708,10 @@ { "command": "marus25.cortex-debug-jlink.examineMemory", "when": "debugType == jlink-gdb" + }, + { + "command": "marus25.cortex-debug-pyocd.examineMemory", + "when": "debugType == pyocd-gdb" } ], "view/item/context": [ @@ -1526,6 +1751,16 @@ "id": "cortexRegisters-openocd", "name": "Cortex Registers", "when": "debugType == openocd-gdb" + }, + { + "id": "cortexPeripherals-pyocd", + "name": "Cortex Peripherals", + "when": "debugType == pyocd-gdb" + }, + { + "id": "cortexRegisters-pyocd", + "name": "Cortex Registers", + "when": "debugType == pyocd-gdb" } ] } @@ -1563,6 +1798,7 @@ ], "main": "./out/src/frontend/extension", "name": "cortex-debug", + "preview": true, "publisher": "marus25", "repository": { "type": "git", @@ -1573,6 +1809,5 @@ "postinstall": "node ./node_modules/vscode/bin/install", "vscode:prepublish": "tsc -p ./" }, - "version": "0.1.5", - "preview": true + "version": "0.1.6" } \ No newline at end of file diff --git a/src/backend/pyocd.ts b/src/backend/pyocd.ts new file mode 100644 index 00000000..42526592 --- /dev/null +++ b/src/backend/pyocd.ts @@ -0,0 +1,106 @@ +import * as ChildProcess from 'child_process'; +import { EventEmitter } from "events"; +import * as portastic from 'portastic'; +import * as os from 'os'; + +let infoRegex = /^Info\s:\s([^\n])$/i; +let cpuRegex = /^([^\n\.]*)\.cpu([^\n]*)$/i; + +export class PyOCD extends EventEmitter { + private process: any; + private buffer: string; + private errbuffer: string; + + constructor(public application: string, public gdb_port: number, public boardId: string, public targetId: string) { + super(); + + this.buffer = ""; + this.errbuffer = ""; + } + + init(): Thenable { + return new Promise((resolve, reject) => { + let args = ['--persist', '--port', `${this.gdb_port}`, '--reset-break']; + + if (this.boardId) { + args.push('--board'); + args.push(this.boardId) + } + + if (this.targetId) { + args.push('--target'); + args.push(this.targetId); + } + + this.process = ChildProcess.spawn(this.application, args, {}); + this.process.stdout.on('data', this.stdout.bind(this)); + this.process.stderr.on('data', this.stderr.bind(this)); + this.process.on("exit", (() => { this.emit("quit"); }).bind(this)); + this.process.on("error", ((err) => { this.emit("launcherror", err); }).bind(this)); + + setTimeout(_ => { + console.log('Started PyOCD'); + resolve(); + }, 1000); + }); + } + + exit() : void { + this.process.kill(); + } + + error() : void { + + } + + close(code, signal) { + console.log('Closed PyOCD with ', code, signal); + } + + stdout(data) { + if(typeof data =="string") + this.buffer += data; + else + this.buffer += data.toString("utf8"); + + let end = this.buffer.lastIndexOf('\n'); + if(end != -1) { + this.onOutput(this.buffer.substr(0, end)); + this.buffer = this.buffer.substr(end + 1); + } + } + + stderr(data) { + if(typeof data =="string") + this.errbuffer += data; + else + this.errbuffer += data.toString("utf8"); + + let end = this.errbuffer.lastIndexOf('\n'); + if(end != -1) { + this.onOutput(this.errbuffer.substr(0, end)); + this.errbuffer = this.errbuffer.substr(end + 1); + } + } + + stop() { + this.process.kill(); + } + + onOutput(text: string) { + let m = text.match(infoRegex); + if(text.startsWith('INFO:')) { + let infostring = text.substr(5); + this.emit('pyocd-info', infostring); + if (infostring.indexOf('GDB server started at port') != -1) { + this.emit('pyocd-init'); + } + } + + this.emit('pyocd-output', text); + } + + onErrOutput(text: string) { + this.emit('pyocd-stderr', text); + } +} \ No newline at end of file diff --git a/src/frontend/extension.ts b/src/frontend/extension.ts index f9e97753..c2817ddb 100644 --- a/src/frontend/extension.ts +++ b/src/frontend/extension.ts @@ -57,11 +57,14 @@ class CortexDebugExtension { context.subscriptions.push(vscode.commands.registerCommand('cortexPeripherals.selectedNode', this.peripheralsSelectedNode.bind(this))); context.subscriptions.push(vscode.commands.registerCommand('marus25.cortex-debug-jlink.examineMemory', this.examineMemory.bind(this))); context.subscriptions.push(vscode.commands.registerCommand('marus25.cortex-debug-openocd.examineMemory', this.examineMemory.bind(this))); + context.subscriptions.push(vscode.commands.registerCommand('marus25.cortex-debug-pyocd.examineMemory', this.examineMemory.bind(this))); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-jlink', this.peripheralProvider)); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-openocd', this.peripheralProvider)); + context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexPeripherals-pyocd', this.peripheralProvider)); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexRegisters-jlink', this.registerProvider)); context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexRegisters-openocd', this.registerProvider)); + context.subscriptions.push(vscode.window.registerTreeDataProvider('cortexRegisters-pyocd', this.registerProvider)); context.subscriptions.push(vscode.debug.onDidReceiveDebugSessionCustomEvent(this.receivedCustomEvent.bind(this))); context.subscriptions.push(vscode.debug.onDidStartDebugSession(this.debugSessionStarted.bind(this))); diff --git a/src/pyocd.ts b/src/pyocd.ts new file mode 100644 index 00000000..d69bd3dd --- /dev/null +++ b/src/pyocd.ts @@ -0,0 +1,226 @@ +import { GDBDebugSession } from './gdb'; +import { DebugSession, InitializedEvent, TerminatedEvent, StoppedEvent, OutputEvent, Thread, StackFrame, Scope, Source, Handles, Event } from 'vscode-debugadapter'; +import { DebugProtocol } from 'vscode-debugprotocol'; +import { PyOCD } from './backend/pyocd'; +import { MI2 } from "./backend/mi2/mi2"; +import * as portastic from 'portastic'; +import * as tmp from 'tmp'; +import * as os from 'os'; +import { AdapterOutputEvent, SWOConfigureEvent } from './common'; +import { clearTimeout } from 'timers'; +import { TelemetryEvent } from './common'; + +interface ConfigurationArguments extends DebugProtocol.LaunchRequestArguments { + debugger_args: string[]; + executable: string; + svdFile: string; + configFiles: string[]; + gdbpath: string; + pyocdPath: string; + cwd: string; + showDevDebugOutput: boolean; + boardId: string; + targetId: string; +} + +class PyOCDGDBDebugSession extends GDBDebugSession { + protected pyocd : PyOCD; + private args: ConfigurationArguments; + private gdbPort: number; + private swoPath: string; + private device: string; + + protected launchRequest(response: DebugProtocol.LaunchResponse, args: ConfigurationArguments): void { + this.args = args; + + this.processLaunchAttachRequest(response, args, false); + } + + protected attachRequest(response: DebugProtocol.AttachResponse, args: ConfigurationArguments): void { + this.args = args; + + this.processLaunchAttachRequest(response, args, true); + } + + private processLaunchAttachRequest(response: DebugProtocol.AttachResponse, args: ConfigurationArguments, attach: boolean) { + this.quit = false; + this.attached = false; + this.started = false; + this.crashed = false; + this.debugReady = false; + + portastic.find({ min: 50000, max: 52000, retrieve: 1 }).then(ports => { + this.gdbPort = ports[0]; + + let defaultExecutable = 'pyocd-gdbserver'; + let defaultGDBExecutable = 'arm-none-eabi-gdb'; + if(os.platform() === 'win32') { + defaultExecutable = 'pyocd-gdbserver'; + defaultGDBExecutable = 'arm-none-eabi-gdb.exe'; + } + + this.pyocd = new PyOCD(args.pyocdPath || defaultExecutable, this.gdbPort, args.boardId, args.targetId); + + this.pyocd.on('pyocd-output', this.handleAdapterOutput.bind(this)); + this.pyocd.on('pyocd-stderr', this.handleAdapterErrorOutput.bind(this)); + this.pyocd.on("launcherror", (error) => { + this.sendErrorResponse(response, 103, `Failed to launch PyOCD GDB Server: ${error.toString()}`); + }); + this.pyocd.on("quit", () => { + if (this.started) { + this.quitEvent.bind(this) + } + else { + this.sendErrorResponse(response, 103, `PyOCD GDB Server Quit Unexpectedly. See Adapter Output for more details.`); + this.sendErrorResponse(response, 103, `PyOCD GDB Server Quit Unexpectedly.`); + } + }); + + let timeout = null; + + this.pyocd.on('pyocd-init', (cpu: string) => { + if(timeout) { + clearTimeout(timeout); + timeout = null; + } + + this.miDebugger = new MI2(args.gdbpath || defaultGDBExecutable, ["-q", "--interpreter=mi2"], args.debugger_args); + this.initDebugger(); + + this.miDebugger.printCalls = !!args.showDevDebugOutput; + this.miDebugger.debugOutput = !!args.showDevDebugOutput + + let commands = attach ? this.attachCommands(this.gdbPort, args) : this.launchCommands(this.gdbPort, args); + + this.miDebugger.connect(args.cwd, args.executable, commands).then(() => { + setTimeout(() => { + this.miDebugger.emit("ui-break-done"); + }, 50); + + this.miDebugger.start().then(() => { + this.started = true; + this.sendResponse(response); + if (this.crashed) + this.handlePause(undefined); + }, err => { + this.sendErrorResponse(response, 100, `Failed to launch GDB: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-gdb', { error: err.toString() }, {})); + }); + }, err => { + this.sendErrorResponse(response, 103, `Failed to launch GDB: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-gdb', { error: err.toString() }, {})); + }); + }) + + this.pyocd.init().then(_ => {}, err => { + this.sendErrorResponse(response, 103, `Failed to launch PyOCD GDB Server: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-pyocd', { error: err.toString() }, {})); + }); + + timeout = setTimeout(() => { + this.pyocd.exit(); + this.sendErrorResponse(response, 103, `Failed to launch PyOCD GDB Server. Timeout.`); + this.sendEvent(new TelemetryEvent('error-launching-pyocd', { error: `Failed to launch PyOCD GDB Server. Timeout.` }, {})); + }, 10000); // Timeout Launching + + }, err => { + this.sendErrorResponse(response, 103, `Failed to launch PyOCD GDB Server: ${err.toString()}`); + this.sendEvent(new TelemetryEvent('error-launching-pyocd', { error: err.toString() }, {})); + }); + } + + protected launchCommands(gdbport: number, args: ConfigurationArguments): string[] { + let commands = [ + `target-select extended-remote localhost:${gdbport}`, + 'interpreter-exec console "monitor reset halt"', + 'target-download', + 'interpreter-exec console "monitor reset halt"', + 'enable-pretty-printing' + ]; + + return commands; + } + + protected attachCommands(gdbport: number, args: ConfigurationArguments): string[] { + let commands = [ + `target-select extended-remote localhost:${gdbport}`, + 'interpreter-exec console "monitor halt"', + 'enable-pretty-printing' + ]; + + return commands; + } + + protected restartCommands(): string[] { + return [ + 'exec-interrupt', + 'interpreter-exec console "monitor reset"', + 'exec-step-instruction' + ]; + } + + protected disconnectRequest(response: DebugProtocol.DisconnectResponse, args: DebugProtocol.DisconnectArguments): void { + if(this.miDebugger) { + if (this.attached) + this.miDebugger.detach(); + else + this.miDebugger.stop(); + } + if(this.commandServer) { + this.commandServer.close(); + this.commandServer = undefined; + } + + try { this.pyocd.stop(); } + catch(e) {} + + this.sendResponse(response); + } + + protected restartRequest(response: DebugProtocol.RestartResponse, args: DebugProtocol.RestartArguments): void { + this.miDebugger.restart(this.restartCommands()).then(done => { + this.sendResponse(response); + }, msg => { + this.sendErrorResponse(response, 6, `Could not restart: ${msg}`); + }) + } + + protected handleAdapterOutput(output) { + this.sendEvent(new AdapterOutputEvent(output, 'out')); + } + + protected handleAdapterErrorOutput(output) { + this.sendEvent(new AdapterOutputEvent(output, 'err')); + } + + protected customRequest(command: string, response: DebugProtocol.Response, args: any): void { + switch(command) { + case 'get-arguments': + response.body = { + type: 'pyocd', + GDBPort: this.gdbPort, + SWOPath: this.swoPath, + configFiles: this.args.configFiles, + SVDFile: this.args.svdFile, + SWOConfig: { enabled: false }, + GraphConfig: [], + device: this.device + }; + this.sendResponse(response); + break; + default: + super.customRequest(command, response, args); + break; + } + } + + private calculatePortMask(configuration: any[]) { + let mask: number = 0; + configuration.forEach(c => { + mask = (mask | (1 << c.number)) >>> 0; + }); + return mask; + } +} + +DebugSession.run(PyOCDGDBDebugSession); \ No newline at end of file From 7c92c826681978d576140ec3b079dd6fdaff690a Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 18:05:18 -0400 Subject: [PATCH 29/31] Removed hardcoded portobuf advanced decoder --- src/frontend/swo/decoders/advanced.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/frontend/swo/decoders/advanced.ts b/src/frontend/swo/decoders/advanced.ts index 7143895b..57e2b64a 100644 --- a/src/frontend/swo/decoders/advanced.ts +++ b/src/frontend/swo/decoders/advanced.ts @@ -17,11 +17,7 @@ export class SWOAdvancedProcessor extends EventEmitter implements SWOProcessor { this.port = -1; let decoderPath = config.decoder; - if(decoderPath == 'protobuf') { - let extension = vscode.extensions.getExtension('marus25.cortex-debug'); - decoderPath = `${extension.extensionPath}/out/src/frontend/swo/decoders/protobuf.js`; - } - + var decoderModule = require(decoderPath); if(decoderModule && decoderModule.default) { From 6cae5a352b071b696ced5895318eaf5027dc06ff Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 18:09:19 -0400 Subject: [PATCH 30/31] Updated release notes --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 225463f3..73e67c9b 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Debugging support for ARM Cortex-M Microcontrollers with the following features: * Ability to define JavaScript modules to decode complex data formats streamed over a particular ITM port. Data can be printed to a output window, or sent to the graphing system. * Live graphing of decoded ITM data. * Raw Memory Viewer (From the command menu select Cortex-Debug: View Memory) +* Initial support for PyOCD GDB Server (No SWO support for PyOCD) ### In Progress Features * RTOS/Muti-Threaded Support (Dependant on GDB server support) From 08b57c0e34d3bc223b1cad90f1e11769c1d44808 Mon Sep 17 00:00:00 2001 From: Marcel Ball Date: Sun, 14 Jan 2018 18:14:03 -0400 Subject: [PATCH 31/31] Added Changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d77cdaf1 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,8 @@ +# V0.1.6 + +* Improved parsing of SVD definitions (registers without fields; repeating registesr (dim, dimInteger, dimIncrement)) +* Added initial support for PyOCD GDB Server (SWO not supported) + +# V0.1.5 + +* Initial Public Preview on VS Code Market Place \ No newline at end of file