From 260c2650f0d2d166579eeab009235ce473fb3e19 Mon Sep 17 00:00:00 2001 From: Gordon Woodhull Date: Tue, 14 Feb 2017 17:26:27 -0500 Subject: [PATCH 01/36] artifacts & dependencies --- dc.graph.js | 90 +- dc.graph.js.map | 2 +- dc.graph.min.js | 4 +- dc.graph.min.js.map | 2 +- web/css/dc.css | 4 +- web/css/font-awesome.css | 269 +- web/css/jquery-ui.css | 694 +- web/docs/api-latest.md | 146 +- web/fonts/FontAwesome.otf | Bin 109688 -> 134808 bytes web/fonts/fontawesome-webfont.eot | Bin 70807 -> 165742 bytes web/fonts/fontawesome-webfont.svg | 3320 +++- web/fonts/fontawesome-webfont.ttf | Bin 142072 -> 165548 bytes web/fonts/fontawesome-webfont.woff | Bin 83588 -> 98024 bytes web/fonts/fontawesome-webfont.woff2 | Bin 66624 -> 77160 bytes web/js/d3-tip/index.js | 47 +- web/js/dc.graph.js | 90 +- web/js/dc.graph.js.map | 2 +- web/js/dc.graph.min.js | 4 +- web/js/dc.graph.min.js.map | 2 +- web/js/dc.js | 1481 +- web/js/jquery-ui.js | 23085 ++++++++++++++------------ web/js/jquery.js | 6512 +++++--- web/js/lodash.js | 6 +- 23 files changed, 20784 insertions(+), 14976 deletions(-) diff --git a/dc.graph.js b/dc.graph.js index 641a3b41..c0491ed5 100644 --- a/dc.graph.js +++ b/dc.graph.js @@ -206,6 +206,27 @@ Math.hypot = Math.hypot || function() { return Math.sqrt(y); }; +var script_path = function() { + var _path; + return function() { + if(_path === undefined) { + // adapted from http://stackoverflow.com/a/18283141/676195 + _path = null; // only try once + var filename = 'dc.graph.js'; + var scripts = document.getElementsByTagName('script'); + if (scripts && scripts.length > 0) { + for (var i in scripts) { + if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) { + _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1'); + break; + } + } + } + } + return _path; + }; +}(); + // arguably depth first search is a stupid algorithm to modularize - // there are many, many interesting moments to insert a behavior // and those end up being almost bigger than the function itself @@ -700,7 +721,7 @@ function bezier_point(points, t_) { * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}, * but it does not physically derive from it since so much is different about network * visualization versus conventional charts. - * @name diagram + * @class diagram * @memberof dc_graph * @param {String|node} parent - Any valid * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} @@ -1679,7 +1700,7 @@ dc_graph.diagram = function (parent, chartGroup) { function initLayout() { if(!_worker) - _worker = new Worker('js/dc.graph.' + _chart.layoutAlgorithm() + '.worker.js'); + _worker = new Worker(script_path() + 'dc.graph.' + _chart.layoutAlgorithm() + '.worker.js'); var args = { width: _chart.width(), height: _chart.height() @@ -3118,7 +3139,7 @@ dc_graph.legend = function() { * gain more control. * * Then we'll build back up from the ground up and show how inference works. - * @name constraint_pattern + * @class constraint_pattern * @memberof dc_graph * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine * the keys of nodes and edge sources and targets @@ -3432,7 +3453,7 @@ dc_graph.behavior = function(event_namespace, handlers) { * Optional - requires separately loading the d3.tip script and CSS (which are included in * dc.graph.js in `web/js/d3-tip/index.js` and `web/css/d3-tip/example-styles.css`) * - * @name tip + * @class tip * @memberof dc_graph * @return {Object} **/ @@ -4231,10 +4252,38 @@ dc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) { }; } -/* for the special case where there will be exactly one or zero items in a group, - a reasonable reduction is just to use the row or null. - this could be useful outside dc.graph (esp e.g bubble charts, scatter plots where each - observation is either shown or not) but it would have to be cleaned up a bit */ +/** + * `dc_graph.flat_group` implements a special ["fake group"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups) + * for the special case where you want a group that represents the filtered rows of the crossfilter. + * + * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of + * the corresponding data arrays, and each array has a column which contains the unique identifier + * for the node or edge. In this setup, there are other dimensions and groups which are aggregated + * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from + * the rows. + * + * This simple class supports that use case in three steps: + * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`) + * 2. It creates a group from the dimension with a reduction function that returns the row when the + * row is filtered in, and `null` when the row is filtered out. + * 3. It wraps the group in a fake group which filters out the resulting nulls. + * + * The result is a fake group whose `.all()` method returns an array of the currently filtered-in + * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw + * row object from the data. + * + * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and + * scatter plots often use similar functionality because each observation is either shown or not, + * and it is helpful to have the entire row available as reduced data. + * + * But it would need to be generalized and cleaned up. (For example, the way it has to create the + * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility + * library to put it in. + * + * @namespace flat_group + * @memberof dc_graph + * @type {{}} +**/ dc_graph.flat_group = (function() { var reduce_01 = { @@ -4265,11 +4314,34 @@ dc_graph.flat_group = (function() { } return { + /** + * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}. + * Returns an object containing all three. + + * @method make + * @memberof dc_graph.flat_group + * @param {Array} vec - the data array for crossfilter + * @param {Function} id_accessor - accessor function taking a row object and returning its + * unique identifier + * @return {Object} `{crossfilter, dimension, group}` + **/ make: function(vec, id_accessor) { var ndx = crossfilter(vec); return dim_group(ndx, id_accessor); }, - another: function(ndx, id_accessor) { // wretched name + /** + * Create a flat dimension and group from an existing crossfilter. + * + * This is a wretched name for this function. + + * @method another + * @memberof dc_graph.flat_group + * @param {Object} ndx - crossfilter instance + * @param {Function} id_accessor - accessor function taking a row object and returning its + * unique identifier + * @return {Object} `{crossfilter, dimension, group}` + **/ + another: function(ndx, id_accessor) { return dim_group(ndx, id_accessor); } }; diff --git a/dc.graph.js.map b/dc.graph.js.map index 0f98e489..6d63f026 100644 --- a/dc.graph.js.map +++ b/dc.graph.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/banner.js","src/core.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/legend.js","src/constraint_pattern.js","src/tree_constraints.js","src/tree_positions.js","src/behavior.js","src/tip.js","src/select_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.3.16\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.3.16',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\n// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nvar identity = function(x) { return x; };\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish}\n return function(diagram, nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e.orig); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = diagram.edgeSource.eval(e),\n head = diagram.edgeTarget.eval(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = diagram.nodeKey.eval(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n if(ei && callbacks.sib)\n callbacks.sib(false, outmap[key][ei-1].target, e.target);\n callbacks.push && callbacks.push();\n place_tree(e.target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n.orig); });\n else {\n roots = nodes.filter(function(n) { return !indegree[diagram.nodeKey.eval(n)]; });\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row ? callbacks.row(n.orig) : 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Currently, you can specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it\n * will replace the back-end. In the future, there will be subclasses like colaDiagram and\n * dagreDiagram with appropriate interfaces for each, but it is not yet clear which features are\n * common between them.\n * @name layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = property('cola');\n\n _chart.tickSize = property(1);\n\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.edgeId(d);\n };\n\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components. Default: true\n * @name handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = property(true);\n\n function initLayout() {\n if(!_worker)\n _worker = new Worker('js/dc.graph.' + _chart.layoutAlgorithm() + '.worker.js');\n var args = {\n width: _chart.width(),\n height: _chart.height()\n };\n // generalize this? class hierarchy, what?\n switch(_chart.layoutAlgorithm()) {\n case 'cola':\n Object.assign(args, {\n handleDisconnected: _chart.handleDisconnected(),\n lengthStrategy: _chart.lengthStrategy(),\n baseLength: _chart.baseLength(),\n flowLayout: _chart.flowLayout(),\n tickSize: _chart.tickSize()\n });\n break;\n case 'dagre':\n Object.assign(args, {\n rankdir: _chart.rankdir()\n });\n }\n _worker.postMessage({\n command: 'init',\n args: args\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n if(_worker)\n _worker.postMessage({command: 'stop'});\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _worker.onmessage = function(e) {\n var args = e.data.args;\n switch(e.data.response) {\n case 'tick':\n var elapsed = Date.now() - startTime;\n populate_cola(args.nodes, args.edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _worker.postMessage({\n command: 'stop'\n });\n }\n break;\n case 'end':\n if(!_chart.showLayoutSteps()) {\n populate_cola(args.nodes, args.edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n break;\n case 'start':\n console.log('algo ' + _chart.layoutAlgorithm() + ' started.');\n _dispatch.start();\n }\n };\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _worker.postMessage({\n command: 'data',\n args: {\n nodes: wnodes.map(function(v) { return v.cola; }),\n edges: layout_edges.map(function(v) { return v.cola; }),\n constraints: constraints,\n opts: {groupConnected: _chart.groupConnected()}\n }\n });\n _worker.postMessage({\n command: 'start',\n args: {\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20,\n initialOnly: _chart.initialOnly(),\n showLayoutSteps: _chart.showLayoutSteps()\n }\n });\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @name render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g');\n _edgeLayer = _g.append('g');\n _nodeLayer = _g.append('g');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @name on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @name getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top svg element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @name svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @name resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @name redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @name renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @name defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _xScale.domain(), yDomain = _yScale.domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n if(_chart.mouseZoomable()) {\n // start out with 1:1 zoom\n _xScale = d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]);\n _yScale = d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]);\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_xScale).y(_yScale);\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _xScale.invert(clientCoord[0]),\n _yScale.invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","/**\n## Legend\n\nThe dc_graph.legend will show labeled examples of nodes (and someday edges), within the frame of a dc_graph.diagram.\n**/\ndc_graph.legend = function() {\n var _legend = {}, _items;\n\n /**\n #### .x([value])\n Set or get x coordinate for legend widget. Default: 0.\n **/\n _legend.x = property(0);\n\n /**\n #### .y([value])\n Set or get y coordinate for legend widget. Default: 0.\n **/\n _legend.y = property(0);\n\n /**\n #### .gap([value])\n Set or get gap between legend items. Default: 5.\n **/\n _legend.gap = property(5);\n\n /**\n #### .nodeWidth([value])\n Set or get legend node width. Default: 30.\n **/\n _legend.nodeWidth = property(40);\n\n /**\n #### .nodeHeight([value])\n Set or get legend node height. Default: 30.\n **/\n _legend.nodeHeight = property(40);\n\n\n /**\n #### .exemplars([object])\n Specifies an object where the keys are the names of items to add to the legend, and the values are\n objects which will be passed to the accessors of the attached diagram in order to determine the\n drawing attributes. Alternately, if the key needs to be specified separately from the name, the\n function can take an array of {name, key, value} objects.\n **/\n _legend.exemplars = property({});\n\n _legend.parent = property(null);\n\n _legend.redraw = function() {\n var legend = _legend.parent().svg()\n .selectAll('g.dc-graph-legend')\n .data([0]);\n legend.enter().append('g')\n .attr('class', 'dc-graph-legend')\n .attr('transform', 'translate(' + _legend.x() + ',' + _legend.y() + ')');\n\n var node = legend.selectAll('.node')\n .data(_items, function(d) { return d.name; });\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node');\n nodeEnter.append('text')\n .attr('dy', '0.3em')\n .attr('class', 'legend-label');\n node\n .attr('transform', function(d, i) {\n return 'translate(' + _legend.nodeWidth()/2 + ',' + (_legend.nodeHeight() + _legend.gap())*(i+0.5) + ')';\n });\n node.select('text.legend-label')\n .attr('transform', 'translate(' + (_legend.nodeWidth()/2+_legend.gap()) + ',0)')\n .text(function(d) {\n return d.name;\n });\n _legend.parent()\n ._enterNode(nodeEnter)\n ._updateNode(node);\n };\n\n _legend.render = function() {\n var exemplars = _legend.exemplars();\n if(exemplars instanceof Array) {\n _items = exemplars.map(function(v) { return {name: v.name, orig: {key: v.key, value: v.value}, cola: {}}; });\n }\n else {\n _items = [];\n for(var item in exemplars)\n _items.push({name: item, orig: {key: item, value: exemplars[item]}, cola: {}});\n }\n _legend.redraw();\n };\n\n return _legend;\n};\n","/**\n * In cola.js there are three factors which influence the positions of nodes:\n * * *edge length* suggestions, controlled by the\n * {@link #dc_graph.diagram+lengthStrategy lengthStrategy},\n * {@link #dc_graph.diagram+baseLength baseLength}, and\n * {@link #dc_graph.diagram+edgeLength edgeLength} parameters in dc.graph.js\n * * *automatic constraints* based on the global edge flow direction (`cola.flowLayout`) and overlap\n * avoidance parameters (`cola.avoidOverlaps`)\n * * *manual constraints* such as alignment, inequality and equality constraints in a dimension/axis.\n *\n * Generally when the\n * {@link https://github.com/tgdwyer/WebCola/wiki/Constraints cola.js documentation mentions constraints},\n * it means the manual constraints.\n *\n * dc.graph.js allows generation of manual constraints using\n * {@link #dc_graph.diagram+constrain diagram.constrain} but it can be tedious to write these\n * functions because it usually means looping over the nodes and edges multiple times to\n * determine what classes or types of nodes to apply constraints to, and which edges should\n * take additional constraints.\n *\n * This utility creates a constraint generator function from a *pattern*, a graph where:\n * 1. Nodes represent *types* or classes of layout nodes, annotated with a specification\n * of how to match the nodes belonging each type.\n * 2. Edges represent *rules* to generate constraints. There are two kinds of rules:\n *
    \n *
  1. To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  2. To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n *
\n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @name constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_constraints = function(rootf, treef, xgap, ygap) {\n return function(diagram, nodes, edges) {\n var constraints = [];\n var x = 0;\n var dfs = dc_graph.depth_first_traversal({\n root: rootf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var last = row[row.length-1];\n constraints.push({\n left: diagram.nodeKey.eval(last),\n right: diagram.nodeKey.eval(n),\n axis: 'x',\n gap: x-last.foo_x,\n equality: true\n });\n }\n n.foo_x = x;\n // n.cola.x = x;\n // n.cola.y = r*ygap;\n },\n sib: function() {\n x += xgap;\n }\n });\n dfs(diagram, nodes, edges);\n return constraints;\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n init: function() {\n x = ofsx;\n },\n root: rootf,\n row: rowf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// this currently only supports single selection with a click\n// but it can be expanded with modifier-key clicks and rectangular selection etc.\ndc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [];\n\n function add_behavior(chart, node, edge) {\n chart.cascade(50, true, conditional_properties(function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n }, null, props));\n node.on('click.select-nodes', function(d) {\n _selected = [chart.nodeKey.eval(d)];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n d3.event.stopPropagation();\n });\n chart.svg().on('click.select-nodes', function(d) {\n _selected = [];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n });\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var nselect = _selected.length;\n _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== nselect)\n select_nodes_group.node_set_changed(_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n return dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/* for the special case where there will be exactly one or zero items in a group,\n a reasonable reduction is just to use the row or null.\n this could be useful outside dc.graph (esp e.g bubble charts, scatter plots where each\n observation is either shown or not) but it would have to be cleaned up a bit */\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n another: function(ndx, id_accessor) { // wretched name\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","// make crossfilter-suitable data from d3.nest {key, values} format\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n inherit = inherit || {};\n var level = Object.keys(inherit).length;\n if(attrs.length) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = nest.map(function(v) {\n inherit[attr] = v.key;\n var child = uuid();\n var node = clone(inherit);\n node[nodeKeyAttr] = child;\n node.name = attr + ':' + v.key;\n node._level = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = child;\n edges.push(edge);\n }\n var recurse = dc_graph.convert_nest(v.values, attrs.slice(0), nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, child, clone(inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: nest.map(function(v) {\n v._level = level+1;\n return v;\n }), edges: nest.map(function(v) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = v[nodeKeyAttr];\n return edge;\n })};\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file +{"version":3,"sources":["src/banner.js","src/core.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/legend.js","src/constraint_pattern.js","src/tree_constraints.js","src/tree_positions.js","src/behavior.js","src/tip.js","src/select_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.3.16\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.3.16',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\n// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nvar identity = function(x) { return x; };\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish}\n return function(diagram, nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e.orig); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = diagram.edgeSource.eval(e),\n head = diagram.edgeTarget.eval(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = diagram.nodeKey.eval(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n if(ei && callbacks.sib)\n callbacks.sib(false, outmap[key][ei-1].target, e.target);\n callbacks.push && callbacks.push();\n place_tree(e.target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n.orig); });\n else {\n roots = nodes.filter(function(n) { return !indegree[diagram.nodeKey.eval(n)]; });\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row ? callbacks.row(n.orig) : 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Currently, you can specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it\n * will replace the back-end. In the future, there will be subclasses like colaDiagram and\n * dagreDiagram with appropriate interfaces for each, but it is not yet clear which features are\n * common between them.\n * @name layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = property('cola');\n\n _chart.tickSize = property(1);\n\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.edgeId(d);\n };\n\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components. Default: true\n * @name handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = property(true);\n\n function initLayout() {\n if(!_worker)\n _worker = new Worker(script_path() + 'dc.graph.' + _chart.layoutAlgorithm() + '.worker.js');\n var args = {\n width: _chart.width(),\n height: _chart.height()\n };\n // generalize this? class hierarchy, what?\n switch(_chart.layoutAlgorithm()) {\n case 'cola':\n Object.assign(args, {\n handleDisconnected: _chart.handleDisconnected(),\n lengthStrategy: _chart.lengthStrategy(),\n baseLength: _chart.baseLength(),\n flowLayout: _chart.flowLayout(),\n tickSize: _chart.tickSize()\n });\n break;\n case 'dagre':\n Object.assign(args, {\n rankdir: _chart.rankdir()\n });\n }\n _worker.postMessage({\n command: 'init',\n args: args\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n if(_worker)\n _worker.postMessage({command: 'stop'});\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _worker.onmessage = function(e) {\n var args = e.data.args;\n switch(e.data.response) {\n case 'tick':\n var elapsed = Date.now() - startTime;\n populate_cola(args.nodes, args.edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _worker.postMessage({\n command: 'stop'\n });\n }\n break;\n case 'end':\n if(!_chart.showLayoutSteps()) {\n populate_cola(args.nodes, args.edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n break;\n case 'start':\n console.log('algo ' + _chart.layoutAlgorithm() + ' started.');\n _dispatch.start();\n }\n };\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _worker.postMessage({\n command: 'data',\n args: {\n nodes: wnodes.map(function(v) { return v.cola; }),\n edges: layout_edges.map(function(v) { return v.cola; }),\n constraints: constraints,\n opts: {groupConnected: _chart.groupConnected()}\n }\n });\n _worker.postMessage({\n command: 'start',\n args: {\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20,\n initialOnly: _chart.initialOnly(),\n showLayoutSteps: _chart.showLayoutSteps()\n }\n });\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @name render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g');\n _edgeLayer = _g.append('g');\n _nodeLayer = _g.append('g');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @name on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @name getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top svg element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @name svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @name resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @name redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @name renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @name defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _xScale.domain(), yDomain = _yScale.domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n if(_chart.mouseZoomable()) {\n // start out with 1:1 zoom\n _xScale = d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]);\n _yScale = d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]);\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_xScale).y(_yScale);\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _xScale.invert(clientCoord[0]),\n _yScale.invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","/**\n## Legend\n\nThe dc_graph.legend will show labeled examples of nodes (and someday edges), within the frame of a dc_graph.diagram.\n**/\ndc_graph.legend = function() {\n var _legend = {}, _items;\n\n /**\n #### .x([value])\n Set or get x coordinate for legend widget. Default: 0.\n **/\n _legend.x = property(0);\n\n /**\n #### .y([value])\n Set or get y coordinate for legend widget. Default: 0.\n **/\n _legend.y = property(0);\n\n /**\n #### .gap([value])\n Set or get gap between legend items. Default: 5.\n **/\n _legend.gap = property(5);\n\n /**\n #### .nodeWidth([value])\n Set or get legend node width. Default: 30.\n **/\n _legend.nodeWidth = property(40);\n\n /**\n #### .nodeHeight([value])\n Set or get legend node height. Default: 30.\n **/\n _legend.nodeHeight = property(40);\n\n\n /**\n #### .exemplars([object])\n Specifies an object where the keys are the names of items to add to the legend, and the values are\n objects which will be passed to the accessors of the attached diagram in order to determine the\n drawing attributes. Alternately, if the key needs to be specified separately from the name, the\n function can take an array of {name, key, value} objects.\n **/\n _legend.exemplars = property({});\n\n _legend.parent = property(null);\n\n _legend.redraw = function() {\n var legend = _legend.parent().svg()\n .selectAll('g.dc-graph-legend')\n .data([0]);\n legend.enter().append('g')\n .attr('class', 'dc-graph-legend')\n .attr('transform', 'translate(' + _legend.x() + ',' + _legend.y() + ')');\n\n var node = legend.selectAll('.node')\n .data(_items, function(d) { return d.name; });\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node');\n nodeEnter.append('text')\n .attr('dy', '0.3em')\n .attr('class', 'legend-label');\n node\n .attr('transform', function(d, i) {\n return 'translate(' + _legend.nodeWidth()/2 + ',' + (_legend.nodeHeight() + _legend.gap())*(i+0.5) + ')';\n });\n node.select('text.legend-label')\n .attr('transform', 'translate(' + (_legend.nodeWidth()/2+_legend.gap()) + ',0)')\n .text(function(d) {\n return d.name;\n });\n _legend.parent()\n ._enterNode(nodeEnter)\n ._updateNode(node);\n };\n\n _legend.render = function() {\n var exemplars = _legend.exemplars();\n if(exemplars instanceof Array) {\n _items = exemplars.map(function(v) { return {name: v.name, orig: {key: v.key, value: v.value}, cola: {}}; });\n }\n else {\n _items = [];\n for(var item in exemplars)\n _items.push({name: item, orig: {key: item, value: exemplars[item]}, cola: {}});\n }\n _legend.redraw();\n };\n\n return _legend;\n};\n","/**\n * In cola.js there are three factors which influence the positions of nodes:\n * * *edge length* suggestions, controlled by the\n * {@link #dc_graph.diagram+lengthStrategy lengthStrategy},\n * {@link #dc_graph.diagram+baseLength baseLength}, and\n * {@link #dc_graph.diagram+edgeLength edgeLength} parameters in dc.graph.js\n * * *automatic constraints* based on the global edge flow direction (`cola.flowLayout`) and overlap\n * avoidance parameters (`cola.avoidOverlaps`)\n * * *manual constraints* such as alignment, inequality and equality constraints in a dimension/axis.\n *\n * Generally when the\n * {@link https://github.com/tgdwyer/WebCola/wiki/Constraints cola.js documentation mentions constraints},\n * it means the manual constraints.\n *\n * dc.graph.js allows generation of manual constraints using\n * {@link #dc_graph.diagram+constrain diagram.constrain} but it can be tedious to write these\n * functions because it usually means looping over the nodes and edges multiple times to\n * determine what classes or types of nodes to apply constraints to, and which edges should\n * take additional constraints.\n *\n * This utility creates a constraint generator function from a *pattern*, a graph where:\n * 1. Nodes represent *types* or classes of layout nodes, annotated with a specification\n * of how to match the nodes belonging each type.\n * 2. Edges represent *rules* to generate constraints. There are two kinds of rules:\n *
    \n *
  1. To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  2. To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n *
\n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_constraints = function(rootf, treef, xgap, ygap) {\n return function(diagram, nodes, edges) {\n var constraints = [];\n var x = 0;\n var dfs = dc_graph.depth_first_traversal({\n root: rootf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var last = row[row.length-1];\n constraints.push({\n left: diagram.nodeKey.eval(last),\n right: diagram.nodeKey.eval(n),\n axis: 'x',\n gap: x-last.foo_x,\n equality: true\n });\n }\n n.foo_x = x;\n // n.cola.x = x;\n // n.cola.y = r*ygap;\n },\n sib: function() {\n x += xgap;\n }\n });\n dfs(diagram, nodes, edges);\n return constraints;\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n init: function() {\n x = ofsx;\n },\n root: rootf,\n row: rowf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// this currently only supports single selection with a click\n// but it can be expanded with modifier-key clicks and rectangular selection etc.\ndc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [];\n\n function add_behavior(chart, node, edge) {\n chart.cascade(50, true, conditional_properties(function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n }, null, props));\n node.on('click.select-nodes', function(d) {\n _selected = [chart.nodeKey.eval(d)];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n d3.event.stopPropagation();\n });\n chart.svg().on('click.select-nodes', function(d) {\n _selected = [];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n });\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var nselect = _selected.length;\n _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== nselect)\n select_nodes_group.node_set_changed(_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n return dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a special [\"fake group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the special case where you want a group that represents the filtered rows of the crossfilter.\n *\n * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of\n * the corresponding data arrays, and each array has a column which contains the unique identifier\n * for the node or edge. In this setup, there are other dimensions and groups which are aggregated\n * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from\n * the rows.\n *\n * This simple class supports that use case in three steps:\n * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`)\n * 2. It creates a group from the dimension with a reduction function that returns the row when the\n * row is filtered in, and `null` when the row is filtered out.\n * 3. It wraps the group in a fake group which filters out the resulting nulls.\n *\n * The result is a fake group whose `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw\n * row object from the data.\n *\n * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and\n * scatter plots often use similar functionality because each observation is either shown or not,\n * and it is helpful to have the entire row available as reduced data.\n *\n * But it would need to be generalized and cleaned up. (For example, the way it has to create the\n * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility\n * library to put it in.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}.\n * Returns an object containing all three.\n\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} vec - the data array for crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * This is a wretched name for this function.\n\n * @method another\n * @memberof dc_graph.flat_group\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: function(ndx, id_accessor) {\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","// make crossfilter-suitable data from d3.nest {key, values} format\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n inherit = inherit || {};\n var level = Object.keys(inherit).length;\n if(attrs.length) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = nest.map(function(v) {\n inherit[attr] = v.key;\n var child = uuid();\n var node = clone(inherit);\n node[nodeKeyAttr] = child;\n node.name = attr + ':' + v.key;\n node._level = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = child;\n edges.push(edge);\n }\n var recurse = dc_graph.convert_nest(v.values, attrs.slice(0), nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, child, clone(inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: nest.map(function(v) {\n v._level = level+1;\n return v;\n }), edges: nest.map(function(v) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = v[nodeKeyAttr];\n return edge;\n })};\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file diff --git a/dc.graph.min.js b/dc.graph.min.js index f42691b0..c808a7d4 100644 --- a/dc.graph.min.js +++ b/dc.graph.min.js @@ -18,6 +18,6 @@ * */ -!function(){function a(a,b,c){"use strict";function d(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,g(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,g(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function e(a,b){return function(){return a(b.apply(null,arguments))}}function f(a){return a.orig}function g(a){return F.functor_wrap(a,f)}function h(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function i(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function j(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!m(c,i,a))return!1}else if(!m(a,i,c))return!1;if(b>=d){if(!m(d,j,b))return!1}else if(!m(b,j,d))return!1;if(e>=g){if(!m(g,i,e))return!1}else if(!m(e,i,g))return!1;if(f>=h){if(!m(h,j,f))return!1}else if(!m(f,j,h))return!1;return{x:i,y:j}}function o(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function z(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,q,r,s;if(h){var t,u,v=function(b,c){return p(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),z=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=y(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=y(w(c,h.targetPort,j),z,z-2*i*j/k)}catch(a){u={ang:z,port:h.targetPort}}o=t.port,q=u.port;var A=Math.hypot(o.x,o.y),B=Math.hypot(q.x,q.y),C=A+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);r=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+q.x,y:g+q.y}],s=3}else m=f-d,n=g-e,o=p(a,b,m,n),q=p(a,c,-m,-n),o||(o={x:0,y:0}),q||(q={x:0,y:0}),r=[{x:d+o.x,y:e+o.y},{x:f+q.x,y:g+q.y}],s=1;return{sourcePort:o,targetPort:q,points:r,bezDegree:s}}function A(a,b){for(var c=[],d=1;da)return e.splice(c,0,{n:a,f:b}),g}return e.push({n:a,f:b}),g},g._eval=function(a,c){if(0!==c&&e.length){var d=e[c-1];return d.f(a,function(){return g._eval(a,c-1)})}return F.functor_wrap(g(),b)(a)},g.eval=function(a){return g._eval(a,e.length)},g.react=function(a){return arguments.length?(d=a,this):d},g},H=function(a){return a};F.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var I={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c2?j-2:0].path:null,n=z(ea,a.source,a.target,c,d,e,f,m,k,ea.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=C(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function v(a){q(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function w(a){var b=q(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function y(a){return function(b){var c=b.ports[a][b.parallel].path;return j(c.points,c.bezDegree)}}function A(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=R();i=_.translate(),j=_.scale(),n.forEach(function(a){switch(a){case"l":i[0]=S(i,o.left);break;case"t":i[1]=T(i,o.top);break;case"r":i[0]=U(i,o.right);break;case"b":i[1]=V(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=ea.fitStrategy()}void 0!==f&&(a||(a=[va.left,va.top,b,c].join(" ")),fa.attr({viewBox:a,preserveAspectRatio:f})),_.translate(i).scale(j).event(fa)}}function O(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(l));var o={};c.each(function(a){o[ea.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var q=b.transition().duration(m()).delay(function(a){return n(o[ea.nodeKey.eval(a)])}).attr("opacity",ea.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var r={};e.each(function(a){r[ea.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===ea.stageTransitions()?(w(b),c="new"):(v(b),c="old"),ea.edgeArrowhead.eval(b)&&a.select("#"+ea.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",y("modins"===ea.stageTransitions()?"new":"old"));var s=d.each(w).each(function(b){ea.edgeArrowhead.eval(b)&&a.select("#"+ea.arrowId(b,"head")).transition().duration(m()).delay(n(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(m()).delay(function(a){return n(r[ea.edgeKey.eval(a)])}).attr("opacity",ea.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ea.stageTransitions()&&r[ea.edgeKey.eval(a)]?"old":"new";return y(b)(a)});k.attr("d",A("modins"===ea.stageTransitions()?"new":"old"));var t=j.transition().duration(m()).delay(function(a){return n(r[ea.edgeKey.eval(a)])}).attr("opacity",ea.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ea.stageTransitions()&&r[ea.edgeKey.eval(a)]?"old":"new";return A(b)(a)});"insmod"===ea.stageTransitions()&&(m()>=50?(s=s.transition().duration(m()).attr("d",y("new")),t=t.transition().duration(m()).attr("d",A("new"))):(s.attr("d",y("new")),t.attr("d",y("new")))),ea.showLayoutSteps()||B([q,s,t],function(){p(!0)}),f.attr("d",y("new"))}function P(a,b,c){var d=ea.arrowId(a,b),e=ea.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",qa[c].refX).attr("refY",qa[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",qa[c].width*ea.edgeArrowSize.eval(a)).attr("markerHeight",qa[c].height*ea.edgeArrowSize.eval(a)).attr("stroke",ea.edgeStroke.eval(a)).attr("fill",ea.edgeStroke.eval(a)).call(qa[c].drawFunction),c?d:null}function Q(a,b){sa=a,ta=b,ha.attr("transform","translate("+a+") scale("+b+")")}function R(){return{left:va.left-ea.margins().left,top:va.top-ea.margins().top,right:va.right+ea.margins().right,bottom:va.bottom+ea.margins().bottom}}function S(a,b){return a[0]-aa(b)+aa.range()[0]}function T(a,b){return a[1]-ba(b)+ba.range()[0]}function U(a,b){return a[0]-aa(b)+aa.range()[1]}function V(a,b){return a[1]-ba(b)+ba.range()[1]}function W(){var b=a.event.translate;if(ea.restrictPan()){var c,d=aa.domain(),e=ba.domain(),f=R(),g=f.leftea.timeLimit())&&(console.log("cancelled"),ka.postMessage({command:"stop"}));break;case"end":ea.showLayoutSteps()?p(!0):(c(b.nodes,b.edges),O(C,D,u,v,w,x,y,z,A,B));var e;switch(ea.autoZoom()){case"always":e=!0;break;case"once":e=!0,ea.autoZoom(null);break;default:e=!1}M(C,u),e&&N();break;case"start":console.log("algo "+ea.layoutAlgorithm()+" started."),la.start()}},la.start(),ka.postMessage({command:"data",args:{nodes:h.map(function(a){return a.cola}),edges:J.map(function(a){return a.cola}),constraints:I,opts:{groupConnected:ea.groupConnected()}}}),ka.postMessage({command:"start",args:{initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20,initialOnly:ea.initialOnly(),showLayoutSteps:ea.showLayoutSteps()}}),this},ea.refresh=function(b,c,d,e,f){b=b||ia.selectAll(".node"),c=c||ja.selectAll(".edge"),o(b,c),d=d||ja.selectAll(".edge-hover"),e=e||ja.selectAll(".edge-label"),f=f||ga.selectAll("path.edge-label-path");var g=a.select(null);O(b,g,c,g,d,g,e,g,f,g)};var va;return ea.render=function(){return ea.initLayoutOnRedraw()||i(),ea.resetSvg(),ha=fa.append("g"),ja=ha.append("g"),ia=ha.append("g"),ea.legend()&&ea.legend().render(),ea.redraw()},ea.on=function(a,b){return la.on(a,b),this},ea.getStats=function(){return oa},ea.select=function(a){return ea.root().select(a)},ea.selectAll=function(a){return ea.root()?ea.root().selectAll(a):null},ea.svg=function(a){return arguments.length?(fa=a,ea):fa},ea.resetSvg=function(){return ea.select("svg").remove(),Y()},ea.redrawGroup=function(){c.redrawAll(h)},ea.renderGroup=function(){c.renderAll(h)},ea.defineArrow=function(a,b,c,d,e,f){return qa[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},ea},ea.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ga.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},ea.invertCoord=function(a){return[aa.invert(a[0]),ba.invert(a[1])]},ea.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),ea.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),ea.anchor=function(b,d){if(!arguments.length)return ca;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return ca=b.select&&b.classed?b.node():b,ea.root(a.select(ca)),ea.root().classed(F.constants.CHART_CLASS,!0),c.registerChart(ea,d),da=d,ea},ea.anchorName=function(){var a=ea.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+ea.chartID()},ea.anchor(d,h)},F.legend=function(){var a,b={};return b.x=G(0),b.y=G(0),b.gap=G(5),b.nodeWidth=G(40),b.nodeHeight=G(40),b.exemplars=G({}),b.parent=G(null),b.redraw=function(){var c=b.parent().svg().selectAll("g.dc-graph-legend").data([0]);c.enter().append("g").attr("class","dc-graph-legend").attr("transform","translate("+b.x()+","+b.y()+")");var d=c.selectAll(".node").data(a,function(a){return a.name}),e=d.enter().append("g").attr("class","node");e.append("text").attr("dy","0.3em").attr("class","legend-label"),d.attr("transform",function(a,c){return"translate("+b.nodeWidth()/2+","+(b.nodeHeight()+b.gap())*(c+.5)+")"}),d.select("text.legend-label").attr("transform","translate("+(b.nodeWidth()/2+b.gap())+",0)").text(function(a){return a.name}),b.parent()._enterNode(e)._updateNode(d)},b.render=function(){var c=b.exemplars();if(c instanceof Array)a=c.map(function(a){return{name:a.name,orig:{key:a.key,value:a.value},cola:{}}});else{a=[];for(var d in c)a.push({name:d,orig:{key:d,value:c[d]},cola:{}})}b.redraw()},b},F.constraint_pattern=function(a){var b={},c=[];return a.nodes.forEach(function(a){var c=a.id,d=b[c]||(b[c]={});if(a.partition){var e=a.partition,f=a.value||a.id;a.all||a.typename?(d.match=a.extract?function(b){return a.extract(b.value[e])}:function(a){return a.value[e]},d.typename=a.typename||function(a){return e+"="+a.value[e]}):d.match=function(a){return a.value[e]===f}}else{if(!a.match)throw new Error("couldn't determine matcher for type "+JSON.stringify(a));d.match=a.match}}),a.edges.forEach(function(a){if(!a.disable){var b={source:a.source,target:a.target};b.produce="function"==typeof a.produce?a.produce:function(){return h(a.produce)},["listname","wrap","reverse"].forEach(function(c){void 0!==a[c]&&(b[c]=a[c])}),c.push(b)}}),function(a,d,e){var f=[],g={};d.forEach(function(c){var d=a.nodeKey.eval(c);for(var e in b){var f=b[e],h=f.match(c.orig);if(h){var i=f.typename?f.typename(e,h):e;g[i]||(g[i]={nodes:[],whether:{}}),g[i].nodes.push(d),g[i].whether[d]=!0}}});var h=c.filter(function(a){return a.source!==a.target}),i=c.filter(function(a){return a.source===a.target});return e.forEach(function(b){var c=a.edgeSource.eval(b),i=a.edgeTarget.eval(b);h.forEach(function(a){if(g[a.source]&&g[a.source].whether[c]&&g[a.target]&&g[a.target].whether[i]){var b=a.produce(g,d,e);a.reverse?(b.left=i,b.right=c):(b.left=c,b.right=i),f.push(b)}})}),i.forEach(function(a){if(g[a.source]){var b=a.produce(),c=a.listname||a.produce.listname||"nodes",d=a.wrap||a.produce.wrap||function(a){return a};b[c]=g[a.source].nodes.map(d),f.push(b)}}),f}},F.gap_y=function(a,b){return{axis:"y",gap:a,equality:!!b}},F.gap_x=function(a,b){return{axis:"x",gap:a,equality:!!b}},F.align_y=function(){return D("y")},F.align_x=function(){return D("x")},F.order_x=function(a,b){return{type:"ordering",axis:"x",gap:60,ordering:b}},F.order_y=function(a,b){return{type:"ordering",axis:"y",gap:60,ordering:b}},F.tree_constraints=function(a,b,c,d){return function(d,e,f){var g=[],h=0,i=F.depth_first_traversal({root:a,tree:b,place:function(a,b,c){if(c.length){var e=c[c.length-1];g.push({left:d.nodeKey.eval(e),right:d.nodeKey.eval(a),axis:"x",gap:h-e.foo_x,equality:!0})}a.foo_x=h},sib:function(){h+=c}});return i(d,e,f),g}},F.tree_positions=function(b,c,d,e,f,g,h){function i(a,b){return(g(a)+g(b))/2; -}var j;g=a.functor(g);var k=F.depth_first_traversal({init:function(){j=e},root:b,row:c,tree:d,place:function(a,b,c){if(c.length){var d=c[c.length-1],e=(g(d)+g(a))/2;j=Math.max(j,d.left_x+e)}a.left_x=j,a.hit_ins=1,a.cola.y=b*h+f},sib:function(a,b,c){var d=i(b,c);a&&(d*=1.5),j+=d},pop:function(a){a.cola.x=(a.left_x+j)/2},skip:function(a,b){a.cola.x=(a.hit_ins*a.cola.x+j)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,c=a.sort(function(a,b){return a.cola.x-b.cola.x}),d=null,e=null,f=0;f0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=G(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=G("n"),f.content=G(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=G(0),f},F.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=G(!0),b},F.select_nodes=function(b){function c(c,e,h){c.cascade(50,!0,d(function(a){return g.indexOf(a.orig.key)>=0},null,b)),e.on("click.select-nodes",function(b){g=[c.nodeKey.eval(b)],c.refresh(e,h),f.node_set_changed(g),a.event.stopPropagation()}),c.svg().on("click.select-nodes",function(a){g=[],c.refresh(e,h),f.node_set_changed(g)});var i=e.data().map(function(a){return a.orig.key}),j=g.length;g=g.filter(function(a){return i.indexOf(a)>=0}),g.length!==j&&f.node_set_changed(g)}function e(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var f=F.select_nodes_group("select-nodes-group"),g=[];return F.behavior("select-nodes",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},F.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,e,f){c.cascade(100,!0,d(null,function(a){return a.dcg_highlighted},a)),e.on("mouseover.highlight-neighbors",function(a){f.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(e,f)}).on("mouseout.highlight-neighbors",function(a){b(f),c.refresh(e,f)})}function e(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return F.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},F.highlight_paths=function(a,b,c,e){function f(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function g(a,b){r=a,s=b,t=u=null,f()}function h(a){a!==u&&(u=a,f())}function i(a){a!==t&&(t=a,f())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(e,f,g,h){e.cascade(200,!0,d(function(a){return!!r[e.nodeKey.eval(a)]},function(a){return!!s[e.edgeKey.eval(a)]},a)).cascade(300,!0,d(function(a){return m(r[e.nodeKey.eval(a)],t)},function(a){return m(s[e.edgeKey.eval(a)],t)},c)).cascade(400,!0,d(function(a){return m(r[e.nodeKey.eval(a)],u)},function(a){return m(s[e.edgeKey.eval(a)],u)},b)),f.on("mouseover.highlight-paths",function(a){q.hover_changed(r[e.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[e.nodeKey.eval(a)]))}),h.on("mouseover.highlight-paths",function(a){q.hover_changed(s[e.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[e.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=F.register_highlight_paths_group(e||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=F.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?g:null),q.on("hover_changed."+b,a?h:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=G(!1),v},F.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return F.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},F.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},F.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!E(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&E(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},F.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}(),F.convert_nest=function(a,b,d,e,f,g,j){j=j||{};var k=Object.keys(j).length;if(b.length){var l=b.shift(),m=[],n=[],o=a.map(function(a){j[l]=a.key;var c=i(),o=h(j);if(o[d]=c,o.name=l+":"+a.key,o._level=k+1,m.push(o),g){var p={};p[e]=g,p[f]=c,n.push(p)}var q=F.convert_nest(a.values,b.slice(0),d,e,f,c,h(j));return q});return{nodes:Array.prototype.concat.apply(m,o.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(n,o.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a._level=k+1,a}),edges:a.map(function(a){var b={};return b[e]=g,b[f]=a[d],b})}},F.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=i()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},F.path_reader=function(a){function b(a,b,c){g.elementList.eval(a).forEach(function(d){var e,f;switch(g.elementType.eval(d)){case"node":e=g.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=g.edgeSource.eval(d)+"-"+g.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,e,f=F.register_highlight_paths_group(a||"highlight-paths-group"),g={pathList:G(H,!1),timeRange:G(null,!1),elementList:G(H,!1),elementType:G(null,!1),nodeKey:G(null,!1),edgeSource:G(null,!1),edgeTarget:G(null,!1),clear:function(){f.paths_changed({},{},[])},data:function(a){var h,i={},j={},k=[];g.pathList.eval(a).forEach(function(a){if(a._range=g.timeRange.eval(a)){if(h===!1)throw new Error("can't have a mix of ranged and non-ranged paths");h=!0}else{if(h===!0)throw new Error("can't have a mix of ranged and non-ranged paths");h=!1,b(a,i,j)}k.push(a)}),h?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),e&&this.setTime(e)):(c=null,d=null,f.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],g={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,g,h)}),f.paths_changed(g,h,c)}e=a}};return g},F.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=F.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:G("Nothing here"),zero_text:G("No paths"),error_text:G(null),queried:G(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},F.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return F.node_name(Math.floor(a/52))+F.node_name(a%52);throw new Error("no, that's too large")},F.node_object=function(a,b){return b=b||{},_.extend({id:a,name:F.node_name(a)},b)},F.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},F.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;gb&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},F.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},F.d3=a,F.crossfilter=b,F.dc=c,F}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); +!function(){function a(a,b,c){"use strict";function d(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,g(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,g(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function e(a,b){return function(){return a(b.apply(null,arguments))}}function f(a){return a.orig}function g(a){return F.functor_wrap(a,f)}function h(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function i(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function j(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!m(c,i,a))return!1}else if(!m(a,i,c))return!1;if(b>=d){if(!m(d,j,b))return!1}else if(!m(b,j,d))return!1;if(e>=g){if(!m(g,i,e))return!1}else if(!m(e,i,g))return!1;if(f>=h){if(!m(h,j,f))return!1}else if(!m(f,j,h))return!1;return{x:i,y:j}}function o(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function z(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,q,r,s;if(h){var t,u,v=function(b,c){return p(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),z=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=y(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=y(w(c,h.targetPort,j),z,z-2*i*j/k)}catch(a){u={ang:z,port:h.targetPort}}o=t.port,q=u.port;var A=Math.hypot(o.x,o.y),B=Math.hypot(q.x,q.y),C=A+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);r=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+q.x,y:g+q.y}],s=3}else m=f-d,n=g-e,o=p(a,b,m,n),q=p(a,c,-m,-n),o||(o={x:0,y:0}),q||(q={x:0,y:0}),r=[{x:d+o.x,y:e+o.y},{x:f+q.x,y:g+q.y}],s=1;return{sourcePort:o,targetPort:q,points:r,bezDegree:s}}function A(a,b){for(var c=[],d=1;da)return e.splice(c,0,{n:a,f:b}),g}return e.push({n:a,f:b}),g},g._eval=function(a,c){if(0!==c&&e.length){var d=e[c-1];return d.f(a,function(){return g._eval(a,c-1)})}return F.functor_wrap(g(),b)(a)},g.eval=function(a){return g._eval(a,e.length)},g.react=function(a){return arguments.length?(d=a,this):d},g},H=function(a){return a};F.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var I={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c0)for(var d in c)if(c[d].src&&c[d].src.match(new RegExp(b+"$"))){a=c[d].src.replace(new RegExp("(.*)"+b+"$"),"$1");break}}return a}}();F.depth_first_traversal=function(a){return function(b,c,d){function e(c,d){var f=b.nodeKey.eval(c);return j[f]?void(a.skip&&a.skip(c,g[f])):(i[d]||(i[d]=[]),a.place&&a.place(c,d,i[d]),i[d].push(c),j[f]=!0,h[f]&&h[f].forEach(function(b,c){c&&a.sib&&a.sib(!1,h[f][c-1].target,b.target),a.push&&a.push(),e(b.target,d+1)}),void(a.pop&&a.pop(c)))}a.init&&a.init(),a.tree&&(d=d.filter(function(b){return a.tree(b.orig)}));var f,g={},h=d.reduce(function(a,c){var d=b.edgeSource.eval(c),e=b.edgeTarget.eval(c);return a[d]||(a[d]=[]),a[d].push(c),g[e]=(g[e]||0)+1,a},{}),i=[],j={};f=a.root?c.filter(function(b){return a.root(b.orig)}):c.filter(function(a){return!g[b.nodeKey.eval(a)]}),f.forEach(function(b,c){c&&a.sib&&a.sib(!0,f[c-1],b),a.push&&a.push(),e(b,a.row?a.row(b.orig):0)}),a.finish(i)}};var K=1e-7,L={ellipse:function(){return{shape:"ellipse"}},egg:function(){return{shape:"polygon",sides:100,distortion:-.25}},triangle:function(){return{shape:"polygon",sides:3}},rectangle:function(){return{shape:"polygon",sides:4}},diamond:function(){return{shape:"polygon",sides:4,rotation:45}},trapezium:function(){return{shape:"polygon",sides:4,distortion:-.5}},parallelogram:function(){return{shape:"polygon",sides:4,skew:.5}},pentagon:function(){return{shape:"polygon",sides:5}},hexagon:function(){return{shape:"polygon",sides:6}},septagon:function(){return{shape:"polygon",sides:7}},octagon:function(){return{shape:"polygon",sides:8}},invtriangle:function(){return{shape:"polygon",sides:3,rotation:180}},invtrapezium:function(){return{shape:"polygon",sides:4,distortion:.5}},square:function(){return{shape:"polygon",sides:4}},polygon:function(a){return{shape:"polygon",sides:a.sides,skew:a.skew,distortion:a.distortion,rotation:a.rotation}}};F.available_shapes=function(){var a=Object.keys(L);return a.slice(0,a.length-1)};var M={shape:"ellipse"};return F.diagram=function(d,h){function i(){la||(la=new Worker(J()+"dc.graph."+fa.layoutAlgorithm()+".worker.js"));var a={width:fa.width(),height:fa.height()};switch(fa.layoutAlgorithm()){case"cola":Object.assign(a,{handleDisconnected:fa.handleDisconnected(),lengthStrategy:fa.lengthStrategy(),baseLength:fa.baseLength(),flowLayout:fa.flowLayout(),tickSize:fa.tickSize()});break;case"dagre":Object.assign(a,{rankdir:fa.rankdir()})}la.postMessage({command:"init",args:a})}function l(a){return!!a.source&&!!a.target}function m(){return"none"!==fa.stageTransitions()?fa.transitionDuration()/2:fa.transitionDuration()}function n(a){return"none"===fa.stageTransitions()||"modins"===fa.stageTransitions()==!a?0:fa.transitionDuration()/2}function o(b,c){c.attr("stroke",fa.edgeStroke.eval).attr("stroke-width",fa.edgeStrokeWidth.eval).attr("marker-end",function(a){var b=fa.edgeArrowhead.eval(a),c=Q(a,"head",b);return c?"url(#"+c+")":null}).attr("marker-start",function(a){var b=fa.edgeArrowtail.eval(a),c=Q(a,"tail",b);return b?"url(#"+c+")":null}).each(function(b){a.selectAll("#"+fa.arrowId(b,"head")+",#"+fa.arrowId(b,"tail")).attr("fill",fa.edgeStroke.eval(b))}),fa._updateNode(b)}function p(a){ma.end(a),sa=!1,va&&(va=!1,window.setTimeout(function(){fa.isRunning()||fa.redraw()},0))}function q(a,b,c,d,e,f){if(!a.ports[b]){var g=a.source.dcg_ry+fa.nodeStrokeWidth.eval(a.source)/2,h=a.target.dcg_ry+fa.nodeStrokeWidth.eval(a.target)/2;a.ports[b]=new Array(a.ports.n);for(var i=a.ports.rev[a.parallel],j=0;j2?j-2:0].path:null,n=z(fa,a.source,a.target,c,d,e,f,m,k,fa.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=C(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function v(a){q(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function w(a){var b=q(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function y(a){return function(b){var c=b.ports[a][b.parallel].path;return j(c.points,c.bezDegree)}}function A(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=S();i=aa.translate(),j=aa.scale(),n.forEach(function(a){switch(a){case"l":i[0]=T(i,o.left);break;case"t":i[1]=U(i,o.top);break;case"r":i[0]=V(i,o.right);break;case"b":i[1]=W(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=fa.fitStrategy()}void 0!==f&&(a||(a=[wa.left,wa.top,b,c].join(" ")),ga.attr({viewBox:a,preserveAspectRatio:f})),aa.translate(i).scale(j).event(ga)}}function P(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(l));var o={};c.each(function(a){o[fa.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var q=b.transition().duration(m()).delay(function(a){return n(o[fa.nodeKey.eval(a)])}).attr("opacity",fa.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var r={};e.each(function(a){r[fa.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===fa.stageTransitions()?(w(b),c="new"):(v(b),c="old"),fa.edgeArrowhead.eval(b)&&a.select("#"+fa.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",y("modins"===fa.stageTransitions()?"new":"old"));var s=d.each(w).each(function(b){fa.edgeArrowhead.eval(b)&&a.select("#"+fa.arrowId(b,"head")).transition().duration(m()).delay(n(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(m()).delay(function(a){return n(r[fa.edgeKey.eval(a)])}).attr("opacity",fa.edgeOpacity.eval).attr("d",function(a){var b="insmod"===fa.stageTransitions()&&r[fa.edgeKey.eval(a)]?"old":"new";return y(b)(a)});k.attr("d",A("modins"===fa.stageTransitions()?"new":"old"));var t=j.transition().duration(m()).delay(function(a){return n(r[fa.edgeKey.eval(a)])}).attr("opacity",fa.edgeOpacity.eval).attr("d",function(a){var b="insmod"===fa.stageTransitions()&&r[fa.edgeKey.eval(a)]?"old":"new";return A(b)(a)});"insmod"===fa.stageTransitions()&&(m()>=50?(s=s.transition().duration(m()).attr("d",y("new")),t=t.transition().duration(m()).attr("d",A("new"))):(s.attr("d",y("new")),t.attr("d",y("new")))),fa.showLayoutSteps()||B([q,s,t],function(){p(!0)}),f.attr("d",y("new"))}function Q(a,b,c){var d=fa.arrowId(a,b),e=fa.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",ra[c].refX).attr("refY",ra[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",ra[c].width*fa.edgeArrowSize.eval(a)).attr("markerHeight",ra[c].height*fa.edgeArrowSize.eval(a)).attr("stroke",fa.edgeStroke.eval(a)).attr("fill",fa.edgeStroke.eval(a)).call(ra[c].drawFunction),c?d:null}function R(a,b){ta=a,ua=b,ia.attr("transform","translate("+a+") scale("+b+")")}function S(){return{left:wa.left-fa.margins().left,top:wa.top-fa.margins().top,right:wa.right+fa.margins().right,bottom:wa.bottom+fa.margins().bottom}}function T(a,b){return a[0]-ba(b)+ba.range()[0]}function U(a,b){return a[1]-ca(b)+ca.range()[0]}function V(a,b){return a[0]-ba(b)+ba.range()[1]}function W(a,b){return a[1]-ca(b)+ca.range()[1]}function X(){var b=a.event.translate;if(fa.restrictPan()){var c,d=ba.domain(),e=ca.domain(),f=S(),g=f.leftfa.timeLimit())&&(console.log("cancelled"),la.postMessage({command:"stop"}));break;case"end":fa.showLayoutSteps()?p(!0):(c(b.nodes,b.edges),P(C,D,u,v,w,x,y,z,A,B));var e;switch(fa.autoZoom()){case"always":e=!0;break;case"once":e=!0,fa.autoZoom(null);break;default:e=!1}N(C,u),e&&O();break;case"start":console.log("algo "+fa.layoutAlgorithm()+" started."),ma.start()}},ma.start(),la.postMessage({command:"data",args:{nodes:h.map(function(a){return a.cola}),edges:J.map(function(a){return a.cola}),constraints:I,opts:{groupConnected:fa.groupConnected()}}}),la.postMessage({command:"start",args:{initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20,initialOnly:fa.initialOnly(),showLayoutSteps:fa.showLayoutSteps()}}),this},fa.refresh=function(b,c,d,e,f){b=b||ja.selectAll(".node"),c=c||ka.selectAll(".edge"),o(b,c),d=d||ka.selectAll(".edge-hover"),e=e||ka.selectAll(".edge-label"),f=f||ha.selectAll("path.edge-label-path");var g=a.select(null);P(b,g,c,g,d,g,e,g,f,g)};var wa;return fa.render=function(){return fa.initLayoutOnRedraw()||i(),fa.resetSvg(),ia=ga.append("g"),ka=ia.append("g"),ja=ia.append("g"),fa.legend()&&fa.legend().render(),fa.redraw()},fa.on=function(a,b){return ma.on(a,b),this},fa.getStats=function(){return pa},fa.select=function(a){return fa.root().select(a)},fa.selectAll=function(a){return fa.root()?fa.root().selectAll(a):null},fa.svg=function(a){return arguments.length?(ga=a,fa):ga},fa.resetSvg=function(){return fa.select("svg").remove(),Z()},fa.redrawGroup=function(){c.redrawAll(h)},fa.renderGroup=function(){c.renderAll(h)},fa.defineArrow=function(a,b,c,d,e,f){return ra[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},fa},fa.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ha.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},fa.invertCoord=function(a){return[ba.invert(a[0]),ca.invert(a[1])]},fa.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),fa.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),fa.anchor=function(b,d){if(!arguments.length)return da;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return da=b.select&&b.classed?b.node():b,fa.root(a.select(da)),fa.root().classed(F.constants.CHART_CLASS,!0),c.registerChart(fa,d),ea=d,fa},fa.anchorName=function(){var a=fa.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+fa.chartID()},fa.anchor(d,h)},F.legend=function(){var a,b={};return b.x=G(0),b.y=G(0),b.gap=G(5),b.nodeWidth=G(40),b.nodeHeight=G(40),b.exemplars=G({}),b.parent=G(null),b.redraw=function(){var c=b.parent().svg().selectAll("g.dc-graph-legend").data([0]);c.enter().append("g").attr("class","dc-graph-legend").attr("transform","translate("+b.x()+","+b.y()+")");var d=c.selectAll(".node").data(a,function(a){return a.name}),e=d.enter().append("g").attr("class","node");e.append("text").attr("dy","0.3em").attr("class","legend-label"),d.attr("transform",function(a,c){return"translate("+b.nodeWidth()/2+","+(b.nodeHeight()+b.gap())*(c+.5)+")"}),d.select("text.legend-label").attr("transform","translate("+(b.nodeWidth()/2+b.gap())+",0)").text(function(a){return a.name}),b.parent()._enterNode(e)._updateNode(d)},b.render=function(){var c=b.exemplars();if(c instanceof Array)a=c.map(function(a){return{name:a.name,orig:{key:a.key,value:a.value},cola:{}}});else{a=[];for(var d in c)a.push({name:d,orig:{key:d,value:c[d]},cola:{}})}b.redraw()},b},F.constraint_pattern=function(a){var b={},c=[];return a.nodes.forEach(function(a){var c=a.id,d=b[c]||(b[c]={});if(a.partition){var e=a.partition,f=a.value||a.id;a.all||a.typename?(d.match=a.extract?function(b){return a.extract(b.value[e])}:function(a){return a.value[e]},d.typename=a.typename||function(a){return e+"="+a.value[e]}):d.match=function(a){return a.value[e]===f}}else{if(!a.match)throw new Error("couldn't determine matcher for type "+JSON.stringify(a));d.match=a.match}}),a.edges.forEach(function(a){if(!a.disable){var b={source:a.source,target:a.target};b.produce="function"==typeof a.produce?a.produce:function(){return h(a.produce)},["listname","wrap","reverse"].forEach(function(c){void 0!==a[c]&&(b[c]=a[c])}),c.push(b)}}),function(a,d,e){var f=[],g={};d.forEach(function(c){var d=a.nodeKey.eval(c);for(var e in b){var f=b[e],h=f.match(c.orig);if(h){var i=f.typename?f.typename(e,h):e;g[i]||(g[i]={nodes:[],whether:{}}),g[i].nodes.push(d),g[i].whether[d]=!0}}});var h=c.filter(function(a){return a.source!==a.target}),i=c.filter(function(a){return a.source===a.target});return e.forEach(function(b){var c=a.edgeSource.eval(b),i=a.edgeTarget.eval(b);h.forEach(function(a){if(g[a.source]&&g[a.source].whether[c]&&g[a.target]&&g[a.target].whether[i]){var b=a.produce(g,d,e);a.reverse?(b.left=i,b.right=c):(b.left=c,b.right=i),f.push(b)}})}),i.forEach(function(a){if(g[a.source]){var b=a.produce(),c=a.listname||a.produce.listname||"nodes",d=a.wrap||a.produce.wrap||function(a){return a};b[c]=g[a.source].nodes.map(d),f.push(b)}}),f}},F.gap_y=function(a,b){return{axis:"y",gap:a,equality:!!b}},F.gap_x=function(a,b){return{axis:"x",gap:a,equality:!!b}},F.align_y=function(){return D("y")},F.align_x=function(){return D("x")},F.order_x=function(a,b){return{type:"ordering",axis:"x",gap:60,ordering:b}},F.order_y=function(a,b){return{type:"ordering",axis:"y",gap:60,ordering:b}},F.tree_constraints=function(a,b,c,d){return function(d,e,f){var g=[],h=0,i=F.depth_first_traversal({root:a, +tree:b,place:function(a,b,c){if(c.length){var e=c[c.length-1];g.push({left:d.nodeKey.eval(e),right:d.nodeKey.eval(a),axis:"x",gap:h-e.foo_x,equality:!0})}a.foo_x=h},sib:function(){h+=c}});return i(d,e,f),g}},F.tree_positions=function(b,c,d,e,f,g,h){function i(a,b){return(g(a)+g(b))/2}var j;g=a.functor(g);var k=F.depth_first_traversal({init:function(){j=e},root:b,row:c,tree:d,place:function(a,b,c){if(c.length){var d=c[c.length-1],e=(g(d)+g(a))/2;j=Math.max(j,d.left_x+e)}a.left_x=j,a.hit_ins=1,a.cola.y=b*h+f},sib:function(a,b,c){var d=i(b,c);a&&(d*=1.5),j+=d},pop:function(a){a.cola.x=(a.left_x+j)/2},skip:function(a,b){a.cola.x=(a.hit_ins*a.cola.x+j)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,c=a.sort(function(a,b){return a.cola.x-b.cola.x}),d=null,e=null,f=0;f0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=G(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=G("n"),f.content=G(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=G(0),f},F.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=G(!0),b},F.select_nodes=function(b){function c(c,e,h){c.cascade(50,!0,d(function(a){return g.indexOf(a.orig.key)>=0},null,b)),e.on("click.select-nodes",function(b){g=[c.nodeKey.eval(b)],c.refresh(e,h),f.node_set_changed(g),a.event.stopPropagation()}),c.svg().on("click.select-nodes",function(a){g=[],c.refresh(e,h),f.node_set_changed(g)});var i=e.data().map(function(a){return a.orig.key}),j=g.length;g=g.filter(function(a){return i.indexOf(a)>=0}),g.length!==j&&f.node_set_changed(g)}function e(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var f=F.select_nodes_group("select-nodes-group"),g=[];return F.behavior("select-nodes",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},F.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,e,f){c.cascade(100,!0,d(null,function(a){return a.dcg_highlighted},a)),e.on("mouseover.highlight-neighbors",function(a){f.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(e,f)}).on("mouseout.highlight-neighbors",function(a){b(f),c.refresh(e,f)})}function e(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return F.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},F.highlight_paths=function(a,b,c,e){function f(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function g(a,b){r=a,s=b,t=u=null,f()}function h(a){a!==u&&(u=a,f())}function i(a){a!==t&&(t=a,f())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(e,f,g,h){e.cascade(200,!0,d(function(a){return!!r[e.nodeKey.eval(a)]},function(a){return!!s[e.edgeKey.eval(a)]},a)).cascade(300,!0,d(function(a){return m(r[e.nodeKey.eval(a)],t)},function(a){return m(s[e.edgeKey.eval(a)],t)},c)).cascade(400,!0,d(function(a){return m(r[e.nodeKey.eval(a)],u)},function(a){return m(s[e.edgeKey.eval(a)],u)},b)),f.on("mouseover.highlight-paths",function(a){q.hover_changed(r[e.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[e.nodeKey.eval(a)]))}),h.on("mouseover.highlight-paths",function(a){q.hover_changed(s[e.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[e.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=F.register_highlight_paths_group(e||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=F.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?g:null),q.on("hover_changed."+b,a?h:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=G(!1),v},F.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return F.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},F.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},F.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!E(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&E(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},F.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}(),F.convert_nest=function(a,b,d,e,f,g,j){j=j||{};var k=Object.keys(j).length;if(b.length){var l=b.shift(),m=[],n=[],o=a.map(function(a){j[l]=a.key;var c=i(),o=h(j);if(o[d]=c,o.name=l+":"+a.key,o._level=k+1,m.push(o),g){var p={};p[e]=g,p[f]=c,n.push(p)}var q=F.convert_nest(a.values,b.slice(0),d,e,f,c,h(j));return q});return{nodes:Array.prototype.concat.apply(m,o.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(n,o.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a._level=k+1,a}),edges:a.map(function(a){var b={};return b[e]=g,b[f]=a[d],b})}},F.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=i()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},F.path_reader=function(a){function b(a,b,c){g.elementList.eval(a).forEach(function(d){var e,f;switch(g.elementType.eval(d)){case"node":e=g.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=g.edgeSource.eval(d)+"-"+g.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,e,f=F.register_highlight_paths_group(a||"highlight-paths-group"),g={pathList:G(H,!1),timeRange:G(null,!1),elementList:G(H,!1),elementType:G(null,!1),nodeKey:G(null,!1),edgeSource:G(null,!1),edgeTarget:G(null,!1),clear:function(){f.paths_changed({},{},[])},data:function(a){var h,i={},j={},k=[];g.pathList.eval(a).forEach(function(a){if(a._range=g.timeRange.eval(a)){if(h===!1)throw new Error("can't have a mix of ranged and non-ranged paths");h=!0}else{if(h===!0)throw new Error("can't have a mix of ranged and non-ranged paths");h=!1,b(a,i,j)}k.push(a)}),h?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),e&&this.setTime(e)):(c=null,d=null,f.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],g={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,g,h)}),f.paths_changed(g,h,c)}e=a}};return g},F.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=F.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:G("Nothing here"),zero_text:G("No paths"),error_text:G(null),queried:G(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},F.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return F.node_name(Math.floor(a/52))+F.node_name(a%52);throw new Error("no, that's too large")},F.node_object=function(a,b){return b=b||{},_.extend({id:a,name:F.node_name(a)},b)},F.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},F.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;gb&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},F.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},F.d3=a,F.crossfilter=b,F.dc=c,F}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); //# sourceMappingURL=dc.graph.min.js.map \ No newline at end of file diff --git a/dc.graph.min.js.map b/dc.graph.min.js.map index ff6d8262..84a4e947 100644 --- a/dc.graph.min.js.map +++ b/dc.graph.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","console","error","compose","f","g","apply","arguments","get_original","x","orig","v","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","uuid","replace","c","r","Math","random","toString","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","length","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","ret","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","this","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","align_f","axis","type","listname","can_get_graph_from_this","data","nodes","vertices","edges","links","version","constants","CHART_CLASS","property","defaultValue","unwrap","undefined","identity","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","depth_first_traversal","callbacks","diagram","place_tree","nodeKey","placed","skip","indegree","rows","place","outmap","forEach","e","ei","sib","pop","init","tree","filter","roots","reduce","m","tail","edgeSource","head","edgeTarget","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","parent","chartGroup","initLayout","_worker","Worker","_chart","layoutAlgorithm","args","handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize","rankdir","postMessage","command","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","name","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","window","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","match","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","event","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","_xScale","range","_yScale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","generateSvg","append","_defs","mouseZoomable","linear","behavior","zoom","on","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","marginMixin","_nodeLayer","_edgeLayer","dispatch","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","sourceAccessor","sourcename","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","edgeLength","edgeDistanceAccessor","distance","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","edgeId","textpathId","getNode","_enterNode","changedShape","remove","text","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","quicksort","by","wnodes","v1","dcg_nodeFixed","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","onmessage","response","elapsed","do_zoom","start","opts","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","svg","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","anchorName","chartID","_items","_legend","nodeWidth","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_constraints","rootf","treef","xgap","ygap","dfs","foo_x","tree_positions","rowf","ofsx","ofsy","nwidth","best_dist","functor","left_x","hit_ins","isroot","want","badi","badl","limit","extra","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","createElement","rowsEnter","outerHTML","select_nodes","_selected","select_nodes_group","node_set_changed","stopPropagation","present","nselect","brushgroup","chart_registry","create_type","create_group","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","bind","dcg_dblclk_timeout","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","warn","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","inherit","shift","children","_level","recurse","values","prototype","pluck","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","clear","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","style","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","line_breaks","charexp","max_line_length","regexp","RegExp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","nmap","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file +{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","console","error","compose","f","g","apply","arguments","get_original","x","orig","v","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","uuid","replace","c","r","Math","random","toString","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","length","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","ret","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","this","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","align_f","axis","type","listname","can_get_graph_from_this","data","nodes","vertices","edges","links","version","constants","CHART_CLASS","property","defaultValue","unwrap","undefined","identity","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","script_path","_path","filename","scripts","getElementsByTagName","src","match","RegExp","depth_first_traversal","callbacks","diagram","place_tree","nodeKey","placed","skip","indegree","rows","place","outmap","forEach","e","ei","sib","pop","init","tree","filter","roots","reduce","m","tail","edgeSource","head","edgeTarget","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","parent","chartGroup","initLayout","_worker","Worker","_chart","layoutAlgorithm","args","handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize","rankdir","postMessage","command","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","name","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","window","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","event","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","_xScale","range","_yScale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","generateSvg","append","_defs","mouseZoomable","linear","behavior","zoom","on","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","marginMixin","_nodeLayer","_edgeLayer","dispatch","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","sourceAccessor","sourcename","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","edgeLength","edgeDistanceAccessor","distance","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","edgeId","textpathId","getNode","_enterNode","changedShape","remove","text","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","quicksort","by","wnodes","v1","dcg_nodeFixed","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","onmessage","response","elapsed","do_zoom","start","opts","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","svg","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","anchorName","chartID","_items","_legend","nodeWidth","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_constraints","rootf","treef","xgap","ygap","dfs","foo_x","tree_positions","rowf","ofsx","ofsy","nwidth","best_dist","functor","left_x","hit_ins","isroot","want","badi","badl","limit","extra","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","createElement","rowsEnter","outerHTML","select_nodes","_selected","select_nodes_group","node_set_changed","stopPropagation","present","nselect","brushgroup","chart_registry","create_type","create_group","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","bind","dcg_dblclk_timeout","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","warn","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","inherit","shift","children","_level","recurse","values","prototype","pluck","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","clear","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","style","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","line_breaks","charexp","max_line_length","regexp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","nmap","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file diff --git a/web/css/dc.css b/web/css/dc.css index f172c1c9..284fbb89 100644 --- a/web/css/dc.css +++ b/web/css/dc.css @@ -46,7 +46,7 @@ div.dc-chart { shape-rendering: crispEdges; } .dc-chart .axis text { - font: 10px "sans-serif"; } + font: 10px sans-serif; } .dc-chart .grid-line, .dc-chart .axis .grid-line, .dc-chart .grid-line line, .dc-chart .axis .grid-line line { fill: none; @@ -143,7 +143,7 @@ div.dc-chart { stroke-opacity: 0.2; } .dc-chart .box text { - font: 10px "sans-serif"; + font: 10px sans-serif; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; diff --git a/web/css/font-awesome.css b/web/css/font-awesome.css index b2a5fe2f..ee906a81 100644 --- a/web/css/font-awesome.css +++ b/web/css/font-awesome.css @@ -1,13 +1,13 @@ /*! - * Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /* FONT PATH * -------------------------- */ @font-face { font-family: 'FontAwesome'; - src: url('../fonts/fontawesome-webfont.eot?v=4.5.0'); - src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg'); + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); font-weight: normal; font-style: normal; } @@ -118,31 +118,31 @@ } } .fa-rotate-90 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .fa-rotate-180 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .fa-rotate-270 { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); } .fa-flip-horizontal { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); } .fa-flip-vertical { - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); @@ -1383,7 +1383,7 @@ .fa-digg:before { content: "\f1a6"; } -.fa-pied-piper:before { +.fa-pied-piper-pp:before { content: "\f1a7"; } .fa-pied-piper-alt:before { @@ -1509,6 +1509,7 @@ content: "\f1ce"; } .fa-ra:before, +.fa-resistance:before, .fa-rebel:before { content: "\f1d0"; } @@ -1831,6 +1832,7 @@ content: "\f23e"; } .fa-battery-4:before, +.fa-battery:before, .fa-battery-full:before { content: "\f240"; } @@ -2084,3 +2086,252 @@ .fa-percent:before { content: "\f295"; } +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.fa-handshake-o:before { + content: "\f2b5"; +} +.fa-envelope-open:before { + content: "\f2b6"; +} +.fa-envelope-open-o:before { + content: "\f2b7"; +} +.fa-linode:before { + content: "\f2b8"; +} +.fa-address-book:before { + content: "\f2b9"; +} +.fa-address-book-o:before { + content: "\f2ba"; +} +.fa-vcard:before, +.fa-address-card:before { + content: "\f2bb"; +} +.fa-vcard-o:before, +.fa-address-card-o:before { + content: "\f2bc"; +} +.fa-user-circle:before { + content: "\f2bd"; +} +.fa-user-circle-o:before { + content: "\f2be"; +} +.fa-user-o:before { + content: "\f2c0"; +} +.fa-id-badge:before { + content: "\f2c1"; +} +.fa-drivers-license:before, +.fa-id-card:before { + content: "\f2c2"; +} +.fa-drivers-license-o:before, +.fa-id-card-o:before { + content: "\f2c3"; +} +.fa-quora:before { + content: "\f2c4"; +} +.fa-free-code-camp:before { + content: "\f2c5"; +} +.fa-telegram:before { + content: "\f2c6"; +} +.fa-thermometer-4:before, +.fa-thermometer:before, +.fa-thermometer-full:before { + content: "\f2c7"; +} +.fa-thermometer-3:before, +.fa-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-thermometer-2:before, +.fa-thermometer-half:before { + content: "\f2c9"; +} +.fa-thermometer-1:before, +.fa-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-thermometer-0:before, +.fa-thermometer-empty:before { + content: "\f2cb"; +} +.fa-shower:before { + content: "\f2cc"; +} +.fa-bathtub:before, +.fa-s15:before, +.fa-bath:before { + content: "\f2cd"; +} +.fa-podcast:before { + content: "\f2ce"; +} +.fa-window-maximize:before { + content: "\f2d0"; +} +.fa-window-minimize:before { + content: "\f2d1"; +} +.fa-window-restore:before { + content: "\f2d2"; +} +.fa-times-rectangle:before, +.fa-window-close:before { + content: "\f2d3"; +} +.fa-times-rectangle-o:before, +.fa-window-close-o:before { + content: "\f2d4"; +} +.fa-bandcamp:before { + content: "\f2d5"; +} +.fa-grav:before { + content: "\f2d6"; +} +.fa-etsy:before { + content: "\f2d7"; +} +.fa-imdb:before { + content: "\f2d8"; +} +.fa-ravelry:before { + content: "\f2d9"; +} +.fa-eercast:before { + content: "\f2da"; +} +.fa-microchip:before { + content: "\f2db"; +} +.fa-snowflake-o:before { + content: "\f2dc"; +} +.fa-superpowers:before { + content: "\f2dd"; +} +.fa-wpexplorer:before { + content: "\f2de"; +} +.fa-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/web/css/jquery-ui.css b/web/css/jquery-ui.css index 3efdd64d..93707f4c 100644 --- a/web/css/jquery-ui.css +++ b/web/css/jquery-ui.css @@ -1,8 +1,8 @@ -/*! jQuery UI - v1.10.4 - 2014-01-17 +/*! jQuery UI - v1.12.1 - 2016-09-14 * http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ +* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6 +* Copyright jQuery Foundation and other contributors; Licensed MIT */ /* Layout helpers ----------------------------------*/ @@ -38,9 +38,6 @@ .ui-helper-clearfix:after { clear: both; } -.ui-helper-clearfix { - min-height: 0; /* support: IE7 */ -} .ui-helper-zfix { width: 100%; height: 100%; @@ -48,7 +45,7 @@ left: 0; position: absolute; opacity: 0; - filter:Alpha(Opacity=0); + filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { @@ -60,20 +57,27 @@ ----------------------------------*/ .ui-state-disabled { cursor: default !important; + pointer-events: none; } /* Icons ----------------------------------*/ - -/* states and images */ .ui-icon { - display: block; + display: inline-block; + vertical-align: middle; + margin-top: -.25em; + position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } +.ui-widget-icon-block { + left: 50%; + margin-left: -8px; + display: block; +} /* Misc visuals ----------------------------------*/ @@ -90,24 +94,9 @@ display: block; cursor: pointer; position: relative; - margin-top: 2px; + margin: 2px 0 0 0; padding: .5em .5em .5em .7em; - min-height: 0; /* support: IE7 */ -} -.ui-accordion .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-noicons { - padding-left: .7em; -} -.ui-accordion .ui-accordion-icons .ui-accordion-icons { - padding-left: 2.2em; -} -.ui-accordion .ui-accordion-header .ui-accordion-header-icon { - position: absolute; - left: .5em; - top: 50%; - margin-top: -8px; + font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; @@ -120,17 +109,78 @@ left: 0; cursor: default; } +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: 0; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + cursor: pointer; + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-item-wrapper { + position: relative; + padding: 3px 1em 3px .4em; +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item-wrapper { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} .ui-button { + padding: .4em 1em; display: inline-block; position: relative; - padding: 0; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; - overflow: visible; /* removes extra width in IE */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + /* Support: IE <= 11 */ + overflow: visible; } + .ui-button, .ui-button:link, .ui-button:visited, @@ -138,91 +188,129 @@ .ui-button:active { text-decoration: none; } + /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { - width: 2.2em; -} -/* button elements seem to need a little more width */ -button.ui-button-icon-only { - width: 2.4em; + width: 2em; + box-sizing: border-box; + text-indent: -9999px; + white-space: nowrap; } -.ui-button-icons-only { - width: 3.4em; + +/* no icon support for input elements */ +input.ui-button.ui-button-icon-only { + text-indent: 0; } -button.ui-button-icons-only { - width: 3.7em; + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon { + position: absolute; + top: 50%; + left: 50%; + margin-top: -8px; + margin-left: -8px; } -/* button text element */ -.ui-button .ui-button-text { - display: block; - line-height: normal; +.ui-button.ui-icon-notext .ui-icon { + padding: 0; + width: 2.1em; + height: 2.1em; + text-indent: -9999px; + white-space: nowrap; + } -.ui-button-text-only .ui-button-text { + +input.ui-button.ui-icon-notext .ui-icon { + width: auto; + height: auto; + text-indent: 0; + white-space: normal; padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, -.ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; + +/* workarounds */ +/* Support: Firefox 5 - 40 */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-controlgroup { + vertical-align: middle; + display: inline-block; +} +.ui-controlgroup > .ui-controlgroup-item { + float: left; + margin-left: 0; + margin-right: 0; } -.ui-button-text-icon-primary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; +.ui-controlgroup > .ui-controlgroup-item:focus, +.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { + z-index: 9999; } -.ui-button-text-icon-secondary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; +.ui-controlgroup-vertical > .ui-controlgroup-item { + display: block; + float: none; + width: 100%; + margin-top: 0; + margin-bottom: 0; + text-align: left; } -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; +.ui-controlgroup-vertical .ui-controlgroup-item { + box-sizing: border-box; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { +.ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon, -.ui-button-text-icon-primary .ui-icon, -.ui-button-text-icon-secondary .ui-icon, -.ui-button-text-icons .ui-icon, -.ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; +.ui-controlgroup .ui-controlgroup-label span { + font-size: 80%; } -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; +.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { + border-left: none; } -.ui-button-text-icon-primary .ui-button-icon-primary, -.ui-button-text-icons .ui-button-icon-primary, -.ui-button-icons-only .ui-button-icon-primary { - left: .5em; +.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { + border-top: none; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, -.ui-button-text-icons .ui-button-icon-secondary, -.ui-button-icons-only .ui-button-icon-secondary { - right: .5em; +.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { + border-right: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { + border-bottom: none; } -/* button sets */ -.ui-buttonset { - margin-right: 7px; +/* Spinner specific style fixes */ +.ui-controlgroup-vertical .ui-spinner-input { + + /* Support: IE8 only, Android < 4.4 only */ + width: 75%; + width: calc( 100% - 2.4em ); } -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; +.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { + border-top-style: solid; } -/* workarounds */ -/* reset extra padding in Firefox, see h5bp.com/l */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; +.ui-checkboxradio-label .ui-icon-background { + box-shadow: inset 1px 1px 1px #ccc; + border-radius: .12em; + border: none; +} +.ui-checkboxradio-radio-label .ui-icon-background { + width: 16px; + height: 16px; + border-radius: 1em; + overflow: visible; + border: none; +} +.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, +.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { + background-image: none; + width: 8px; + height: 8px; + border-width: 4px; + border-style: solid; +} +.ui-checkboxradio-disabled { + pointer-events: none; } .ui-datepicker { width: 17em; @@ -276,7 +364,7 @@ button.ui-button::-moz-focus-inner { } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { - width: 49%; + width: 45%; } .ui-datepicker table { width: 100%; @@ -389,8 +477,17 @@ button.ui-button::-moz-focus-inner { border-right-width: 0; border-left-width: 1px; } -.ui-dialog { + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; +} +.ui-dialog { position: absolute; top: 0; left: 0; @@ -439,102 +536,51 @@ button.ui-button::-moz-focus-inner { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { - width: 12px; - height: 12px; - right: -5px; - bottom: -5px; - background-position: 16px 16px; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-menu { - list-style: none; - padding: 2px; - margin: 0; - display: block; - outline: none; -} -.ui-menu .ui-menu { - margin-top: -3px; - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - padding: 0; - width: 100%; - /* support: IE10, see #8844 */ - list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); -} -.ui-menu .ui-menu-divider { - margin: 5px -2px 5px -2px; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-menu-item a { - text-decoration: none; - display: block; - padding: 2px .4em; - line-height: 1.5; - min-height: 0; /* support: IE7 */ - font-weight: normal; -} -.ui-menu .ui-menu-item a.ui-state-focus, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; +.ui-dialog .ui-resizable-n { + height: 2px; + top: 0; } - -.ui-menu .ui-state-disabled { - font-weight: normal; - margin: .4em 0 .2em; - line-height: 1.5; +.ui-dialog .ui-resizable-e { + width: 2px; + right: 0; } -.ui-menu .ui-state-disabled a { - cursor: default; +.ui-dialog .ui-resizable-s { + height: 2px; + bottom: 0; } - -/* icon support */ -.ui-menu-icons { - position: relative; +.ui-dialog .ui-resizable-w { + width: 2px; + left: 0; } -.ui-menu-icons .ui-menu-item a { - position: relative; - padding-left: 2em; +.ui-dialog .ui-resizable-se, +.ui-dialog .ui-resizable-sw, +.ui-dialog .ui-resizable-ne, +.ui-dialog .ui-resizable-nw { + width: 7px; + height: 7px; } - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: .2em; - left: .2em; +.ui-dialog .ui-resizable-se { + right: 0; + bottom: 0; } - -/* right-aligned */ -.ui-menu .ui-menu-icon { - position: static; - float: right; +.ui-dialog .ui-resizable-sw { + left: 0; + bottom: 0; } -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; +.ui-dialog .ui-resizable-ne { + right: 0; + top: 0; } -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; +.ui-dialog .ui-resizable-nw { + left: 0; + top: 0; } -.ui-progressbar .ui-progressbar-overlay { - background: url("images/animated-overlay.gif"); - height: 100%; - filter: alpha(opacity=25); - opacity: 0.25; +.ui-draggable .ui-dialog-titlebar { + cursor: move; } -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; } .ui-resizable { position: relative; @@ -543,6 +589,8 @@ button.ui-button::-moz-focus-inner { position: absolute; font-size: 0.1px; display: block; + -ms-touch-action: none; + touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { @@ -604,11 +652,73 @@ button.ui-button::-moz-focus-inner { right: -5px; top: -5px; } +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,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"); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-text { + display: block; + margin-right: 20px; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-selectmenu-button.ui-button { + text-align: left; + white-space: nowrap; + width: 14em; +} +.ui-selectmenu-icon.ui-icon { + float: right; + margin-top: 0; +} .ui-slider { position: relative; text-align: left; @@ -619,6 +729,8 @@ button.ui-button::-moz-focus-inner { width: 1.2em; height: 1.2em; cursor: default; + -ms-touch-action: none; + touch-action: none; } .ui-slider .ui-slider-range { position: absolute; @@ -629,7 +741,7 @@ button.ui-button::-moz-focus-inner { background-position: 0 0; } -/* For IE8 - See #6727 */ +/* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; @@ -672,6 +784,10 @@ button.ui-button::-moz-focus-inner { .ui-slider-vertical .ui-slider-range-max { top: 0; } +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} .ui-spinner { position: relative; display: inline-block; @@ -683,14 +799,14 @@ button.ui-button::-moz-focus-inner { border: none; background: none; color: inherit; - padding: 0; + padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; - margin-right: 22px; + margin-right: 2em; } .ui-spinner-button { - width: 16px; + width: 1.6em; height: 50%; font-size: .5em; padding: 0; @@ -704,16 +820,9 @@ button.ui-button::-moz-focus-inner { } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { - border-top: none; - border-bottom: none; - border-right: none; -} -/* vertically center icon */ -.ui-spinner .ui-icon { - position: absolute; - margin-top: -8px; - top: 50%; - left: 0; + border-top-style: none; + border-bottom-style: none; + border-right-style: none; } .ui-spinner-up { top: 0; @@ -721,12 +830,6 @@ button.ui-button::-moz-focus-inner { .ui-spinner-down { bottom: 0; } - -/* TR overrides */ -.ui-spinner .ui-icon-triangle-1-s { - /* need to fix icons sprite */ - background-position: -65px -16px; -} .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; @@ -773,8 +876,6 @@ button.ui-button::-moz-focus-inner { position: absolute; z-index: 9999; max-width: 300px; - -webkit-box-shadow: 0 0 5px #aaa; - box-shadow: 0 0 5px #aaa; } body .ui-tooltip { border-width: 2px; @@ -783,8 +884,8 @@ body .ui-tooltip { /* Component containers ----------------------------------*/ .ui-widget { - font-family: Verdana,Arial,sans-serif; - font-size: 1.1em; + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; } .ui-widget .ui-widget { font-size: 1em; @@ -793,41 +894,54 @@ body .ui-tooltip { .ui-widget select, .ui-widget textarea, .ui-widget button { - font-family: Verdana,Arial,sans-serif; + font-family: Arial,Helvetica,sans-serif; font-size: 1em; } +.ui-widget.ui-widget-content { + border: 1px solid #c5c5c5; +} .ui-widget-content { - border: 1px solid #aaaaaa; - background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; - color: #222222; + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; } .ui-widget-content a { - color: #222222; + color: #333333; } .ui-widget-header { - border: 1px solid #aaaaaa; - background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; - color: #222222; + border: 1px solid #dddddd; + background: #e9e9e9; + color: #333333; font-weight: bold; } .ui-widget-header a { - color: #222222; + color: #333333; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - border: 1px solid #d3d3d3; - background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; +.ui-widget-header .ui-state-default, +.ui-button, + +/* We use html here because we need a greater specificity to make sure disabled +works properly when clicked or hovered */ +html .ui-button.ui-state-disabled:hover, +html .ui-button.ui-state-disabled:active { + border: 1px solid #c5c5c5; + background: #f6f6f6; font-weight: normal; - color: #555555; + color: #454545; } .ui-state-default a, .ui-state-default a:link, -.ui-state-default a:visited { - color: #555555; +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #454545; text-decoration: none; } .ui-state-hover, @@ -835,11 +949,13 @@ body .ui-tooltip { .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - border: 1px solid #999999; - background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; +.ui-widget-header .ui-state-focus, +.ui-button:hover, +.ui-button:focus { + border: 1px solid #cccccc; + background: #ededed; font-weight: normal; - color: #212121; + color: #2b2b2b; } .ui-state-hover a, .ui-state-hover a:hover, @@ -848,22 +964,36 @@ body .ui-tooltip { .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, -.ui-state-focus a:visited { - color: #212121; +.ui-state-focus a:visited, +a.ui-button:hover, +a.ui-button:focus { + color: #2b2b2b; text-decoration: none; } + +.ui-visual-focus { + box-shadow: 0 0 3px 1px rgb(94, 158, 214); +} .ui-state-active, .ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #aaaaaa; - background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + border: 1px solid #003eff; + background: #007fff; font-weight: normal; - color: #212121; + color: #ffffff; +} +.ui-icon-background, +.ui-state-active .ui-icon-background { + border: #003eff; + background-color: #ffffff; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { - color: #212121; + color: #ffffff; text-decoration: none; } @@ -872,31 +1002,35 @@ body .ui-tooltip { .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { - border: 1px solid #fcefa1; - background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; - color: #363636; + border: 1px solid #dad55e; + background: #fffa90; + color: #777620; +} +.ui-state-checked { + border: 1px solid #dad55e; + background: #fffa90; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { - color: #363636; + color: #777620; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { - border: 1px solid #cd0a0a; - background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; - color: #cd0a0a; + border: 1px solid #f1a899; + background: #fddfdf; + color: #5f3f3f; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { - color: #cd0a0a; + color: #5f3f3f; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { - color: #cd0a0a; + color: #5f3f3f; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, @@ -907,18 +1041,18 @@ body .ui-tooltip { .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; - filter:Alpha(Opacity=70); + filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; - filter:Alpha(Opacity=35); + filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons @@ -931,46 +1065,50 @@ body .ui-tooltip { } .ui-icon, .ui-widget-content .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png); + background-image: url("images/ui-icons_444444_256x240.png"); } .ui-widget-header .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png); -} -.ui-state-default .ui-icon { - background-image: url(images/ui-icons_888888_256x240.png); + background-image: url("images/ui-icons_444444_256x240.png"); } .ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url(images/ui-icons_454545_256x240.png); +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("images/ui-icons_555555_256x240.png"); } -.ui-state-active .ui-icon { - background-image: url(images/ui-icons_454545_256x240.png); +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); } -.ui-state-highlight .ui-icon { - background-image: url(images/ui-icons_2e83ff_256x240.png); +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("images/ui-icons_777620_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { - background-image: url(images/ui-icons_cd0a0a_256x240.png); + background-image: url("images/ui-icons_cc0000_256x240.png"); +} +.ui-button .ui-icon { + background-image: url("images/ui-icons_777777_256x240.png"); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } @@ -980,7 +1118,7 @@ body .ui-tooltip { .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } @@ -992,7 +1130,7 @@ body .ui-tooltip { .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } @@ -1141,38 +1279,34 @@ body .ui-tooltip { .ui-corner-top, .ui-corner-left, .ui-corner-tl { - border-top-left-radius: 4px; + border-top-left-radius: 3px; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { - border-top-right-radius: 4px; + border-top-right-radius: 3px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { - border-bottom-left-radius: 4px; + border-bottom-left-radius: 3px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { - border-bottom-right-radius: 4px; + border-bottom-right-radius: 3px; } /* Overlays */ .ui-widget-overlay { - background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; - opacity: .3; - filter: Alpha(Opacity=30); + background: #aaaaaa; + opacity: .003; + filter: Alpha(Opacity=.3); /* support: IE8 */ } .ui-widget-shadow { - margin: -8px 0 0 -8px; - padding: 8px; - background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; - opacity: .3; - filter: Alpha(Opacity=30); - border-radius: 8px; + -webkit-box-shadow: 0px 0px 5px #666666; + box-shadow: 0px 0px 5px #666666; } diff --git a/web/docs/api-latest.md b/web/docs/api-latest.md index a881b714..d531b9f4 100644 --- a/web/docs/api-latest.md +++ b/web/docs/api-latest.md @@ -9,7 +9,7 @@ instance whenever it is appropriate. The getter forms of functions do not parti chaining because they return values that are not the chart. **Kind**: global namespace -**Version**: 0.3.12 +**Version**: 0.3.16 **Example** ```js // Example chaining @@ -20,7 +20,8 @@ chart.width(600) ``` * [dc_graph](#dc_graph) : object - * [.diagram](#dc_graph.diagram) ⇒ [diagram](#dc_graph.diagram) + * [.diagram](#dc_graph.diagram) + * [new diagram(parent, [chartGroup])](#new_dc_graph.diagram_new) * [.width](#dc_graph.diagram+width) ⇒ Number | [diagram](#dc_graph.diagram) * [.height](#dc_graph.diagram+height) ⇒ Number | [diagram](#dc_graph.diagram) * [.root](#dc_graph.diagram+root) ⇒ node | [diagram](#dc_graph.diagram) @@ -92,32 +93,25 @@ chart.width(600) * [.defineArrow](#dc_graph.diagram+defineArrow) ⇒ [diagram](#dc_graph.diagram) * [.anchor([parent], [chartGroup])](#dc_graph.diagram+anchor) ⇒ String | node | d3.selection | [diagram](#dc_graph.diagram) * [.anchorName()](#dc_graph.diagram+anchorName) ⇒ String - * [.constraint_pattern](#dc_graph.constraint_pattern) ⇒ function - * [.tip](#dc_graph.tip) ⇒ Object + * [.constraint_pattern](#dc_graph.constraint_pattern) + * [new constraint_pattern(diagram, pattern)](#new_dc_graph.constraint_pattern_new) + * [.tip](#dc_graph.tip) + * [new tip()](#new_dc_graph.tip_new) * [.parent](#dc_graph.tip+parent) ⇒ [diagram](#dc_graph.diagram) * [.direction](#dc_graph.tip+direction) ⇒ String | [tip](#dc_graph.tip) * [.content](#dc_graph.tip+content) ⇒ function * [.table](#dc_graph.tip+table) ⇒ function + * [.flat_group](#dc_graph.flat_group) : object + * [.make(vec, id_accessor)](#dc_graph.flat_group.make) ⇒ Object + * [.another(ndx, id_accessor)](#dc_graph.flat_group.another) ⇒ Object -### dc_graph.diagram ⇒ [diagram](#dc_graph.diagram) -`dc_graph.diagram` is a dc.js-compatible network visualization component. It registers in -the dc.js chart registry and its nodes and edges are generated from crossfilter groups. It -logically derives from the dc.js -[baseMixin](https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin), -but it does not physically derive from it since so much is different about network -visualization versus conventional charts. - -**Kind**: static property of [dc_graph](#dc_graph) - -| Param | Type | Description | -| --- | --- | --- | -| parent | String | node | Any valid [d3 single selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom block element such as a div; or a dom element. | -| [chartGroup] | String | The name of the chart group this chart instance should be placed in. Filter interaction with a chart will only trigger events and redraws within the chart's group. | +### dc_graph.diagram +**Kind**: static class of [dc_graph](#dc_graph) - -* [.diagram](#dc_graph.diagram) ⇒ [diagram](#dc_graph.diagram) +* [.diagram](#dc_graph.diagram) + * [new diagram(parent, [chartGroup])](#new_dc_graph.diagram_new) * [.width](#dc_graph.diagram+width) ⇒ Number | [diagram](#dc_graph.diagram) * [.height](#dc_graph.diagram+height) ⇒ Number | [diagram](#dc_graph.diagram) * [.root](#dc_graph.diagram+root) ⇒ node | [diagram](#dc_graph.diagram) @@ -190,6 +184,22 @@ visualization versus conventional charts. * [.anchor([parent], [chartGroup])](#dc_graph.diagram+anchor) ⇒ String | node | d3.selection | [diagram](#dc_graph.diagram) * [.anchorName()](#dc_graph.diagram+anchorName) ⇒ String + + +#### new diagram(parent, [chartGroup]) +`dc_graph.diagram` is a dc.js-compatible network visualization component. It registers in +the dc.js chart registry and its nodes and edges are generated from crossfilter groups. It +logically derives from the dc.js +[baseMixin](https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin), +but it does not physically derive from it since so much is different about network +visualization versus conventional charts. + + +| Param | Type | Description | +| --- | --- | --- | +| parent | String | node | Any valid [d3 single selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom block element such as a div; or a dom element. | +| [chartGroup] | String | The name of the chart group this chart instance should be placed in. Filter interaction with a chart will only trigger events and redraws within the chart's group. | + #### diagram.width ⇒ Number | [diagram](#dc_graph.diagram) @@ -268,7 +278,7 @@ height) and result will be used to set `preserveAspectRatio`. | Param | Type | Default | | --- | --- | --- | -| [fitStrategy] | String | | +| [fitStrategy] | String | 'default' | @@ -1222,7 +1232,11 @@ Returns the DOM id for the chart's anchored location. **Kind**: instance method of [diagram](#dc_graph.diagram) -### dc_graph.constraint_pattern ⇒ function +### dc_graph.constraint_pattern +**Kind**: static class of [dc_graph](#dc_graph) + + +#### new constraint_pattern(diagram, pattern) In cola.js there are three factors which influence the positions of nodes: * *edge length* suggestions, controlled by the [lengthStrategy](#dc_graph.diagram+lengthStrategy), @@ -1268,7 +1282,6 @@ gain more control. Then we'll build back up from the ground up and show how inference works. -**Kind**: static property of [dc_graph](#dc_graph) | Param | Type | Description | | --- | --- | --- | @@ -1277,7 +1290,19 @@ Then we'll build back up from the ground up and show how inference works. -### dc_graph.tip ⇒ Object +### dc_graph.tip +**Kind**: static class of [dc_graph](#dc_graph) + +* [.tip](#dc_graph.tip) + * [new tip()](#new_dc_graph.tip_new) + * [.parent](#dc_graph.tip+parent) ⇒ [diagram](#dc_graph.diagram) + * [.direction](#dc_graph.tip+direction) ⇒ String | [tip](#dc_graph.tip) + * [.content](#dc_graph.tip+content) ⇒ function + * [.table](#dc_graph.tip+table) ⇒ function + + + +#### new tip() Asynchronous [d3.tip](https://github.com/Caged/d3-tip) support for dc.graph.js Add tooltips to the nodes and edges of a graph using an asynchronous callback to get @@ -1286,14 +1311,6 @@ the html to show. Optional - requires separately loading the d3.tip script and CSS (which are included in dc.graph.js in `web/js/d3-tip/index.js` and `web/css/d3-tip/example-styles.css`) -**Kind**: static property of [dc_graph](#dc_graph) - -* [.tip](#dc_graph.tip) ⇒ Object - * [.parent](#dc_graph.tip+parent) ⇒ [diagram](#dc_graph.diagram) - * [.direction](#dc_graph.tip+direction) ⇒ String | [tip](#dc_graph.tip) - * [.content](#dc_graph.tip+content) ⇒ function - * [.table](#dc_graph.tip+table) ⇒ function - #### tip.parent ⇒ [diagram](#dc_graph.diagram) @@ -1363,3 +1380,68 @@ Note: this interface is not great and is subject to change in the near term. var tip = dc_graph.tip(); tip.content(tip.table()); ``` + + +### dc_graph.flat_group : object +`dc_graph.flat_group` implements a special ["fake group"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups) +for the special case where you want a group that represents the filtered rows of the crossfilter. + +Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of +the corresponding data arrays, and each array has a column which contains the unique identifier +for the node or edge. In this setup, there are other dimensions and groups which are aggregated +for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from +the rows. + +This simple class supports that use case in three steps: + 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`) + 2. It creates a group from the dimension with a reduction function that returns the row when the + row is filtered in, and `null` when the row is filtered out. + 3. It wraps the group in a fake group which filters out the resulting nulls. + +The result is a fake group whose `.all()` method returns an array of the currently filtered-in +`{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw +row object from the data. + +This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and +scatter plots often use similar functionality because each observation is either shown or not, +and it is helpful to have the entire row available as reduced data. + +But it would need to be generalized and cleaned up. (For example, the way it has to create the +crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility +library to put it in. + +**Kind**: static namespace of [dc_graph](#dc_graph) + +* [.flat_group](#dc_graph.flat_group) : object + * [.make(vec, id_accessor)](#dc_graph.flat_group.make) ⇒ Object + * [.another(ndx, id_accessor)](#dc_graph.flat_group.another) ⇒ Object + + + +#### flat_group.make(vec, id_accessor) ⇒ Object +Create a crossfilter, dimension, and flat group, as described in [flat_group](#dc_graph.flat_group). +Returns an object containing all three. + +**Kind**: static method of [flat_group](#dc_graph.flat_group) +**Returns**: Object - `{crossfilter, dimension, group}` + +| Param | Type | Description | +| --- | --- | --- | +| vec | Array | the data array for crossfilter | +| id_accessor | function | accessor function taking a row object and returning its unique identifier | + + + +#### flat_group.another(ndx, id_accessor) ⇒ Object +Create a flat dimension and group from an existing crossfilter. + +This is a wretched name for this function. + +**Kind**: static method of [flat_group](#dc_graph.flat_group) +**Returns**: Object - `{crossfilter, dimension, group}` + +| Param | Type | Description | +| --- | --- | --- | +| ndx | Object | crossfilter instance | +| id_accessor | function | accessor function taking a row object and returning its unique identifier | + diff --git a/web/fonts/FontAwesome.otf b/web/fonts/FontAwesome.otf index 3ed7f8b48ad9bfab52eb03822fefcd6b77d2e680..401ec0f36e4f73b8efa40bd6f604fe80d286db70 100644 GIT binary patch delta 72698 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 bMM{<8r5o_QP+BrH=a2Fd8Qd4nMDO|^^30|p delta 47438 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 ZgkrFCs-@$D%;rjbx%R0L9`($_ZvpHJ=LG-& diff --git a/web/fonts/fontawesome-webfont.eot b/web/fonts/fontawesome-webfont.eot index 9b6afaedc0fd7aaf927a07f82da9c11022251b8b..e9f60ca953f93e35eab4108bd414bc02ddcf3928 100644 GIT binary patch literal 165742 zcmd443w)Ht)jvM-T=tf|Uz5#kH`z;W1W0z103j^*Tev7F2#5hiQ9w~aka}5_DkxP1 zRJ3Y?7YePlysh?CD|XvjdsAv#YOS?>W2@EHO9NV8h3u2x_sp}KECIB>@9+Qn{FBV{ zJTr4<=FH5QnRCvZnOu5{#2&j@Vw_3r#2?PKa|-F4dtx{Ptp0P(#$Rn88poKQO<|X@ zOW8U$o^4<&*p=|D!J9EVI}`7V*m|~_En`<8B*M-{$Q6LOSfmND1Z!lia3ffVHQ_mu zwE*t)c_Na~v9UCh+1x2p=FeL7+|;L;bTeUAHg(eEDN-*};9m=WXwJOhO^lgVEPBX5Gh_bo8QSSFY{vM^4hsD-mzHX!X?>-tpg$&tfe27?V1mUAbb} z1dVewCjIN7C5$=lXROG% zX4%HIa)VTc_%^_YE?u@}#b58a4S8RL@|2s`UUucWZ{P9NJxp5Fi!#@Xx+(mZ+kdt3 zobw#*|6)Z(BxCGw^Gi+ncRvs|a|3xz=tRA9@HDV~1eqD)`^`KTPEg`UdXhq18})-@}JTHp30^)`L{?* z;c)alkYAc@67|W!7RDPu6Tsy@xJCK8{2T9-fJw6?@=A(w^}KCVjwlOd=JTO=3Zr+< zIdd?1zo-M^76}Jf!cpLfH`+2q=}d5id5XLcPw#xVocH5RVG7;@@%R>Sxpy8{(H9JH zY1V)?J1-AIeIxKhoG1%;AWq7C50ok3DSe?!Gatbry_zpS*VoS6`$~lK9E?(!mcrm1 z^cLZ1fmx5Ds`-ethCvMtDTz zMd=G1)gR$jic|1SaTLaL-{ePJOFkUs%j634IMp}dnR5yGMtsXmA$+JDyxRuSq*)bk zt3tSN2(J<@ooh3|!(R%VsE#5%U{m-mB7fcy&h(8kC(#>yA(JCmQ6|O1<=_U=0+$AY zC)@~M`UboR6Xm2?$e8Z$r#u8)TEP0~`viw@@+){#874R?kHRP|IU4&!?+9Cy52v^I zPV4Xd{9yc;)#l?0VS#6g@ z`#y))03Laq@^6Z#Z*uvzpl{$JzFJgn&xHlNBS|Eb!E@}~Z$^m!a9k34KX zT|VETZ;B_E$Ai8J#t5#kATCAUlqbr&P~-s)k^FfWyz}iK@`B$FI6L0u1uz5fgfqgU zRBmB>F8s_qp1HWm1!aXOEbpf`U?X|>{F`8Md500U3i;Mh9Kvbd(CeuC>077ww4g^h zKgM(A48W`XEDE~N*Th^NqP#S7&^w2Vpq+df2#@A*&4u~I+>t)9&GYcop9OtUo=;2d zGSq?IMBAYZffMC1v^|Z|AWdQ38UdJS4(H(nFI<|%=>0iAn3lvcSjIR(^7r7QuQI0a zm+@Z9QXmf!efG1**%Ryq_G-AQs-mi^*WO#v+tE9_cWLjXz1Q{L-uqzh z-Vb`UBlaT|M;ecG9GQJ&>5)s1TzBO5BM%;V{K#`h4juXPkq?e&N9{)|j&>ZKeRS#3 zOOIZ6^!B3<9)0}ib4L#y{qxZe{ss8}C5PC)Atkb2XK%PS)jPMht9Na0x_5hTckhAT zOz+FRJ-xk0*b(QE(2)^GQb*<<={mCZNczb3Bi%<19LXGc`AE-^-lOcO^Jw^J>ge2~ zT}Rg*O&{HUwEO6RqnV>GAMK$M`~TX%q<>-my#5LOBmex)pWgq|V@{jX>a;k`PLtE< zG&ohK;*_0|<6n-C93MK4I*vGc9shKE;CSEhp5tA|KOBE|yyJM=@i)g?jyD~Db^OKg zhNH*vXUCr$uRH$ec+K$#$E%LtJ6>`8&T-iBTicKH)SNMZS zB8UG!{1{Y=QL&oLMgLzR(}0Y>sN0TqgG|kLqv_VcVSLD)aJ?AC^D!bLa6K5Ut1)YA zghRXq;YBrYhrzOK23vXorq6v~v*CBb?*bYw$l-3J@cY5H}8Gr;t8{e8!J}L*5e>!hOQnM3g=8eoXDiYZBlmBW?=(Qvo;ib;hP4-|5>J zo6*MD%*UW90?aI=ncV;fJZB$fY|a73<^rd=!0(I%TsLE9TH#hRHV<&~b~82~@n<2= z1-*oTQL{zWh}4H zGjX>}SbW{R;(k^VBouiebp<&Q9S1P`GIlM(uLaz7TNt~37h`FJ-B1j-jj@}iF}B$Yhy1^cv|oM`3X|20-GXwq z0QapK#%@FUZ9ik|D}cWpad#li_7EK6?wrrq4l5kOc5H@2*p5ENc6Pxb%`OEl1=q{i zU1`Sdjxcu562^8fWbEEDi1(A=o?`5)DC_=i#vVX^45ZpSrpE35`g>WA+_QYDo!1%Byk?;4A*Y^%H_McC{^)mJp(mf6Mr$1rr8Klp< z@9$&m+0Bd{OfmMH!q^XxU*>tneq@E)#@LU6-}5Nz`DYpXi4*QA#$MRP*w045^)U8x zl=XAu_Y36n%QPIqUi^r$mjH7JWgdEmv0oiv>}BNj>jtO;GSSiGr=LO--M;f3$4%-kcdA5=kp1;?w1)iU%_3WyqWQmjf@AcVZ3xc<7I~# zFHgbYU4b-}3LN4>NEZft6=17@TlH$jBZ!NjjQC2%Yu;hJu9NWwZ@DynQp=tBj8Wjw$e9<5A{>pD{iW zZqogXPX_!HxT$LypN98z;4>ox_a@^r4>R7`&G@Wh#%HG(p9^;e{AczsK5r7^^FxfE z1>DZ=f&=UVl(8@Y2be_)+!n?cUjPUAC8+bcuQI+Aab3F@Uxu=lJpt$oQq38DE=X{7U3=m6P!eKVy6&>UK5q-?WYKFCon} zcwbuv_Xy+HBi;48;XYwJy_)eGknfFvzbOHS_{~WFRt)zJ zijpU?=0x zkwe%IkXL3J<39wBKYX6?A1iQgGX8uw<3E|t_zN{~?=k)}E8{7uHGX6%I@xLJ5o5hU3g}A@9GyXR4dV3$^??m7ZGyeD0jQ;~={sZ6d0>}3fa8JQ~ z#Q6Kj>z^jLM;Px_;9g|>2lp6?Oy32JW8UD|ZH#LugXW9=mzl&9Ov2uUBsVZgS;-{zFeKKwOfnbOFe$i&Nu~HMe}YLB^Wk1(Qs^2cg^_pF zV@!&4GARo9*fb`^0bBDClWMmysSaUvuQREB7n2(BZbV*M)y$0@8CXG!nX&m5FyO}f|^_bYrq)EtQ3jEW$ z;E;a$iwt`}|2xOlf`@fNIFLzjYz@1@vMcQB;TbKpR_b1>hK{W@uw#sVI6JqW86H;C ztQ;P%k-Nf8ey^cATop^SG>2V0mP~Z;=5SL5H#}UQ-NIABSS;9=rYBEjx70^!0%|%? z6H%vBBRb1si5UK{xwWyrI#6mdl~NhlB{DFSQ4f#HYnQ4Tr9_9++!S!BCwdbtt-PhV z2|9^MD=%7f(aK494ZCcz4t6dY`X;_62ywrIPovV+sT0pH?+{mwxjh%^> zh_?T`uiv2^KX}>z4HVY!Y%V1QDcBvi>!sD@MEbj99(bg@lcBxTD9~gYzfIm>7jFFl;^hEgOD8Clhu+6jw>0z&OhJ=2DoJ42R3QaA zWOOLCseE6;o!xG!?ra~f^>o~D+1yBE?qxT0^k{Eo?@YU;MW)Dk7u-Ja^-t=jry`Nm z^!iU;|I=I9eR|&CLf`eUDtM5Q2iZ}-MO8dOpsgMv)7Ge`r77T1(I!FduCuw%>+xyh zv~lQApLDjitE7#8{D!C9^9KL8O}^S6)E?BVMw_qP`rdoia-YG@KjOf%Qh4Bnt8Mcoi9h#JRYY3kEvn*UVbReO50BrmV+ z;MZw4c4)uX7XS38vL%mZ(`R5ww4GL|?R_+gqd5vmpyBRdmy(bdo1(0=sB8@yxdn)~lxbJjigu9=)pPhNBHJ@OCr@Hfy7 zMKpelG=3bck_~6$*c^5qw$ra?cd)OqZ$smlOvLJWm7$z_{bM*t_;dW+m52!n&yhSI z0)LYKbKpO(yrBb!r(;1ei=F17uvjq5XquDp?1L{4s1~Hu@I46id3j>UeJTcx0fQ!$ z&o9RBJJn}4D52n3P@|_Z2y%SzQ!WJ22E$LC;WNiX*{T?@;Pj!}DC|#~nZ>-HpIS<2 za>P22_kUiz%sLYqOLTT7B=H>lmeZ$;kr+*xoe54)>BRz1U!muO7@@$$G=552gn*!9 zJ(lYeq-%(OX#D?e|IqRz)>flsYTDXrc#58b-%`5Jmp#FEV%&+o&w?z>k%vUF^x&@! zd}aqf<-yN_(1OoX0~BNi5+XV}sW1Mo_rky5sw&#MPqeg*Iv+ow^-qi|g!>=1)d@|( zIJ=tJ4Yw%YfhiFbenxIIR1N1mmKeveFq!eFI?k+2%4<3`YlV3hM zS45R<;g^uVtW5iZbSGet@1^}8sBUEktA@_c>)?i}IE-EQTR@N-j%b9$Syc1{S3U?8e~d3B1?Lij0H27USiF&gR}A>wG-vBGIPuh*4ry;{Khxekv}wCTm%_>vhFZSJ)Pw2iv6Q4YVoQ`J2w?yCkiavVTWeVa)j|q=T9@J0pTtcQX!VHnIM6Al- z^*7Og!1y$xN4)5fYK&2X5x-Om4A;1k20|=O+$wl^1T}IRHkcq<^P$a{C0fAii(ypB z{ef1n(U1a&g|>5}zY?N{!tOqN_uYr3yPejjJ>KeR7IW!#ztw(g!*Hj~SpH|bkC%t5kd^Q2w*f{D8tJPwQ z++kT&2yEHVY_jXXBg!P7SUbSC;y1@rj$sqoMWF2=y$%ua1S%Nn_dvGwR*;O^!Fd?1 z8#WkKL1{>+GcdW?sX2^RC#k8D;~{~1M4#fpPxGDbOWPf?oRS^(Y!}arFj}-9Ta5B$ zZhP0#34P$Fx`;w}a*AU%t?#oPQ+U$umO}+(WIxS!wnBcQuM;%yiYhbKnNwXa7LiRjmf+(2(ZG}wiz%sgWJi>jgGIsPnZ=KfX?8mJ2^L!4-hBx#UR zZa((80+3k2t!n9h@La(dm&Qrs_teRTeB}Y= zShqm6zJdPGS+juA6^_Mu3_1sz1Hvx#*|M6pnqz`jk<&F@Wt;g%i&gunm7lM5)wE@q zvbn6Q=6IU;C_@UMWs|fmylAcBqr(MowarQT7@9BsXzyH534G z1e0`Rlnqb_RAIW{M7dQoxdg$ z;&VZRA?1jrgF9nN0lg?)7VU>c#YI}iVKVtMV&I^SUL2sA9Xn2<8mY@_)qZF;^OV!$ z;QVMjZTMUtC^eDXuo)DkX75sJ*#d6g{w?U1!Fbwid(nlSiF_z zStRqVrV`8MJBg{|ZM^Kzrps2`fI(Eq&qUZ%VCjWLQn)GthGkFz0LcT(tUy)_i~PWb ze1obC@Hu0-n}r4LO@8%lp3+uoAMDWnx#|WFhG&pQo@eXSCzjp(&Xl4$kfY60LiIx^ zs+SA=sm(K<-^V>WxOdf!NXC0qN&86q?xh#r;L)>)B|KXvOuO+4*98HO?4jfcxpk`^ zU^8+npM|PWn*7Nj9O_U%@pt)^gcu2m|17^}h}J6KWCJ>t zv@Qsc2z0711@V0%PDVqW?i)a)=GC>nC+Kx~*FeS}p5iNes=&dpY_lv9^<|K`GOJMG zE5^7&yqgjFK*qz6I-su3QFo4`PbRSbk|gNIa3+>jPUVH}5I6C)+!U&5lUe4HyYIe4 z>&a$lqL(n;XP)9F?USc6ZA6!;oE+i8ksYGTfe8;xbPFg9e&VVdrRpkO9Zch#cxJH7 z%@Bt~=_%2;shO9|R5K-|zrSznwM%ZBp3!<;&S0$4H~PJ&S3PrGtf}StbLZKDF_le= z9k)|^Do10}k~3$n&#EP*_H_-3h8^ZuQ2JXaU@zY|dW@$oQAY%Z@s0V8+F~YQ=#aqp z=je#~nV5}oI1J`wLIQ^&`Mj01oDZ;O`V>BvWCRJd%56g!((T@-{aY6fa;a0Vs+v@O z0IK2dXum&DKB?-ese^F~xB8#t6TFirdTy3(-MedKc;2cI&D}ztv4^I%ThCj* ziyQ90UpuyI`FYm%sUlWqP(!Qcg-7n%dk-&uY15{cw0HD+gbuz}CQP*u8*(+KCYFiz80m1pT=kmx0(q(xrCPMsUH1k{mefDSp) zD5G^q?m1N%Jbl&_iz65-uBs{~7YjNpQ%+H^=H7i%nHnwimHSGDPZ(Z;cWG1wcZw|v z%*juq&!(bo!`O7T>Wkon^QZ-rLvkd_^z#)5Hg zxufObryg!`lzZc#{xRRv6592P5fce0Hl-xEm^*nBcP$v z0`KR64y6=xK{a*oNxW9jv+9)$I9SxN-Oig_c%UK7hZDj_WEb$BDlO#*M?@b>eU7 zxN!%UE+w#Wg$bqFfc# zeDOpwnoY)%(93rx(=q9nQKg6?XKJZrRP#oo(u>h_l6NOMld)_IF( zs6M+iRmTC+ALc}C7V>JEuRjk9o)*YO8Y}oKQNl2t?D;qFLv4U`StSyoFzFYuq>i@C zEa1!N?B0BK0gjTwsL04McVmu=$6B!!-4bi1u_j7ZpCQm-l2u7AlYMmx zH!4a*@eEhENs{b-gUMy{c*AjMjcwAWGv@lW4YQtoQvvf*jQ2wL8+EGF4rQjAc;uiEzG%4uf z9wX{X3(U5*s$>6M z)n+q=_&#l6nEa|4ez8YOb9q{(?8h1|AYN<53x+g()8?U_N+)sEV;tdoV{pJ^DTD)ZvO|;^t&(V6L2z~TSiWu zI&#bLG#NGMHVY^mJXXH_jBGA?Np1q;)EYzS3U=1VKn3aXyU}xGihu`L8($R|e#HpJ zzo`QozgXO&25>bM*l>oHk|GV&2I+U-2>)u7C$^yP7gAuth~}8}eO^2>X_8+G@2GX0 zUG8;wZgm*=I4#ww{Ufg2!~-Uu*`{`!$+eE)in1}WPMJ%i|32CjmFLR8);bg^+jrF* zW0A!Zuas6whwVl!G+Vp(ysAHq9%glv8)6>Sr8w=pzPe1s`fRb9oO^yGOQW^-OZ=5? zNNaJk+iSAxa}{PtjC&tu_+{8J_cw=JiFhMqFC!}FHB@j}@Q$b&*h-^U)Y&U$fDWad zC!K&D&RZgww6M(~`@DA92;#vDM1_`->Ss*g8*57^PdIP-=;>u#;wD4g#4|T7ZytTY zx(Q8lO+5Ris0v-@GZXC@|&A*DPrZ51ZeSyziwc>%X>dNyCAL zOSDTJAwK7d2@UOGmtsjCPM9{#I9Gbb7#z25{*;Tyl-Zho(Oh~-u(5CLQl;2ot%#Nl z_cf{VEA=LuSylKv$-{%A=U+QBv0&8bP;vDOcU|zc3n!Nu{9=5j6^6DL&6tm-J4|~) z9#1w(@m3N|G3n9Xf)O<|NO+P)+F(TgqN3E#F8`eIrDZn0=@MQ%cDBb8e*D_eBUXH+ zOtn|s5j9y2W~uaQm*j{3fV=j|wxar?@^xjmPHKMYy0eTPkG*<=QA$Wf)g`tfRlZ0v ztEyRwH(8<%&+zbQ+pg>z^Ucf8Jj>x$N*h{buawh;61^S+&ZX>H^j?#nw!}!~35^Z# zqU|=INy-tBD+E^RCJdtvC_M2+Bx*2%C6nTfGS!1b*MJvhKZZPkBfkjIFf@kLBCdo) zszai4sxmBgklbZ>Iqddc=N%2_4$qxi==t>5E!Ll+-y(NJc+^l)uMgMZH+KM<|+cUS^t~AUy&z{UpW?AA~QO;;xntfuA^Rj7SU%j)& zVs~)K>u%=e(ooP|$In{9cdb}2l?KYZinZ8o+i;N-baM#CG$-JMDcX1$y9-L(TsuaT zfPY9MCb3xN8WGxNDB@4sjvZ10JTUS1Snvy5l9QPbZJ1#AG@_xCVXxndg&0Cz99x`Z zKvV%^1YbB2L)tU+ww(e6EZYzc6gI5g;!?*}TsL=hotb0Mow8kxW*HVdXfdVep4yL` zdfTcM*7nwv5)3M-)^@ASp~`(sR`IsMgXV>xPx0&5!lR8(L&vn@?_Oi2EXy)sj?Q8S$Mm zP{=PsbQ)rJtxy*+R9EqNek1fupF(7d1z|uHBZdEQMm`l!QnDTsJ_DX2E=_R?o*D5) z4}Rh2eEvVeTQ^UXfsDXgAf@6dtaXG>!t?(&-a~B^KF@z*dl$BLVOt|yVElz!`rm5n z&%<$O{7{?+>7|f%3ctTlD}Sc0Zs_hY;YO-&eOIT+Kh%FJdM|_@8b7qIL;aj#^MhF1 z(>x4_KPKYTl+AOj0Q$t3La4&;o`HP%m8bgb`*0vs83ZT@J#{j%7e8dKm;){k%rMw* zG9eKbw_mh1PHLUB$7VNcJ=oL;nV~#W;r|rv;ISD5+Q-FH5g~=&gD`RrnNm>lGJ1GE zw`K+PW!P*uxsEyAzhLvBOEUkj>)1sV6q-RhP*nGS(JD%Z$|wijTm)a5S+oj03MzBz zPjp$XjyM!3`cFtv`8wrA`EpL(8Soof9J(X7wr2l^Y-+>){TrmrhW&h}yVPonlai>; zrF!_zz4@5^8y@95z(7+GLY@+~o<>}!RDp|@N4vi4Y-r@AF@6Q7ET8d9j~&O$3l#Yuo`voKB12v8pK*p3sJO+k{- zak5sNppfOFju-S9tC#^&UI}&^S-3TB^fmi<0$e%==MK3AqBrn!K@ZCzuah-}pRZc{ z?&7p`mEU5_{>6x=RAFr4-F+FYOMN%GSL@mvX-UT3jRI;_TJH7}l*La_ztFn+GQ3;r zNk;eb?nh&>e?Z$I<$LDON!e1tJ26yLILq`~hFYrCA|rj2uGJHxzz@8b<} z&bETBnbLPG9E*iz!<03Ld4q;C140%fzRO5j*Ql#XY*C-ELCtp24zs*#$X0ZhlF~Qj zq$4Nq9U@=qSTzHghxD(IcI0@hO0e}l7_PKLX|J5jQe+67(8W~90a!?QdAYyLs6f^$ zgAUsZ6%aIOhqZ;;;WG@EpL1!Mxhc_XD!cTY%MEAnbR^8{!>s|QGte5Y=ivx6=T9Ei zP_M&x-e`XKwm+O(fpg~P{^7QV&DZPW)$j@GX#kClVjXN6u+n=I$K0{Y-O4?f;0vgV zY+%5cgK;dNK1}{#_x-Zyaw9sN`r9jST(^5&m&8IY?IBml#h0G3e?uSWfByzKHLe8) z9oCU{cfd~u97`w2ATe{wQPagk*)FX|S+YdySpplm-DSKB*|c>@nSp$=zj{v3WyAgw zqtk_K3c5J|0pC zSpww86>3JZSitYm_b*{%7cv?=elhCFy1v6m)^n?211803vG_;TRU3WPV`g7=>ywvsW6B76c-kXXYuS7~J+@Lc zSf%7^`HIJ4D|VX9{BlBG~IV;M->JId%#U?}jR@kQ&o5A3HyYDx}6Nc^pMjj0Jeun)M=&7-NLZ9@2 z)j60}@#z8oft^qhO`qgPG;Gf4Q@Zbq!Fx_DP1GkX<}_%EF`!5fg*xCsir}$yMH#85 zT3Y4bdV)bucC=X;w24>D>XjaA@K`En^++$6E!jmvauA$rc9F%b=P&f^I7M+{{--HM z0JXFl21+}*Oz8zr@T8JQp9Td0TZ7rr0+&rWePPKdaG}l-^)$@O*ON;2pkAjf4ZSg# zy{PLo>hhTUUK_q5L{o!vKb^7AIkbXB zm3BG{rbFE>fKfZsL4iKVYubQMO_AvYWH<3F_@;7*b}ss*4!r5a-5Mr{qoVbpXW1cja+YCd!nQ3xt*CEBq_FNhDc93rhj=>>F59=AN5 zoRmKmL))oDox0VF;gltwNSdcF9cb*OX3{Gx?X{Q-krC~b9}_3yG8Bn{`W6m}6YD#q zAkEzk)zB|ZA2Ao`dW^gC77j#kXk7>zOYg~2Y0NyG9@9L)X=yRL!=`tj7; z^S=K3l)dWTz%eniebMP!Z)q@7d(l_cR;2OvPv7I~Va{X>R@4XXh- zOMOMef=}m)U?`>^E`qUO(+Ng$xKwZ1|FQ|>X41&zvAf`(9 zj3GGCzGHqa8_lMGV+Q3A(d5seacFHJ92meB0vj+?SfQ~dL#3UE!1{}wjz|HPWCEHI zW{zYTeA(UwAEq6F%|@%!oD5ebM$D`kG45gkQ6COfjjk-==^@y6=Tp0-#~0px=I@H# z7Z|LQii;EBSfjse{lo}m?iuTG`$i6*F?L9m*kGMV_JUqsuT##HNJkrNL~cklwZK&3 zgesq4oycISoHuCg>Jo;0K(3&I(n-j7+uaf)NPK7+@p8+z!=r!xa45cmV`Mna1hT=i zAkgv-=xDHofR+dHn7FZvghtoxVqmi^U=Tk5i*(?UbiEGt9|mBN4tXfwT0b zIQSzTbod84Y<){2C!IJja=k65vqPM|!xFS?-HOK!3%&6=!T(Z$<>g6+rTpioPBf57 z$!8fVo=}&Z?KB-UB4$>vfxffiJ*^StPHhnl@7Fw@3-N|6BAyp|HhmV#(r=Ll2Y3af zNJ44J*!nZfs0Z5o%Qy|_7UzOtMt~9CA*sTy5=4c0Q9mP-JJ+p-7G&*PyD$6sj+4b>6a~%2eXf~A?KRzL4v_GQ!SRxsdZi`B(7Jx*fGf@DK z&P<|o9z*F!kX>I*;y78= z>JB#p1zld#NFeK3{?&UgU*1uzsxF7qYP34!>yr;jKktE5CNZ3N_W+965o=}3S?jx3 zv`#Wqn;l-4If#|AeD6_oY2Y||U?Fss}Sa>HvkP$9_KPcb_jB*Jc;M0XIE+qhbP$U2d z&;h?{>;H=Sp?W2>Uc{rF29ML>EiCy?fyim_mQtrgMA~^uv?&@WN@gUOPn(379I}U4Vg~Qo)jwJb7e_Pg^`Gmp+s5vF{tNzJVhBQ z$VB8M@`XJsXC!-){6wetDsTY94 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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
    \n *
  1. To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  2. To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n *
\n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @name constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_constraints = function(rootf, treef, xgap, ygap) {\n return function(diagram, nodes, edges) {\n var constraints = [];\n var x = 0;\n var dfs = dc_graph.depth_first_traversal({\n root: rootf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var last = row[row.length-1];\n constraints.push({\n left: diagram.nodeKey.eval(last),\n right: diagram.nodeKey.eval(n),\n axis: 'x',\n gap: x-last.foo_x,\n equality: true\n });\n }\n n.foo_x = x;\n // n.cola.x = x;\n // n.cola.y = r*ygap;\n },\n sib: function() {\n x += xgap;\n }\n });\n dfs(diagram, nodes, edges);\n return constraints;\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n init: function() {\n x = ofsx;\n },\n root: rootf,\n row: rowf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// this currently only supports single selection with a click\n// but it can be expanded with modifier-key clicks and rectangular selection etc.\ndc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [];\n\n function add_behavior(chart, node, edge) {\n chart.cascade(50, true, conditional_properties(function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n }, null, props));\n node.on('click.select-nodes', function(d) {\n _selected = [chart.nodeKey.eval(d)];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n d3.event.stopPropagation();\n });\n chart.svg().on('click.select-nodes', function(d) {\n _selected = [];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n });\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var nselect = _selected.length;\n _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== nselect)\n select_nodes_group.node_set_changed(_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n return dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/* for the special case where there will be exactly one or zero items in a group,\n a reasonable reduction is just to use the row or null.\n this could be useful outside dc.graph (esp e.g bubble charts, scatter plots where each\n observation is either shown or not) but it would have to be cleaned up a bit */\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n another: function(ndx, id_accessor) { // wretched name\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","// make crossfilter-suitable data from d3.nest {key, values} format\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n inherit = inherit || {};\n var level = Object.keys(inherit).length;\n if(attrs.length) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = nest.map(function(v) {\n inherit[attr] = v.key;\n var child = uuid();\n var node = clone(inherit);\n node[nodeKeyAttr] = child;\n node.name = attr + ':' + v.key;\n node._level = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = child;\n edges.push(edge);\n }\n var recurse = dc_graph.convert_nest(v.values, attrs.slice(0), nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, child, clone(inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: nest.map(function(v) {\n v._level = level+1;\n return v;\n }), edges: nest.map(function(v) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = v[nodeKeyAttr];\n return edge;\n })};\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file +{"version":3,"sources":["src/banner.js","src/core.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/legend.js","src/constraint_pattern.js","src/tree_constraints.js","src/tree_positions.js","src/behavior.js","src/tip.js","src/select_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC,GAAG,CAAC,MAAM,EAAE;;ACDb,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACpG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AACzJ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ;AACrG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9D,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ;AACtB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AACtB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;AAC9B,CAAC,EAAE;AACH;AACA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtB,IAAI,SAAS,CAAC,CAAC,CAAC;AAChB,QAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/B,IAAI,CAAC;AACL,EAAE;AACF;AACA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5B,QAAQ,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AAC9B,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACrB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,YAAY,KAAK,CAAC,CAAC,EAAE;AACrB,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACrB,oBAAoB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE;AACvC,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACnD,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACnC,QAAQ,MAAM,CAAC,GAAG,CAAC;AACnB,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACpC,YAAY,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;AAC3D,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,gBAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,EAAE;AACF;AACA,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AAC9C,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC9C,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACzB,QAAQ,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,YAAY,EAAE,CAAC,KAAK,CAAC;AACrB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;AACxD,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,YAAY,EAAE,CAAC,KAAK,CAAC;AACrB,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;AACxD,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI;AACrG,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AACD;AACA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG;AAC3C,IAAI,EAAE;AACN,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;AACxE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;AACtC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AACD;AACA,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AAClF,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK;AACrF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;AAClD,CAAC;AACD;AACA,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG;AAC1C,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/B,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AACD;AACA,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU;AAC3E,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACjB,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACnE,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC9B,IAAI,GAAG;AACP,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC/D,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE;AACF;AACA,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9C,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3F,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;AACxB,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,IAAI,CAAC;AACL,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AACzB,QAAQ,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE;AACtF,IAAI,EAAE,CAAC,KAAK,CAAC;AACb,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG;AACvB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK;AACzB,CAAC;AACD;AACA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;AAC9B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AAChC;AACA,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClE,MAAM,MAAM,CAAC,QAAQ,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACrC,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AACtB,EAAE;AACF;AACA,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,IAAI,GAAG,CAAC,KAAK,CAAC;AACd,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACjC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;AACtE,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AAC1C,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG;AAClE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACxC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,OAAO,CAAC,CAAC;AAC3F,wBAAwB,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG;AAC9F,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,CAAC;AACrB,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN,IAAI;;AC7MJ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AACpE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;AAChE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AAChE;AACA,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACpE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI;AAChE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACtH,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;AAC3C,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG;AACjF,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC1B,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,gBAAgB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAClD,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACtC,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;AAC5B,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI;AACf;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,QAAQ,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7B,gBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG;AACnE,gBAAgB,MAAM,CAAC;AACvB,YAAY,CAAC;AACb,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE;AACxB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7B,YAAY,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9D,YAAY,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;AAC5B,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;AAC3B,gBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3C,wBAAwB,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACjF,oBAAoB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;AACvD,oBAAoB,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9C,gBAAgB,GAAG;AACnB,YAAY,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9C,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,KAAK,CAAC;AAClB,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG;AACjF,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG;AAC7F,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AACnC,gBAAgB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACpD,YAAY,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG;AAC/C,YAAY,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrE,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/B,IAAI,EAAE;AACN,EAAE;;AC1DF,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAC1E,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAClB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACvB,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE;AACzB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5C,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC9B,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACtB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,QAAQ,MAAM,CAAC,EAAE,CAAC;AAClB,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/B,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AACjE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC3B,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;AACrC,YAAY,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;AAChC,QAAQ,CAAC;AACT,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;;ACtBD,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;AAC7C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACrF,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACpB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO;AAC7H,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,YAAY,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;AAC9C,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,YAAY,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;AAC9C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpD,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxB,CAAC;AACD;AACA;AACA,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAClG,yCAAyC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;AACzD,QAAQ,EAAE,CAAC,KAAK,CAAC;AACjB,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AACD;AACA,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACnB,QAAQ,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACpE,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE;AACnB,QAAQ,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACpE,IAAI,CAAC;AACL,CAAC;AACD;AACA,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AAC7B,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/C,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG;AAClC,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrB,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACjE,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE;AAC1D,IAAI,EAAE;AACN,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9D,IAAI,EAAE;AACN,IAAI,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE;AAC3D,IAAI,EAAE;AACN,IAAI,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7D,IAAI,EAAE;AACN,IAAI,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5C,IAAI,EAAE;AACN,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,YAAY,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAY,UAAU,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AACvC,YAAY,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ;AAClC,QAAQ,EAAE;AACV,IAAI,CAAC;AACL,EAAE;AACF;AACA,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5C,EAAE;AACF;AACA,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG;AACvC;AACA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACjD,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG;AACzE,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnD,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;AACtD,IAAI,GAAG,GAAG,EAAE;AACZ,CAAC;AACD;AACA,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;AAC3D,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE;AAC3C,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACnC,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;AAC3D,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClF,gBAAgB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/F,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5C,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1B,YAAY,KAAK,CAAC;AAClB,QAAQ,OAAO,CAAC;AAChB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACtD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;AAC5E,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACzC,QAAQ,GAAG,CAAC,IAAI,CAAC;AACjB,QAAQ,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AACtC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG;AAClC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/C,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/C,YAAY,GAAG,CAAC,EAAE,CAAC;AACnB,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACvF,gBAAgB,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AAC3D,gBAAgB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3C,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;AACrF,gBAAgB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AAC1C,gBAAgB,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,wCAAwC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC7H,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG;AACpF,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE;AACpF,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC7C,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,gBAAgB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,gBAAgB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AACzF,gBAAgB,MAAM,CAAC,CAAC,CAAC,GAAG;AAC5B,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ;AAC1F,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;AACtE,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9E,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG;AAC5D,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAChE,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACxD,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;AAClC,QAAQ,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC9C,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE;AACvB,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC9C,YAAY,KAAK,CAAC;AAClB,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;AACvE,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,CAAC;AACD;AACA,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AACpD,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrB,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AACvD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACjB,QAAQ,EAAE,IAAI,QAAQ,CAAC;AACvB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG;AAChD,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACrC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,IAAI;AACZ,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,CAAC;AACL,CAAC;AACD;AACA,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,6BAA6B,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACrF,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AAClC,QAAQ,OAAO,CAAC,CAAC,OAAO,CAAC;AACzB,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnB,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzB,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC3D,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7D,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,CAAC,CAAC,EAAE;AACnB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,EAAE,CAAC,CAAC;AACZ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,CAAC;AACV,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,YAAY,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE;AACvF,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC7C,gBAAgB,EAAE,EAAE,IAAI,CAAC;AACzB,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3C,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,wBAAwB,GAAG,CAAC,CAAC,GAAG;AAChC,oBAAoB,EAAE;AACtB,gBAAgB,IAAI;AACpB,oBAAoB,MAAM,CAAC,CAAC;AAC5B,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC;AACnC,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,wBAAwB,GAAG,CAAC,CAAC,GAAG;AAChC,oBAAoB,EAAE;AACtB,YAAY,EAAE;AACd,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9E,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9E,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACrB;AACA,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY;AACvD,QAAQ,GAAG,CAAC,CAAC;AACb,YAAY,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AAClF,gCAAgC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3D,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,CAAC;AACb,YAAY,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;AAClF,gCAAgC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;AAC3D,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3C,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC3C,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;AAClD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,QAAQ,SAAS,CAAC,CAAC,SAAS;AAC5B,IAAI,EAAE;AACN,CAAC;AACD;AACA;AACA,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpD,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACf,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC3E,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,CAAC;AACD;AACA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACrB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG;AAC/C,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,CAAC,CAAC;AACb,CAAC;AACD;AACA,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE;AAClC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,CAAC;;ACjZD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;AAC5F,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7F,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACnC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;AACrG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO;AACrF,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AACjB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AAC1C,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/F,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AAClG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;AACtF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACjB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC7B,CAAC,GAAG;AACJ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AACtE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,KAAK;AACpC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG;AACzD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;AAC5D,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC;AACzC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACrC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;AAC7D,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAChC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;AAC7B;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AAC1E,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AAClB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACvB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AAC1D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACnB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACvB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAC1F,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACjB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACrB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG;AACrB,YAAY,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;AACzF,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG;AAC5E,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,CAAC,mBAAmB,EAAE,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC5G,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACjF,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AACnG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACtF,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACzF,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;AAC3F,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;AACvF,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO;AAC7F,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACtB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9F,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE;AAC3F,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM;AAC9F,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE;AACpE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG;AAC7C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AACpD,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AACtD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;AACjD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,QAAQ,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE;AACvC,YAAY,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,GAAG;AACjD,YAAY,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,GAAG;AACjD,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC9B,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB;AACA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC1F,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,GAAG;AACtC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACrF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAC1F,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM;AAC9F,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACvF;AACA,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;AACzC;AACA,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC1F,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG;AAClC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC7E,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB;AACA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC1F,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjB;AACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,GAAG;AACtC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACrF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3F;AACA,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE;AACxF,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC5B;AACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG;AAClC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAC/F,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE;AAChE;AACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;AACtB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AACzE;AACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,QAAQ,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;AACtB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5F,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AAC5D;AACA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AACnC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC7F,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;AAC/D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AACnC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/F,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACjE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACnD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AACtE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;AAChF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;AAClE,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AACjF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACjG,KAAK,CAAC,CAAC,IAAI,CAAC;AACZ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE;AAClD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AAClE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACvF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;AAClC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACtF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AAChD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/C,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACjG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACrD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AAC7F,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;AACpD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;AAC7F,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACpG,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAChE,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AAC5B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;AAC/C,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG;AAC9D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC7D,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG;AACrE,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,EAAE,EAAE;AAC7C,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,QAAQ,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,EAAE,EAAE;AAC5C,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;AACxC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;AACvC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;AAC3F,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACjE;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7F,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG;AACtE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7F,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACnD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACZ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAClE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;AAC9E,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;AACpC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;AACnC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI;AACxF,KAAK,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE;AACrD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;AAC1E;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC/F,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI;AAC3E,KAAK,CAAC,CAAC,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACvC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;AAC1F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACvC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AACpC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AACnC,IAAI,GAAG;AACP;AACA,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI;AACxF,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY;AAC9E,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtE;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AACrF,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;AACnB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG;AACpB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACpF,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACjD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE;AAC5D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,GAAG;AAClD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AACzF,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG;AACvF,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE;AAChD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AAC1B,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAQ,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AACjC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG;AACnG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC1B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC3B,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7B,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG;AAC3C,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE;AACxD,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACvC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClG,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAChC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG;AACpC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE;AACrF,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AAC3F,KAAK,CAAC,CAAC,OAAO,CAAC;AACf,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;AACvB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC9C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS;AAC5E,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACtE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;AAC1D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;AAC3D,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;AAChE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG;AAC/C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AACtF,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACjF,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AAC1B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACpC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;AACxF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc;AAC3B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC5C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,KAAK,CAAC;AACb,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC5F,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AAC/F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB;AACA,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE;AACxF,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG;AACvC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACnF,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACxB;AACA,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAClB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC7F,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE;AACvB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACrF,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACjD,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1I,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AACzF,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;AACzB,KAAK,CAAC;AACN,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACjF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,QAAQ,MAAM,CAAC,GAAG;AAClB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;AAC9C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC7C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,OAAO;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAChB;AACA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AACxF,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;AAChC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;AACvC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACzC;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AAC1B,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1D,YAAY,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5D,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ;AACvF,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU;AAC1E,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC;AACzF,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAC/F,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC;AACZ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAChD;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACjF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AAClG,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM;AAClG,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE;AACzB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACpF,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa;AAC1B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C;AACA,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,KAAK,CAAC;AACb,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACzC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACvF,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;AAC9E,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC5E,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;AAC/C,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7C;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AACtF,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACxD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACnB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACzB,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG;AAChF,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AACjE;AACA,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;AAC3E,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AAClB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACpE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC5E,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAChE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC/B,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC3E,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;AAC9E,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI;AACzD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;AACjC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa;AACtC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACpC,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;AACzB,YAAY,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE;AACvC,QAAQ,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAQ,EAAE,CAAC,MAAM,CAAC;AAClB,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AAClC,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;AAChG,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;AACpG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;AAC5B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACvE,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AAC9B,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,GAAG;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,GAAG;AAC9C;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAClC;AACA;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACzE,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACxD,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AAC9C,IAAI,EAAE;AACN;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AAC1C,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;AAC/C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AACvE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;AAC/B,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACjD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC/C;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3B,QAAQ,EAAE,EAAE,OAAO,CAAC;AACpB,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG;AACxG,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,YAAY,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAClC,YAAY,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACnC,QAAQ,EAAE;AACV,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AAClD,QAAQ,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,gBAAgB,kBAAkB,CAAC,CAAC,MAAM,CAAC,kBAAkB,GAAG;AAChE,gBAAgB,cAAc,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG;AACxD,gBAAgB,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG;AAChD,gBAAgB,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG;AAChD,gBAAgB,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC3C,YAAY,GAAG;AACf,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE;AACrB,YAAY,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,gBAAgB,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;AACzC,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,WAAW,EAAE;AAC7B,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,IAAI;AACtB,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7C,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG;AAC9B,YAAY,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG;AACtC,QAAQ,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG;AAC5C,QAAQ,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;AAC/C,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACzC,QAAQ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AAChC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACzC,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG;AAC9D,QAAQ,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG;AACpD,QAAQ,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG;AAC/C,QAAQ,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAClE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG;AACzC,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AAC5B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;AACzC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG;AAClD,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AACjD,YAAY,EAAE,EAAE,KAAK,CAAC;AACtB,gBAAgB,MAAM,CAAC,GAAG;AAC1B,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC9C,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAChC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACrF,YAAY,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;AACzG,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE;AACrC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;AACvD,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACnD,QAAQ,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AACpD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG;AACrC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;AAClC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACtC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC/C,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AAC5D,gBAAgB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvF,YAAY,GAAG;AACf,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACxC,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB;AAC3F,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,YAAY,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,kBAAkB,GAAG;AACxC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACtD,YAAY,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAClE,YAAY,CAAC,CAAC,CAAC;AACf,YAAY,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACzF,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1F,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG;AAC1F,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5C;AACA,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC9F,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACzB;AACA,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe;AAChG,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC;AAChE,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC5F,KAAK,CAAC,CAAC,QAAQ,CAAC;AAChB,KAAK,GAAG;AACR,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AACnF,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACrF,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;AACjD,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtB,YAAY,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG;AACzC,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG;AAC7C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG;AAC7C,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI;AACxE,QAAQ,CAAC;AACT,QAAQ,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC;AACnB,YAAY,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;AACnD;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,kBAAkB,GAAG;AACvC,YAAY,UAAU,GAAG;AACzB;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC7E,QAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AACnC,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACrG,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AACnC,YAAY,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACrG,QAAQ,CAAC;AACT;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;AACvC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACpC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;AAC1D,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,GAAG;AAClC,gBAAgB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE;AAClE,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,YAAY,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE;AACvC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACpC,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;AAC1D,YAAY,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAChE,YAAY,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAChE,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;AACvD,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;AACvD,YAAY,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE;AAChE,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACtD,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACtD;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9E,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AAC9E;AACA,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;AACxD;AACA,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACnD,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAClC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC3B,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,gBAAgB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG;AACtF,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAChC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE;AAC7B,oBAAoB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACrC,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG;AACX;AACA,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAChE;AACA,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;AAChE,QAAQ,EAAE,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACzC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK;AACpF,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,wBAAwB,KAAK,CAAC,CAAC,CAAC;AAChC,4BAA4B,GAAG,CAAC,CAAC,EAAE;AACnC,wBAAwB,CAAC;AACzB,oBAAoB,EAAE;AACtB,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACnE,oBAAoB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACnE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;AAC9C,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC;AAC7C,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACzD,YAAY,GAAG;AACf,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1C,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AACnC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,EAAE;AAChD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AACnD,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACvD,gBAAgB,CAAC,IAAI,EAAE;AACvB,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAClC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACtC,oBAAoB,OAAO,CAAC,CAAC,CAAC;AAC9B,gBAAgB,GAAG;AACnB;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE;AAChC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC5C,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG;AACxC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC3C,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC3C,YAAY,EAAE;AACd,YAAY,CAAC,MAAM,GAAG;AACtB;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AAC/D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC3D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AACnD,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACjE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACxC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE;AACpC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;AACrC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAC5D,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,GAAG;AACnD,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AAC5D,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,GAAG;AAClD,YAAY,GAAG;AACf,QAAQ,SAAS,CAAC,IAAI,GAAG,MAAM,GAAG;AAClC;AACA,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;AAC5D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AACnD,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE;AAChD,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;AAC7B,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACvD,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;AAC7C,gBAAgB,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC5C,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AAC/C,uBAAuB,EAAE,EAAE,CAAC,EAAE;AAC9B,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE;AACjC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG;AAC3C,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE;AAClD,oBAAoB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,gBAAgB,GAAG;AACnB,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC/D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;AACjD,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE;AAC9C,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE;AAC1C,oBAAoB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC7C,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;AACzC,gBAAgB,GAAG;AACnB,QAAQ,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,QAAQ,EAAE;AACV,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE;AAChC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9B,gBAAgB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;AAChD,YAAY,GAAG;AACf,QAAQ,UAAU,CAAC,IAAI,GAAG,UAAU,EAAE;AACtC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC5C,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG;AACxC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG;AACzC;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AACnC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,EAAE;AAChD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;AACnD,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAChD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;AACtC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACrE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAC/B;AACA,QAAQ,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE;AACrC;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE;AAChC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC5C,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG;AACxC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,MAAM,GAAG;AACtB;AACA,QAAQ,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AAC/C;AACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC7B;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI;AACpF,QAAQ,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY;AACtF,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,GAAG;AAClC,YAAY,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AAC3D;AACA,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;AACnD,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,QAAQ,EAAE,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;AACvC,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG;AAC1E,gBAAgB,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,GAAG;AAC1E,YAAY,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC;AACxF,gBAAgB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,YAAY,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;AAC7C,YAAY,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;AAC7C,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU;AACnE,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK;AAChD;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG;AACpE,QAAQ,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;AACrE,QAAQ,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AAC5D,QAAQ,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,gBAAgB,IAAI,CAAC,CAAC,SAAS,EAAE;AACjC,oBAAoB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AACtD,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,MAAM,EAAE;AAC9B,oBAAoB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AACtD,oBAAoB,GAAG;AACvB,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,CAAC;AACjB,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9C,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;AAChD,YAAY,CAAC;AACb,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAClC;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAChE,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE;AACnE,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,YAAY,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;AAChD,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;AACrC,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACvC,QAAQ,GAAG;AACX,QAAQ,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACvC,QAAQ,GAAG;AACX,QAAQ,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG;AACjG,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACvE,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;AACtD,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChE,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,wBAAwB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC/C,wBAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE;AACzD,wBAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE;AACzD,wBAAwB,MAAM,CAAC,EAAE,CAAC;AAClC,oBAAoB,GAAG;AACvB,YAAY,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;AACtD,QAAQ,GAAG;AACX;AACA,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS;AAC/B,QAAQ,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACzC,QAAQ,GAAG;AACX,QAAQ,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACzC,QAAQ,GAAG;AACX,QAAQ,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG;AACxE,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5B,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG;AACvE,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACxD,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,IAAI,CAAC;AACrB,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,WAAW,CAAC,IAAI,EAAE;AACtC,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,wBAAwB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAChD,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AAClC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG;AAC3B,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG;AACrC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACzB,YAAY,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,YAAY,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE;AACjC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;AACnC;AACA,QAAQ,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;AAC/C,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,YAAY,GAAG;AACf,YAAY,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE;AAC/C,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,YAAY,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB,gBAAgB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,gBAAgB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACtD,gBAAgB,EAAE,CAAC,MAAM,CAAC,eAAe,GAAG;AAC5C,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;AAC9I,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;AACxF,oBAAoB,OAAO,CAAC,GAAG,EAAE,SAAS,GAAG;AAC7C,oBAAoB,OAAO,CAAC,WAAW,EAAE;AACzC,wBAAwB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,GAAG,EAAE;AACvB,gBAAgB,EAAE,EAAE,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;AAC/C,oBAAoB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAC1D,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;AAC9I,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvC,gBAAgB,GAAG,CAAC,OAAO,CAAC;AAC5B,gBAAgB,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC3C,gBAAgB,IAAI,CAAC,CAAC,MAAM,EAAE;AAC9B,oBAAoB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,IAAI,EAAE;AAC5B,oBAAoB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,oBAAoB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC1C,oBAAoB,KAAK,CAAC;AAC1B,gBAAgB,OAAO,CAAC;AACxB,oBAAoB,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpC,gBAAgB,CAAC;AACjB,gBAAgB,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACxC,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,SAAS,GAAG;AAChC,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,KAAK,EAAE;AACzB,gBAAgB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI;AAC9E,gBAAgB,SAAS,CAAC,KAAK,GAAG;AAClC,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACpE,QAAQ,OAAO,CAAC,WAAW,EAAE;AAC7B,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5B,YAAY,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAgB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAClE,gBAAgB,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AACxE,gBAAgB,WAAW,CAAC,CAAC,WAAW,CAAC;AACzC,gBAAgB,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG;AAC/D,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,OAAO,CAAC,WAAW,EAAE;AAC7B,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;AAC7B,YAAY,IAAI,CAAC,CAAC,CAAC;AACnB,gBAAgB,8BAA8B,CAAC,CAAC,EAAE,CAAC;AACnD,gBAAgB,+BAA+B,CAAC,CAAC,EAAE,CAAC;AACpD,gBAAgB,+BAA+B,CAAC,CAAC,EAAE,CAAC;AACpD,gBAAgB,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG;AAClD,gBAAgB,eAAe,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;AACzD,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AACpD,gBAAgB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,oBAAoB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC1D,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAChG,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG;AAC7D,YAAY,GAAG;AACf;AACA,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE;AACjC,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC7E,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,GAAG;AACrD,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,GAAG;AACrD,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC7B;AACA,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG;AACrE,QAAQ,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG;AACvE,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG;AACzE,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACnD,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;AACxG,IAAI,EAAE;AACN;AACA;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;AAC/B,QAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,QAAQ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1B,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,YAAY,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1C,gBAAgB,EAAE,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AAChF,oBAAoB,MAAM,CAAC,MAAM,GAAG;AACpC,YAAY,EAAE,CAAC,CAAC,EAAE;AAClB,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3B,YAAY,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD,oBAAoB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,gBAAgB,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClD,oBAAoB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;AACvD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,gBAAgB,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;AAC5D,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,oBAAoB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/C,oBAAoB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1F,8CAA8C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,kBAAkB,GAAG;AACrF,8CAA8C,cAAc,CAAC,CAAC,cAAc;AAC5E,8CAA8C,EAAE;AAChD,gBAAgB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;AACnD,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG;AAC1C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AACpF,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC3D,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,IAAI,CAAC,CAAC,IAAI,CAAC;AAC/B,oBAAoB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChF,gBAAgB,EAAE;AAClB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7C,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACtG,yBAAyB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/F,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAChH,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5E,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5D,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrD,YAAY,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AAC9D,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;AACrD,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,oBAAoB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,YAAY,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE;AACzD,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI;AACjD,IAAI,EAAE,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;AAC/F,IAAI,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AACxF,YAAY,QAAQ,GAAG;AACvB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,YAAY,UAAU;AACtB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC1C,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG;AACvE,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACpE,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACzE,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC7C,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AAC1C,YAAY,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE;AAChD,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;AAClD,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACjD,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACzD,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,EAAE;AAChE,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AACnC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,GAAG;AAC1D,QAAQ,KAAK,CAAC,KAAK,EAAE;AACrB,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE;AAClD,gBAAgB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;AAChC,gBAAgB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AAC9C,gBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;AAC9B,YAAY,GAAG;AACf,QAAQ,KAAK;AACb,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC/B,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9B,gBAAgB,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAClD,gBAAgB,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;AAClD,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,OAAO,CAAC;AAChB,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,QAAQ,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3E,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AAC9D,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE;AACxE,YAAY,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;AACjF,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAClC,YAAY,EAAE,EAAE,OAAO,CAAC;AACxB,gBAAgB,MAAM,CAAC;AACvB,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9F,gBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC;AAC7E,YAAY,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AACnC,gBAAgB,YAAY,CAAC,OAAO,EAAE;AACtC,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;AAChD,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACnE,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACvE,gBAAgB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACxC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/B,oBAAoB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;AAC5C,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;AACvE,gBAAgB,CAAC;AACjB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;AAC1E,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1F,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACvF,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;AACxE,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,KAAK;AACvE,gBAAgB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACvF,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG;AAC/C,gBAAgB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG;AAC9C,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AACtC,gBAAgB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1E,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AACxE,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC5E,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7B,wBAAwB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AAC9E,wBAAwB,KAAK,CAAC;AAC9B,oBAAoB,OAAO,CAAC;AAC5B,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;AACxF,oBAAoB,CAAC;AACrB,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AACjE,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,gBAAgB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1C,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,gBAAgB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACtC,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AAC7C,gBAAgB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG;AAC3C,YAAY,IAAI;AAChB,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC3E;AACA,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,gBAAgB,EAAE,EAAE,OAAO,CAAC;AAC5B,oBAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG;AACrF,gBAAgB,IAAI,CAAC,IAAI,EAAE;AAC3B,oBAAoB,OAAO,CAAC,CAAC,OAAO,CAAC;AACrC,oBAAoB,mBAAmB,CAAC,CAAC,GAAG;AAC5C,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;AAChE,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AACxI,QAAQ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,qBAAqB,GAAG;AACjE;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,SAAS;AACjB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ;AAC1D,gBAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACtE,YAAY,GAAG;AACf,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACzB,gBAAgB,CAAC,UAAU,EAAE;AAC7B,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAChD,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AACjF,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACzD,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,oBAAoB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1E,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,gBAAgB,GAAG;AACnB;AACA,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,QAAQ,GAAG;AACX;AACA,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,SAAS;AACjB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACjF,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAC7F,gBAAgB,GAAG,CAAC,GAAG,CAAC;AACxB,gBAAgB,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5D,oBAAoB,kBAAkB,CAAC,CAAC,EAAE;AAC1C,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,kBAAkB,CAAC,CAAC,EAAE;AAC1C,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,gBAAgB,CAAC;AACjB,gBAAgB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAChD,oBAAoB,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC9D,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,wBAAwB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;AAC/D,oBAAoB,GAAG;AACvB,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACjG;AACA,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAClD,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,oBAAoB,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,wBAAwB,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAClE,4BAA4B,CAAC,UAAU,GAAG,QAAQ,CAAC,mBAAmB,GAAG;AACzE,4BAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC3D,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACxD,gCAAgC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtE,4BAA4B,GAAG;AAC/B,oBAAoB,CAAC;AACrB,gBAAgB,EAAE;AAClB,cAAc,CAAC,UAAU,EAAE;AAC3B,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAChD,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AACjF,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACzD,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACxE,4BAA4B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChF,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE;AACrD,gBAAgB,GAAG;AACnB,QAAQ,cAAc;AACtB,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;AACvG,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE;AAC9C,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AAC5C,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI;AAC7E,YAAY,EAAE;AACd,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACpE,wBAAwB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC5E,gBAAgB,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,EAAE;AACvD,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACpD,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AAC7D,YAAY,EAAE,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,gBAAgB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;AAC5C,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AACpD,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAI;AACxD,gBAAgB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE;AAClD,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,GAAG;AACpD,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,GAAG,IAAI;AAC9D,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC9E,gBAAgB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;AACvE,gBAAgB,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AACrD,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG;AAC3D,gBAAgB,MAAM;AACtB,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAI;AACxD,gBAAgB,SAAS;AACzB,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAI;AACxD,YAAY,CAAC;AACb,QAAQ,CAAC;AACT;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ;AAC3D,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACrF,QAAQ,EAAE,EAAE,MAAM,CAAC,eAAe,GAAG;AACrC,YAAY,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG;AACnF;AACA,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAI;AACrD,IAAI,CAAC;AACL;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG;AAC/F,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AAC/E,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACnB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,EAAE,EAAE,MAAM,CAAC,kBAAkB,GAAG;AACxC,YAAY,UAAU,GAAG;AACzB,QAAQ,MAAM,CAAC,QAAQ,GAAG;AAC1B,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC9B,QAAQ,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AACpC,QAAQ,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AACpC;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG;AAC3B,YAAY,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG;AAC/B,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;AAC3F,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AAC5F,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAChD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACf,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;AAC1D,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;AAChD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,QAAQ,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AACjE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AAC7C,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AAC7C,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACjB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;AAC5F,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvD,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChD,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;AACtC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACnB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,EAAE;AACvC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7F,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvD;AACA,KAAK,CAAC,CAAC,GAAG,EAAE;AACZ,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;AACnD,KAAK,CAAC,CAAC,GAAG;AACV;AACA,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS;AAC9F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE;AACtC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AAC9F,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9F,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AAChB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC;AACA,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjB,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAC5F,KAAK,CAAC,CAAC,OAAO,CAAC;AACf,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,GAAG;AACtC,QAAQ,MAAM,CAAC,WAAW,GAAG;AAC7B,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAClE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE;AACjC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACrB,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC;AACxG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,QAAQ,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE;AACjC,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC/F,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3F,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACtF,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B;AACA,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1F,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;AACpD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;AACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAChF,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,EAAE;AAC/D,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACvE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACzE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC5F,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC1C,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ;AACtD,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;AAC7F,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;AAChD,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AACtD,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AAClC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC9C,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACxC,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC;AACvB,YAAY,KAAK,CAAC,CAAC,KAAK,CAAC;AACzB,YAAY,MAAM,CAAC,CAAC,MAAM,CAAC;AAC3B,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC;AACvB,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC;AACvB,YAAY,YAAY,CAAC,CAAC,KAAK;AAC/B,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACtC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvD;AACA,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;AAC1B,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AAChC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AAChC,QAAQ,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG;AAC5B,QAAQ,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAI,EAAE;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACzC,YAAY,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG;AAC1E;AACA,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAClB,YAAY,WAAW;AACvB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9C,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACjD,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACjD,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE;AACtD,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACtF,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACxF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1D,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE;AAClD,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,QAAQ,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;AACzB,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACjF,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;AAChC,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACvD,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;AACpD,YAAY,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1D,YAAY,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM;AAC5D,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AACtE,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;AAC9D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;AAC9D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE;AAC9D,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG;AAC/D,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvB,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;AAC3C,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;AAClC,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG;AACvE,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG;AAC3C,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACpF,gBAAgB,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AACnF,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9B,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACnC,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACpC,YAAY,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACrC,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACpC,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACnC,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAClE,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,KAAK,EAAE;AACzB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACpE,gBAAgB,KAAK,CAAC;AACtB,YAAY,OAAO,CAAC;AACpB,gBAAgB,EAAE,OAAO,CAAC;AAC1B,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAChF,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AAC/E,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9B,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClC,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACrC,YAAY,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACrC,gBAAgB,EAAE,CAAC,OAAO,CAAC;AAC3B,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACrC,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClC,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,YAAY,IAAI,CAAC,CAAC,GAAG,EAAE;AACvB,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AAChE,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE;AAC1B,gBAAgB,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;AACtE,gBAAgB,KAAK,CAAC;AACtB,YAAY,OAAO,CAAC;AACpB,gBAAgB,EAAE,OAAO,CAAC;AAC1B,YAAY,CAAC;AACb;AACA,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACzB,gBAAgB,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE;AAC3C,QAAQ,CAAC;AACT,QAAQ,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;AACnD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAClB,YAAY,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG;AACnD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI;AACtD,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG;AAC3C,QAAQ,SAAS,GAAG;AACpB;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG;AACxC;AACA,QAAQ,EAAE,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACtC,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI;AAC5C,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK;AAC5C,YAAY,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AACvC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI;AAC7C,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK;AAC7C,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC;AACnC,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;AACvC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAY,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;AAC3C,QAAQ,CAAC;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAChD,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG;AAC3C,YAAY,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;AAC1C,QAAQ,EAAE;AACV,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE;AACjC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC/C,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACzC,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;AACnC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG;AACzC,IAAI,GAAG;AACP;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM;AAChE,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AACpG,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC1F,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACjG,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;AACtD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACrB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/D,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACnC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,EAAE;AACP,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAClD,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACrB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;AACzE,gBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG;AAC5C,YAAY,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;AACxE,YAAY,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;AACjD,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG;AAC/E,QAAQ,CAAC;AACT,QAAQ,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AACjC,QAAQ,MAAM,CAAC,MAAM,CAAC;AACtB,IAAI,EAAE;AACN;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACzB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO;AACjC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,EAAE;AACP,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG;AAChC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI;AACtC,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG;AAC7C,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;AAC7C,EAAE;;AC3uEF,GAAG;AACH,EAAE,CAAC,MAAM;AACT;AACA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpH,GAAG;AACH,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACrB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;AACrB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE;AACvB,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9B;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE;AAC7B,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAC/C,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACrC;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE;AAC9B,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAChD,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtC;AACA;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE;AAC9B,KAAK,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AACvG,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;AACpG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG;AACpG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC9D,KAAK,GAAG;AACR,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK;AACrC;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpC;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE;AAC3C,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AAC/C,gBAAgB,CAAC,IAAI,EAAE,CAAC,GAAG;AAC3B,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAClC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;AAC7C,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACrF;AACA,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE;AAC5C,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9D,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE;AAChD,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG;AACvC,QAAQ,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AAChC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC3C,QAAQ,IAAI;AACZ,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,gBAAgB,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACzH,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACxC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5F,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,YAAY,GAAG;AACf,QAAQ,OAAO,CAAC,MAAM,EAAE;AACxB,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC;AAClC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE;AAC/B,IAAI,EAAE;AACN;AACA,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG;AAC5C,QAAQ,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG;AACzH,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,MAAM,CAAC,CAAC,CAAC,GAAG;AACxB,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AACtC,gBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK;AAC/F,QAAQ,CAAC;AACT,QAAQ,OAAO,CAAC,MAAM,GAAG;AACzB,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,EAAE;;AC7FF,GAAG;AACH,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AACjD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE;AAC3D,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,GAAG;AACvD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,OAAO;AACpG,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE;AAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;AACrG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;AACrB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC1G,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK;AAC5D,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC7F,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxF,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;AAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACxF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;AACzF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC;AACrF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE;AAChB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC/F,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;AAC9F,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;AAC/F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE;AAC5F,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM;AAC3F,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACjE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACR,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AACjG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;AACnG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM;AACnD,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;AAC1F,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS;AAC3F,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AAC5E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB;AAC5B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;AAC/F,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS;AAClF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACrB,CAAC,EAAE;AACH,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC/B;AACA,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;AACjD,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACjE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzB,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACxC,oBAAoB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7E,oBAAoB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE;AACjE,gBAAgB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE;AAC7G,YAAY,CAAC;AACb,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACpF,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG;AACzF,IAAI,GAAG;AACP,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,YAAY,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACxD,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjF,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;AACpC,QAAQ,EAAE;AACV,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACzB,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;AAChE,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,oBAAoB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,oBAAoB,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE;AACvC,wBAAwB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,4BAA4B,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ;AAC3D,4BAA4B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AAClD,wBAAwB,EAAE;AAC1B,oBAAoB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;AACnD,oBAAoB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG;AAChE,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACpD,gBAAgB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;AACpD,YAAY,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAC5E,mBAAmB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5E,oBAAoB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACtE,oBAAoB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,wBAAwB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,wBAAwB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,CAAC;AAC1B,wBAAwB,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACjD,wBAAwB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,oBAAoB,CAAC;AACrB,oBAAoB,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;AACjD,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,GAAG;AACX,QAAQ,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE;AAClC,gBAAgB,MAAM,CAAC;AACvB,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;AACzC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACvE,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7E,YAAY,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;AACrE,YAAY,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;AACzC,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,IAAI,EAAE;AACN,EAAE;AACF;AACA,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS;AAC9C,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACjB,QAAQ,QAAQ,CAAC,CAAC,EAAE,QAAQ;AAC5B,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;AACjB,QAAQ,QAAQ,CAAC,CAAC,EAAE,QAAQ;AAC5B,IAAI,EAAE;AACN,EAAE;AACF;AACA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAC9B,YAAY,IAAI,CAAC,CAAC,IAAI;AACtB,QAAQ,EAAE;AACV,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5D,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AACD;AACA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG;AACxB,EAAE;AACF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG;AACxB,EAAE;AACF;AACA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAChB,QAAQ,QAAQ,CAAC,CAAC,QAAQ;AAC1B,IAAI,EAAE;AACN,EAAE;AACF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC5C,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACzB,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClB,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AAChB,QAAQ,QAAQ,CAAC,CAAC,QAAQ;AAC1B,IAAI,EAAE;AACN,EAAE;;ACpMF,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AAC7D,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAClD,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC;AACxB,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC;AACxB,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;AACjD,oBAAoB,WAAW,CAAC,IAAI,EAAE;AACtC,wBAAwB,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;AACzD,wBAAwB,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACvD,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClC,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,wBAAwB,QAAQ,CAAC,CAAC,IAAI;AACtC,oBAAoB,GAAG;AACvB,gBAAgB,CAAC;AACjB,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,YAAY,EAAE;AACd,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AAC1B,YAAY,CAAC;AACb,QAAQ,GAAG;AACX,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACnC,QAAQ,MAAM,CAAC,WAAW,CAAC;AAC3B,IAAI,EAAE;AACN,EAAE;;AC9BF,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AAC7D,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,IAAI,GAAG,CAAC,CAAC,CAAC;AACV,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;AAChC,IAAI,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,QAAQ,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE;AAC9C,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;AACpB,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC;AACpB,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5B,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACjD,YAAY,CAAC;AACb,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC3C,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,QAAQ,EAAE;AACV,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxC,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrC,YAAY,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;AACzD,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC5D,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtC,gBAAgB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACjC,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AACtF,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACtF,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG;AAC1B,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;AACpF,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AACnD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1D,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/B,wBAAwB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACjF,4BAA4B,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,4BAA4B,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1D,wBAAwB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAC/C,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5B,wBAAwB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACvD,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,4BAA4B,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG;AAClD,wBAAwB,IAAI,CAAC,CAAC;AAC9B,4BAA4B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,gCAAgC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACtE,4BAA4B,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzC,4BAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;AACjF,gCAAgC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACzE,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,gCAAgC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,4BAA4B,CAAC,CAAC,IAAI,CAAC,CAAC;AACpC,gCAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AAC7I,gCAAgC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACpD,4BAA4B,CAAC;AAC7B,4BAA4B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,gCAAgC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG;AACnE,gCAAgC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,4BAA4B,CAAC;AAC7B,4BAA4B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,wBAAwB,CAAC;AACzB,oBAAoB,CAAC;AACrB,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,EAAE;AACF;;ACnFA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,IAAI,GAAG;AACP,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE;AAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACxC,KAAK,GAAG;AACR,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,GAAG,CAAC,KAAK,CAAC;AACtB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAgB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/E,oBAAoB,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACrE,oBAAoB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,wBAAwB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAClE,wBAAwB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,oBAAoB,CAAC;AACrB,oBAAoB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1C,wBAAwB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACjE,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,gBAAgB,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG;AAC3C,gBAAgB,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACnF,oBAAoB,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACxE,oBAAoB,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;AAC/D,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,YAAY,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;AAClD,QAAQ,GAAG;AACX,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;;ACjCF,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AACjF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACvF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1F,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;AACnF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,GAAG;AACJ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,IAAI,GAAG,CAAC,QAAQ,CAAC;AACjB;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACzF,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AACvF,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI;AACnD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACnB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjC,KAAK,GAAG;AACR,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAY,EAAE,CAAC,CAAC,CAAC;AACjB,gBAAgB,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChE,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC3C,gBAAgB,GAAG;AACnB,YAAY,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG;AAClC,gBAAgB,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;AACpD,QAAQ,GAAG;AACX;AACA,IAAI,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,SAAS,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,aAAa,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1C,iBAAiB,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,qBAAqB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,yBAAyB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AACtD,qBAAqB,GAAG;AACxB,iBAAiB,EAAE;AACnB;AACA,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC/B,iBAAiB,YAAY,CAAC,QAAQ,EAAE;AACxC,iBAAiB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI;AAC3D,aAAa,CAAC;AACd,aAAa,IAAI,CAAC,IAAI,GAAG;AACzB,SAAS,EAAE;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzB,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtB,YAAY,YAAY,CAAC,QAAQ,EAAE;AACnC,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,GAAG;AACtB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACrC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AAC7B,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;AACxC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE;AACvE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI;AAC7C,YAAY,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7C,QAAQ,CAAC;AACT,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,OAAO,GAAG;AACnE,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC1C,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,OAAO,GAAG;AACnE,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;AAC1C,IAAI,CAAC;AACL;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG;AACjE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,EAAE;AAC/G,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE;AACjH,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACjC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS;AACtB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE;AACtC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACvB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7B,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AACzE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG;AAChC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;AAChC,KAAK,GAAG;AACR,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG;AACnC;AACA,IAAI,GAAG;AACP,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG;AACxF,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;AACzF,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,EAAE;AAC1F,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACjD,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;AACpB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AAC7B,KAAK,CAAC,CAAC,CAAC,QAAQ;AAChB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACzB,KAAK,CAAC,CAAC,CAAC,OAAO;AACf,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK;AACtC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACnE,KAAK,CAAC,CAAC,GAAG;AACV,KAAK,GAAG;AACR,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAChE,IAAI,GAAG;AACP;AACA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7B;AACA,IAAI,MAAM,CAAC,IAAI,CAAC;AAChB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACrF,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/E,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AACd,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG;AACzB,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AACrE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG;AAC5B,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI;AAC5B,CAAC,GAAG;AACJ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI;AAClE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAgB,GAAG;AACnB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,IAAI;AAC/D,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AACpD,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,EAAE,EAAE,GAAG;AAClD,QAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;AAC/D,QAAQ,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAClE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AAC3E,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AAChC,IAAI,MAAM,CAAC,GAAG,CAAC;AACf,EAAE;;ACvJF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAC7D,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;AACjF,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/E,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;AACvB;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,YAAY,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;AACzB,QAAQ,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,YAAY,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAChD,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACtC,YAAY,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC3D,YAAY,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG;AACvC,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,YAAY,SAAS,CAAC,CAAC,CAAC,GAAG;AAC3B,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACtC,YAAY,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC3D,QAAQ,GAAG;AACX,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACjE,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;AAC1E,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;AACvC,QAAQ,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACtF,QAAQ,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxC,YAAY,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC3D,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC5C,QAAQ,KAAK,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AACnD,QAAQ,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACxC,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9C,QAAQ,YAAY,CAAC,CAAC,YAAY,CAAC;AACnC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,YAAY,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC/C,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,EAAE;AACF;AACA,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,GAAG;AAC/C,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AAC1E,EAAE;;ACjDF,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,IAAI,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAY,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;AACrC,QAAQ,EAAE,CAAC,KAAK,GAAG;AACnB,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,oBAAoB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,gBAAgB,GAAG;AACnB,gBAAgB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC1C,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,gBAAgB,oBAAoB,CAAC,IAAI,EAAE;AAC3C,gBAAgB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC1C,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;AACtD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE;AACtD,QAAQ,oBAAoB,CAAC,IAAI,EAAE;AACnC,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACzC,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;AACrD,QAAQ,YAAY,CAAC,CAAC,YAAY,CAAC;AACnC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,YAAY,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAC/C,QAAQ,CAAC;AACT,IAAI,GAAG;AACP,EAAE;AACF;;ACvCA,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrE,QAAQ,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,cAAc,GAAG;AAC/E,IAAI,GAAG;AACP;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE;AAC7E,EAAE;;ACNF,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AACrF,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAChC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAClC,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG;AACpC,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF;AACA,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,QAAQ,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG;AAChC,YAAY,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG;AACnD,QAAQ,IAAI;AACZ,YAAY,SAAS,CAAC,MAAM,GAAG,OAAO,GAAG;AACzC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtC,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5B,QAAQ,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/B,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7B,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1B,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACrC,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG;AAC3B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG;AAC3B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;AAC1C,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI;AACX,IAAI,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC7B,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AAC9B,YAAY,MAAM,CAAC,KAAK,CAAC;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG;AAClD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,EAAE,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AACxB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG;AAC/C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,IAAI;AAC9E,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,QAAQ,KAAK;AACb,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,gBAAgB,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9D,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG;AAC9D,YAAY,EAAE,CAAC,SAAS,EAAE;AAC1B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;AACvF,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;AACvF,YAAY,EAAE,CAAC,WAAW,EAAE;AAC5B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE;AACzF,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE;AACzF,YAAY,EAAE,CAAC,UAAU,GAAG;AAC5B;AACA,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE;AAClG,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC1D,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;AACnH,YAAY,GAAG;AACf;AACA;AACA,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE;AAClG,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC1D,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAgB,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;AACnH,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC/C,QAAQ,MAAM;AACd,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;AACjD,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE;AAC/C,QAAQ,oBAAoB,GAAG;AAC/B,QAAQ,KAAK;AACb,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC3C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC7C,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;AAC7C,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1D,QAAQ,YAAY,CAAC,CAAC,YAAY,CAAC;AACnC,QAAQ,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,YAAY,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACvD,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG;AACxC,YAAY,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1F,YAAY,qBAAqB,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1F,YAAY,qBAAqB,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE;AAC5F,QAAQ,CAAC;AACT,IAAI,GAAG;AACP;AACA,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACzE,QAAQ,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC7C;AACA,IAAI,MAAM,CAAC,SAAS,CAAC;AACrB,EAAE;AACF;;ACnJA,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG;AAC5B,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG;AACtE;AACA,IAAI,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,GAAG;AACtF,QAAQ,QAAQ,CAAC,IAAI,EAAE;AACvB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACrB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACrB,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AACvB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG;AACrB,YAAY,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/B,QAAQ,GAAG;AACX,QAAQ,QAAQ,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;AAC7E,YAAY,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE;AAC1C,gBAAgB,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACtC,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAgB,EAAE;AAClB,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,oBAAoB,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAgB,CAAC;AACjB,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,QAAQ,GAAG,CAAC,GAAG,CAAC;AAChB,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAE;AACnB,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACxD,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACxD,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;AACpB,YAAY,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5F,YAAY,EAAE;AACd,YAAY,KAAK,CAAC;AAClB,QAAQ,CAAC;AACT,QAAQ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG;AACvC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE;AACxB,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnD,YAAY,EAAE;AACd,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7C,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7B,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE;AACtB,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;AAC5B,gBAAgB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAY,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAgB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClF,YAAY,EAAE;AACd,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AACxB,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;AAClC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE;AAChD,wBAAwB,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC,CAAC;AAC1F,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7B,YAAY,GAAG;AACf,QAAQ,KAAK,CAAC,IAAI,GAAG,MAAM,GAAG;AAC9B,QAAQ,KAAK;AACb,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;AAC9C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE;AACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AACxB,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE;AAClC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAChD,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC;AACpD,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAChD,oBAAoB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACpE,oBAAoB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACnC,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7C,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACrD,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AACpD,oBAAoB,EAAE;AACtB,gBAAgB,CAAC;AACjB,gBAAgB,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAY,GAAG;AACf,QAAQ,IAAI;AACZ,UAAU,CAAC,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE;AACjC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC;AACnC,YAAY,CAAC,IAAI,EAAE;AACnB,gBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC;AAC1B,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,GAAG;AAC7C,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACpB,YAAY,GAAG;AACf,QAAQ,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC5E,QAAQ,GAAG;AACX,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG;AAC7B,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,QAAQ,GAAG;AACX,QAAQ,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACzC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,QAAQ,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;AAC7D,YAAY,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,qBAAqB,GAAG;AAChE,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG;AAC/F,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1B,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1B,QAAQ,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,CAAC,EAAE,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/C,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI;AAC9D,IAAI,CAAC;AACL;AACA;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACxD,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3C,YAAY,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,gBAAgB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC;AAC7B,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe;AAChH,gBAAgB,EAAE;AAClB,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,oBAAoB,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,gBAAgB,GAAG;AACnB,gBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACjD,YAAY,GAAG;AACf,QAAQ,CAAC;AACT;AACA,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACjC,YAAY,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AACpC,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACzD,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG;AACtD,gBAAgB,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1C,oBAAoB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG;AAClF,oBAAoB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,gBAAgB,CAAC;AACjB,gBAAgB,IAAI,CAAC,CAAC;AACtB,oBAAoB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;AACnG,oBAAoB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChD,gBAAgB,CAAC;AACjB,gBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AACjD,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,YAAY,CAAC;AACb,YAAY,MAAM,CAAC,MAAM,GAAG;AAC5B,YAAY,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AACnF,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AACzF,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ;AACzF,YAAY,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtC,gBAAgB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,EAAE;AAC1D,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AAC7C,oBAAoB,MAAM,GAAG;AAC7B,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;AACvE,QAAQ,CAAC;AACT;AACA,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;AACvD,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;AACvD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,gBAAgB,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;AAClD,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC;AAC/B,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;AACnC,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI;AACZ,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;AAClD,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;AAClD,QAAQ,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACpC,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,QAAQ,YAAY,CAAC,CAAC,YAAY,CAAC;AACnC,QAAQ,KAAK,CAAC,CAAC,gBAAgB,CAAC;AAChC,QAAQ,eAAe,CAAC,CAAC,eAAe;AACxC,IAAI,GAAG;AACP,EAAE;;ACnOF,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;AAC5F,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS;AACzD,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,QAAQ,EAAE,EAAE,IAAI,CAAC;AACjB,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI;AACxC,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC7B,QAAQ,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAChC,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAChC,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG;AACxD;AACA,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACf,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ;AACtD,QAAQ,KAAK,EAAE;AACf,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAClC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AAClC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACzB,oBAAoB,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC1C,gBAAgB,IAAI;AACpB,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AACjF,YAAY,GAAG;AACf,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG;AAChD,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACjC,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG;AACpD,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACvB,gBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACtC,gBAAgB,MAAM,CAAC;AACvB,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/C;AACA,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AAC5C,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;AACpD,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG;AACnE,gBAAgB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,gBAAgB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,YAAY,GAAG;AACf;AACA,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AAC5C,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC3B,YAAY,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7C,gBAAgB,KAAK,CAAC,IAAI,EAAE;AAC5B,oBAAoB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,oBAAoB,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AACtD,oBAAoB,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,oBAAoB,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAgB,GAAG;AACnB,YAAY,GAAG;AACf,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AACrD,YAAY,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAClC,QAAQ,GAAG;AACX,EAAE;;AC/DF,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;AACxE,CAAC;AACD;AACA,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;AAC7D,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7D,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG;AAClC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5E,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AACpG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAClD,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE;AACzE;AACA,IAAI,EAAE,EAAE,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;AACxC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,GAAG;AAChD,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG;AACzG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI;AACvD,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG;AAClC,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACrC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG;AAC5D,IAAI,CAAC;AACL;AACA,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACjC,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG;AACtG,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG;AACtG,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG;AACxD,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG;AACpC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AAClE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAY,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,oBAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;AAC/E,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,oBAAoB,EAAE,CAAC,UAAU,CAAC;AAClC,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AAC7E,oBAAoB,IAAI;AACxB,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG;AACvE,gBAAgB,CAAC;AACjB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG;AAC/E,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,gBAAgB,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AAC3D,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACrF,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAC/B;AACA,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;AACvD,YAAY,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACpC,gBAAgB,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;AACpD,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AACzE,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG;AACnE,YAAY,CAAC;AACb,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACrF,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAC/B;AACA,YAAY,EAAE;AACd,aAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AACzD,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACxD,YAAY,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC;AAClC,gBAAgB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG;AAC5D,YAAY,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AAC9E,YAAY,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AACxC,aAAa,EAAE;AACf,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG;AACpF,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG;AACtC,QAAQ,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACpD,QAAQ,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAChC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;AAC5E,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,gBAAgB,EAAE,CAAC,WAAW,CAAC;AAC/B,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG;AAC3E,gBAAgB,IAAI;AACpB,oBAAoB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG;AACnE,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,GAAG;AAC3E,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACxD,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACnF,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAC5B,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,WAAW,CAAC,CAAC,GAAG,CAAC;AACzB,QAAQ,UAAU,CAAC,CAAC,EAAE,CAAC;AACvB,QAAQ,UAAU,CAAC,CAAC,EAAE;AACtB,IAAI,EAAE;AACN,CAAC;;AC9GD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACjH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACZ,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AAC3D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;AAC7F,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AACpG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAChE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AACjG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;AACjG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AACjG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;AACtE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG;AACjG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO;AAC/F,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU;AACxB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AACb,GAAG;AACH;AACA,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5C,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AAC/E,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9B,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7B,gBAAgB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD,oBAAoB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7C,gBAAgB,GAAG;AACnB,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;AACnD,QAAQ,MAAM,CAAC,CAAC;AAChB,YAAY,WAAW,CAAC,CAAC,GAAG,CAAC;AAC7B,YAAY,SAAS,CAAC,CAAC,SAAS,CAAC;AACjC,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;AACnE,qDAAqD,SAAS,CAAC,MAAM,CAAC;AACtE,qDAAqD,SAAS,CAAC,IAAI,EAAE;AACrE,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE;AACnH,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAClD;AACA,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;AACvB,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;AACxC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW;AAC9D,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAClG,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU;AAC5B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;AAC7D,SAAS,GAAG;AACZ,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC1C,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE;AACvC,YAAY,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAC/C,QAAQ,EAAE;AACV,QAAQ,GAAG;AACX,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1E,SAAS,CAAC;AACV,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD;AACA,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AAC1B,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;AACxC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ;AACrD,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AAClG,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU;AAC5B,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE;AAC7D,SAAS,GAAG;AACZ,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC7C,YAAY,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;AAC/C,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,KAAK;AACL;AACA;;AC/FA,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AACnE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7G,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;AAC5C,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACtB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG;AACjC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnC,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG;AAC/B,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;AACtC,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACtC,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,YAAY,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7B,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxB,gBAAgB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAC9B,gBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,gBAAgB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,YAAY,CAAC;AACb,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG;AAC9I,YAAY,MAAM,CAAC,OAAO,CAAC;AAC3B,QAAQ,GAAG;AACX,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK;AAC5F,gBAAgB,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM;AAC7F,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3B,QAAQ,MAAM,CAAC,CAAC,CAAC;AACjB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACtB,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,QAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAC9C,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,IAAI,IAAI;AACR,EAAE;AACF;AACA,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvF,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,QAAQ,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AACvB,YAAY,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;AAC7C,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;AACxD,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtF,YAAY,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AAClC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C,YAAY,MAAM,CAAC,CAAC,CAAC;AACrB,QAAQ,GAAG;AACX,IAAI,IAAI;AACR,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,KAAK,CAAC;AACrB,QAAQ,KAAK,CAAC,CAAC,KAAK;AACpB,IAAI,EAAE;AACN,EAAE;AACF;;ACzDA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7C,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;AACzC;AACA,IAAI,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,QAAQ,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,YAAY,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACtD,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB,gBAAgB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AACnD,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AAClD,gBAAgB,KAAK,CAAC;AACtB,YAAY,IAAI,CAAC,CAAC,IAAI,EAAE;AACxB,gBAAgB,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9F,gBAAgB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG;AAClD,gBAAgB,KAAK,CAAC;AACtB,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7B,QAAQ,GAAG;AACX,IAAI,CAAC;AACL;AACA,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC5C,QAAQ,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACzC,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE;AAC/C,QAAQ,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC3C,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AACvC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1C,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1C,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3B,YAAY,qBAAqB,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,IAAI;AAC5D,QAAQ,EAAE;AACV,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9D,YAAY,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;AAC5F,oBAAoB,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC;AAC1C,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG;AAC3F,oBAAoB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,oBAAoB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC;AACzC,wBAAwB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG;AAC3F,oBAAoB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AACvD,gBAAgB,CAAC;AACjB,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AACpC,YAAY,GAAG;AACf,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5B,gBAAgB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1D,oBAAoB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI;AACxF,oBAAoB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,oBAAoB,MAAM,CAAC,QAAQ,CAAC;AACpC,gBAAgB,GAAG;AACnB,gBAAgB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU;AAC1E,gBAAgB,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE;AAChE,gBAAgB,EAAE,CAAC,KAAK,CAAC;AACzB,oBAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACxC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAgB,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,gBAAgB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACxE,YAAY,CAAC;AACb,QAAQ,EAAE;AACV,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,UAAU,CAAC;AAC9B,QAAQ,EAAE;AACV,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AACpC,gBAAgB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;AACnD,gBAAgB,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,oBAAoB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC9C,oBAAoB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAChE,gBAAgB,GAAG;AACnB,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACrE,YAAY,CAAC;AACb,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN;AACA,IAAI,MAAM,CAAC,MAAM,CAAC;AAClB,EAAE;AACF;;ACjFA,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3E,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG;AAC/G,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;AACjC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AACpB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC;AACA,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;AAC7E,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;AAC7B,QAAQ,EAAE;AACV,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,QAAQ,EAAE,EAAE,MAAM,CAAC;AACnB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;AACxB,YAAY,MAAM,CAAC,MAAM,CAAC;AAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG;AAC/C,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG;AAC9D,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,IAAI;AAC9E,IAAI,CAAC;AACL;AACA,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY;AACvD,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU;AAChE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrF;AACA,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAChC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAClE,QAAQ,EAAE,CAAC,KAAK,EAAE;AAClB,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3B,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAY,CAAC,KAAK,EAAE;AACpB,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;AACtC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;AACxC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE;AACvC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE;AACvC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC1C,gBAAgB,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;AAC/B,gBAAgB,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7B,YAAY,GAAG;AACf,QAAQ,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG;AAC/D,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,YAAY,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI;AACpF,QAAQ,EAAE;AACV,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,gBAAgB,qBAAqB,CAAC,aAAa,EAAE,CAAC,GAAG;AACzD,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAgB,qBAAqB,CAAC,aAAa,CAAC,IAAI,EAAE;AAC1D,YAAY,EAAE;AACd,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,gBAAgB,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;AAClF,YAAY,GAAG;AACf,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AAC3F,QAAQ,QAAQ,CAAC,IAAI,GAAG,MAAM,GAAG;AACjC,QAAQ,QAAQ,CAAC,KAAK,EAAE;AACxB,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;AACzB,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG;AACvC,QAAQ,QAAQ;AAChB,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,UAAU,GAAG;AACtD,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK;AAClH,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7B,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE;AAChD,QAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5C,YAAY,CAAC,KAAK,EAAE;AACpB,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AAC9F,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1F,gBAAgB,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClF,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9B,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE;AAClD,QAAQ,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5C,YAAY,CAAC,KAAK,EAAE;AACpB,gBAAgB,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;AACpG,gBAAgB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACtF,YAAY,GAAG;AACf,IAAI,CAAC;AACL;AACA,IAAI,qBAAqB;AACzB,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,YAAY,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,YAAY,QAAQ,CAAC,MAAM,GAAG;AAC9B,QAAQ,EAAE;AACV,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACxD,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,YAAY,YAAY,GAAG;AAC3B,QAAQ,EAAE;AACV,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,YAAY,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,YAAY,aAAa,GAAG;AAC5B,QAAQ,GAAG;AACX,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpB,QAAQ,YAAY,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,GAAG;AAC/C,QAAQ,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,GAAG;AACxC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnC,QAAQ,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,UAAU,CAAC,MAAM,EAAE;AAC/B,YAAY,YAAY,GAAG;AAC3B,YAAY,aAAa,GAAG;AAC5B,QAAQ,EAAE;AACV,QAAQ,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5B,YAAY,IAAI,CAAC,MAAM,GAAG;AAC1B,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT,IAAI,EAAE;AACN,IAAI,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;AAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC;AACpB,CAAC;;AC1HD,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;AACjC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACZ,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB,QAAQ,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;AAC/E,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG;AACjD,EAAE;AACF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACxB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACrB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,EAAE;AACF;AACA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACxB,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACrB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,QAAQ,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,IAAI,EAAE,CAAC,KAAK,EAAE;AACd,EAAE;AACF;AACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAC1C,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7B,IAAI,EAAE;AACN,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpB,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClB,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE;AACrB,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI;AACtG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI;AACnG,QAAQ,CAAC;AACT,QAAQ,EAAE,CAAC,IAAI,IAAI,SAAS,EAAE;AAC9B,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3D,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI;AACpF,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI;AACtF,YAAY,CAAC;AACb,QAAQ,KAAK,CAAC;AACd,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE;AACjB,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI;AACzF,QAAQ,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AACxE,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC1C,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,gBAAgB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACrG,QAAQ,KAAK,CAAC;AACd,IAAI,OAAO,CAAC;AACZ,QAAQ,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;AACzD,IAAI,CAAC;AACL,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;AAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;AAC1B,EAAE;AACF;AACA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACnB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,QAAQ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,QAAQ,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AAChE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI;AACvG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI;AACjH,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,YAAY,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,IAAI;AACvH,IAAI,CAAC;AACL,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,EAAE;;ACrFF,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAC3D,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;AAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtB,QAAQ,GAAG,CAAC,MAAM,CAAC;AACnB,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAQ,EAAE,CAAC,CAAC;AACZ,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACpC,YAAY,EAAE,CAAC,MAAM,CAAC;AACtB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;AACpD,YAAY,IAAI;AAChB,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAClC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACjC,gBAAgB,IAAI,CAAC,CAAC,CAAC,GAAG;AAC1B,YAAY,CAAC;AACb,YAAY,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACzB,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACjC,QAAQ,CAAC;AACT,QAAQ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;AAC/B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;AACzB,QAAQ,MAAM,CAAC,KAAK,CAAC;AACrB,IAAI,EAAE;AACN,EAAE;;ACvBF,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACnF,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;AACtB,YAAY,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClC,IAAI,GAAG;AACP,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7D,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAChC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI;AACpE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG;AAChC,YAAY,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI;AACpE,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;AAChD,QAAQ,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC;AAC5B,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;AAClC,gBAAgB,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACjC,YAAY,EAAE;AACd,IAAI,GAAG;AACP,IAAI,MAAM,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG;AAC1E,QAAQ,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACzE,IAAI,EAAE;AACN,CAAC;;AC1BD,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AACnC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjB;AACA,MAAM,CAAC,QAAQ,CAAC;AAChB,CAAC;AACD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,QAAQ,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,EAAE;AACvD,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG;AAChC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,GAAG;AAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjD,YAAY,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC;AACpD,QAAQ,CAAC;AACT,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG;AAChC,QAAQ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE;AAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACZ,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE;AACvD,IAAI,CAAC;AACL,CAAC;AACD,IAAI","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.3.16\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.3.16',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\n// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nvar identity = function(x) { return x; };\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish}\n return function(diagram, nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e.orig); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = diagram.edgeSource.eval(e),\n head = diagram.edgeTarget.eval(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = diagram.nodeKey.eval(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n if(ei && callbacks.sib)\n callbacks.sib(false, outmap[key][ei-1].target, e.target);\n callbacks.push && callbacks.push();\n place_tree(e.target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n.orig); });\n else {\n roots = nodes.filter(function(n) { return !indegree[diagram.nodeKey.eval(n)]; });\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row ? callbacks.row(n.orig) : 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Currently, you can specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it\n * will replace the back-end. In the future, there will be subclasses like colaDiagram and\n * dagreDiagram with appropriate interfaces for each, but it is not yet clear which features are\n * common between them.\n * @name layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = property('cola');\n\n _chart.tickSize = property(1);\n\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.edgeId(d);\n };\n\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components. Default: true\n * @name handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = property(true);\n\n function initLayout() {\n if(!_worker)\n _worker = new Worker(script_path() + 'dc.graph.' + _chart.layoutAlgorithm() + '.worker.js');\n var args = {\n width: _chart.width(),\n height: _chart.height()\n };\n // generalize this? class hierarchy, what?\n switch(_chart.layoutAlgorithm()) {\n case 'cola':\n Object.assign(args, {\n handleDisconnected: _chart.handleDisconnected(),\n lengthStrategy: _chart.lengthStrategy(),\n baseLength: _chart.baseLength(),\n flowLayout: _chart.flowLayout(),\n tickSize: _chart.tickSize()\n });\n break;\n case 'dagre':\n Object.assign(args, {\n rankdir: _chart.rankdir()\n });\n }\n _worker.postMessage({\n command: 'init',\n args: args\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n if(_worker)\n _worker.postMessage({command: 'stop'});\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _worker.onmessage = function(e) {\n var args = e.data.args;\n switch(e.data.response) {\n case 'tick':\n var elapsed = Date.now() - startTime;\n populate_cola(args.nodes, args.edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _worker.postMessage({\n command: 'stop'\n });\n }\n break;\n case 'end':\n if(!_chart.showLayoutSteps()) {\n populate_cola(args.nodes, args.edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n break;\n case 'start':\n console.log('algo ' + _chart.layoutAlgorithm() + ' started.');\n _dispatch.start();\n }\n };\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _worker.postMessage({\n command: 'data',\n args: {\n nodes: wnodes.map(function(v) { return v.cola; }),\n edges: layout_edges.map(function(v) { return v.cola; }),\n constraints: constraints,\n opts: {groupConnected: _chart.groupConnected()}\n }\n });\n _worker.postMessage({\n command: 'start',\n args: {\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20,\n initialOnly: _chart.initialOnly(),\n showLayoutSteps: _chart.showLayoutSteps()\n }\n });\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @name render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g');\n _edgeLayer = _g.append('g');\n _nodeLayer = _g.append('g');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @name on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @name getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top svg element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @name svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @name resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @name redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @name renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @name defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _xScale.domain(), yDomain = _yScale.domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n if(_chart.mouseZoomable()) {\n // start out with 1:1 zoom\n _xScale = d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]);\n _yScale = d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]);\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_xScale).y(_yScale);\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _xScale.invert(clientCoord[0]),\n _yScale.invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","/**\n## Legend\n\nThe dc_graph.legend will show labeled examples of nodes (and someday edges), within the frame of a dc_graph.diagram.\n**/\ndc_graph.legend = function() {\n var _legend = {}, _items;\n\n /**\n #### .x([value])\n Set or get x coordinate for legend widget. Default: 0.\n **/\n _legend.x = property(0);\n\n /**\n #### .y([value])\n Set or get y coordinate for legend widget. Default: 0.\n **/\n _legend.y = property(0);\n\n /**\n #### .gap([value])\n Set or get gap between legend items. Default: 5.\n **/\n _legend.gap = property(5);\n\n /**\n #### .nodeWidth([value])\n Set or get legend node width. Default: 30.\n **/\n _legend.nodeWidth = property(40);\n\n /**\n #### .nodeHeight([value])\n Set or get legend node height. Default: 30.\n **/\n _legend.nodeHeight = property(40);\n\n\n /**\n #### .exemplars([object])\n Specifies an object where the keys are the names of items to add to the legend, and the values are\n objects which will be passed to the accessors of the attached diagram in order to determine the\n drawing attributes. Alternately, if the key needs to be specified separately from the name, the\n function can take an array of {name, key, value} objects.\n **/\n _legend.exemplars = property({});\n\n _legend.parent = property(null);\n\n _legend.redraw = function() {\n var legend = _legend.parent().svg()\n .selectAll('g.dc-graph-legend')\n .data([0]);\n legend.enter().append('g')\n .attr('class', 'dc-graph-legend')\n .attr('transform', 'translate(' + _legend.x() + ',' + _legend.y() + ')');\n\n var node = legend.selectAll('.node')\n .data(_items, function(d) { return d.name; });\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node');\n nodeEnter.append('text')\n .attr('dy', '0.3em')\n .attr('class', 'legend-label');\n node\n .attr('transform', function(d, i) {\n return 'translate(' + _legend.nodeWidth()/2 + ',' + (_legend.nodeHeight() + _legend.gap())*(i+0.5) + ')';\n });\n node.select('text.legend-label')\n .attr('transform', 'translate(' + (_legend.nodeWidth()/2+_legend.gap()) + ',0)')\n .text(function(d) {\n return d.name;\n });\n _legend.parent()\n ._enterNode(nodeEnter)\n ._updateNode(node);\n };\n\n _legend.render = function() {\n var exemplars = _legend.exemplars();\n if(exemplars instanceof Array) {\n _items = exemplars.map(function(v) { return {name: v.name, orig: {key: v.key, value: v.value}, cola: {}}; });\n }\n else {\n _items = [];\n for(var item in exemplars)\n _items.push({name: item, orig: {key: item, value: exemplars[item]}, cola: {}});\n }\n _legend.redraw();\n };\n\n return _legend;\n};\n","/**\n * In cola.js there are three factors which influence the positions of nodes:\n * * *edge length* suggestions, controlled by the\n * {@link #dc_graph.diagram+lengthStrategy lengthStrategy},\n * {@link #dc_graph.diagram+baseLength baseLength}, and\n * {@link #dc_graph.diagram+edgeLength edgeLength} parameters in dc.graph.js\n * * *automatic constraints* based on the global edge flow direction (`cola.flowLayout`) and overlap\n * avoidance parameters (`cola.avoidOverlaps`)\n * * *manual constraints* such as alignment, inequality and equality constraints in a dimension/axis.\n *\n * Generally when the\n * {@link https://github.com/tgdwyer/WebCola/wiki/Constraints cola.js documentation mentions constraints},\n * it means the manual constraints.\n *\n * dc.graph.js allows generation of manual constraints using\n * {@link #dc_graph.diagram+constrain diagram.constrain} but it can be tedious to write these\n * functions because it usually means looping over the nodes and edges multiple times to\n * determine what classes or types of nodes to apply constraints to, and which edges should\n * take additional constraints.\n *\n * This utility creates a constraint generator function from a *pattern*, a graph where:\n * 1. Nodes represent *types* or classes of layout nodes, annotated with a specification\n * of how to match the nodes belonging each type.\n * 2. Edges represent *rules* to generate constraints. There are two kinds of rules:\n *
    \n *
  1. To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  2. To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n *
\n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_constraints = function(rootf, treef, xgap, ygap) {\n return function(diagram, nodes, edges) {\n var constraints = [];\n var x = 0;\n var dfs = dc_graph.depth_first_traversal({\n root: rootf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var last = row[row.length-1];\n constraints.push({\n left: diagram.nodeKey.eval(last),\n right: diagram.nodeKey.eval(n),\n axis: 'x',\n gap: x-last.foo_x,\n equality: true\n });\n }\n n.foo_x = x;\n // n.cola.x = x;\n // n.cola.y = r*ygap;\n },\n sib: function() {\n x += xgap;\n }\n });\n dfs(diagram, nodes, edges);\n return constraints;\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n init: function() {\n x = ofsx;\n },\n root: rootf,\n row: rowf,\n tree: treef,\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// this currently only supports single selection with a click\n// but it can be expanded with modifier-key clicks and rectangular selection etc.\ndc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [];\n\n function add_behavior(chart, node, edge) {\n chart.cascade(50, true, conditional_properties(function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n }, null, props));\n node.on('click.select-nodes', function(d) {\n _selected = [chart.nodeKey.eval(d)];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n d3.event.stopPropagation();\n });\n chart.svg().on('click.select-nodes', function(d) {\n _selected = [];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n });\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var nselect = _selected.length;\n _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== nselect)\n select_nodes_group.node_set_changed(_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n return dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a special [\"fake group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the special case where you want a group that represents the filtered rows of the crossfilter.\n *\n * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of\n * the corresponding data arrays, and each array has a column which contains the unique identifier\n * for the node or edge. In this setup, there are other dimensions and groups which are aggregated\n * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from\n * the rows.\n *\n * This simple class supports that use case in three steps:\n * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`)\n * 2. It creates a group from the dimension with a reduction function that returns the row when the\n * row is filtered in, and `null` when the row is filtered out.\n * 3. It wraps the group in a fake group which filters out the resulting nulls.\n *\n * The result is a fake group whose `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw\n * row object from the data.\n *\n * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and\n * scatter plots often use similar functionality because each observation is either shown or not,\n * and it is helpful to have the entire row available as reduced data.\n *\n * But it would need to be generalized and cleaned up. (For example, the way it has to create the\n * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility\n * library to put it in.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}.\n * Returns an object containing all three.\n\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} vec - the data array for crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * This is a wretched name for this function.\n\n * @method another\n * @memberof dc_graph.flat_group\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: function(ndx, id_accessor) {\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","// make crossfilter-suitable data from d3.nest {key, values} format\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n inherit = inherit || {};\n var level = Object.keys(inherit).length;\n if(attrs.length) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = nest.map(function(v) {\n inherit[attr] = v.key;\n var child = uuid();\n var node = clone(inherit);\n node[nodeKeyAttr] = child;\n node.name = attr + ':' + v.key;\n node._level = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = child;\n edges.push(edge);\n }\n var recurse = dc_graph.convert_nest(v.values, attrs.slice(0), nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, child, clone(inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: nest.map(function(v) {\n v._level = level+1;\n return v;\n }), edges: nest.map(function(v) {\n var edge = {};\n edge[edgeSourceAttr] = parent;\n edge[edgeTargetAttr] = v[nodeKeyAttr];\n return edge;\n })};\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file diff --git a/web/js/dc.graph.min.js b/web/js/dc.graph.min.js index f42691b0..c808a7d4 100644 --- a/web/js/dc.graph.min.js +++ b/web/js/dc.graph.min.js @@ -18,6 +18,6 @@ * */ -!function(){function a(a,b,c){"use strict";function d(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,g(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,g(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function e(a,b){return function(){return a(b.apply(null,arguments))}}function f(a){return a.orig}function g(a){return F.functor_wrap(a,f)}function h(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function i(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function j(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!m(c,i,a))return!1}else if(!m(a,i,c))return!1;if(b>=d){if(!m(d,j,b))return!1}else if(!m(b,j,d))return!1;if(e>=g){if(!m(g,i,e))return!1}else if(!m(e,i,g))return!1;if(f>=h){if(!m(h,j,f))return!1}else if(!m(f,j,h))return!1;return{x:i,y:j}}function o(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function z(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,q,r,s;if(h){var t,u,v=function(b,c){return p(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),z=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=y(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=y(w(c,h.targetPort,j),z,z-2*i*j/k)}catch(a){u={ang:z,port:h.targetPort}}o=t.port,q=u.port;var A=Math.hypot(o.x,o.y),B=Math.hypot(q.x,q.y),C=A+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);r=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+q.x,y:g+q.y}],s=3}else m=f-d,n=g-e,o=p(a,b,m,n),q=p(a,c,-m,-n),o||(o={x:0,y:0}),q||(q={x:0,y:0}),r=[{x:d+o.x,y:e+o.y},{x:f+q.x,y:g+q.y}],s=1;return{sourcePort:o,targetPort:q,points:r,bezDegree:s}}function A(a,b){for(var c=[],d=1;da)return e.splice(c,0,{n:a,f:b}),g}return e.push({n:a,f:b}),g},g._eval=function(a,c){if(0!==c&&e.length){var d=e[c-1];return d.f(a,function(){return g._eval(a,c-1)})}return F.functor_wrap(g(),b)(a)},g.eval=function(a){return g._eval(a,e.length)},g.react=function(a){return arguments.length?(d=a,this):d},g},H=function(a){return a};F.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var I={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c2?j-2:0].path:null,n=z(ea,a.source,a.target,c,d,e,f,m,k,ea.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=C(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function v(a){q(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function w(a){var b=q(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function y(a){return function(b){var c=b.ports[a][b.parallel].path;return j(c.points,c.bezDegree)}}function A(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=R();i=_.translate(),j=_.scale(),n.forEach(function(a){switch(a){case"l":i[0]=S(i,o.left);break;case"t":i[1]=T(i,o.top);break;case"r":i[0]=U(i,o.right);break;case"b":i[1]=V(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=ea.fitStrategy()}void 0!==f&&(a||(a=[va.left,va.top,b,c].join(" ")),fa.attr({viewBox:a,preserveAspectRatio:f})),_.translate(i).scale(j).event(fa)}}function O(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(l));var o={};c.each(function(a){o[ea.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var q=b.transition().duration(m()).delay(function(a){return n(o[ea.nodeKey.eval(a)])}).attr("opacity",ea.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var r={};e.each(function(a){r[ea.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===ea.stageTransitions()?(w(b),c="new"):(v(b),c="old"),ea.edgeArrowhead.eval(b)&&a.select("#"+ea.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",y("modins"===ea.stageTransitions()?"new":"old"));var s=d.each(w).each(function(b){ea.edgeArrowhead.eval(b)&&a.select("#"+ea.arrowId(b,"head")).transition().duration(m()).delay(n(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(m()).delay(function(a){return n(r[ea.edgeKey.eval(a)])}).attr("opacity",ea.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ea.stageTransitions()&&r[ea.edgeKey.eval(a)]?"old":"new";return y(b)(a)});k.attr("d",A("modins"===ea.stageTransitions()?"new":"old"));var t=j.transition().duration(m()).delay(function(a){return n(r[ea.edgeKey.eval(a)])}).attr("opacity",ea.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ea.stageTransitions()&&r[ea.edgeKey.eval(a)]?"old":"new";return A(b)(a)});"insmod"===ea.stageTransitions()&&(m()>=50?(s=s.transition().duration(m()).attr("d",y("new")),t=t.transition().duration(m()).attr("d",A("new"))):(s.attr("d",y("new")),t.attr("d",y("new")))),ea.showLayoutSteps()||B([q,s,t],function(){p(!0)}),f.attr("d",y("new"))}function P(a,b,c){var d=ea.arrowId(a,b),e=ea.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",qa[c].refX).attr("refY",qa[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",qa[c].width*ea.edgeArrowSize.eval(a)).attr("markerHeight",qa[c].height*ea.edgeArrowSize.eval(a)).attr("stroke",ea.edgeStroke.eval(a)).attr("fill",ea.edgeStroke.eval(a)).call(qa[c].drawFunction),c?d:null}function Q(a,b){sa=a,ta=b,ha.attr("transform","translate("+a+") scale("+b+")")}function R(){return{left:va.left-ea.margins().left,top:va.top-ea.margins().top,right:va.right+ea.margins().right,bottom:va.bottom+ea.margins().bottom}}function S(a,b){return a[0]-aa(b)+aa.range()[0]}function T(a,b){return a[1]-ba(b)+ba.range()[0]}function U(a,b){return a[0]-aa(b)+aa.range()[1]}function V(a,b){return a[1]-ba(b)+ba.range()[1]}function W(){var b=a.event.translate;if(ea.restrictPan()){var c,d=aa.domain(),e=ba.domain(),f=R(),g=f.leftea.timeLimit())&&(console.log("cancelled"),ka.postMessage({command:"stop"}));break;case"end":ea.showLayoutSteps()?p(!0):(c(b.nodes,b.edges),O(C,D,u,v,w,x,y,z,A,B));var e;switch(ea.autoZoom()){case"always":e=!0;break;case"once":e=!0,ea.autoZoom(null);break;default:e=!1}M(C,u),e&&N();break;case"start":console.log("algo "+ea.layoutAlgorithm()+" started."),la.start()}},la.start(),ka.postMessage({command:"data",args:{nodes:h.map(function(a){return a.cola}),edges:J.map(function(a){return a.cola}),constraints:I,opts:{groupConnected:ea.groupConnected()}}}),ka.postMessage({command:"start",args:{initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20,initialOnly:ea.initialOnly(),showLayoutSteps:ea.showLayoutSteps()}}),this},ea.refresh=function(b,c,d,e,f){b=b||ia.selectAll(".node"),c=c||ja.selectAll(".edge"),o(b,c),d=d||ja.selectAll(".edge-hover"),e=e||ja.selectAll(".edge-label"),f=f||ga.selectAll("path.edge-label-path");var g=a.select(null);O(b,g,c,g,d,g,e,g,f,g)};var va;return ea.render=function(){return ea.initLayoutOnRedraw()||i(),ea.resetSvg(),ha=fa.append("g"),ja=ha.append("g"),ia=ha.append("g"),ea.legend()&&ea.legend().render(),ea.redraw()},ea.on=function(a,b){return la.on(a,b),this},ea.getStats=function(){return oa},ea.select=function(a){return ea.root().select(a)},ea.selectAll=function(a){return ea.root()?ea.root().selectAll(a):null},ea.svg=function(a){return arguments.length?(fa=a,ea):fa},ea.resetSvg=function(){return ea.select("svg").remove(),Y()},ea.redrawGroup=function(){c.redrawAll(h)},ea.renderGroup=function(){c.renderAll(h)},ea.defineArrow=function(a,b,c,d,e,f){return qa[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},ea},ea.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ga.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},ea.invertCoord=function(a){return[aa.invert(a[0]),ba.invert(a[1])]},ea.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),ea.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),ea.anchor=function(b,d){if(!arguments.length)return ca;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return ca=b.select&&b.classed?b.node():b,ea.root(a.select(ca)),ea.root().classed(F.constants.CHART_CLASS,!0),c.registerChart(ea,d),da=d,ea},ea.anchorName=function(){var a=ea.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+ea.chartID()},ea.anchor(d,h)},F.legend=function(){var a,b={};return b.x=G(0),b.y=G(0),b.gap=G(5),b.nodeWidth=G(40),b.nodeHeight=G(40),b.exemplars=G({}),b.parent=G(null),b.redraw=function(){var c=b.parent().svg().selectAll("g.dc-graph-legend").data([0]);c.enter().append("g").attr("class","dc-graph-legend").attr("transform","translate("+b.x()+","+b.y()+")");var d=c.selectAll(".node").data(a,function(a){return a.name}),e=d.enter().append("g").attr("class","node");e.append("text").attr("dy","0.3em").attr("class","legend-label"),d.attr("transform",function(a,c){return"translate("+b.nodeWidth()/2+","+(b.nodeHeight()+b.gap())*(c+.5)+")"}),d.select("text.legend-label").attr("transform","translate("+(b.nodeWidth()/2+b.gap())+",0)").text(function(a){return a.name}),b.parent()._enterNode(e)._updateNode(d)},b.render=function(){var c=b.exemplars();if(c instanceof Array)a=c.map(function(a){return{name:a.name,orig:{key:a.key,value:a.value},cola:{}}});else{a=[];for(var d in c)a.push({name:d,orig:{key:d,value:c[d]},cola:{}})}b.redraw()},b},F.constraint_pattern=function(a){var b={},c=[];return a.nodes.forEach(function(a){var c=a.id,d=b[c]||(b[c]={});if(a.partition){var e=a.partition,f=a.value||a.id;a.all||a.typename?(d.match=a.extract?function(b){return a.extract(b.value[e])}:function(a){return a.value[e]},d.typename=a.typename||function(a){return e+"="+a.value[e]}):d.match=function(a){return a.value[e]===f}}else{if(!a.match)throw new Error("couldn't determine matcher for type "+JSON.stringify(a));d.match=a.match}}),a.edges.forEach(function(a){if(!a.disable){var b={source:a.source,target:a.target};b.produce="function"==typeof a.produce?a.produce:function(){return h(a.produce)},["listname","wrap","reverse"].forEach(function(c){void 0!==a[c]&&(b[c]=a[c])}),c.push(b)}}),function(a,d,e){var f=[],g={};d.forEach(function(c){var d=a.nodeKey.eval(c);for(var e in b){var f=b[e],h=f.match(c.orig);if(h){var i=f.typename?f.typename(e,h):e;g[i]||(g[i]={nodes:[],whether:{}}),g[i].nodes.push(d),g[i].whether[d]=!0}}});var h=c.filter(function(a){return a.source!==a.target}),i=c.filter(function(a){return a.source===a.target});return e.forEach(function(b){var c=a.edgeSource.eval(b),i=a.edgeTarget.eval(b);h.forEach(function(a){if(g[a.source]&&g[a.source].whether[c]&&g[a.target]&&g[a.target].whether[i]){var b=a.produce(g,d,e);a.reverse?(b.left=i,b.right=c):(b.left=c,b.right=i),f.push(b)}})}),i.forEach(function(a){if(g[a.source]){var b=a.produce(),c=a.listname||a.produce.listname||"nodes",d=a.wrap||a.produce.wrap||function(a){return a};b[c]=g[a.source].nodes.map(d),f.push(b)}}),f}},F.gap_y=function(a,b){return{axis:"y",gap:a,equality:!!b}},F.gap_x=function(a,b){return{axis:"x",gap:a,equality:!!b}},F.align_y=function(){return D("y")},F.align_x=function(){return D("x")},F.order_x=function(a,b){return{type:"ordering",axis:"x",gap:60,ordering:b}},F.order_y=function(a,b){return{type:"ordering",axis:"y",gap:60,ordering:b}},F.tree_constraints=function(a,b,c,d){return function(d,e,f){var g=[],h=0,i=F.depth_first_traversal({root:a,tree:b,place:function(a,b,c){if(c.length){var e=c[c.length-1];g.push({left:d.nodeKey.eval(e),right:d.nodeKey.eval(a),axis:"x",gap:h-e.foo_x,equality:!0})}a.foo_x=h},sib:function(){h+=c}});return i(d,e,f),g}},F.tree_positions=function(b,c,d,e,f,g,h){function i(a,b){return(g(a)+g(b))/2; -}var j;g=a.functor(g);var k=F.depth_first_traversal({init:function(){j=e},root:b,row:c,tree:d,place:function(a,b,c){if(c.length){var d=c[c.length-1],e=(g(d)+g(a))/2;j=Math.max(j,d.left_x+e)}a.left_x=j,a.hit_ins=1,a.cola.y=b*h+f},sib:function(a,b,c){var d=i(b,c);a&&(d*=1.5),j+=d},pop:function(a){a.cola.x=(a.left_x+j)/2},skip:function(a,b){a.cola.x=(a.hit_ins*a.cola.x+j)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,c=a.sort(function(a,b){return a.cola.x-b.cola.x}),d=null,e=null,f=0;f0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=G(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=G("n"),f.content=G(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=G(0),f},F.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=G(!0),b},F.select_nodes=function(b){function c(c,e,h){c.cascade(50,!0,d(function(a){return g.indexOf(a.orig.key)>=0},null,b)),e.on("click.select-nodes",function(b){g=[c.nodeKey.eval(b)],c.refresh(e,h),f.node_set_changed(g),a.event.stopPropagation()}),c.svg().on("click.select-nodes",function(a){g=[],c.refresh(e,h),f.node_set_changed(g)});var i=e.data().map(function(a){return a.orig.key}),j=g.length;g=g.filter(function(a){return i.indexOf(a)>=0}),g.length!==j&&f.node_set_changed(g)}function e(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var f=F.select_nodes_group("select-nodes-group"),g=[];return F.behavior("select-nodes",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},F.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,e,f){c.cascade(100,!0,d(null,function(a){return a.dcg_highlighted},a)),e.on("mouseover.highlight-neighbors",function(a){f.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(e,f)}).on("mouseout.highlight-neighbors",function(a){b(f),c.refresh(e,f)})}function e(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return F.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},F.highlight_paths=function(a,b,c,e){function f(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function g(a,b){r=a,s=b,t=u=null,f()}function h(a){a!==u&&(u=a,f())}function i(a){a!==t&&(t=a,f())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(e,f,g,h){e.cascade(200,!0,d(function(a){return!!r[e.nodeKey.eval(a)]},function(a){return!!s[e.edgeKey.eval(a)]},a)).cascade(300,!0,d(function(a){return m(r[e.nodeKey.eval(a)],t)},function(a){return m(s[e.edgeKey.eval(a)],t)},c)).cascade(400,!0,d(function(a){return m(r[e.nodeKey.eval(a)],u)},function(a){return m(s[e.edgeKey.eval(a)],u)},b)),f.on("mouseover.highlight-paths",function(a){q.hover_changed(r[e.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[e.nodeKey.eval(a)]))}),h.on("mouseover.highlight-paths",function(a){q.hover_changed(s[e.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[e.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=F.register_highlight_paths_group(e||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=F.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?g:null),q.on("hover_changed."+b,a?h:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=G(!1),v},F.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return F.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},F.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},F.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!E(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&E(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},F.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}(),F.convert_nest=function(a,b,d,e,f,g,j){j=j||{};var k=Object.keys(j).length;if(b.length){var l=b.shift(),m=[],n=[],o=a.map(function(a){j[l]=a.key;var c=i(),o=h(j);if(o[d]=c,o.name=l+":"+a.key,o._level=k+1,m.push(o),g){var p={};p[e]=g,p[f]=c,n.push(p)}var q=F.convert_nest(a.values,b.slice(0),d,e,f,c,h(j));return q});return{nodes:Array.prototype.concat.apply(m,o.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(n,o.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a._level=k+1,a}),edges:a.map(function(a){var b={};return b[e]=g,b[f]=a[d],b})}},F.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=i()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},F.path_reader=function(a){function b(a,b,c){g.elementList.eval(a).forEach(function(d){var e,f;switch(g.elementType.eval(d)){case"node":e=g.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=g.edgeSource.eval(d)+"-"+g.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,e,f=F.register_highlight_paths_group(a||"highlight-paths-group"),g={pathList:G(H,!1),timeRange:G(null,!1),elementList:G(H,!1),elementType:G(null,!1),nodeKey:G(null,!1),edgeSource:G(null,!1),edgeTarget:G(null,!1),clear:function(){f.paths_changed({},{},[])},data:function(a){var h,i={},j={},k=[];g.pathList.eval(a).forEach(function(a){if(a._range=g.timeRange.eval(a)){if(h===!1)throw new Error("can't have a mix of ranged and non-ranged paths");h=!0}else{if(h===!0)throw new Error("can't have a mix of ranged and non-ranged paths");h=!1,b(a,i,j)}k.push(a)}),h?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),e&&this.setTime(e)):(c=null,d=null,f.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],g={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,g,h)}),f.paths_changed(g,h,c)}e=a}};return g},F.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=F.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:G("Nothing here"),zero_text:G("No paths"),error_text:G(null),queried:G(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},F.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return F.node_name(Math.floor(a/52))+F.node_name(a%52);throw new Error("no, that's too large")},F.node_object=function(a,b){return b=b||{},_.extend({id:a,name:F.node_name(a)},b)},F.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},F.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;gb&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},F.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},F.d3=a,F.crossfilter=b,F.dc=c,F}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); +!function(){function a(a,b,c){"use strict";function d(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,g(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,g(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function e(a,b){return function(){return a(b.apply(null,arguments))}}function f(a){return a.orig}function g(a){return F.functor_wrap(a,f)}function h(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function i(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function j(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!m(c,i,a))return!1}else if(!m(a,i,c))return!1;if(b>=d){if(!m(d,j,b))return!1}else if(!m(b,j,d))return!1;if(e>=g){if(!m(g,i,e))return!1}else if(!m(e,i,g))return!1;if(f>=h){if(!m(h,j,f))return!1}else if(!m(f,j,h))return!1;return{x:i,y:j}}function o(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function z(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,q,r,s;if(h){var t,u,v=function(b,c){return p(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),z=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=y(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=y(w(c,h.targetPort,j),z,z-2*i*j/k)}catch(a){u={ang:z,port:h.targetPort}}o=t.port,q=u.port;var A=Math.hypot(o.x,o.y),B=Math.hypot(q.x,q.y),C=A+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);r=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+q.x,y:g+q.y}],s=3}else m=f-d,n=g-e,o=p(a,b,m,n),q=p(a,c,-m,-n),o||(o={x:0,y:0}),q||(q={x:0,y:0}),r=[{x:d+o.x,y:e+o.y},{x:f+q.x,y:g+q.y}],s=1;return{sourcePort:o,targetPort:q,points:r,bezDegree:s}}function A(a,b){for(var c=[],d=1;da)return e.splice(c,0,{n:a,f:b}),g}return e.push({n:a,f:b}),g},g._eval=function(a,c){if(0!==c&&e.length){var d=e[c-1];return d.f(a,function(){return g._eval(a,c-1)})}return F.functor_wrap(g(),b)(a)},g.eval=function(a){return g._eval(a,e.length)},g.react=function(a){return arguments.length?(d=a,this):d},g},H=function(a){return a};F.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var I={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c0)for(var d in c)if(c[d].src&&c[d].src.match(new RegExp(b+"$"))){a=c[d].src.replace(new RegExp("(.*)"+b+"$"),"$1");break}}return a}}();F.depth_first_traversal=function(a){return function(b,c,d){function e(c,d){var f=b.nodeKey.eval(c);return j[f]?void(a.skip&&a.skip(c,g[f])):(i[d]||(i[d]=[]),a.place&&a.place(c,d,i[d]),i[d].push(c),j[f]=!0,h[f]&&h[f].forEach(function(b,c){c&&a.sib&&a.sib(!1,h[f][c-1].target,b.target),a.push&&a.push(),e(b.target,d+1)}),void(a.pop&&a.pop(c)))}a.init&&a.init(),a.tree&&(d=d.filter(function(b){return a.tree(b.orig)}));var f,g={},h=d.reduce(function(a,c){var d=b.edgeSource.eval(c),e=b.edgeTarget.eval(c);return a[d]||(a[d]=[]),a[d].push(c),g[e]=(g[e]||0)+1,a},{}),i=[],j={};f=a.root?c.filter(function(b){return a.root(b.orig)}):c.filter(function(a){return!g[b.nodeKey.eval(a)]}),f.forEach(function(b,c){c&&a.sib&&a.sib(!0,f[c-1],b),a.push&&a.push(),e(b,a.row?a.row(b.orig):0)}),a.finish(i)}};var K=1e-7,L={ellipse:function(){return{shape:"ellipse"}},egg:function(){return{shape:"polygon",sides:100,distortion:-.25}},triangle:function(){return{shape:"polygon",sides:3}},rectangle:function(){return{shape:"polygon",sides:4}},diamond:function(){return{shape:"polygon",sides:4,rotation:45}},trapezium:function(){return{shape:"polygon",sides:4,distortion:-.5}},parallelogram:function(){return{shape:"polygon",sides:4,skew:.5}},pentagon:function(){return{shape:"polygon",sides:5}},hexagon:function(){return{shape:"polygon",sides:6}},septagon:function(){return{shape:"polygon",sides:7}},octagon:function(){return{shape:"polygon",sides:8}},invtriangle:function(){return{shape:"polygon",sides:3,rotation:180}},invtrapezium:function(){return{shape:"polygon",sides:4,distortion:.5}},square:function(){return{shape:"polygon",sides:4}},polygon:function(a){return{shape:"polygon",sides:a.sides,skew:a.skew,distortion:a.distortion,rotation:a.rotation}}};F.available_shapes=function(){var a=Object.keys(L);return a.slice(0,a.length-1)};var M={shape:"ellipse"};return F.diagram=function(d,h){function i(){la||(la=new Worker(J()+"dc.graph."+fa.layoutAlgorithm()+".worker.js"));var a={width:fa.width(),height:fa.height()};switch(fa.layoutAlgorithm()){case"cola":Object.assign(a,{handleDisconnected:fa.handleDisconnected(),lengthStrategy:fa.lengthStrategy(),baseLength:fa.baseLength(),flowLayout:fa.flowLayout(),tickSize:fa.tickSize()});break;case"dagre":Object.assign(a,{rankdir:fa.rankdir()})}la.postMessage({command:"init",args:a})}function l(a){return!!a.source&&!!a.target}function m(){return"none"!==fa.stageTransitions()?fa.transitionDuration()/2:fa.transitionDuration()}function n(a){return"none"===fa.stageTransitions()||"modins"===fa.stageTransitions()==!a?0:fa.transitionDuration()/2}function o(b,c){c.attr("stroke",fa.edgeStroke.eval).attr("stroke-width",fa.edgeStrokeWidth.eval).attr("marker-end",function(a){var b=fa.edgeArrowhead.eval(a),c=Q(a,"head",b);return c?"url(#"+c+")":null}).attr("marker-start",function(a){var b=fa.edgeArrowtail.eval(a),c=Q(a,"tail",b);return b?"url(#"+c+")":null}).each(function(b){a.selectAll("#"+fa.arrowId(b,"head")+",#"+fa.arrowId(b,"tail")).attr("fill",fa.edgeStroke.eval(b))}),fa._updateNode(b)}function p(a){ma.end(a),sa=!1,va&&(va=!1,window.setTimeout(function(){fa.isRunning()||fa.redraw()},0))}function q(a,b,c,d,e,f){if(!a.ports[b]){var g=a.source.dcg_ry+fa.nodeStrokeWidth.eval(a.source)/2,h=a.target.dcg_ry+fa.nodeStrokeWidth.eval(a.target)/2;a.ports[b]=new Array(a.ports.n);for(var i=a.ports.rev[a.parallel],j=0;j2?j-2:0].path:null,n=z(fa,a.source,a.target,c,d,e,f,m,k,fa.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=C(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function v(a){q(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function w(a){var b=q(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function y(a){return function(b){var c=b.ports[a][b.parallel].path;return j(c.points,c.bezDegree)}}function A(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=S();i=aa.translate(),j=aa.scale(),n.forEach(function(a){switch(a){case"l":i[0]=T(i,o.left);break;case"t":i[1]=U(i,o.top);break;case"r":i[0]=V(i,o.right);break;case"b":i[1]=W(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=fa.fitStrategy()}void 0!==f&&(a||(a=[wa.left,wa.top,b,c].join(" ")),ga.attr({viewBox:a,preserveAspectRatio:f})),aa.translate(i).scale(j).event(ga)}}function P(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(l));var o={};c.each(function(a){o[fa.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var q=b.transition().duration(m()).delay(function(a){return n(o[fa.nodeKey.eval(a)])}).attr("opacity",fa.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var r={};e.each(function(a){r[fa.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===fa.stageTransitions()?(w(b),c="new"):(v(b),c="old"),fa.edgeArrowhead.eval(b)&&a.select("#"+fa.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",y("modins"===fa.stageTransitions()?"new":"old"));var s=d.each(w).each(function(b){fa.edgeArrowhead.eval(b)&&a.select("#"+fa.arrowId(b,"head")).transition().duration(m()).delay(n(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(m()).delay(function(a){return n(r[fa.edgeKey.eval(a)])}).attr("opacity",fa.edgeOpacity.eval).attr("d",function(a){var b="insmod"===fa.stageTransitions()&&r[fa.edgeKey.eval(a)]?"old":"new";return y(b)(a)});k.attr("d",A("modins"===fa.stageTransitions()?"new":"old"));var t=j.transition().duration(m()).delay(function(a){return n(r[fa.edgeKey.eval(a)])}).attr("opacity",fa.edgeOpacity.eval).attr("d",function(a){var b="insmod"===fa.stageTransitions()&&r[fa.edgeKey.eval(a)]?"old":"new";return A(b)(a)});"insmod"===fa.stageTransitions()&&(m()>=50?(s=s.transition().duration(m()).attr("d",y("new")),t=t.transition().duration(m()).attr("d",A("new"))):(s.attr("d",y("new")),t.attr("d",y("new")))),fa.showLayoutSteps()||B([q,s,t],function(){p(!0)}),f.attr("d",y("new"))}function Q(a,b,c){var d=fa.arrowId(a,b),e=fa.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",ra[c].refX).attr("refY",ra[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",ra[c].width*fa.edgeArrowSize.eval(a)).attr("markerHeight",ra[c].height*fa.edgeArrowSize.eval(a)).attr("stroke",fa.edgeStroke.eval(a)).attr("fill",fa.edgeStroke.eval(a)).call(ra[c].drawFunction),c?d:null}function R(a,b){ta=a,ua=b,ia.attr("transform","translate("+a+") scale("+b+")")}function S(){return{left:wa.left-fa.margins().left,top:wa.top-fa.margins().top,right:wa.right+fa.margins().right,bottom:wa.bottom+fa.margins().bottom}}function T(a,b){return a[0]-ba(b)+ba.range()[0]}function U(a,b){return a[1]-ca(b)+ca.range()[0]}function V(a,b){return a[0]-ba(b)+ba.range()[1]}function W(a,b){return a[1]-ca(b)+ca.range()[1]}function X(){var b=a.event.translate;if(fa.restrictPan()){var c,d=ba.domain(),e=ca.domain(),f=S(),g=f.leftfa.timeLimit())&&(console.log("cancelled"),la.postMessage({command:"stop"}));break;case"end":fa.showLayoutSteps()?p(!0):(c(b.nodes,b.edges),P(C,D,u,v,w,x,y,z,A,B));var e;switch(fa.autoZoom()){case"always":e=!0;break;case"once":e=!0,fa.autoZoom(null);break;default:e=!1}N(C,u),e&&O();break;case"start":console.log("algo "+fa.layoutAlgorithm()+" started."),ma.start()}},ma.start(),la.postMessage({command:"data",args:{nodes:h.map(function(a){return a.cola}),edges:J.map(function(a){return a.cola}),constraints:I,opts:{groupConnected:fa.groupConnected()}}}),la.postMessage({command:"start",args:{initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20,initialOnly:fa.initialOnly(),showLayoutSteps:fa.showLayoutSteps()}}),this},fa.refresh=function(b,c,d,e,f){b=b||ja.selectAll(".node"),c=c||ka.selectAll(".edge"),o(b,c),d=d||ka.selectAll(".edge-hover"),e=e||ka.selectAll(".edge-label"),f=f||ha.selectAll("path.edge-label-path");var g=a.select(null);P(b,g,c,g,d,g,e,g,f,g)};var wa;return fa.render=function(){return fa.initLayoutOnRedraw()||i(),fa.resetSvg(),ia=ga.append("g"),ka=ia.append("g"),ja=ia.append("g"),fa.legend()&&fa.legend().render(),fa.redraw()},fa.on=function(a,b){return ma.on(a,b),this},fa.getStats=function(){return pa},fa.select=function(a){return fa.root().select(a)},fa.selectAll=function(a){return fa.root()?fa.root().selectAll(a):null},fa.svg=function(a){return arguments.length?(ga=a,fa):ga},fa.resetSvg=function(){return fa.select("svg").remove(),Z()},fa.redrawGroup=function(){c.redrawAll(h)},fa.renderGroup=function(){c.renderAll(h)},fa.defineArrow=function(a,b,c,d,e,f){return ra[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},fa},fa.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ha.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},fa.invertCoord=function(a){return[ba.invert(a[0]),ca.invert(a[1])]},fa.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),fa.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),fa.anchor=function(b,d){if(!arguments.length)return da;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return da=b.select&&b.classed?b.node():b,fa.root(a.select(da)),fa.root().classed(F.constants.CHART_CLASS,!0),c.registerChart(fa,d),ea=d,fa},fa.anchorName=function(){var a=fa.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+fa.chartID()},fa.anchor(d,h)},F.legend=function(){var a,b={};return b.x=G(0),b.y=G(0),b.gap=G(5),b.nodeWidth=G(40),b.nodeHeight=G(40),b.exemplars=G({}),b.parent=G(null),b.redraw=function(){var c=b.parent().svg().selectAll("g.dc-graph-legend").data([0]);c.enter().append("g").attr("class","dc-graph-legend").attr("transform","translate("+b.x()+","+b.y()+")");var d=c.selectAll(".node").data(a,function(a){return a.name}),e=d.enter().append("g").attr("class","node");e.append("text").attr("dy","0.3em").attr("class","legend-label"),d.attr("transform",function(a,c){return"translate("+b.nodeWidth()/2+","+(b.nodeHeight()+b.gap())*(c+.5)+")"}),d.select("text.legend-label").attr("transform","translate("+(b.nodeWidth()/2+b.gap())+",0)").text(function(a){return a.name}),b.parent()._enterNode(e)._updateNode(d)},b.render=function(){var c=b.exemplars();if(c instanceof Array)a=c.map(function(a){return{name:a.name,orig:{key:a.key,value:a.value},cola:{}}});else{a=[];for(var d in c)a.push({name:d,orig:{key:d,value:c[d]},cola:{}})}b.redraw()},b},F.constraint_pattern=function(a){var b={},c=[];return a.nodes.forEach(function(a){var c=a.id,d=b[c]||(b[c]={});if(a.partition){var e=a.partition,f=a.value||a.id;a.all||a.typename?(d.match=a.extract?function(b){return a.extract(b.value[e])}:function(a){return a.value[e]},d.typename=a.typename||function(a){return e+"="+a.value[e]}):d.match=function(a){return a.value[e]===f}}else{if(!a.match)throw new Error("couldn't determine matcher for type "+JSON.stringify(a));d.match=a.match}}),a.edges.forEach(function(a){if(!a.disable){var b={source:a.source,target:a.target};b.produce="function"==typeof a.produce?a.produce:function(){return h(a.produce)},["listname","wrap","reverse"].forEach(function(c){void 0!==a[c]&&(b[c]=a[c])}),c.push(b)}}),function(a,d,e){var f=[],g={};d.forEach(function(c){var d=a.nodeKey.eval(c);for(var e in b){var f=b[e],h=f.match(c.orig);if(h){var i=f.typename?f.typename(e,h):e;g[i]||(g[i]={nodes:[],whether:{}}),g[i].nodes.push(d),g[i].whether[d]=!0}}});var h=c.filter(function(a){return a.source!==a.target}),i=c.filter(function(a){return a.source===a.target});return e.forEach(function(b){var c=a.edgeSource.eval(b),i=a.edgeTarget.eval(b);h.forEach(function(a){if(g[a.source]&&g[a.source].whether[c]&&g[a.target]&&g[a.target].whether[i]){var b=a.produce(g,d,e);a.reverse?(b.left=i,b.right=c):(b.left=c,b.right=i),f.push(b)}})}),i.forEach(function(a){if(g[a.source]){var b=a.produce(),c=a.listname||a.produce.listname||"nodes",d=a.wrap||a.produce.wrap||function(a){return a};b[c]=g[a.source].nodes.map(d),f.push(b)}}),f}},F.gap_y=function(a,b){return{axis:"y",gap:a,equality:!!b}},F.gap_x=function(a,b){return{axis:"x",gap:a,equality:!!b}},F.align_y=function(){return D("y")},F.align_x=function(){return D("x")},F.order_x=function(a,b){return{type:"ordering",axis:"x",gap:60,ordering:b}},F.order_y=function(a,b){return{type:"ordering",axis:"y",gap:60,ordering:b}},F.tree_constraints=function(a,b,c,d){return function(d,e,f){var g=[],h=0,i=F.depth_first_traversal({root:a, +tree:b,place:function(a,b,c){if(c.length){var e=c[c.length-1];g.push({left:d.nodeKey.eval(e),right:d.nodeKey.eval(a),axis:"x",gap:h-e.foo_x,equality:!0})}a.foo_x=h},sib:function(){h+=c}});return i(d,e,f),g}},F.tree_positions=function(b,c,d,e,f,g,h){function i(a,b){return(g(a)+g(b))/2}var j;g=a.functor(g);var k=F.depth_first_traversal({init:function(){j=e},root:b,row:c,tree:d,place:function(a,b,c){if(c.length){var d=c[c.length-1],e=(g(d)+g(a))/2;j=Math.max(j,d.left_x+e)}a.left_x=j,a.hit_ins=1,a.cola.y=b*h+f},sib:function(a,b,c){var d=i(b,c);a&&(d*=1.5),j+=d},pop:function(a){a.cola.x=(a.left_x+j)/2},skip:function(a,b){a.cola.x=(a.hit_ins*a.cola.x+j)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,c=a.sort(function(a,b){return a.cola.x-b.cola.x}),d=null,e=null,f=0;f0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=G(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=G("n"),f.content=G(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=G(0),f},F.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=G(!0),b},F.select_nodes=function(b){function c(c,e,h){c.cascade(50,!0,d(function(a){return g.indexOf(a.orig.key)>=0},null,b)),e.on("click.select-nodes",function(b){g=[c.nodeKey.eval(b)],c.refresh(e,h),f.node_set_changed(g),a.event.stopPropagation()}),c.svg().on("click.select-nodes",function(a){g=[],c.refresh(e,h),f.node_set_changed(g)});var i=e.data().map(function(a){return a.orig.key}),j=g.length;g=g.filter(function(a){return i.indexOf(a)>=0}),g.length!==j&&f.node_set_changed(g)}function e(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var f=F.select_nodes_group("select-nodes-group"),g=[];return F.behavior("select-nodes",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},F.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,e,f){c.cascade(100,!0,d(null,function(a){return a.dcg_highlighted},a)),e.on("mouseover.highlight-neighbors",function(a){f.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(e,f)}).on("mouseout.highlight-neighbors",function(a){b(f),c.refresh(e,f)})}function e(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return F.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){e(a,b,c)}})},F.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},F.highlight_paths=function(a,b,c,e){function f(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function g(a,b){r=a,s=b,t=u=null,f()}function h(a){a!==u&&(u=a,f())}function i(a){a!==t&&(t=a,f())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(e,f,g,h){e.cascade(200,!0,d(function(a){return!!r[e.nodeKey.eval(a)]},function(a){return!!s[e.edgeKey.eval(a)]},a)).cascade(300,!0,d(function(a){return m(r[e.nodeKey.eval(a)],t)},function(a){return m(s[e.edgeKey.eval(a)],t)},c)).cascade(400,!0,d(function(a){return m(r[e.nodeKey.eval(a)],u)},function(a){return m(s[e.edgeKey.eval(a)],u)},b)),f.on("mouseover.highlight-paths",function(a){q.hover_changed(r[e.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[e.nodeKey.eval(a)]))}),h.on("mouseover.highlight-paths",function(a){q.hover_changed(s[e.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[e.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=F.register_highlight_paths_group(e||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=F.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?g:null),q.on("hover_changed."+b,a?h:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=G(!1),v},F.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return F.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},F.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},F.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!E(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&E(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},F.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}(),F.convert_nest=function(a,b,d,e,f,g,j){j=j||{};var k=Object.keys(j).length;if(b.length){var l=b.shift(),m=[],n=[],o=a.map(function(a){j[l]=a.key;var c=i(),o=h(j);if(o[d]=c,o.name=l+":"+a.key,o._level=k+1,m.push(o),g){var p={};p[e]=g,p[f]=c,n.push(p)}var q=F.convert_nest(a.values,b.slice(0),d,e,f,c,h(j));return q});return{nodes:Array.prototype.concat.apply(m,o.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(n,o.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a._level=k+1,a}),edges:a.map(function(a){var b={};return b[e]=g,b[f]=a[d],b})}},F.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=i()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},F.path_reader=function(a){function b(a,b,c){g.elementList.eval(a).forEach(function(d){var e,f;switch(g.elementType.eval(d)){case"node":e=g.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=g.edgeSource.eval(d)+"-"+g.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,e,f=F.register_highlight_paths_group(a||"highlight-paths-group"),g={pathList:G(H,!1),timeRange:G(null,!1),elementList:G(H,!1),elementType:G(null,!1),nodeKey:G(null,!1),edgeSource:G(null,!1),edgeTarget:G(null,!1),clear:function(){f.paths_changed({},{},[])},data:function(a){var h,i={},j={},k=[];g.pathList.eval(a).forEach(function(a){if(a._range=g.timeRange.eval(a)){if(h===!1)throw new Error("can't have a mix of ranged and non-ranged paths");h=!0}else{if(h===!0)throw new Error("can't have a mix of ranged and non-ranged paths");h=!1,b(a,i,j)}k.push(a)}),h?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),e&&this.setTime(e)):(c=null,d=null,f.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],g={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,g,h)}),f.paths_changed(g,h,c)}e=a}};return g},F.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=F.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:G("Nothing here"),zero_text:G("No paths"),error_text:G(null),queried:G(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},F.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return F.node_name(Math.floor(a/52))+F.node_name(a%52);throw new Error("no, that's too large")},F.node_object=function(a,b){return b=b||{},_.extend({id:a,name:F.node_name(a)},b)},F.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},F.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;gb&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},F.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},F.d3=a,F.crossfilter=b,F.dc=c,F}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); //# sourceMappingURL=dc.graph.min.js.map \ No newline at end of file diff --git a/web/js/dc.graph.min.js.map b/web/js/dc.graph.min.js.map index ff6d8262..84a4e947 100644 --- a/web/js/dc.graph.min.js.map +++ b/web/js/dc.graph.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","console","error","compose","f","g","apply","arguments","get_original","x","orig","v","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","uuid","replace","c","r","Math","random","toString","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","length","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","ret","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","this","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","align_f","axis","type","listname","can_get_graph_from_this","data","nodes","vertices","edges","links","version","constants","CHART_CLASS","property","defaultValue","unwrap","undefined","identity","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","depth_first_traversal","callbacks","diagram","place_tree","nodeKey","placed","skip","indegree","rows","place","outmap","forEach","e","ei","sib","pop","init","tree","filter","roots","reduce","m","tail","edgeSource","head","edgeTarget","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","parent","chartGroup","initLayout","_worker","Worker","_chart","layoutAlgorithm","args","handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize","rankdir","postMessage","command","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","name","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","window","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","match","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","event","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","_xScale","range","_yScale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","generateSvg","append","_defs","mouseZoomable","linear","behavior","zoom","on","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","marginMixin","_nodeLayer","_edgeLayer","dispatch","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","sourceAccessor","sourcename","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","edgeLength","edgeDistanceAccessor","distance","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","edgeId","textpathId","getNode","_enterNode","changedShape","remove","text","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","quicksort","by","wnodes","v1","dcg_nodeFixed","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","onmessage","response","elapsed","do_zoom","start","opts","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","svg","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","anchorName","chartID","_items","_legend","nodeWidth","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_constraints","rootf","treef","xgap","ygap","dfs","foo_x","tree_positions","rowf","ofsx","ofsy","nwidth","best_dist","functor","left_x","hit_ins","isroot","want","badi","badl","limit","extra","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","createElement","rowsEnter","outerHTML","select_nodes","_selected","select_nodes_group","node_set_changed","stopPropagation","present","nselect","brushgroup","chart_registry","create_type","create_group","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","bind","dcg_dblclk_timeout","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","warn","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","inherit","shift","children","_level","recurse","values","prototype","pluck","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","clear","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","style","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","line_breaks","charexp","max_line_length","regexp","RegExp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","nmap","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":";;;;;;;;;;;;;;;;;;;;CAmBA,WAAc,QAASA,GAAUC,EAAIC,EAAaC,GAClD,YAiFA,SAASC,GAAuBC,EAAOC,EAAOC,GAC1C,QAASC,GAAIC,EAAMC,GACf,MAAO,UAASC,EAAGC,GACf,MAAOH,GAAKE,GAAKD,EAAKC,GAAKC,KAGnC,GAAIC,KACJ,KAAI,GAAIC,KAAKP,GACN,QAAQQ,KAAKD,GACTT,IACCQ,EAAOC,GAAKN,EAAIH,EAAOW,EAAMT,EAAMO,MAEnC,QAAQC,KAAKD,GACdR,IACCO,EAAOC,GAAKN,EAAIF,EAAOU,EAAMT,EAAMO,MAEtCG,QAAQC,MAAM,yEAEvB,OAAOL,GAIX,QAASM,GAAQC,EAAGC,GAChB,MAAO,YACH,MAAOD,GAAEC,EAAEC,MAAM,KAAMC,aAiB/B,QAASC,GAAaC,GAClB,MAAOA,GAAEC,KAMb,QAASV,GAAMW,GACX,MAAOC,GAASC,aAAaF,EAAGH,GAIpC,QAASM,GAAMC,GACX,GAAIC,KACJ,KAAI,GAAIC,KAAKF,GACNA,EAAIG,eAAeD,KAClBD,EAAOC,GAAKF,EAAIE,GAGxB,OAAOD,GAIX,QAASG,KACL,MAAO,uCAAuCC,QAAQ,QAAS,SAASC,GACpE,GAAIC,GAAkB,GAAdC,KAAKC,SAAY,EAAGb,EAAS,KAALU,EAAWC,EAAO,EAAFA,EAAM,CACtD,OAAOX,GAAEc,SAAS,MAS1B,QAASC,GAAcC,EAAKC,EAAWC,GAGnC,IAAI,GAFAC,IAAQ,IAAKH,EAAI,GAAGlB,EAAG,IAAKkB,EAAI,GAAGI,GAAIC,EAASJ,EAChDK,GAAS,EACLhB,EAAI,EAAGA,EAAIU,EAAIO,SAAUjB,GAC1BkB,MAAMR,EAAIV,GAAGR,IAAM0B,MAAMR,EAAIV,GAAGc,MAC/BE,GAAS,GACbH,EAAKM,KAAKJ,IAASJ,EAAYS,EAAST,GAAa,IAAKD,EAAIV,GAAGR,EAAG,IAAKkB,EAAIV,GAAGc,GAClE,MAATC,IACDA,EAASJ,EAMjB,OAJGI,IAAQJ,GACP3B,QAAQqC,IAAI,iDAAkDX,EAAKC,GACpEC,GACCC,EAAKM,KAAK,KACPN,EAAKS,KAAK,IA8ErB,QAASC,GAAmBC,EAAWC,EAAMC,EAAKC,EAAQC,EAAQC,GAI9D,QAASC,GAAKpD,GACV,GAAIqD,GAAIL,EAAIhD,EACR8C,GAAUO,IACVH,EAAOG,EAAGP,EAAUO,MAASrD,EACjC,IAAIsD,GAAKR,EAAUO,EAGnB,OAFAJ,GAAOK,EAAItD,GACXuD,EAAKF,IAAK,EACHC,EAVPJ,IAAQA,EAAS,SAASG,EAAGrD,MAC7BmD,IAASA,EAAU,SAASE,KAChC,IAAIE,MAUAC,EAAQT,EAAKU,IAAIL,EAErB,KAAI,GAAIC,KAAKP,GACLS,EAAKF,KACLF,EAAQE,EAAGP,EAAUO,UACdP,GAAUO,GAEzB,OAAOG,GAGX,QAASE,GAAiBC,EAAGC,EAAGC,EAAIC,GAChC,GAAIC,GAAQnC,KAAKoC,IAAIpC,KAAKqC,MAAMH,EAAID,GACpCE,IAAcA,CACd,IAAIG,IAAOpD,EAAG6C,EAAEC,EAAEhC,KAAKuC,KAAKP,EAAEA,EAAID,EAAEA,EAAEI,GAAQ3B,EAAGuB,EAAEC,EAAEhC,KAAKuC,KAAKR,EAAEA,EAAIC,EAAEA,EAAEG,GAKzE,OAJGF,GAAG,IACFK,EAAIpD,GAAKoD,EAAIpD,GACdgD,EAAG,IACFI,EAAI9B,GAAK8B,EAAI9B,GACV8B,EAIX,QAASE,GAAQC,EAAGC,EAAG5C,GACnB,MAAO2C,GAAEE,GAAOD,GAAKA,GAAK5C,EAAE6C,EAIhC,QAASC,GAAqBC,EAAGC,EAAGC,EAAGC,EAAIC,EAAGC,EAAGC,EAAGC,GAChD,GAAIlE,KAAI2D,EAAGG,EAAGF,EAAGC,IAAKE,EAAGE,IAAKN,EAAGE,IAAKE,EAAGG,EAAGF,EAAGC,MACrCN,EAAGE,IAAKG,EAAGE,IAAKN,EAAGE,IAAKC,EAAGE,IACjC3C,IAAIqC,EAAGG,EAAGF,EAAGC,IAAKG,EAAGE,IAAKN,EAAGE,IAAKC,EAAGG,EAAGF,EAAGC,MACrCN,EAAGE,IAAKG,EAAGE,IAAKN,EAAGE,IAAKC,EAAGE,GACrC,IAAIvC,MAAM1B,IAAI0B,MAAMJ,GAChB,OAAO,CAEP,IAAIqC,GAAIE,GACJ,IAAKP,EAAQO,EAAI7D,EAAG2D,GAAM,OAAO,MAEjC,KAAKL,EAAQK,EAAI3D,EAAG6D,GAAM,OAAO,CAErC,IAAID,GAAIE,GACJ,IAAKR,EAAQQ,EAAIxC,EAAGsC,GAAM,OAAO,MAEjC,KAAKN,EAAQM,EAAItC,EAAGwC,GAAM,OAAO,CAErC,IAAIC,GAAIE,GACJ,IAAKX,EAAQW,EAAIjE,EAAG+D,GAAM,OAAO,MAEjC,KAAKT,EAAQS,EAAI/D,EAAGiE,GAAM,OAAO,CAErC,IAAID,GAAIE,GACJ,IAAKZ,EAAQY,EAAI5C,EAAG0C,GAAM,OAAO,MAEjC,KAAKV,EAAQU,EAAI1C,EAAG4C,GAAM,OAAO,CAGzC,QAAQlE,EAAGA,EAAGsB,EAAGA,GAIrB,QAAS6C,GAAiBC,EAAQC,EAAIC,EAAIX,EAAIC,GAC1C,IAAI,GAAIpD,GAAI,EAAGA,EAAI4D,EAAO3C,SAAUjB,EAAG,CACnC,GAAI+D,GAAO/D,IAAI4D,EAAO3C,OAAO,EAAI,EAAIjB,EAAE,EACnCgE,EAAQd,EAAqBU,EAAO5D,GAAGR,EAAGoE,EAAO5D,GAAGc,EAAG8C,EAAOG,GAAMvE,EAAGoE,EAAOG,GAAMjD,EACvD+C,EAAIC,EAAIX,EAAIC,EAC7C,IAAGY,EACC,MAAOA,GAEf,MAAO,MAGX,QAASC,GAAeC,EAAOC,EAAGC,EAAQC,GACtC,OAAOF,EAAEG,UAAUC,OACnB,IAAK,UACD,MAAOnC,GAAiB+B,EAAEK,OAAQL,EAAEM,OAAQL,EAAQC,EACxD,KAAK,UACD,MAAOV,GAAiBQ,EAAEO,WAAY,EAAG,EAAGN,EAAQC,IAmE5D,QAASM,GAAgBC,GACrB,GAAIL,GAAQK,EAAIL,KAChB,IAAiB,WAAdK,EAAIL,MAAoB,CACvB,GAAIM,GAAOC,OAAOD,KAAKE,EACvBR,GAAQK,EAAII,OAASH,EAAKvE,KAAK2E,MAAM3E,KAAKC,SAASsE,EAAK5D,SAE5D,OAAQ8D,EAAiBR,IAAU,WAC/B,KAAM,IAAIW,OAAM,iBAAmBN,EAAIL,SACxCK,GAGP,QAASO,GAAYjB,GACjB,MAAO,UAASC,GACZ,GAAIS,GAAMV,EAAMkB,UAAUC,KAAKlB,IAAMmB,CACrCnB,GAAEG,UAAYK,EAAgBC,GAC9BT,EAAEG,UAAUiB,SAAWX,GAI/B,QAASY,GAActB,GACnB,MAAO,UAASC,GACZ,GAAIS,GAAMV,EAAMkB,UAAUC,KAAKlB,IAAMmB,EACjCG,EAAMtB,EAAEG,UAAUiB,QACtB,OAAGX,GAAIL,QAAUkB,EAAIlB,OAEC,YAAdK,EAAIL,QACDK,EAAIL,MAAMmB,QAAUD,EAAIC,OAASd,EAAIL,MAAMoB,OAASF,EAAIE,MAC3Df,EAAIL,MAAMqB,aAAeH,EAAIG,YAAchB,EAAIL,MAAMsB,WAAaJ,EAAII,WAMtF,QAASC,GAAc5B,GACnB,MAAO,UAASC,GACZ,GAA+B4B,GAA3BxB,EAAQJ,EAAEG,UAAUC,KACxB,QAAOA,GACP,IAAK,UACDwB,EAAO,SACP,MACJ,KAAK,UACDA,EAAO,MACP,MACJ,SACI,KAAM,IAAIb,OAAM,iBAAmBX,GAEvC,MAAOyB,UAASC,gBAAgB,6BAA8BF,IAItE,QAASG,GAAUhC,GACf,MAAO,UAASC,GACZ,GACIgC,GADA9F,EAAI6D,EAAMkC,WAAWf,KAAKlB,EAE3BD,GAAMmC,aAAahB,KAAKlB,KACvBgC,EAAOG,KAAKC,UAChB,IAAIC,GAAO,CACX,IAAGL,GAAQA,EAAKM,OAASN,EAAKO,OAAQ,CAElCrG,EAAIC,KAAKqG,IAAItG,EAAG8F,EAAKO,OAAO,EAAI,EAChC,IAAIE,EACJ,IAAyB,YAAtBzC,EAAEG,UAAUC,MAAqB,CAGhC,GAAIsC,GAAWV,EAAKO,OAAO,EAAErG,CAC7BuG,GAAKT,EAAKM,MAAM,EAAEnG,KAAKuC,KAAK,EAAIgE,EAASA,GACzC1C,EAAEK,OAASlE,KAAKqG,IAAIC,EAAIvG,GACxB8D,EAAEM,OAASpE,MAEXuG,GAAKT,EAAKM,MAAM,EAIhBtC,EAAEK,OAASoC,EAAGtG,KAAKuC,KAAK,GAAGvC,KAAKwG,IAAIxG,KAAKyG,IAAI5C,EAAEG,UAAUoB,OAAO,IAChEvB,EAAEM,OAASpE,CAEfmG,GAAU,EAAHI,EAAO1C,EAAM8C,YAAY3B,KAAKlB,GAAKD,EAAM+C,gBAAgB5B,KAAKlB,OAEpEA,GAAEK,OAASL,EAAEM,OAASpE,CAC3B,IAAI6G,GAAU,EAAF7G,EAAM6D,EAAM8C,YAAY3B,KAAKlB,GAAKD,EAAM+C,gBAAgB5B,KAAKlB,EACzEA,GAAEgD,KAAKV,MAAQnG,KAAKqG,IAAIH,EAAMU,GAC9B/C,EAAEgD,KAAKT,OAASQ,GAIxB,QAASE,GAAclD,EAAOC,GAC1B,OACIyC,GAAI,SAASzC,GAAK,MAAOA,GAAEK,QAC3B6C,GAAI,SAASlD,GAAK,MAAOA,GAAEM,SAInC,QAAS6C,GAAcpD,EAAOC,GAC1B,OACIA,EAAG,SAASA,GACR,GAAIS,GAAMT,EAAEG,UACRoB,EAAQd,EAAIc,OAAS,EACrBC,EAAOf,EAAIe,MAAQ,EACnBC,EAAahB,EAAIgB,YAAc,EAC/BC,EAAWjB,EAAIiB,UAAY,EAC3B0B,EAAS7B,EAAM,EAAI,EAAI,GACvB8B,IACJ3B,GAAWA,EAAS,IAAM,GAC1B,KAAI,GAAI7F,GAAI,EAAGA,EAAE0F,IAAS1F,EAAG,CACzB,GAAIyH,MAAWzH,EAAEuH,GAAO7B,EAAQG,GAAUvF,KAAKyG,GAAG,CAClDS,GAAOrG,MAAM3B,EAAGc,KAAKwG,IAAIW,GAAQ3G,EAAGR,KAAKoH,IAAID,KAEjD,GAAIE,GAAO3J,EAAG4J,OAAOJ,EAAQ,SAASC,GAAS,MAAOA,GAAM3G,IACxD8F,EAAKzC,EAAEK,OACP6C,EAAKlD,EAAEM,OAASnE,KAAKuH,KAAKF,EAAK,GAAIA,EAAK,GAQ5C,OAPAxD,GAAEO,WAAa8C,EAAOrF,IAAI,SAASsF,GAC/B,GAAIjI,GAAIoH,EAAGa,EAAMjI,EACbsB,EAAIuG,EAAGI,EAAM3G,CAGjB,OAFAtB,IAAK,EAAIoG,IAAazB,EAAEM,OAAO3D,GAAGqD,EAAEM,OAAS,GAC7CjF,GAAKmG,EAAK7E,EAAE,GACJtB,EAAGA,EAAGsB,EAAGA,KAEdL,EAAc0D,EAAEO,WAAY,GAAG,KAKlD,QAASoD,GAAY5D,GACjB,MAAO,UAASC,GACZ,GAAI4D,GAAM/J,EAAGgK,OAAO1B,KACpB,QAAOnC,EAAEG,UAAUC,OACnB,IAAK,UACDwD,EAAIE,KAAKb,EAAclD,EAAOC,GAC9B,MACJ,KAAK,UACD4D,EAAIE,KAAKX,EAAcpD,EAAOC,GAC9B,MACJ,SAAS,KAAM,IAAIe,OAAM,iBAAmBf,EAAEG,UAAUC,SAKhE,QAAS2D,GAAc/I,EAAG4D,EAAGC,GACzB,GAAImF,GAAW,GACf,IAAGhJ,EAAE4D,GAAGqF,KAAO,EACX,KAAM,IAAIlD,OAAM,2BACpB,IAAG/F,EAAE6D,GAAGoF,KAAO,EACX,KAAM,IAAIlD,OAAM,8BACpB,QAAY,CACR,MAAMiD,EACF,KAAM,IAAIjD,OAAM,mBACpB,IAAI9E,IAAK2C,EAAEC,GAAG,EACVqF,EAAMlJ,EAAEiB,GAAIkI,EAAKD,EAAID,GACzB,IAAG9H,KAAKiI,IAAID,GAAM,GACd,MAAOD,EACRC,GAAK,EACJtF,EAAI5C,EAEJ2C,EAAI3C,GAIhB,QAASoI,GAAoBtE,EAAOuE,EAAQ1I,EAAQ2I,EAAIC,EAAIC,EAAIC,EACnCC,EAAUC,EAAKC,EAAQC,EAAgBC,GAChE,GAAI9E,GAAQC,EACR8E,EAAIC,EAAIxF,EAAQjD,CAEpB,IAAImI,EAgBC,CACD,GAsBIO,GAAKC,EAtBLC,EAAS,SAASC,EAAMC,GACxB,MAAOxF,GAAeC,EAAOsF,EAAoB,IAAdlJ,KAAKwG,IAAI2C,GAAyB,IAAdnJ,KAAKoH,IAAI+B,KAEhEC,EAAe,SAASF,EAAMG,EAAOC,GACrC,MAAO,UAASH,GACZ,GAAII,GAAON,EAAOC,EAAMC,EACxB,OAAII,IAQIA,KAAMA,EACNzB,IAAK9H,KAAKwJ,MAAMD,EAAKrK,EAAImK,EAAMnK,EAAGqK,EAAK/I,EAAI6I,EAAM7I,GAAK8I,EACtDH,IAAKA,IARLI,MAAOrK,EAAG,EAAGsB,EAAG,GAChBsH,IAAK,EACLqB,IAAKA,KAUjBM,EAASzJ,KAAKqC,MAAMmG,EAASkB,WAAWlJ,EAAGgI,EAASkB,WAAWxK,GAC/DyK,EAAS3J,KAAKqC,MAAMmG,EAASoB,WAAWpJ,EAAGgI,EAASoB,WAAW1K,EAInE,KACI6J,EAAMnB,EAAcwB,EAAajB,EAAQK,EAASkB,WAAYhB,GAC1Ce,EAAQA,EAAS,EAAIhB,EAAMC,EAASC,GAE5D,MAAMzJ,GACF6J,GAAOI,IAAKM,EAAQF,KAAMf,EAASkB,YAEvC,IACIV,EAAMpB,EAAcwB,EAAa3J,EAAQ+I,EAASoB,WAAYlB,GAC1CiB,EAAQA,EAAS,EAAIlB,EAAMC,EAASC,GAE5D,MAAMzJ,GACF8J,GAAOG,IAAKQ,EAAQJ,KAAMf,EAASoB,YAGvCf,EAAKE,EAAIQ,KACTT,EAAKE,EAAIO,IACT,IAAIM,GAAQ7J,KAAKwJ,MAAMX,EAAG3J,EAAG2J,EAAGrI,GAC5BsJ,EAAQ9J,KAAKwJ,MAAMV,EAAG5J,EAAG4J,EAAGtI,GAC5BuJ,EAASF,EAAMlB,EAAe,EAC9BqB,EAASF,EAAMlB,EAAe,EAC9BqB,EAAM7B,EAAK2B,EAAS/J,KAAKwG,IAAIuC,EAAII,KACjCe,EAAM7B,EAAK0B,EAAS/J,KAAKoH,IAAI2B,EAAII,KACjCgB,EAAM7B,EAAK0B,EAAShK,KAAKwG,IAAIwC,EAAIG,KACjCiB,EAAM7B,EAAKyB,EAAShK,KAAKoH,IAAI4B,EAAIG,IACrC7F,KACKpE,EAAGkJ,EAAKS,EAAG3J,EAAGsB,EAAG6H,EAAKQ,EAAGrI,IACzBtB,EAAG+K,EAAKzJ,EAAG0J,IACXhL,EAAGiL,EAAK3J,EAAG4J,IACXlL,EAAGoJ,EAAKQ,EAAG5J,EAAGsB,EAAG+H,EAAKO,EAAGtI,IAE9BH,EAAY,MAxEZyD,GAASwE,EAAKF,EACdrE,EAASwE,EAAKF,EACdQ,EAAKlF,EAAeC,EAAOuE,EAAQrE,EAAQC,GAC3C+E,EAAKnF,EAAeC,EAAOnE,GAASqE,GAASC,GACzC8E,IAAIA,GAAM3J,EAAG,EAAGsB,EAAG,IACnBsI,IAAIA,GAAM5J,EAAG,EAAGsB,EAAG,IACvB8C,IACIpE,EAAGkJ,EAAKS,EAAG3J,EACXsB,EAAG6H,EAAKQ,EAAGrI,IAEXtB,EAAGoJ,EAAKQ,EAAG5J,EACXsB,EAAG+H,EAAKO,EAAGtI,IAEfH,EAAY,CA6DhB,QACIqJ,WAAYb,EACZe,WAAYd,EACZxF,OAAQA,EACRjD,UAAWA,GAMnB,QAASgK,GAAYxG,EAAGtF,GAEpB,IAAK,GADDwB,MACKL,EAAE,EAAGA,EAAEmE,EAAElD,OAAQjB,IAAK,CAC3B,GAAI4K,GAAKzG,EAAEnE,EAAE,GAAI6K,EAAK1G,EAAEnE,EACxBK,GAAEc,MAAM3B,EAAGoL,EAAGpL,GAAKqL,EAAGrL,EAAIoL,EAAGpL,GAAKX,EAAGiC,EAAG8J,EAAG9J,GAAK+J,EAAG/J,EAAI8J,EAAG9J,GAAKjC,IAEnE,MAAOwB,GAGX,QAASyK,GAAUlH,EAAQmH,GAEvB,IAAK,GADDvL,IAAKoE,GACA5D,EAAE,EAAGA,EAAE4D,EAAO3C,OAAQjB,IAC3BR,EAAE2B,KAAKwJ,EAAYnL,EAAEA,EAAEyB,OAAO,GAAI8J,GAEtC,OAAOvL,GAIX,QAASwL,GAAapH,EAAQmH,GAC1B,GAAIE,GAAIH,EAAUlH,EAAQmH,EAC1B,OAAOE,GAAEA,EAAEhK,OAAO,GAAG,GAi/EzB,QAASiK,GAAQC,GACb,GAAIvI,GAAM,WACN,OACIwI,KAAM,YACND,KAAMA,GAKd,OAFAvI,GAAIyI,SAAW,UACfzI,EAAId,KAAO,SAAStC,GAAK,OAAQgK,KAAMhK,EAAGwJ,OAAQ,IAC3CpG,EA22BX,QAAS0I,GAAwBC,GAC7B,OAAQA,EAAKC,OAASD,EAAKE,YAAeF,EAAKG,OAASH,EAAKI,OAn/HjE,GAAIhM,IACAiM,QAAS,SACTC,WACIC,YAAa,aAIjBC,EAAW,SAAUC,EAAcC,GACrBC,SAAXD,EACCA,EAAS1M,EACL0M,KAAW,IACfA,EAASE,EACb,IAAIC,GAAQJ,EAAcK,EAAQ,KAC9BC,KACA1J,EAAM,SAAU2J,GAChB,MAAKjN,WAAU2B,QAGZoL,GACCA,EAAME,GACVH,EAAQG,EACDjG,MALI8F,EA0Cf,OAnCAxJ,GAAI0J,QAAU,SAAUE,EAAGrN,GACvB,IAAI,GAAIa,GAAI,EAAGA,EAAEsM,EAAQrL,SAAUjB,EAAG,CAClC,GAAGsM,EAAQtM,GAAGwM,IAAMA,EAIhB,MAHGrN,GACCmN,EAAQtM,GAAGb,EAAIA,QACPmN,GAAQtM,GACb4C,CACJ,IAAG0J,EAAQtM,GAAGwM,EAAIA,EAErB,MADAF,GAAQG,OAAOzM,EAAG,GAAIwM,EAAGA,EAAGrN,EAAGA,IACxByD,EAIf,MADA0J,GAAQnL,MAAMqL,EAAGA,EAAGrN,EAAGA,IAChByD,GAEXA,EAAI8J,MAAQ,SAAShO,EAAG8N,GACpB,GAAO,IAAJA,GAAUF,EAAQrL,OAEhB,CACD,GAAItC,GAAO2N,EAAQE,EAAE,EACrB,OAAO7N,GAAKQ,EAAET,EAAG,WACb,MAAOkE,GAAI8J,MAAMhO,EAAG8N,EAAE,KAJ1B,MAAO7M,GAASC,aAAagD,IAAOqJ,GAAQvN,IAQpDkE,EAAIyC,KAAO,SAAS3G,GAChB,MAAOkE,GAAI8J,MAAMhO,EAAG4N,EAAQrL,SAEhC2B,EAAIyJ,MAAQ,SAASE,GACjB,MAAKjN,WAAU2B,QAGfoL,EAAQE,EACDjG,MAHI+F,GAKRzJ,GAyBPuJ,EAAW,SAAS3M,GAAK,MAAOA,GASpCG,GAASC,aAAe,SAAUF,EAAGoC,GACjC,MAAgB,kBAANpC,GACCoC,EAAO,SAAStC,GACnB,MAAOE,GAAEoC,EAAKtC,KACdE,EAEI,WACR,MAAOA,IAmCf,IAAI0B,IACAuL,EAAG,IAAKC,EAAG,IAAKC,EAAG,IAqBvBvM,MAAKwJ,MAAQxJ,KAAKwJ,OAAS,WAIzB,IAAK,GAHDhJ,GAAI,EACJG,EAAS3B,UAAU2B,OAEdjB,EAAI,EAAGA,EAAIiB,EAAQjB,IAAK,CAC/B,GAAIV,UAAUU,KAAO8M,EAAAA,GAAYxN,UAAUU,OAAQ8M,EAAAA,GACjD,MAAOA,GAAAA,CAEThM,IAAKxB,UAAUU,GAAKV,UAAUU,GAEhC,MAAOM,MAAKuC,KAAK/B,IASnBnB,EAASoN,sBAAwB,SAASC,GACtC,MAAO,UAASC,EAASzB,EAAOE,GAgB5B,QAASwB,GAAWV,EAAGnM,GACnB,GAAIqB,GAAMuL,EAAQE,QAAQ9H,KAAKmH,EAC/B,OAAGY,GAAO1L,QACNsL,EAAUK,MAAQL,EAAUK,KAAKb,EAAGc,EAAS5L,MAG7C6L,EAAKlN,KACLkN,EAAKlN,OACT2M,EAAUQ,OAASR,EAAUQ,MAAMhB,EAAGnM,EAAGkN,EAAKlN,IAC9CkN,EAAKlN,GAAGc,KAAKqL,GACbY,EAAO1L,IAAO,EACX+L,EAAO/L,IACN+L,EAAO/L,GAAKgM,QAAQ,SAASC,EAAGC,GACzBA,GAAMZ,EAAUa,KACfb,EAAUa,KAAI,EAAOJ,EAAO/L,GAAKkM,EAAG,GAAG7N,OAAQ4N,EAAE5N,QACrDiN,EAAU7L,MAAQ6L,EAAU7L,OAC5B+L,EAAWS,EAAE5N,OAAQM,EAAE,UAE/B2M,EAAUc,KAAOd,EAAUc,IAAItB,KAjCnCQ,EAAUe,MAAQf,EAAUe,OACzBf,EAAUgB,OACTtC,EAAQA,EAAMuC,OAAO,SAASN,GAAK,MAAOX,GAAUgB,KAAKL,EAAElO,QAC/D,IAiCIyO,GAjCAZ,KACAG,EAAS/B,EAAMyC,OAAO,SAASC,EAAGT,GAClC,GAAIU,GAAOpB,EAAQqB,WAAWjJ,KAAKsI,GAC/BY,EAAOtB,EAAQuB,WAAWnJ,KAAKsI,EAInC,OAHIS,GAAEC,KAAOD,EAAEC,OACfD,EAAEC,GAAMlN,KAAKwM,GACbL,EAASiB,IAASjB,EAASiB,IAAS,GAAK,EAClCH,OAGPb,KACAH,IAwBAc,GADDlB,EAAUyB,KACDjD,EAAMyC,OAAO,SAASzB,GAAK,MAAOQ,GAAUyB,KAAKjC,EAAE/M,QAEnD+L,EAAMyC,OAAO,SAASzB,GAAK,OAAQc,EAASL,EAAQE,QAAQ9H,KAAKmH,MAE7E0B,EAAMR,QAAQ,SAASlB,EAAGkC,GACnBA,GAAM1B,EAAUa,KACfb,EAAUa,KAAI,EAAMK,EAAMQ,EAAG,GAAIlC,GACrCQ,EAAU7L,MAAQ6L,EAAU7L,OAC5B+L,EAAWV,EAAGQ,EAAU2B,IAAM3B,EAAU2B,IAAInC,EAAE/M,MAAQ,KAE1DuN,EAAU4B,OAAOrB,IAuCzB,IAAItK,GAAM,KA6DN8B,GACA8J,QAAS,WACL,OAAQtK,MAAO,YAEnBuK,IAAK,WACD,OAAQvK,MAAO,UAAWmB,MAAO,IAAKE,YAAY,MAEtDmJ,SAAU,WACN,OAAQxK,MAAO,UAAWmB,MAAO,IAErCsJ,UAAW,WACP,OAAQzK,MAAO,UAAWmB,MAAO,IAErCuJ,QAAS,WACL,OAAQ1K,MAAO,UAAWmB,MAAO,EAAGG,SAAU,KAElDqJ,UAAW,WACP,OAAQ3K,MAAO,UAAWmB,MAAO,EAAGE,YAAY,KAEpDuJ,cAAe,WACX,OAAQ5K,MAAO,UAAWmB,MAAO,EAAGC,KAAM,KAE9CyJ,SAAU,WACN,OAAQ7K,MAAO,UAAWmB,MAAO,IAErC2J,QAAS,WACL,OAAQ9K,MAAO,UAAWmB,MAAO,IAErC4J,SAAU,WACN,OAAQ/K,MAAO,UAAWmB,MAAO,IAErC6J,QAAS,WACL,OAAQhL,MAAO,UAAWmB,MAAO,IAErC8J,YAAa,WACT,OAAQjL,MAAO,UAAWmB,MAAO,EAAGG,SAAU,MAElD4J,aAAc,WACV,OAAQlL,MAAO,UAAWmB,MAAO,EAAGE,WAAY,KAEpD8J,OAAQ,WACJ,OAAQnL,MAAO,UAAWmB,MAAO,IAErCiK,QAAS,SAAS/K,GACd,OACIL,MAAO,UACPmB,MAAOd,EAAIc,MACXC,KAAMf,EAAIe,KACVC,WAAYhB,EAAIgB,WAChBC,SAAUjB,EAAIiB,WAK1BlG,GAASiQ,iBAAmB,WACxB,GAAIC,GAAS/K,OAAOD,KAAKE,EACzB,OAAO8K,GAAOC,MAAM,EAAGD,EAAO5O,OAAO,GAGzC,IAAIqE,IAAiBf,MAAO,UA0qI5B,OAz4HA5E,GAASsN,QAAU,SAAU8C,EAAQC,GAu8BjC,QAASC,KACDC,KACAA,GAAU,GAAIC,QAAO,eAAiBC,GAAOC,kBAAoB,cACrE,IAAIC,IACA7J,MAAO2J,GAAO3J,QACdC,OAAQ0J,GAAO1J,SAGnB,QAAO0J,GAAOC,mBACd,IAAK,OACDvL,OAAOnD,OAAO2O,GACVC,mBAAoBH,GAAOG,qBAC3BC,eAAgBJ,GAAOI,iBACvBC,WAAYL,GAAOK,aACnBC,WAAYN,GAAOM,aACnBC,SAAUP,GAAOO,YAErB,MACJ,KAAK,QACD7L,OAAOnD,OAAO2O,GACVM,QAASR,GAAOQ,YAGxBV,GAAQW,aACJC,QAAS,OACTR,KAAMA,IAmDd,QAASS,GAAsBpD,GAC3B,QAASA,EAAElF,UAAYkF,EAAE5N,OAI7B,QAASiR,KACL,MAAsC,SAA9BZ,GAAOa,mBACXb,GAAOc,qBAAuB,EAC9Bd,GAAOc,qBAGf,QAASC,GAAiBC,GACtB,MAAqC,SAA9BhB,GAAOa,oBACoB,WAA9Bb,GAAOa,qBAAqCG,EAC5C,EACAhB,GAAOc,qBAAuB,EA4ZtC,QAASG,GAAS7H,EAAM8H,GACpBA,EACKrJ,KAAK,SAAUmI,GAAOmB,WAAWlM,MACjC4C,KAAK,eAAgBmI,GAAOoB,gBAAgBnM,MAC5C4C,KAAK,aAAc,SAAS9D,GACzB,GAAIsN,GAAOrB,GAAOsB,cAAcrM,KAAKlB,GACjCwN,EAAKC,EAAUzN,EAAG,OAAQsN,EAC9B,OAAOE,GAAK,QAAUA,EAAK,IAAM,OAEpC1J,KAAK,eAAgB,SAAS9D,GAC3B,GAAIsN,GAAOrB,GAAOyB,cAAcxM,KAAKlB,GACjC2N,EAAWF,EAAUzN,EAAG,OAAQsN,EACpC,OAAOA,GAAO,QAAUK,EAAW,IAAM,OAE5CC,KAAK,SAASpE,GACX3P,EAAGgU,UAAU,IAAM5B,GAAO6B,QAAQtE,EAAG,QAAU,KAAOyC,GAAO6B,QAAQtE,EAAG,SACnE1F,KAAK,OAAQmI,GAAOmB,WAAWlM,KAAKsI,MAGjDyC,GAAO8B,YAAY1I,GAgBvB,QAAS2I,GAAYC,GACjBC,GAAUC,IAAIF,GACdG,IAAW,EACRC,KACCA,IAAe,EACfC,OAAOC,WAAW,WACVtC,GAAOuC,aACPvC,GAAOwC,UACZ,IAIX,QAASC,GAAe1O,EAAG2O,EAAKpK,EAAIC,EAAIC,EAAIC,GACxC,IAAI1E,EAAE4O,MAAMD,GAAM,CACd,GAAI7J,GAAiB9E,EAAEsE,OAAOhE,OACtB2L,GAAOnJ,gBAAgB5B,KAAKlB,EAAEsE,QAAU,EAC5CS,EAAiB/E,EAAEpE,OAAO0E,OACtB2L,GAAOnJ,gBAAgB5B,KAAKlB,EAAEpE,QAAU,CAChDoE,GAAE4O,MAAMD,GAAO,GAAIE,OAAM7O,EAAE4O,MAAMvG,EAEjC,KAAI,GADAyG,GAAe9O,EAAE4O,MAAMG,IAAI/O,EAAEgP,UACzBtU,EAAI,EAAGA,EAAIsF,EAAE4O,MAAMvG,IAAK3N,EAAG,CAE/B,GAAIkK,MAAUlK,EAAE,IAAQ6J,EAAKE,GAAO,EAAK,EACrCiB,EAAOvJ,KAAK2E,OAAOpG,EAAE,GAAG,GACxBF,EAAOkL,EAAO1F,EAAE4O,MAAMD,GAAKjU,EAAI,EAAIA,EAAI,EAAI,GAAGuU,KAAO,KACrDA,EAAO5K,EAAoB4H,GAAQjM,EAAEsE,OAAQtE,EAAEpE,OAAQ2I,EAAIC,EAAIC,EAAIC,EACzClK,EAAMoK,EAAKqH,GAAOiD,qBAClBpK,EAAgBC,EAE3C/E,GAAE4O,MAAMG,IAAIrU,KAAOoU,GAClBG,EAAKxP,OAAO0P,SAChB,IAA2BC,IAAhBH,EAAKxP,OAAO,GAAWwP,EAAKxP,OAAOwP,EAAKxP,OAAO3C,OAAO,IAC7DuS,EAAOxI,EAAaoI,EAAKxP,OAAQ,IACrCO,GAAE4O,MAAMD,GAAKjU,IACTuU,KAAMA,EACNK,OAAQnT,KAAKqC,MAAM4Q,EAAKzS,EAAI0S,EAAK1S,EAAGyS,EAAK/T,EAAIgU,EAAKhU,GAAK,QAInE,MAAO2E,GAAE4O,MAAMD,GAAK3O,EAAEgP,UAAUC,KAGpC,QAASM,GAAmBvP,GACxB0O,EAAe1O,EAAG,MAAOA,EAAEsE,OAAOkL,OAASxP,EAAEsE,OAAOtB,KAAK3H,EAAG2E,EAAEsE,OAAOmL,OAASzP,EAAEsE,OAAOtB,KAAKrG,EAC3EqD,EAAEpE,OAAO4T,OAASxP,EAAEpE,OAAOoH,KAAK3H,EAAG2E,EAAEpE,OAAO6T,OAASzP,EAAEpE,OAAOoH,KAAKrG,GAGxF,QAAS+S,GAAmB1P,GACxB,GAAIiP,GAAOP,EAAe1O,EAAG,MAAOA,EAAEsE,OAAOtB,KAAK3H,EAAG2E,EAAEsE,OAAOtB,KAAKrG,EAAGqD,EAAEpE,OAAOoH,KAAK3H,EAAG2E,EAAEpE,OAAOoH,KAAKrG,GACjGgT,EAAOV,EAAKxP,OAAO,GAAI2P,EAAOH,EAAKxP,OAAOwP,EAAKxP,OAAO3C,OAAO,EACjEkD,GAAElD,OAASX,KAAKwJ,MAAMyJ,EAAK/T,EAAEsU,EAAKtU,EAAG+T,EAAKzS,EAAEgT,EAAKhT,GAGrD,QAASiT,GAAiBjB,GACtB,MAAO,UAAS3O,GACZ,GAAIiP,GAAOjP,EAAE4O,MAAMD,GAAK3O,EAAEgP,UAAUC,IACpC,OAAO3S,GAAc2S,EAAKxP,OAAQwP,EAAKzS,YAI/C,QAASqT,GAAuBlB,GAC5B,MAAO,UAAS3O,GACZ,GAAIiP,GAAOjP,EAAE4O,MAAMD,GAAK3O,EAAEgP,UAAUC,KAChCxP,EAASO,EAAEpE,OAAOoH,KAAK3H,EAAI2E,EAAEsE,OAAOtB,KAAK3H,EACrC4T,EAAKxP,OAAOkM,MAAM,GAAGwD,UAAYF,EAAKxP,MAC9C,OAAOnD,GAAcmD,EAAQwP,EAAKzS,YAM1C,QAASsT,GAAOC,EAAaC,GACrBD,EAAYE,MAAM,SAASC,GAAc,MAA6B,KAAtBA,EAAWC,UAC3DH,GACJ,IAAI3H,GAAI,CACR0H,GAAYxG,QAAQ,SAAS2G,GACzBA,EACKtC,KAAK,aAAevF,IACpBuF,KAAK,UAAW,aAAoBvF,GAAG2H,QAIpD,QAASI,GAAY/H,GACjB,OAAQgI,KAAMhI,EAAErF,KAAK3H,EAAIgN,EAAEhI,OAAQiQ,IAAKjI,EAAErF,KAAKrG,EAAI0L,EAAE/H,OAC7CiQ,MAAOlI,EAAErF,KAAK3H,EAAIgN,EAAEhI,OAAQmQ,OAAQnI,EAAErF,KAAKrG,EAAI0L,EAAE/H,QAG7D,QAASmQ,GAAaC,EAAIC,GACtB,OACIN,KAAMlU,KAAKuH,IAAIgN,EAAGL,KAAMM,EAAGN,MAC3BC,IAAKnU,KAAKuH,IAAIgN,EAAGJ,IAAKK,EAAGL,KACzBC,MAAOpU,KAAKqG,IAAIkO,EAAGH,MAAOI,EAAGJ,OAC7BC,OAAQrU,KAAKqG,IAAIkO,EAAGF,OAAQG,EAAGH,SAIvC,QAASI,GAAgBlW,GACrB,OACI2V,KAAM3V,EAAEW,EACRiV,IAAK5V,EAAEiC,EACP4T,MAAO7V,EAAEW,EACTmV,OAAQ9V,EAAEiC,GAIlB,QAASkU,GAAYrH,GAEjB,GAAI/J,GAAS+J,EAAEoF,MAAMkC,IAAItH,EAAEwF,UAAUC,KAAKxP,MAC1C,OAAOA,GAAOzB,IAAI4S,GAAiB5G,OAAOyG,GAG9C,QAASM,GAAaC,GAClB,GAAIC,GAAQC,GAAGrD,UAAU,eAAezG,MAAM,GAC9C6J,GAAME,QACDC,OAAO,OAAQ,gBAAgBtN,MAC5BuN,MAAO,SACPC,KAAM,wBACNC,OAAQ,SAEhBN,EACKnN,MACGzI,EAAG2V,EAAOX,KACV1T,EAAGqU,EAAOV,IACVhO,MAAO0O,EAAOT,MAAQS,EAAOX,KAC7B9N,OAAQyO,EAAOR,OAASQ,EAAOV,MAK3C,QAASkB,GAAYnM,EAAM8H,IACnBlB,GAAOwF,eAAiBxF,GAAOyF,gBAAkBrM,EAAK8K,SAEtDwB,GAAUtM,EAAK+B,OAAOpJ,IAAIoS,GAAapG,OAAOyG,GAC9CkB,GAAUxE,EAAK/F,OAAOpJ,IAAI6S,GAAa7G,OAAOyG,EAAckB,KAIpE,QAASC,KACL,GAAG3F,GAAOwF,cAAe,CACrB,IAAIE,GACA,MACJ,IACyDE,GADrDC,EAASH,GAAQpB,MAAQoB,GAAQtB,KAAM0B,EAAUJ,GAAQnB,OAASmB,GAAQrB,IAC1E0B,EAAU/F,GAAO3J,QAAS2P,EAAUhG,GAAO1J,QAC5C0J,IAAOiG,cACNnB,EAAaY,GACjB,IAAiCQ,GAC7BC,EADAC,EAAOpG,GAAOwF,cAAoBa,GAAa,EAAE,GAAIC,EAAQ,CAEjE,KAAI,UAAW,WAAY,cAAcC,QAAQH,IAAS,EAAG,CACzD,GAAII,GAAMR,EAAUD,EAAQU,EAAMX,EAAUD,EACxCa,EAAMD,EAAID,CACF,aAATJ,GACCD,GAAOO,EACPR,EAAM,OAGNC,EAAa,aAAPC,EACNF,EAAM,aAAeQ,EAAMP,EAAM,OAAS,UAE9CE,GAAarG,GAAO2G,UAAUvC,KAAMpE,GAAO2G,UAAUtC,KACrDiC,EAAQH,GACHH,EAAUhG,GAAO2G,UAAUtC,IAAMrE,GAAO2G,UAAUpC,QAAUyB,GAC5DD,EAAS/F,GAAO2G,UAAUvC,KAAOpE,GAAO2G,UAAUrC,OAASyB,MAE/D,IAAmB,gBAATK,IAAqBA,EAAKQ,MAAM,WAAY,CACvD,GAAItR,GAAQ8Q,EAAKS,MAAM,KAAK,GAAGC,cAAcD,MAAM,GACnD,IAAGvR,EAAMzE,OAAS,EACd,KAAM,IAAIiE,OAAM,mCAAqCQ,EAAMzE,OAC/D,IAAIkU,GAASgC,GACbV,GAAYW,EAAMX,YAClBC,EAAQU,EAAMV,QACdhR,EAAMgI,QAAQ,SAAS2J,GACnB,OAAOA,GACP,IAAK,IACDZ,EAAU,GAAKa,EAAWb,EAAWtB,EAAOX,KAC5C,MACJ,KAAK,IACDiC,EAAU,GAAKc,EAAUd,EAAWtB,EAAOV,IAC3C,MACJ,KAAK,IACDgC,EAAU,GAAKe,EAAYf,EAAWtB,EAAOT,MAC7C,MACJ,KAAK,IACD+B,EAAU,GAAKgB,EAAahB,EAAWtB,EAAOR,OAC9C,MACJ,SACI,KAAM,IAAIzP,OAAM,qCAAuCmS,EAAI,YAIlE,IAAmB,kBAATb,GAAqB,CAChC,GAAIkB,GAAMlB,EAAKP,EAAQC,EAASC,EAAQC,EACxCE,GAAMoB,EAAIpB,IACVG,EAAYiB,EAAIjB,UAChBC,EAAQgB,EAAIhB,MACZV,EAAU0B,EAAI1B,YAEb,CAAA,GAAmB,gBAATQ,GAGX,KAAM,IAAItR,OAAM,kCAAqCsR,GAFrDF,GAAMlG,GAAOwF,cAIN1J,SAARoK,IACKN,IACAA,GAAWF,GAAQtB,KAAMsB,GAAQrB,IAAKwB,EAAQC,GAAS5U,KAAK,MAChEqW,GAAK1P,MACD+N,QAASA,EACT4B,oBAAqBtB,KAG7Bc,EAAMX,UAAUA,GAAWC,MAAMA,GAAOmB,MAAMF,KAItD,QAASG,GAAKtO,EAAMuO,EAAWzG,EAAM0G,EAAWC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,GAC/GtZ,QAAQuZ,OAAOjH,EAAK/F,OAAO6I,MAAMrD,GAEjC,IAAIyH,KACJT,GACKhG,KAAK,SAASvF,GACXgM,EAAYpI,GAAOjD,QAAQ9H,KAAKmH,KAAM,IAEzCvE,KAAK,YAAa,SAAU9D,GAEzB,MAAO,aAAeA,EAAEgD,KAAK3H,EAAI,IAAM2E,EAAEgD,KAAKrG,EAAI,KAE1D,IAAI2X,GAASjP,EACJ6K,aACAqE,SAAS1H,KACT2H,MAAM,SAASnM,GACZ,MAAO2E,GAAiBqH,EAAYpI,GAAOjD,QAAQ9H,KAAKmH,OAE3DvE,KAAK,UAAWmI,GAAOwI,YAAYvT,MACnC4C,KAAK,YAAa,SAAU9D,GACzB,MAAO,aAAeA,EAAEgD,KAAK3H,EAAI,IAAM2E,EAAEgD,KAAKrG,EAAI,MAErDiR,KAAK,aAAc,SAAS5N,GACzBA,EAAEwP,MAAQxP,EAAEgD,KAAK3H,EACjB2E,EAAEyP,MAAQzP,EAAEgD,KAAKrG,GAI7BwQ,GAAKS,KAAK,SAAS5N,GACfA,EAAE4O,MAAMkC,IAAM,KACd9Q,EAAE4O,MAAMtN,IAAM,MAGlB,IAAIoT,KACJb,GACKjG,KAAK,SAASpE,GACXkL,EAAYzI,GAAO0I,QAAQzT,KAAKsI,KAAM,IAEzCoE,KAAK,SAASpE,GAGX,GAAImF,EAC6B,YAA9B1C,GAAOa,oBACN4C,EAAmBlG,GACnBmF,EAAM,QAGNY,EAAmB/F,GACnBmF,EAAM,OAEP1C,GAAOsB,cAAcrM,KAAKsI,IACzB3P,EAAGgK,OAAO,IAAMoI,GAAO6B,QAAQtE,EAAG,SACjC1F,KAAK,SAAU,WACZ,MAAO0F,GAAEoF,MAAMD,GAAKnF,EAAEwF,UAAUM,WAG3CxL,KAAK,IAAK8L,EAA+C,WAA9B3D,GAAOa,mBAAkC,MAAQ,OAEjF,IAAI8H,GAASzH,EAAKS,KAAK8B,GACd9B,KAAK,SAASpE,GACRyC,GAAOsB,cAAcrM,KAAKsI,IACzB3P,EAAGgK,OAAO,IAAMoI,GAAO6B,QAAQtE,EAAG,SAC7B0G,aAAaqE,SAAS1H,KACtB2H,MAAMxH,GAAiB,IACvBlJ,KAAK,SAAU,WACZ,MAAO0F,GAAEoF,MAAMkC,IAAItH,EAAEwF,UAAUM,WAIhDY,aACEqE,SAAS1H,KACT2H,MAAM,SAAShL,GACZ,MAAOwD,GAAiB0H,EAAYzI,GAAO0I,QAAQzT,KAAKsI,OAE3D1F,KAAK,UAAWmI,GAAO4I,YAAY3T,MACnC4C,KAAK,IAAK,SAAS0F,GAChB,GAAIsL,GAAqC,WAA9B7I,GAAOa,oBACV4H,EAAYzI,GAAO0I,QAAQzT,KAAKsI,IAAM,MAAQ,KACtD,OAAOoG,GAAiBkF,GAAMtL,IAE1C2K,GACKrQ,KAAK,IAAK+L,EAAqD,WAA9B5D,GAAOa,mBAAkC,MAAQ,OACvF,IAAIiI,GAAYb,EAAUhE,aACrBqE,SAAS1H,KACT2H,MAAM,SAAShL,GACZ,MAAOwD,GAAiB0H,EAAYzI,GAAO0I,QAAQzT,KAAKsI,OAE3D1F,KAAK,UAAWmI,GAAO4I,YAAY3T,MACnC4C,KAAK,IAAK,SAAS0F,GAChB,GAAIsL,GAAqC,WAA9B7I,GAAOa,oBACV4H,EAAYzI,GAAO0I,QAAQzT,KAAKsI,IAAM,MAAQ,KACtD,OAAOqG,GAAuBiF,GAAMtL,IAEX,YAA9ByC,GAAOa,qBAEHD,KAAyB,IACxB+H,EAASA,EAAO1E,aACXqE,SAAS1H,KACT/I,KAAK,IAAK8L,EAAiB,QAChCmF,EAAYA,EAAU7E,aACjBqE,SAAS1H,KACT/I,KAAK,IAAK+L,EAAuB,UAMtC+E,EACK9Q,KAAK,IAAK8L,EAAiB,QAChCmF,EACKjR,KAAK,IAAK8L,EAAiB,UAMpC3D,GAAO+I,mBACPlF,GAAQwE,EAAQM,EAAQG,GAAY,WAAa/G,GAAY,KAEjE8F,EAAUhQ,KAAK,IAAK8L,EAAiB,QA4NzC,QAASnC,GAAUzN,EAAGiV,EAAM3H,GACxB,GAAIE,GAAKvB,GAAO6B,QAAQ9N,EAAGiV,GACvBC,EAAcjJ,GAAOkJ,eAAe3H,IAAMF,EAAM,aAcpD,OAZGA,IACC4H,EACKpR,KAAK,UAAW,cAChBA,KAAK,OAAQsR,GAAQ9H,GAAM+H,MAC3BvR,KAAK,OAAQsR,GAAQ9H,GAAMgI,MAC3BxR,KAAK,cAAe,kBACpBA,KAAK,cAAesR,GAAQ9H,GAAMhL,MAAM2J,GAAOsJ,cAAcrU,KAAKlB,IAClE8D,KAAK,eAAgBsR,GAAQ9H,GAAM/K,OAAO0J,GAAOsJ,cAAcrU,KAAKlB,IACpE8D,KAAK,SAAUmI,GAAOmB,WAAWlM,KAAKlB,IACtC8D,KAAK,OAAQmI,GAAOmB,WAAWlM,KAAKlB,IACpCwV,KAAKJ,GAAQ9H,GAAMmI,cAErBnI,EAAOE,EAAK,KAGvB,QAASkI,GAAgBC,EAAKpD,GAC1BqD,GAAaD,EACbE,GAAStD,EACTrB,GAAGpN,KAAK,YAAa,aAAe6R,EAAM,WAAkBpD,EAAQ,KAGxE,QAASS,KACL,OACI3C,KAAMsB,GAAQtB,KAAOpE,GAAO2G,UAAUvC,KACtCC,IAAKqB,GAAQrB,IAAMrE,GAAO2G,UAAUtC,IACpCC,MAAOoB,GAAQpB,MAAQtE,GAAO2G,UAAUrC,MACxCC,OAAQmB,GAAQnB,OAASvE,GAAO2G,UAAUpC,QAKlD,QAAS2C,GAAWb,EAAWjX,GAC3B,MAAOiX,GAAU,GAAKwD,GAAQza,GAAKya,GAAQC,QAAQ,GAEvD,QAAS3C,GAAUd,EAAW3V,GAC1B,MAAO2V,GAAU,GAAK0D,GAAQrZ,GAAKqZ,GAAQD,QAAQ,GAEvD,QAAS1C,GAAYf,EAAWjX,GAC5B,MAAOiX,GAAU,GAAKwD,GAAQza,GAAKya,GAAQC,QAAQ,GAEvD,QAASzC,GAAahB,EAAW3V,GAC7B,MAAO2V,GAAU,GAAK0D,GAAQrZ,GAAKqZ,GAAQD,QAAQ,GAGvD,QAASE,KACL,GAAI3D,GAAYzY,EAAG6Z,MAAMpB,SACzB,IAAGrG,GAAOyF,cAAe,CACrB,GAIItO,GAJA8S,EAAUJ,GAAQK,SAAUC,EAAUJ,GAAQG,SAC9CnF,EAASgC,IACTqD,EAAQrF,EAAOX,KAAO6F,EAAQ,GAAII,EAAQtF,EAAOT,MAAQ2F,EAAQ,GACjEK,EAAWvF,EAAOT,MAAQS,EAAOX,KAAS6F,EAAQ,GAAKA,EAAQ,GACxDM,EAAU,CAWrB,QAVGH,GAASC,EAEJlT,EADDmT,EACS,OAEA,QACPF,GAAUC,IAEXlT,EADDmT,EACS,QAEA,QACTnT,GACP,IAAK,OACDkP,EAAU,GAAKa,EAAWb,EAAWtB,EAAOX,KAC5C,MACJ,KAAK,QACDiC,EAAU,GAAKe,EAAYf,EAAWtB,EAAOT,MAC7C,MACJ,WACMiG,EAcN,OAZAH,EAAQrF,EAAOV,IAAM8F,EAAQ,GAAIE,EAAQtF,EAAOR,OAAS4F,EAAQ,GACjEG,EAAWvF,EAAOR,OAASQ,EAAOV,IAAQ8F,EAAQ,GAAKA,EAAQ,GAC5DC,GAASC,EAEJlT,EADDmT,EACS,MAEA,SACPF,GAAUC,IAEXlT,EADDmT,EACS,SAEA,OACTnT,GACP,IAAK,MACDkP,EAAU,GAAKc,EAAUd,EAAWtB,EAAOV,IAC3C,MACJ,KAAK,SACDgC,EAAU,GAAKgB,EAAahB,EAAWtB,EAAOR,OAC9C,MACJ,WACMgG,EAGHA,EAAQ,GACPvD,EAAMX,UAAUA,GAExBoD,EAAgBpD,EAAWzY,EAAG6Z,MAAMnB,OAGxC,QAASkE,GAAUC,EAAGC,GACfnD,IACCA,GAAK1P,KAAK,QAAS4S,GAAKzK,GAAO3J,SAC1BwB,KAAK,SAAU6S,GAAK1K,GAAO1J,UAIxC,QAASqU,KAqBL,MApBApD,IAAOvH,GAAO3B,OAAOuM,OAAO,OAC5BJ,IAEAK,GAAQtD,GAAKqD,OAAO,YAEjB5K,GAAO8K,kBAENjB,GAAUjc,EAAG0Y,MAAMyE,SACdb,QAAQ,EAAGlK,GAAO3J,UAClByT,OAAO,EAAG9J,GAAO3J,UACtB0T,GAAUnc,EAAG0Y,MAAMyE,SACdb,QAAQ,EAAGlK,GAAO1J,WAClBwT,OAAO,EAAG9J,GAAO1J,WACtB0Q,EAAQpZ,EAAGod,SAASC,OACfC,GAAG,OAAQlB,GACX5a,EAAEya,IAASnZ,EAAEqZ,IAClBxC,GAAKgC,KAAKvC,GACVO,GAAK2D,GAAG,gBAAiB,OAGtB3D,GA5oEX,GAMI4D,GAAiBC,EAIjBpE,EAAO6C,GAASE,GAChBsB,GAASC,GAXTtL,GAASlS,EAAGyd,gBACZhE,GAAO,KAAMsD,GAAQ,KAAM5F,GAAK,KAAMuG,GAAa,KAAMC,GAAa,KACtE3L,GAAU,KACVmC,GAAYrU,EAAG8d,SAAS,MAAO,QAAS,SACxCC,MAAaC,MACbC,MAEAC,MAAgB3C,MAChBhH,IAAW,EACXwH,IAAc,EAAE,GAAIC,GAAS,CAajC5J,IAAO3J,MAAQsF,EAAS,KAAKM,MAAM,SAASwO,GACxCD,EAAUC,EAAE,KAehBzK,GAAO1J,OAASqF,EAAS,KAAKM,MAAM,SAASyO,GACzCF,EAAU,EAAEE,KAahB1K,GAAO3B,KAAO1C,EAAS,MAAMM,MAAM,SAASsB,GACrCA,EAAEwO,SACDnd,QAAQqC,IAAI,4BAA8B0O,EAAS,4BAa3DK,GAAO8K,cAAgBnP,GAAS,GA+BhCqE,GAAOwF,YAAc7J,EAAS,WAK9BqE,GAAOyF,YAAc9J,GAAS,GAc9BqE,GAAOgM,SAAWrQ,EAAS,MAC3BqE,GAAOiM,UAAY,WACf,GAAKT,IAAcC,GAAnB,CAEA,GAAIrS,GAAOoS,GAAW5J,UAAU,SAC5BV,EAAOuK,GAAW7J,UAAU,QAChC+D,GAAUvM,EAAM8H,KAkBpBlB,GAAOkM,cAAgBvQ,IAoBvBqE,GAAOmM,UAAYxQ,IAkBnBqE,GAAOoM,cAAgBzQ,IAiBvBqE,GAAOqM,UAAY1Q,IAcnBqE,GAAOjD,QAAUiD,GAAOsM,gBAAkB3Q,EAAS,SAAS4Q,GACxD,MAAOA,GAAGjb,MAcd0O,GAAO0I,QAAU1I,GAAOwM,gBAAkB7Q,EAAS,SAAS4Q,GACxD,MAAOA,GAAGjb,MAgBd0O,GAAO9B,WAAa8B,GAAOyM,eAAiB9Q,EAAS,SAAS4Q,GAC1D,MAAOA,GAAGvQ,MAAM0Q,aAepB1M,GAAO5B,WAAa4B,GAAO2M,eAAiBhR,EAAS,SAAS4Q,GAC1D,MAAOA,GAAGvQ,MAAM4Q,aAapB5M,GAAOhK,WAAagK,GAAO6M,mBAAqBlR,EAAS,IAazDqE,GAAOnJ,gBAAkBmJ,GAAO8M,wBAA0BnR,EAAS,GAYnEqE,GAAO+M,WAAa/M,GAAOgN,mBAAqBrR,EAAS,SAazDqE,GAAOiN,cAAgBtR,EAAS,MAYhCqE,GAAOkN,SAAWlN,GAAOmN,iBAAmBxR,EAAS,SAWrDqE,GAAOwI,YAAc7M,EAAS,GAY9BqE,GAAOpJ,YAAc+E,EAAS,GAiB9BqE,GAAOoN,UAAYpN,GAAOqN,kBAAoB1R,EAAS,SAAS4Q,GAC5D,MAAOA,GAAGvQ,MAAMsR,OAASf,EAAGvQ,MAAMqF,OAYtCrB,GAAOuN,cAAgBvN,GAAOwN,sBAAwB7R,EAAS,MAW/DqE,GAAO/J,aAAe+J,GAAOyN,qBAAuB9R,GAAS,GAuB7DqE,GAAOhL,UAAY2G,EAASzG,GAiB5B8K,GAAO0N,UAAY1N,GAAO2N,kBAAoBhS,EAAS,SAAS4Q,GAC5D,MAAOvM,IAAOsM,kBAAkBC,KAepCvM,GAAO4N,aAAejS,EAAS,MAa/BqE,GAAO6N,UAAY7N,GAAO8N,kBAAoBnS,EAAS,MAYvDqE,GAAOmB,WAAanB,GAAO+N,mBAAqBpS,EAAS,SAWzDqE,GAAOoB,gBAAkBpB,GAAOgO,wBAA0BrS,EAAS,GAYnEqE,GAAO4I,YAAc5I,GAAOiO,oBAAsBtS,EAAS,GAiB3DqE,GAAOkO,UAAYlO,GAAOmO,kBAAoBxS,EAAS,SAAS5H,GAC5D,MAAOiM,IAAO0I,UAAU3U,KAc5BiM,GAAOsB,cAAgBtB,GAAOoO,sBAAwBzS,EAAS,OAa/DqE,GAAOyB,cAAgBzB,GAAOqO,sBAAwB1S,EAAS,MAW/DqE,GAAOsJ,cAAgB3N,EAAS,GAkBhCqE,GAAOsO,aAAetO,GAAOuO,qBAAuB5S,EAAS,SAAS4Q,GAClE,OAAQA,EAAGvQ,MAAMwS,YAKrBxO,GAAOyO,YAAczO,GAAOuO,qBAAuB5S,GAAS,GAkB5DqE,GAAOI,eAAiBzE,EAAS,aAkBjCqE,GAAO0O,WAAa1O,GAAO2O,qBAAuBhT,EAAS,SAAS4Q,GAChE,MAAOA,GAAGvQ,MAAM4S,WAgBpB5O,GAAOM,WAAa3E,EAAS,MAU7BqE,GAAOQ,QAAU7E,EAAS,MAa1BqE,GAAOK,WAAa1E,EAAS,IAY7BqE,GAAOc,mBAAqBnF,EAAS,KAiBrCqE,GAAOa,iBAAmBlF,EAAS,QAanCqE,GAAO6O,YAAclT,EAAS,GAW9BqE,GAAO8O,eAAiBnT,GAAS,GAYjCqE,GAAO+O,UAAYpT,EAAS,GAmC5BqE,GAAOgP,UAAYrT,EAAS,SAASP,EAAOE,GACxC,WAaJ0E,GAAOiD,mBAAqBtH,EAAS,IAiBrCqE,GAAOiP,aAAetT,EAAS,MAE/BqE,GAAO9D,QAAU,SAASgT,EAAOC,EAAKjhB,GAClC,IAAI,GAAIO,KAAKP,GAAO,CAChB,IAAI8R,GAAOvR,GACP,KAAM,IAAIqG,OAAM,qBAAuBrG,EAC3CuR,IAAOvR,GAAGyN,QAAQgT,EAAOC,EAAMjhB,EAAMO,GAAK,MAE9C,MAAOuR,KAiBXA,GAAOoP,mBAAqBzT,GAAS,GAWrCqE,GAAOqP,gBAAkB1T,GAAS,GAWlCqE,GAAOsP,SAAW,WAEd,MADAnE,GAAkBC,EAAkB,KAC7BlV,MAYX8J,GAAOuP,cAAgB5T,EAAS,MAEhCqE,GAAOwP,YAAc7T,GAAS,GAa9BqE,GAAOyP,YAAc9T,GAAS,GAa9BqE,GAAO+I,gBAAkBpN,GAAS,GAYlCqE,GAAO0P,OAAS/T,EAAS,MAAMM,MAAM,SAAS0T,GAC1CA,EAAEhQ,OAAOK,MAwBbA,GAAO4P,MAAQ,SAASrO,EAAIsO,GACxB,MAAwB,KAArB3gB,UAAU2B,OACFib,GAAUvK,GAElBuK,GAAUvK,KAAQsO,EACV7P,IACR8L,GAAUvK,IACTuK,GAAUvK,GAAI5B,OAAO,MACzBmM,GAAUvK,GAAMsO,EACbA,GACCA,EAAOlQ,OAAOK,IACXA,KAiBXA,GAAOC,gBAAkBtE,EAAS,QAElCqE,GAAOO,SAAW5E,EAAS,GAG3BqE,GAAO8P,OAAS,SAAS/b,GACrB,MAAO,QAAUiM,GAAO0I,QAAQzT,KAAKlB,GAAGhE,QAAQ,WAAY,MAGhEiQ,GAAO6B,QAAU,SAAS9N,EAAGiV,GACzB,MAAO,SAAWA,EAAO,IAAMhJ,GAAO8P,OAAO/b,IAGjDiM,GAAO+P,WAAa,SAAShc,GACzB,MAAO,YAAciM,GAAO8P,OAAO/b,IAKvCiM,GAAOgQ,QAAU,SAASzO,GACtB,MAAOoK,IAAOpK,GAAMoK,GAAOpK,GAAIlS,KAAO,MAY1C2Q,GAAOG,mBAAqBxE,GAAS,GA+BrCqE,GAAOiQ,WAAa,SAAStI,GAQzB,MAPG3H,IAAO0N,aACN/F,EAAUiD,OAAO,SACrBjD,EAAUhG,KAAK5M,EAAYiL,KAC3B2H,EAAUiD,OAAOlV,EAAcsK,KAC1BnI,KAAK,QAAS,cACnB8P,EAAUiD,OAAO,QACZ/S,KAAK,QAAS,cACZmI,IAGXA,GAAO8B,YAAc,SAAS1I,GAC1B,GAAI8W,GAAe9W,EAAKyE,OAAOzI,EAAc4K,IAC7CkQ,GAAatY,OAAO,eAAeuY,SACnCD,EAAavO,KAAK5M,EAAYiL,KAC9BkQ,EAAa/K,OAAOzP,EAAcsK,IAAS,gBACtCnI,KAAK,QAAS,cACnBuB,EAAKxB,OAAO,SACPwY,KAAKpQ,GAAO0N,UAAUzY,KAC3B,IAAImb,GAAOhX,EAAKxB,OAAO,mBACnByY,EAAQD,EAAKxO,UAAU,SAASzG,KAAK,SAASiB,GAC9C,GAAIkU,GAAQtQ,GAAOoN,UAAUnY,KAAKmH,EAClC,KAAIkU,EACA,QACqB,iBAAVA,KACXA,GAASA,GACb,IAAIC,GAAQD,EAAMzf,OAAO,EAAI,IAAOyf,EAAMzf,OAAO,GAAG,EAAI,EAAEyf,EAAMzf,OAAO,CACvE,OAAOyf,GAAMve,IAAI,SAASye,EAAM5gB,GAAK,OAAQ4gB,KAAMA,EAAMC,KAAS,GAAH7gB,EAAO2gB,EAAQ,GAAK,SAiBvF,OAfAF,GAAMnL,QAAQ0F,OAAO,SAChB/S,KAAK,IAAK,GACVA,KAAK,KAAM,SAAS9D,GAAK,MAAOA,GAAE0c,MACvCJ,EAAMD,KAAK,SAASrc,GAAK,MAAOA,GAAEyc,OAClCH,EAAMK,OAAOP,SACbC,EACKvY,KAAK,OAAQmI,GAAOuN,cAActY,MAClC0M,KAAK7L,EAAUkK,KACpB5G,EAAKxB,OAAO,eACP+J,KAAKjK,EAAYsI,KACjBnI,MACGyN,OAAQtF,GAAO+M,WAAW9X,KAC1B0b,eAAgB3Q,GAAOnJ,gBAAgB5B,KACvCoQ,KAAMvW,EAAQkR,GAAOiN,iBAAmBlR,EAAUiE,GAAOkN,SAASjY,QAEnE+K,IAqBXA,GAAOuC,UAAY,WACf,MAAOJ,IAoBX,IAAIC,KAAe,CACnBpC,IAAOwC,OAAS,WAIZ,MAAGL,KACCC,IAAe,EACRlM,MAEC8J,GAAO4Q,eAGvB5Q,GAAO4Q,YAAc,WA6SjB,QAASC,GAAcC,EAAQC,GAC3BD,EAAOxT,QAAQ,SAAS0T,GACpB,GAAI5U,GAAIuP,GAAOqF,EAAGC,YAClB7U,GAAErF,KAAK3H,EAAI4hB,EAAG5hB,EACdgN,EAAErF,KAAKrG,EAAIsgB,EAAGtgB,IAElBqgB,EAAOzT,QAAQ,SAAS4T,GACZtF,GAAOsF,EAAGC,eAnT1B,GAAI/V,GAAQ4E,GAAOmM,YAAYiF,MAC3B9V,EAAQ0E,GAAOqM,YAAY+E,KAC/B,IAAGjP,GACC,KAAM,IAAIrN,OAAM,2CAEpBqN,KAAW,EAERrC,IACCA,GAAQW,aAAaC,QAAS,SAE/BV,GAAOoP,sBACNvP,IAGDG,GAAO4N,iBACNxS,EAAQvN,EAAYwjB,UAAUC,GAAGtR,GAAO4N,gBAAgBxS,EAAMsE,MAAM,GAAI,EAAGtE,EAAMvK,SAElFmP,GAAOiP,iBACN3T,EAAQzN,EAAYwjB,UAAUC,GAAGtR,GAAOiP,gBAAgB3T,EAAMoE,MAAM,GAAI,EAAGpE,EAAMzK,QAGrF,IAAI0gB,GAASpgB,EAAmBwa,GAAQvQ,EAAO,SAAS9L,GACpD,MAAO0Q,IAAOjD,UAAUzN,IACzB,SAASkiB,EAAIliB,GACZkiB,EAAGniB,KAAOC,EACVkiB,EAAGza,KAAOya,EAAGza,SACbya,EAAGza,KAAKka,YAAcjR,GAAOjD,QAAQ9H,KAAKuc,GACvCxR,GAAO6N,cACN2D,EAAGza,KAAK0a,cAAgBzR,GAAO6N,UAAU5Y,KAAKuc,MAElDE,EAASvgB,EAAmBya,GAAQtQ,EAAO,SAASiC,GACpD,MAAOyC,IAAO0I,UAAUnL,IACzB,SAASoU,EAAIpU,GACZoU,EAAGtiB,KAAOkO,EACVoU,EAAG5a,KAAO4a,EAAG5a,SACb4a,EAAG5a,KAAKoa,YAAcnR,GAAO0I,QAAQzT,KAAK0c,GAC1CA,EAAG5a,KAAK6a,eAAiB5R,GAAO9B,WAAWjJ,KAAK0c,GAChDA,EAAG5a,KAAK8a,eAAiB7R,GAAO5B,WAAWnJ,KAAK0c,GAChDA,EAAGtZ,OAASsT,GAAOgG,EAAG5a,KAAK6a,gBAC3BD,EAAGhiB,OAASgc,GAAOgG,EAAG5a,KAAK8a,gBAC3BF,EAAG5a,KAAK+a,eAAiB9R,GAAO0O,WAAWzZ,KAAK0c,IAYpD,IARAD,EAASA,EAAO7T,OAAO8C,GAGvB+Q,EAASA,EAAO7T,OAAO,SAASN,GAAK,MAAOA,GAAElF,SAAWkF,EAAE5N,SAE3D+hB,EAASA,EAAO7T,OAAOmC,GAAOyO,YAAYxZ,MAGvC+K,GAAOyP,cAAe,CACrB,GAAIsC,KACJL,GAAOpU,QAAQ,SAASC,GACpBwU,EAAMxU,EAAExG,KAAK6a,iBAAkB,EAC/BG,EAAMxU,EAAExG,KAAK8a,iBAAkB,IAEnCN,EAASA,EAAO1T,OAAO,SAASzB,GAAK,MAAO2V,GAAM3V,EAAErF,KAAKka,cACzD,KAAI,GAAItf,KAAKga,IACLoG,EAAMpgB,UACCga,IAAOha,GAU1B,GAPA4f,EAAOjU,QAAQ,SAAShO,EAAGM,GACvBN,EAAE0iB,MAAQpiB,IAGdic,IAAUoG,OAAQV,EAAO1gB,OAAQqhB,OAAQR,EAAO7gB,QAG7CmP,GAAOiD,qBAAsB,CAE5B,IAAI,GADAkP,GAAK,GAAIvP,OAAM2O,EAAO1gB,QAClBjB,EAAI,EAAGA,EAAIuiB,EAAGthB,SAAUjB,EAAG,CAC/BuiB,EAAGviB,GAAK,GAAIgT,OAAMuP,EAAGthB,OACrB,KAAI,GAAIuhB,GAAI,EAAGA,EAAID,EAAGthB,SAAUuhB,EAC5BD,EAAGviB,GAAGwiB,IACFhW,EAAG,EACHuG,OACIG,SAWhB,IAPA4O,EAAOpU,QAAQ,SAASC,GACpB,GAAI9F,GAAMvH,KAAKuH,IAAI8F,EAAElF,OAAO2Z,MAAOzU,EAAE5N,OAAOqiB,OACxCzb,EAAMrG,KAAKqG,IAAIgH,EAAElF,OAAO2Z,MAAOzU,EAAE5N,OAAOqiB,MAC5CzU,GAAEwF,SAAWoP,EAAG1a,GAAKlB,GAAK6F,IAC1BmB,EAAEoF,MAAQwP,EAAG1a,GAAKlB,GAAKoM,MACvBpF,EAAEoF,MAAMG,IAAI/R,KAAK0G,IAAQ8F,EAAElF,OAAO2Z,SAElCpiB,EAAI,EAAGA,EAAIuiB,EAAGthB,SAAUjB,EACxB,IAAIwiB,EAAI,EAAGA,EAAID,EAAGthB,SAAUuhB,EACrBD,EAAGviB,GAAGwiB,GAAGhW,IACR+V,EAAGviB,GAAGwiB,GAAGzP,MAAMvG,EAAI+V,EAAGviB,GAAGwiB,GAAGhW,GAI5C,GAAI8E,GAAOuK,GAAW7J,UAAU,SACvBzG,KAAKuW,EAAQ1R,GAAO0I,QAAQzT,MACjC2S,EAAY1G,EAAKgE,QAAQ0F,OAAO,YAC3B/S,MACGuN,MAAO,OACP7D,GAAIvB,GAAO8P,OACXuC,QAAS,GAGrBnR,GAAKwP,OAAOzM,aACPqE,SAAS1H,KACT2H,MAAMvI,GAAO6O,eACbhX,KAAK,UAAW,GAChB8J,KAAK,SAAS5N,GACXyN,EAAUzN,EAAG,OAAQ,MACrByN,EAAUzN,EAAG,OAAQ,QAExBoc,QAGL,IAAItI,GAAY4D,GAAW7J,UAAU,eAC5BzG,KAAKuW,EAAQ1R,GAAO0I,QAAQzT,MACjC6S,EAAiBD,EAAU3C,QAAQ0F,OAAO,YACzC/S,KAAK,QAAS,cACdA,KAAK,UAAW,GAChBA,KAAK,SAAU,SACfA,KAAK,eAAgB,IACrBqT,GAAG,YAAa,SAASnX,GACtBnG,EAAGgK,OAAO,IAAMoI,GAAO8P,OAAO/b,GAAK,UAC9B8D,KAAK,aAAc,aAE3BqT,GAAG,WAAY,SAASnX,GACrBnG,EAAGgK,OAAO,IAAMoI,GAAO8P,OAAO/b,GAAK,UAC9B8D,KAAK,aAAc,WAEhCgQ,GAAU6I,OAAOP,QAEjB,IAAIpI,GAAa0D,GAAW7J,UAAU,eAC7BzG,KAAKuW,EAAQ1R,GAAO0I,QAAQzT,MACjC+S,EAAkBD,EAAW7C,QAC1B0F,OAAO,QACL/S,KAAK,KAAM,SAAS9D,GACjB,MAAOiM,IAAO8P,OAAO/b,GAAK,WAE7B8D,KAAK,aAAc,UACnBA,MAAMuN,MAAQ,aACRkN,cAAe,SACflgB,IAAG,IACXwY,OAAO,YACL/S,KAAK,cAAe,OACpBA,KAAK,aAAc,SAAS9D,GACzB,GAAIwN,GAAKvB,GAAO+P,WAAWhc,EAC3B,OAAO,IAAMwN,IAErB0G,EAAY4C,GAAMjJ,UAAU,wBACvBzG,KAAKuW,EAAQ1R,GAAO+P,YACzB7H,EAAiBD,EAAU/C,QACtB0F,OAAO,YAAY/S,MAChBuN,MAAO,kBACP7D,GAAIvB,GAAO+P,YAEvBhI,GAAWpG,KAAK,SAAS5N,GACrBA,EAAEwe,SAAW,OAEd3Q,UAAU,YACRwO,KAAK,SAASrc,GACX,MAAOiM,IAAOkO,UAAUjZ,KAAKlB,KAErCgU,EAAW2I,OAAOzM,aACbqE,SAAS1H,KACT2H,MAAMvI,GAAO6O,eACbhX,KAAK,UAAW,GAAGsY,QAGxB,IAAI/W,GAAOoS,GAAW5J,UAAU,SACvBzG,KAAKoW,EAAQvR,GAAOjD,QAAQ9H,MACjC0S,EAAYvO,EAAK8L,QAAQ0F,OAAO,KAC3B/S,KAAK,QAAS,QACdA,KAAK,UAAW,IAGzBmI,IAAOiQ,WAAWtI,GAElBvO,EAAKsX,OAAOzM,aACPqE,SAAS1H,KACT2H,MAAMvI,GAAO6O,eACbhX,KAAK,UAAW,GAChBsY,SAELlO,GAAUuQ,MAAMpZ,EAAM8H,EAAM2G,GAE5B5G,EAAS7H,EAAM8H,GAIZlB,GAAOuP,iBACNvP,GAAOuP,gBAAgBvP,GAAQuR,EAAQG,EAG3C,IAAIe,IAAc,CAClB,KAAIzS,GAAOqP,kBAAmB,CAC1B,GAAIqD,GAAiBC,KAAKC,UAAUrB,EAAOxf,IAAI5C,IAC3C0jB,EAAiBF,KAAKC,UAAUlB,EAAO3f,IAAI5C,GAC5CujB,KAAmBvH,GAAmB0H,IAAmBzH,IACxDqH,GAAc,GAClBtH,EAAkBuH,EAClBtH,EAAkByH,EAQtB,GAAIC,GAAc9S,GAAOgP,YAAYhP,GAAQuR,EAAQG,EAErDoB,GAAYxV,QAAQ,SAAStN,GACzB,GAAGA,EAAEgL,KACD,OAAOhL,EAAEgL,MACT,IAAK,YACDhL,EAAE+iB,QAAQzV,QAAQ,SAAShP,GACvBA,EAAE8K,KAAOuS,GAAOrd,EAAE8K,MAAM4Y,OAE5B,MACJ,KAAK,SACDhiB,EAAEoL,MAAMkC,QAAQ,SAASlB,GACrBA,EAAEhD,KAAOuS,GAAOvP,EAAEhD,MAAM4Y,YAI1BhiB,GAAE+K,OACR/K,EAAEoU,KAAOuH,GAAO3b,EAAEoU,MAAM4N,MACxBhiB,EAAEsU,MAAQqH,GAAO3b,EAAEsU,OAAO0N,QAOlC,IAAIgB,GAAetB,EAAO7T,OAAOmC,GAAOsO,aAAarZ,MAMjDge,GALkBvB,EAAO7T,OAAO,SAASzO,GACzC,OAAQ4Q,GAAOsO,aAAarZ,KAAK7F,KAIZ0jB,EAAYjV,OAAO,SAAS7N,GACjD,MAAkB,WAAXA,EAAEgL,OAEb8X,GAAcA,EAAYjV,OAAO,SAAS7N,GACtC,MAAkB,WAAXA,EAAEgL,OAEbiY,EAAmB3V,QAAQ,SAAStN,GAChC,GAAIkjB,IAAKljB,EAAE4e,UAAgC,EAApB5O,GAAOK,eAAmB,EAAEnQ,KAAKoH,IAAIpH,KAAKyG,GAAG3G,EAAEoL,MAAMvK,SACxEsiB,EAAWnjB,EAAEoL,MAAMrJ,IAAI,SAAS3C,GAAK,MAAOA,GAAEgK,OAC9Cga,EAAQ,SAASxjB,GACjB,MAAOoQ,IAAOjD,QAAQ9H,KAAKsc,EAAO3hB,KAElCyjB,EAAQ9jB,EAAS+jB,YAAYF,EAAOD,EAAUD,GACzCnhB,IAAI,SAASwL,GACV,GAAIoU,IAAM4B,SAAUhW,EAGpB,OAFAoU,GAAGtZ,OAASsT,GAAOpO,EAAEmP,YACrBiF,EAAGhiB,OAASgc,GAAOpO,EAAEqP,YACd+E,GAEnBqB,GAAeA,EAAaQ,OAAOH,IAIvC,IAAII,GAAsBX,EAAYjV,OAAO,SAAS7N,GAClD,MAAkB,aAAXA,EAAEgL,MA2Bb,IAzBA8X,EAAcA,EAAYjV,OAAO,SAAS7N,GACtC,MAAkB,aAAXA,EAAEgL,OAEbyY,EAAoBnW,QAAQ,SAAStN,GACjC,GAAI0jB,GAAS1jB,EAAEoL,MAAMrJ,IAAI,SAASqK,GAAK,MAAOuP,IAAOvP,IACrD,IAAGpM,EAAE2jB,SAAU,CACX,GAAIC,GAAO/lB,EAAYwjB,UAAUC,GAAG3iB,EAAMqB,EAAE2jB,UAC5CD,GAASE,EAAKF,EAAQ,EAAGA,EAAO7iB,QAEpC,GAAIuT,EACJsP,GAAOpW,QAAQ,SAASlB,EAAGxM,GAChB,IAAJA,EACCwU,EAAOhI,EAEP0W,EAAY/hB,MACRqT,KAAMA,EAAK4N,MACX1N,OAAQF,EAAOhI,GAAG4V,MAClBjX,KAAM/K,EAAE+K,KACR8Y,IAAK7jB,EAAE6jB,UAKpB7T,GAAO0P,UACN1P,GAAO0P,SAASlN,SACjBiQ,EAGC,MAFAtQ,KAAW,EACXF,GAAUC,KAAI,GACPhM,IAEX,IAAI4d,GAAYC,KAAKC,KA0ErB,OA9DAlU,IAAQmU,UAAY,SAAS1W,GACzB,GAAI2C,GAAO3C,EAAEpC,KAAK+E,IAClB,QAAO3C,EAAEpC,KAAK+Y,UACd,IAAK,OACD,GAAIC,GAAUJ,KAAKC,MAAQF,CAC3BjD,GAAc3Q,EAAK9E,MAAO8E,EAAK5E,OAC5B0E,GAAO+I,mBACNrB,EAAKtO,EAAMuO,EAAWzG,EAAM0G,EAAWC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,IAC3G9F,IAAgBpC,GAAO+O,aAAeoF,EAAUnU,GAAO+O,eACtDngB,QAAQqC,IAAI,aACZ6O,GAAQW,aACJC,QAAS,SAGjB,MACJ,KAAK,MACGV,GAAO+I,kBAINhH,GAAY,IAHb8O,EAAc3Q,EAAK9E,MAAO8E,EAAK5E,OAC/BoM,EAAKtO,EAAMuO,EAAWzG,EAAM0G,EAAWC,EAAWC,EAAgBC,EAAYC,EAAiBC,EAAWC,GAG9G,IAAIkM,EACJ,QAAOpU,GAAOgM,YACd,IAAK,SACDoI,GAAU,CACV,MACJ,KAAK,OACDA,GAAU,EACVpU,GAAOgM,SAAS,KAChB,MACJ,SACIoI,GAAU,EAEd7O,EAAYnM,EAAM8H,GACfkT,GACCzO,GACJ,MACJ,KAAK,QACD/W,QAAQqC,IAAI,QAAU+O,GAAOC,kBAAoB,aACjDgC,GAAUoS,UAGlBpS,GAAUoS,QACVvU,GAAQW,aACJC,QAAS,OACTR,MACI9E,MAAOmW,EAAOxf,IAAI,SAASzC,GAAK,MAAOA,GAAEyH,OACzCuE,MAAO0X,EAAajhB,IAAI,SAASzC,GAAK,MAAOA,GAAEyH,OAC/C+b,YAAaA,EACbwB,MAAOxF,eAAgB9O,GAAO8O,qBAGtChP,GAAQW,aACJC,QAAS,QACTR,MACIqU,+BAAgC,GAChCC,gCAAiC,GACjCC,gCAAiC,GACjCjF,YAAaxP,GAAOwP,cACpBzG,gBAAiB/I,GAAO+I,qBAGzB7S,MAyBX8J,GAAO0U,QAAU,SAAStb,EAAM8H,EAAM2G,EAAWE,EAAYE,GACzD7O,EAAOA,GAAQoS,GAAW5J,UAAU,SACpCV,EAAOA,GAAQuK,GAAW7J,UAAU,SACpCX,EAAS7H,EAAM8H,GAEf2G,EAAYA,GAAa4D,GAAW7J,UAAU,eAC9CmG,EAAaA,GAAc0D,GAAW7J,UAAU,eAChDqG,EAAYA,GAAa4C,GAAMjJ,UAAU,uBACzC,IAAI+S,GAAU/mB,EAAGgK,OAAO,KACxB8P,GAAKtO,EAAMub,EAASzT,EAAMyT,EAAS9M,EAAW8M,EAAS5M,EAAY4M,EAAS1M,EAAW0M,GAoI3F,IAAIjP,GAwnBJ,OA/ZA1F,IAAO4U,OAAS,WAUZ,MATI5U,IAAOoP,sBACPvP,IACJG,GAAO6U,WACP5P,GAAKsC,GAAKqD,OAAO,KACjBa,GAAaxG,GAAG2F,OAAO,KACvBY,GAAavG,GAAG2F,OAAO,KAEpB5K,GAAO0P,UACN1P,GAAO0P,SAASkF,SACb5U,GAAOwC,UAkBlBxC,GAAOkL,GAAK,SAASzD,EAAO1Y,GAExB,MADAkT,IAAUiJ,GAAGzD,EAAO1Y,GACbmH,MAaX8J,GAAO8U,SAAW,WACd,MAAOjJ,KAqBX7L,GAAOpI,OAAS,SAAUqP,GACtB,MAAOjH,IAAO3B,OAAOzG,OAAOqP,IAsBhCjH,GAAO4B,UAAY,SAAUqF,GACzB,MAAOjH,IAAO3B,OAAS2B,GAAO3B,OAAOuD,UAAUqF,GAAK,MAgBxDjH,GAAO+U,IAAM,SAAU5Y,GACnB,MAAKjN,WAAU2B,QAGf0W,GAAOpL,EACA6D,IAHIuH,IAgBfvH,GAAO6U,SAAW,WAEd,MADA7U,IAAOpI,OAAO,OAAOuY,SACdxF,KAYX3K,GAAOgV,YAAc,WACjBlnB,EAAGmnB,UAAUrV,IAYjBI,GAAOkV,YAAc,WACjBpnB,EAAGqnB,UAAUvV,IAiCjBI,GAAOoV,YAAc,SAAS/T,EAAMhL,EAAOC,EAAQ8S,EAAMC,EAAMgM,GAS3D,MARAlM,IAAQ9H,IACJA,KAAMA,EACNhL,MAAOA,EACPC,OAAQA,EACR8S,KAAMA,EACNC,KAAMA,EACNG,aAAc6L,GAEXrV,IAGXA,GAAOkJ,eAAiB,SAAS3H,EAAI+T,EAASC,GAC1C,GAAIpa,GAAOma,GAAW,MAClB3d,EAAMkT,GAAMjJ,UAAU,IAAML,GAAIpG,KAAKA,GAErCqa,EAAW7d,EACVuN,QAAQ0F,OAAO2K,GACX1d,KAAK,KAAM0J,EAEpB,OADA5J,GAAI+Y,OAAOP,SACJqF,GA2IXxV,GAAOyV,YAAc,SAASC,GAC1B,OACI7L,GAAQ8L,OAAOD,EAAY,IAC3B3L,GAAQ4L,OAAOD,EAAY,MAInC1V,GAAOoV,YAAY,MAAO,GAAI,GAAI,GAAI,EAAG,SAASQ,GAC9CA,EAAOhL,OAAO,YACT/S,KAAK,IAAK,yBACVA,KAAK,eAAgB,SAE9BmI,GAAOoV,YAAY,MAAO,EAAG,EAAG,EAAG,EAAG,SAASQ,GAC3CA,EAAOhL,OAAO,cACT/S,KAAK,IAAK,GACVA,KAAK,KAAM,GACXA,KAAK,KAAM,GACXA,KAAK,eAAgB,SAiB9BmI,GAAO6V,OAAS,SAASlW,EAAQC,GAC7B,IAAK1Q,UAAU2B,OACX,MAAOwa,GAEX,KAAI1L,EAUA,KAAM,IAAI7R,GAAGgoB,OAAOC,qBAAqB,yBAG7C,OAXQ1K,IADA1L,EAAO/H,QAAU+H,EAAOqW,QACdrW,EAAOvG,OAEPuG,EAEdK,GAAO3B,KAAKzQ,EAAGgK,OAAOyT,KACtBrL,GAAO3B,OAAO2X,QAAQzmB,EAASkM,UAAUC,aAAa,GACtD5N,EAAGmoB,cAAcjW,GAAQJ,GAI7B0L,GAAc1L,EACPI,IAUXA,GAAOkW,WAAa,WAChB,GAAIvjB,GAAIqN,GAAO6V,QACf,OAAIljB,IAAKA,EAAE4O,GACA5O,EAAE4O,GAET5O,GAAKA,EAAE5C,QACA4C,EAAE5C,QAAQ,IAAK,IAEnB,WAAaiQ,GAAOmW,WAGxBnW,GAAO6V,OAAOlW,EAAQC,IAQjCrQ,EAASmgB,OAAS,WACd,GAAkB0G,GAAdC,IAsFJ,OAhFAA,GAAQjnB,EAAIuM,EAAS,GAMrB0a,EAAQ3lB,EAAIiL,EAAS,GAMrB0a,EAAQxC,IAAMlY,EAAS,GAMvB0a,EAAQC,UAAY3a,EAAS,IAM7B0a,EAAQE,WAAa5a,EAAS,IAU9B0a,EAAQG,UAAY7a,MAEpB0a,EAAQ1W,OAAShE,EAAS,MAE1B0a,EAAQ7T,OAAS,WACb,GAAIkN,GAAS2G,EAAQ1W,SAASoV,MACrBnT,UAAU,qBACVzG,MAAM,GACfuU,GAAOxK,QAAQ0F,OAAO,KACjB/S,KAAK,QAAS,mBACdA,KAAK,YAAa,aAAewe,EAAQjnB,IAAM,IAAMinB,EAAQ3lB,IAAM,IAExE,IAAI0I,GAAOsW,EAAO9N,UAAU,SACnBzG,KAAKib,EAAQ,SAASriB,GAAK,MAAOA,GAAEsN,OACzCsG,EAAYvO,EAAK8L,QAAQ0F,OAAO,KAC3B/S,KAAK,QAAS,OACvB8P,GAAUiD,OAAO,QACZ/S,KAAK,KAAM,SACXA,KAAK,QAAS,gBACnBuB,EACKvB,KAAK,YAAa,SAAS9D,EAAGnE,GAC3B,MAAO,aAAeymB,EAAQC,YAAY,EAAI,KAAOD,EAAQE,aAAeF,EAAQxC,QAAQjkB,EAAE,IAAO,MAE7GwJ,EAAKxB,OAAO,qBACPC,KAAK,YAAa,cAAgBwe,EAAQC,YAAY,EAAED,EAAQxC,OAAS,OACzEzD,KAAK,SAASrc,GACX,MAAOA,GAAEsN,OAEjBgV,EAAQ1W,SACHsQ,WAAWtI,GACX7F,YAAY1I,IAGrBid,EAAQzB,OAAS,WACb,GAAI4B,GAAYH,EAAQG,WACxB,IAAGA,YAAqB5T,OACpBwT,EAASI,EAAUzkB,IAAI,SAASzC,GAAK,OAAQ+R,KAAM/R,EAAE+R,KAAMhS,MAAOiC,IAAKhC,EAAEgC,IAAK0K,MAAO1M,EAAE0M,OAAQjF,eAE9F,CACDqf,IACA,KAAI,GAAIK,KAAQD,GACZJ,EAAOrlB,MAAMsQ,KAAMoV,EAAMpnB,MAAOiC,IAAKmlB,EAAMza,MAAOwa,EAAUC,IAAQ1f,UAE5Esf,EAAQ7T,UAGL6T,GAuDX9mB,EAASmnB,mBAAqB,SAASC,GACnC,GAAIC,MAAYC,IAmChB,OAjCAF,GAAQvb,MAAMkC,QAAQ,SAASlB,GAC3B,GAAImF,GAAKnF,EAAEmF,GACPvG,EAAO4b,EAAMrV,KAAQqV,EAAMrV,MAE/B,IAAGnF,EAAE0a,UAAW,CACZ,GAAIA,GAAY1a,EAAE0a,UACd9a,EAAQI,EAAEJ,OAASI,EAAEmF,EACtBnF,GAAEgV,KAAOhV,EAAE2a,UACV/b,EAAK4L,MAAQxK,EAAE4a,QACX,SAASC,GAAM,MAAO7a,GAAE4a,QAAQC,EAAGjb,MAAM8a,KACzC,SAASG,GAAM,MAAOA,GAAGjb,MAAM8a,IACnC9b,EAAK+b,SAAW3a,EAAE2a,UAAY,SAASE,GAAM,MAAOH,GAAY,IAAMG,EAAGjb,MAAM8a,KAG/E9b,EAAK4L,MAAQ,SAASqQ,GAAM,MAAOA,GAAGjb,MAAM8a,KAAe9a,OAE9D,CAAA,IAAGI,EAAEwK,MAEL,KAAM,IAAI9R,OAAM,uCAAyC6d,KAAKC,UAAUxW,GADzEpB,GAAK4L,MAAQxK,EAAEwK,SAGvB+P,EAAQrb,MAAMgC,QAAQ,SAASC,GAC3B,IAAGA,EAAE2Z,QAAL,CAEA,GAAIC,IAAQ9e,OAAQkF,EAAElF,OAAQ1I,OAAQ4N,EAAE5N,OACxCwnB,GAAKC,QAA+B,kBAAd7Z,GAAE6Z,QAAyB7Z,EAAE6Z,QAAU,WACzD,MAAO3nB,GAAM8N,EAAE6Z,WAElB,WAAY,OAAQ,WAAW9Z,QAAQ,SAAS3L,GACjCmK,SAATyB,EAAE5L,KAAkBwlB,EAAKxlB,GAAK4L,EAAE5L,MAEvCklB,EAAM9lB,KAAKomB,MAGR,SAASta,EAASzB,EAAOE,GAC5B,GAAIwX,MACAuE,IACJjc,GAAMkC,QAAQ,SAASlB,GACnB,GAAI9K,GAAMuL,EAAQE,QAAQ9H,KAAKmH,EAC/B,KAAI,GAAIkb,KAAKV,GAAO,CAChB,GAAI5b,GAAO4b,EAAMU,GAAItb,EAAQhB,EAAK4L,MAAMxK,EAAE/M,KAC1C,IAAG2M,EAAO,CACN,GAAIub,GAAQvc,EAAK+b,SAAW/b,EAAK+b,SAASO,EAAGtb,GAASsb,CAClDD,GAAQE,KACRF,EAAQE,IACJnc,SACAka,aAER+B,EAAQE,GAAOnc,MAAMrK,KAAKO,GAC1B+lB,EAAQE,GAAOjC,QAAQhkB,IAAO,KAK1C,IAAIkmB,GAAaX,EAAMhZ,OAAO,SAAS5N,GACnC,MAAOA,GAAEoI,SAAWpI,EAAEN,SAEtB8nB,EAAaZ,EAAMhZ,OAAO,SAAS5N,GACnC,MAAOA,GAAEoI,SAAWpI,EAAEN,QA8B1B,OA5BA2L,GAAMgC,QAAQ,SAASC,GACnB,GAAIlF,GAASwE,EAAQqB,WAAWjJ,KAAKsI,GACjC5N,EAASkN,EAAQuB,WAAWnJ,KAAKsI,EACrCia,GAAWla,QAAQ,SAASrN,GACxB,GAAGonB,EAAQpnB,EAAEoI,SAAWgf,EAAQpnB,EAAEoI,QAAQid,QAAQjd,IAC/Cgf,EAAQpnB,EAAEN,SAAW0nB,EAAQpnB,EAAEN,QAAQ2lB,QAAQ3lB,GAAS,CACvD,GAAI+nB,GAAaznB,EAAEmnB,QAAQC,EAASjc,EAAOE,EACxCrL,GAAEiT,SACDwU,EAAWtT,KAAOzU,EAClB+nB,EAAWpT,MAAQjM,IAGnBqf,EAAWtT,KAAO/L,EAClBqf,EAAWpT,MAAQ3U,GAEvBmjB,EAAY/hB,KAAK2mB,QAI7BD,EAAWna,QAAQ,SAASrN,GACxB,GAAIonB,EAAQpnB,EAAEoI,QAAd,CAEA,GAAIqf,GAAaznB,EAAEmnB,UACfnc,EAAWhL,EAAEgL,UAAYhL,EAAEmnB,QAAQnc,UAAY,QAC/CvJ,EAAOzB,EAAEyB,MAAQzB,EAAEmnB,QAAQ1lB,MAAQ,SAAStC,GAAK,MAAOA,GAC5DsoB,GAAWzc,GAAYoc,EAAQpnB,EAAEoI,QAAQ+C,MAAMrJ,IAAIL,GACnDohB,EAAY/hB,KAAK2mB,MAEd5E,IAKfvjB,EAASooB,MAAQ,SAAS9D,EAAK+D,GAC3B,OACI7c,KAAM,IACN8Y,IAAKA,EACL+D,WAAYA,IAGpBroB,EAASsoB,MAAQ,SAAShE,EAAK+D,GAC3B,OACI7c,KAAM,IACN8Y,IAAKA,EACL+D,WAAYA,IAgBpBroB,EAASuoB,QAAU,WACf,MAAOhd,GAAQ,MAEnBvL,EAASwoB,QAAU,WACf,MAAOjd,GAAQ,MAGnBvL,EAASyoB,QAAU,SAASnE,EAAKF,GAC7B,OACI3Y,KAAM,WACND,KAAM,IACN8Y,IAAK,GACLF,SAAUA,IAGlBpkB,EAAS0oB,QAAU,SAASpE,EAAKF,GAC7B,OACI3Y,KAAM,WACND,KAAM,IACN8Y,IAAK,GACLF,SAAUA,IAKlBpkB,EAAS2oB,iBAAmB,SAASC,EAAOC,EAAOC,EAAMC,GACrD,MAAO,UAASzb,EAASzB,EAAOE,GAC5B,GAAIwX,MACA1jB,EAAI,EACJmpB,EAAMhpB,EAASoN,uBACf0B,KAAM8Z,EACNva,KAAMwa,EACNhb,MAAO,SAAShB,EAAGnM,EAAGsO,GAClB,GAAGA,EAAI1N,OAAQ,CACX,GAAItC,GAAOgQ,EAAIA,EAAI1N,OAAO,EAC1BiiB,GAAY/hB,MACRqT,KAAMvH,EAAQE,QAAQ9H,KAAK1G,GAC3B+V,MAAOzH,EAAQE,QAAQ9H,KAAKmH,GAC5BrB,KAAM,IACN8Y,IAAKzkB,EAAEb,EAAKiqB,MACZZ,UAAU,IAGlBxb,EAAEoc,MAAQppB,GAIdqO,IAAK,WACDrO,GAAKipB,IAIb,OADAE,GAAI1b,EAASzB,EAAOE,GACbwX,IAKfvjB,EAASkpB,eAAiB,SAASN,EAAOO,EAAMN,EAAOO,EAAMC,EAAMC,EAAQP,GAGvE,QAASQ,GAAU1U,EAAME,GACrB,OAAQuU,EAAOzU,GAAQyU,EAAOvU,IAAU;CAH5C,GAAIlV,EACJypB,GAASjrB,EAAGmrB,QAAQF,EAIpB,IAAIN,GAAMhpB,EAASoN,uBACfgB,KAAM,WACFvO,EAAIupB,GAERta,KAAM8Z,EACN5Z,IAAKma,EACL9a,KAAMwa,EACNhb,MAAO,SAAShB,EAAGnM,EAAGsO,GAClB,GAAGA,EAAI1N,OAAQ,CACX,GAAIuT,GAAO7F,EAAIA,EAAI1N,OAAO,GACtB7B,GAAK6pB,EAAOzU,GAAQyU,EAAOzc,IAAM,CACrChN,GAAIc,KAAKqG,IAAInH,EAAGgV,EAAK4U,OAAShqB,GAElCoN,EAAE4c,OAAS5pB,EACXgN,EAAE6c,QAAU,EACZ7c,EAAErF,KAAKrG,EAAIT,EAAEqoB,EAAOM,GAExBnb,IAAK,SAASyb,EAAQ9U,EAAME,GACxB,GAAItV,GAAI8pB,EAAU1U,EAAME,EACrB4U,KAAQlqB,GAAM,KACjBI,GAAKJ,GAET0O,IAAK,SAAStB,GACVA,EAAErF,KAAK3H,GAAKgN,EAAE4c,OAAS5pB,GAAG,GAE9B6N,KAAM,SAASb,EAAGc,GAEdd,EAAErF,KAAK3H,GAAKgN,EAAE6c,QAAQ7c,EAAErF,KAAK3H,EAAIA,KAAKgN,EAAE6c,QACrC7c,EAAE6c,UAAY/b,SACNd,GAAE6c,SAEjBza,OAAQ,SAASrB,GAIbA,EAAKG,QAAQ,SAASiB,GAGlB,IAAI,GAD0B4a,GAD1BvF,EAAOrV,EAAIqV,KAAK,SAASjhB,EAAGC,GAAK,MAAOD,GAAEoE,KAAK3H,EAAIwD,EAAEmE,KAAK3H,IAC1DgqB,EAAO,KAAMC,EAAO,KAChBzpB,EAAE,EAAGA,EAAEgkB,EAAK/iB,OAAO,IAAKjB,EAAG,CAC/B,GAAIwU,GAAOwP,EAAKhkB,GAAI0U,EAAQsP,EAAKhkB,EAAE,EACnC,IAAIwpB,EAMG,CAEH,GADAD,GAAQL,EAAU1U,EAAME,GACrB1U,EAAIgkB,EAAK/iB,OAAS,GAAKyT,EAAMvN,KAAK3H,EAAIiqB,EAAOF,EAC5C,QAEGC,GAAK,KACFA,CACN,IAAIzJ,GAAG2J,CACP,IAAG1pB,EAAIgkB,EAAK/iB,OAAS,EAAG,CACpB,GAAI0oB,GAAQjV,EAAMvN,KAAK3H,GAAKiqB,EAAOF,EACnCxJ,GAAIiE,EAAKwF,GAAMriB,KAAK3H,EAAImqB,EAAM,EAC9BD,EAAQ1pB,EAAE,MAEV+f,GAAIzf,KAAKqG,IAAIqd,EAAKwF,GAAMriB,KAAK3H,EAAGiqB,EAAOP,EAAUlF,EAAKwF,GAAOxF,EAAKwF,EAAK,KAAOD,EAAO7U,EAAMvN,KAAK3H,EAAIiqB,GAAM,GAC1GC,EAAQ1F,EAAK/iB,MAEjB,KAAI,GAAIuhB,GAAIgH,EAAK,EAAGhH,EAAEkH,IAASlH,EAC3BzC,GAAKmJ,EAAUlF,EAAKxB,EAAE,GAAIwB,EAAKxB,IAC/BwB,EAAKxB,GAAGrb,KAAK3H,EAAIugB,CAErByJ,GAAOC,EAAOF,EAAO,SAzBtB7U,GAAMvN,KAAK3H,EAAIgV,EAAKrN,KAAK3H,EAAI0pB,EAAU1U,EAAME,KAC5C8U,EAAOxpB,EACPypB,EAAOjV,EAAKrN,KAAK3H,EACjB+pB,EAAOL,EAAU1U,EAAME,SA8B/C,OAAOiU,IAIXhpB,EAASyb,SAAW,SAASwO,EAAiBC,GAC1C,GAAIC,KA+BJ,OAzBAA,GAAU/Z,OAAShE,EAAS,MACvBM,MAAM,SAASxN,GACZ,GAAIqF,EACJ,IAAGrF,EAAG,CACF,GAAI8hB,IAAQ,CACZzc,GAAQrF,EACRA,EAAEyc,GAAG,SAAWsO,EAAiB,SAASpgB,EAAM8H,EAAMyY,GAClDF,EAASG,aAAa9lB,EAAOsF,EAAM8H,EAAMyY,GACtCpJ,GAASkJ,EAASlJ,OACjBkJ,EAASlJ,MAAMzc,EAAOsF,EAAM8H,EAAMyY,GAClCpJ,GAAQ,GAEJkJ,EAASI,MACbJ,EAASI,KAAK/lB,EAAOsF,EAAM8H,EAAMyY,SAGrCD,GAAU/Z,WACd7L,EAAQ4lB,EAAU/Z,SAClB7L,EAAMoX,GAAG,SAAWsO,EAAiB,SAASpgB,EAAM8H,EAAMyY,GACtDF,EAASK,gBAAgBhmB,EAAOsF,EAAM8H,EAAMyY,GAC5C7lB,EAAMoX,GAAG,SAAWsO,EAAiB,QAG7CC,GAAS9Z,QAAU8Z,EAAS9Z,OAAOlR,KAEpCirB,GAgBXnqB,EAASwqB,IAAM,WAwBX,QAASC,GAAuBC,GAC3B,MAAO,UAASlmB,GACZ,GAAIpE,GAAS/B,EAAG6Z,MAAM9X,OAClBgE,EAAO,WACHumB,EAAKD,KAAWlmB,EAAG,SAASomB,GACxBC,EAAOC,KAAKF,EAASxqB,KAI9BuqB,GAAK3R,SACJ+R,aAAaC,GACbA,EAAWjY,WAAW3O,EAAMumB,EAAK3R,UAEhC5U,KAId,QAAS6mB,KACFD,IACCD,aAAaC,GACbA,EAAW,MAEfH,EAAOK,OAGX,QAASC,GAASthB,EAAMugB,GAChBS,IACAA,EAASxsB,EAAGmsB,MACPliB,KAAK,QAAS,UACd8iB,KAAK,SAAS5mB,GAAK,MAAO,SAAWA,EAAI,YACzC6mB,UAAUV,EAAKU,aACpBV,EAAKva,SAASoV,MAAMxL,KAAK6Q,IAE7BhhB,EACK8R,GAAG,gBAAiB8O,EAAuB,YAC3C9O,GAAG,eAAgBsP,GACxBb,EACKzO,GAAG,gBAAiB8O,EAAuB,YAC3C9O,GAAG,eAAgBsP,GA7D5B,GACID,GADAL,KAAWE,EAAS,IAwGxB,OA3FAF,GAAKva,OAAShE,EAAS,MAClBM,MAAM,SAASxN,GACTA,EACCA,EAAEyc,GAAG,YAAa,SAAS9R,EAAM8H,EAAMyY,GACnCe,EAASthB,EAAMugB,KAEfO,EAAKva,UACTua,EAAKva,SAASuL,GAAG,YAAa,QA4D1CgP,EAAKU,UAAYjf,EAAS,KAkB1Bue,EAAKC,QAAUxe,EAAS,SAAS5H,EAAGpC,GAChCA,EAAEuoB,EAAKva,SAAWua,EAAKva,SAAS+N,UAAUzY,KAAKlB,GAAK,MAGxDmmB,EAAK3R,MAAQ5M,EAAS,GAEfue,GAiBX3qB,EAASwqB,IAAIc,MAAQ,WACjB,GAAIC,GAAM,SAAS/mB,EAAGpC,GAClBoC,EAAIA,EAAE1E,KAAK2M,KACX,IAAIvH,GAAOC,OAAOD,KAAKV,GAAG8J,OAAOjQ,EAAGmrB,QAAQ+B,EAAIjd,WACvCA,OAAO,SAASlM,GACb,MAAOoC,GAAEpC,KAEjBkpB,EAAQjtB,EAAGgK,OAAOhC,SAASmlB,cAAc,UACzC5d,EAAO0d,EAAMjZ,UAAU,MAAMzG,KAAK1G,GAClCumB,EAAY7d,EAAK+H,QAAQ0F,OAAO,KACpCoQ,GAAUpQ,OAAO,MAAMwF,KAAK,SAASze,GAAK,MAAOA,KACjDqpB,EAAUpQ,OAAO,MAAMwF,KAAK,SAASze,GAAK,MAAOoC,GAAEpC,KACnDA,EAAEkpB,EAAMzhB,OAAO6hB,WAGnB,OADAH,GAAIjd,OAASlC,GAAS,GACfmf,GAKXvrB,EAAS2rB,aAAe,SAAShtB,GAI7B,QAAS0rB,GAAa9lB,EAAOsF,EAAM8H,GAC/BpN,EAAMoI,QAAQ,IAAI,EAAMnO,EAAuB,SAASqO,GACpD,MAAO+e,GAAU5U,QAAQnK,EAAE/M,KAAKiC,MAAQ,GACzC,KAAMpD,IACTkL,EAAK8R,GAAG,qBAAsB,SAASnX,GACnConB,GAAarnB,EAAMiJ,QAAQ9H,KAAKlB,IAChCD,EAAM4gB,QAAQtb,EAAM8H,GACpBka,EAAmBC,iBAAiBF,GACpCvtB,EAAG6Z,MAAM6T,oBAEbxnB,EAAMihB,MAAM7J,GAAG,qBAAsB,SAASnX,GAC1ConB,KACArnB,EAAM4gB,QAAQtb,EAAM8H,GACpBka,EAAmBC,iBAAiBF,IAGxC,IAAII,GAAUniB,EAAK+B,OAAOpJ,IAAI,SAASgC,GAAK,MAAOA,GAAE1E,KAAKiC,MACtDkqB,EAAUL,EAAUtqB,MACxBsqB,GAAYA,EAAUtd,OAAO,SAASlM,GAAK,MAAO4pB,GAAQhV,QAAQ5U,IAAM,IACrEwpB,EAAUtqB,SAAW2qB,GACpBJ,EAAmBC,iBAAiBF,GAG5C,QAASrB,GAAgBhmB,EAAOsF,EAAM8H,GAClC9H,EAAK8R,GAAG,qBAAsB,MAC9BpX,EAAMihB,MAAM7J,GAAG,qBAAsB,MACrCpX,EAAMoI,QAAQ,IAAI,EAAOhO,GA7B7B,GAAIktB,GAAqB7rB,EAAS6rB,mBAAmB,sBACjDD,IA+BJ,OAAO5rB,GAASyb,SAAS,gBACrB4O,aAAcA,EACdE,gBAAiB,SAAShmB,EAAOsF,EAAM8H,GACnC4Y,EAAgBhmB,EAAOsF,EAAM8H,OAKzC3R,EAAS6rB,mBAAqB,SAASK,GAKnC,MAJApZ,QAAOqZ,eAAeC,YAAY,eAAgB,WAC9C,MAAO/tB,GAAG8d,SAAS,sBAGhBrJ,OAAOqZ,eAAeE,aAAa,eAAgBH,IAG9DlsB,EAASssB,oBAAsB,SAAS3tB,GACpC,QAAS4tB,GAAqB5a,GAC1BA,EAAKS,KAAK,SAASpE,GACfA,EAAEwe,iBAAkB,IAI5B,QAASnC,GAAa9lB,EAAOsF,EAAM8H,GAC/BpN,EAAMoI,QAAQ,KAAK,EAAMnO,EAAuB,KAAM,SAASwP,GAC3D,MAAOA,GAAEwe,iBACV7tB,IACHkL,EACK8R,GAAG,gCAAiC,SAASnX,GAC1CmN,EAAKS,KAAK,SAASpE,GACfA,EAAEwe,gBAAkBxe,EAAElF,SAAWtE,GAAKwJ,EAAE5N,SAAWoE,IAEvDD,EAAM4gB,QAAQtb,EAAM8H,KAEvBgK,GAAG,+BAAgC,SAASnX,GACzC+nB,EAAqB5a,GACrBpN,EAAM4gB,QAAQtb,EAAM8H,KAIhC,QAAS4Y,GAAgBhmB,EAAOsF,EAAM8H,GAClC9H,EACK8R,GAAG,gCAAiC,MACpCA,GAAG,+BAAgC,MACxC4Q,EAAqB5a,GACrBpN,EAAMoI,QAAQ,KAAK,EAAOhO,GAG9B,MAAOqB,GAASyb,SAAS,uBACrB4O,aAAcA,EACdE,gBAAiB,SAAShmB,EAAOsF,EAAM8H,GACnC4Y,EAAgBhmB,EAAOsF,EAAM8H,OAMzC3R,EAASysB,+BAAiC,SAASC,GAK/C,MAJA5Z,QAAOqZ,eAAeC,YAAY,kBAAmB,WACjD,MAAO/tB,GAAG8d,SAAS,gBAAiB,gBAAiB,oBAGlDrJ,OAAOqZ,eAAeE,aAAa,kBAAmBK,IAGjE1sB,EAAS2sB,gBAAkB,SAASC,EAAWC,EAAYC,EAAaJ,GAOpE,QAASvH,KACFgF,EAAU4C,WACT5C,EAAU/Z,SAAS2P,WAAW9M,SAE9BkX,EAAU/Z,SAAS+U,UAG3B,QAAS6H,GAAcC,EAAKC,GACxBC,EAAgBF,EAChBG,EAAgBF,EAChBG,EAAWC,EAAa,KACxBnI,IAGJ,QAASoI,GAAcC,GAChBA,IAAOF,IACNA,EAAaE,EACbrI,KAIR,QAASsI,GAAejkB,GACjBA,IAAO6jB,IACNA,EAAW7jB,EACX2b,KAIR,QAASoH,KACLY,KACAC,KAGJ,QAASM,GAAcC,GACnB,MAAO,UAASla,GACZ,MAAOka,GAAM3W,QAAQvD,IAAO,GAKpC,QAASma,GAAoBD,GACzB,GAAIE,GAAKH,EAAcC,EACvB,OAAO,UAASla,GACZ,OAAQoa,EAAGpa,IAInB,QAASqa,GAAgBC,EAAQC,GAC7B,SAAID,IAAWC,IAERD,EAAOE,KAAKP,EAAcM,IAGrC,QAASE,GAAaH,EAAQC,GAC1B,MAAID,GAEKC,EAENA,EAAOvZ,MAAMiZ,EAAcK,IACnBA,EAAOzf,OAAOsf,EAAoBI,IACjCD,EAAO9J,OAAO+J,EAAO1f,OAAOsf,EAAoBG,KAHjDA,EAFAC,EAQf,QAAS3D,GAAa9lB,EAAOsF,EAAM8H,EAAMyY,GACrC7lB,EACKoI,QAAQ,KAAK,EAAMnO,EAAuB,SAASqO,GAChD,QAASsgB,EAAc5oB,EAAMiJ,QAAQ9H,KAAKmH,KAC3C,SAASmB,GACR,QAASof,EAAc7oB,EAAM4U,QAAQzT,KAAKsI,KAC3C4e,IACFjgB,QAAQ,KAAK,EAAMnO,EAAuB,SAASqO,GAChD,MAAOihB,GAAgBX,EAAc5oB,EAAMiJ,QAAQ9H,KAAKmH,IAAKwgB,IAC9D,SAASrf,GACR,MAAO8f,GAAgBV,EAAc7oB,EAAM4U,QAAQzT,KAAKsI,IAAKqf,IAC9DP,IACFngB,QAAQ,KAAK,EAAMnO,EAAuB,SAASqO,GAChD,MAAOihB,GAAgBX,EAAc5oB,EAAMiJ,QAAQ9H,KAAKmH,IAAKygB,IAC9D,SAAStf,GACR,MAAO8f,GAAgBV,EAAc7oB,EAAM4U,QAAQzT,KAAKsI,IAAKsf,IAC9DT,IAEPhjB,EACK8R,GAAG,4BAA6B,SAAS9O,GACtCshB,EAAsBZ,cAAcJ,EAAc5oB,EAAMiJ,QAAQ9H,KAAKmH,KAAO,QAE/E8O,GAAG,2BAA4B,SAAS9O,GACrCshB,EAAsBZ,cAAc,QAEvC5R,GAAG,wBAAyB,SAAS9O,GAClCshB,EAAsBV,eAAeS,EAAab,EAAUF,EAAc5oB,EAAMiJ,QAAQ9H,KAAKmH,QAIrGud,EACKzO,GAAG,4BAA6B,SAAS3N,GACtCmgB,EAAsBZ,cAAcH,EAAc7oB,EAAM4U,QAAQzT,KAAKsI,KAAO,QAE/E2N,GAAG,2BAA4B,SAAS3N,GACrCmgB,EAAsBZ,cAAc,QAEvC5R,GAAG,wBAAyB,SAAS9O,GAClCshB,EAAsBV,eAAeS,EAAab,EAAUD,EAAc7oB,EAAMiJ,QAAQ9H,KAAKmH,QAIzG,QAAS0d,GAAgBhmB,EAAOsF,EAAM8H,EAAMyY,GACxCvgB,EACK8R,GAAG,4BAA6B,MAChCA,GAAG,2BAA4B,MAC/BA,GAAG,wBAAyB,MACjCyO,EACKzO,GAAG,4BAA6B,MAChCA,GAAG,2BAA4B,MAC/BA,GAAG,wBAAyB,MACjC4Q,IACAhoB,EACKoI,QAAQ,KAAK,EAAOigB,GACpBjgB,QAAQ,KAAK,EAAOmgB,GACpBngB,QAAQ,KAAK,EAAOkgB,GA5H7B,GAAIsB,GAAwBnuB,EAASysB,+BAA+BC,GAAc,wBAClFE,GAAYA,MACZC,EAAaA,MACbC,EAAcA,KACd,IAAIK,MAAoBC,KAAoBC,EAAW,KAAMC,EAAa,KA2HtEnD,EAAYnqB,EAASyb,SAAS,mBAC9B4O,aAAcA,EACdE,gBAAiB,SAAShmB,EAAOsF,EAAM8H,EAAMyY,GAEzC,MADAG,GAAgBhmB,EAAOsF,EAAM8H,EAAMyY,GAC5BzjB,MAEXyJ,OAAQ,SAASlR,GACb,GAAIonB,GAASpnB,EAAEynB,YACfwH,GAAsBxS,GAAG,iBAAmB2K,EAAQpnB,EAAI8tB,EAAgB,MACxEmB,EAAsBxS,GAAG,iBAAmB2K,EAAQpnB,EAAIquB,EAAgB,MACxEY,EAAsBxS,GAAG,kBAAoB2K,EAAQpnB,EAAIuuB,EAAiB,QAOlF,OAFItD,GAAU4C,SAAW3gB,GAAS,GAE3B+d,GAIXnqB,EAASouB,gBAAkB,SAASC,EAAYC,EAAQC,EAAUC,GAK9D,QAASC,GAAiBlqB,GACtB,GAAImqB,GAAWnqB,EAAMoV,eAAe,kBAAkB,EAAM,iBAC5D+U,GAASpmB,MACL9E,GAAI,KACJC,GAAI,KACJC,GAAI,OACJC,GAAI,KACJgrB,aAAc,QAElBD,EAASrc,UAAU,QAAQzG,OAAO,EAAE,QAAQ,IAAK,IAAK,QAAS,OAC1D+J,QAAQ0F,OAAO,QAAQ/S,MACpBe,OAAQ,SAAS7E,GACb,MAAOA,GAAE,GAAK,KAElBoqB,aAAc,SAASpqB,GACnB,MAAOA,GAAE,IAEbqqB,eAAgB,SAASrqB,GACrB,MAAOA,GAAE,MAKzB,QAASsqB,GAAYvqB,EAAOoN,EAAMvI,EAAKrH,GACnC,GAAIgtB,EACJ,QAAO3lB,GACP,IAAK,MACD2lB,EAAM,SAAS/gB,GACX,MAAOzJ,GAAMoK,WAAWjJ,KAAKsI,KAAOjM,EAExC,MACJ,KAAK,KACDgtB,EAAM,SAAS/gB,GACX,MAAOzJ,GAAMsK,WAAWnJ,KAAKsI,KAAOjM,EAExC,MACJ,KAAK,OACDgtB,EAAM,SAAS/gB,GACX,MAAOzJ,GAAMoK,WAAWjJ,KAAKsI,KAAOjM,GAAOwC,EAAMsK,WAAWnJ,KAAKsI,KAAOjM,GAIhF,MAAO4P,GAAKrD,OAAOygB,GAAKpa,OAG5B,QAASqa,GAAkB/d,EAAS7H,EAAKyD,GACrC,GAAS,SAANzD,EACC,MAAO,UAAS/I,GACZ,MAAOM,MAAKyG,IAAM,EAAI/G,EAAIwM,EAAI,IAGlC,IAA6BqU,GAAzB+N,GAASpiB,EAAE,GAAGlM,KAAKyG,GAAGyF,CAC1B,QAAOoE,GACP,IAAK,KACDiQ,EAAM,CACN,MACJ,KAAK,KACDA,EAAMvgB,KAAKyG,GAAG,CACd,MACJ,KAAK,KACD8Z,EAAMvgB,KAAKyG,EACX,MACJ,KAAK,KACD8Z,GAAOvgB,KAAKyG,GAAG,EAKnB,MAFW,OAARgC,IACC8X,GAAOvgB,KAAKyG,IACT,SAAS/G,GACZ,MAAO6gB,GAAM+N,IAAS,IAAOpiB,EAAI,EAAIxM,GAAKwM,EAAE,GAAK,KAK7D,QAASqiB,GAAc3qB,EAAOsF,EAAM8H,GAChC,GAAIwd,GAAQtlB,EACPwI,UAAU,YACVzG,KAAK,SAASpH,GACX,OAAQA,EAAE4qB,qBACA5qB,EAAE6qB,cAAiB7qB,EAAE6qB,aAAa7qB,EAAE4qB,oBAAoBhmB,SAC7D5E,IAEb2qB,GAAMhO,OAAOP,SACbuO,EACGxZ,QAAQC,OAAO,IAAK,gBAClB6Q,QAAQ,UAAU,EACvB,IAAI6I,GAAOH,EACR9c,UAAU,cACRzG,KAAK,SAASpH,GAMX,IAAI,GAJA4E,IADM7E,EAAMiJ,QAAQ9H,KAAKlB,GACnBA,EAAE4qB,oBAAoBhmB,KAC5ByD,EAAIrI,EAAE4qB,oBAAoBviB,EAC1B0iB,EAAKP,EAAkBzqB,EAAM0M,UAAW7H,EAAKyD,GAC7C5J,EAAMoQ,MAAMxG,GACRxM,EAAI,EAAGA,EAAEwM,IAAKxM,EAAG,CACrB,GAAI+C,GAAImsB,EAAGlvB,EACX4C,GAAI5C,IACA+C,EAAO,IAAJA,EAAUzC,KAAKyG,GAClBvH,EAAGc,KAAKwG,IAAI/D,GAAKoB,EAAEK,OAAO,GAC1B1D,EAAGR,KAAKoH,IAAI3E,GAAKoB,EAAEM,OAAO,IAGlC,MAAO7B,IAEfqsB,GACG3Z,QAAQ0F,OAAO,QACboL,QAAQ,SAAS,GACjBne,MACGxB,MAAO,GACPC,OAAQ,EACR+O,KAAM,uBACN7O,GAAI,EACJS,GAAI,EACJ7H,EAAG,EACHsB,EAAG,IAEXmuB,EAAKhnB,KAAK,YAAa,SAAS9D,GAC5B,MAAO,aAAeA,EAAE3E,EAAI,IAAM2E,EAAErD,EAAI,YAAcqD,EAAEpB,EAAI,MAEhEksB,EAAKnO,OAAOP,SAGhB,QAAS4O,GAAejrB,EAAOsF,EAAM8H,GACjC9H,EAAKuI,KAAK,SAASvF,GACfA,EAAEuiB,oBAAsB,OAE5BF,EAAc3qB,EAAOsF,EAAM8H,GAG/B,QAAS8d,GAAYlrB,EAAOoN,EAAM5P,EAAKqH,GACnC,MAA8C,KAAvC0lB,EAAYvqB,EAAOoN,EAAMvI,EAAKrH,GAGzC,QAAS2tB,GAAQnrB,EAAO2T,EAAOsW,EAAMhqB,GACjC,GAAmB,IAAhBgqB,EAAKltB,OACJ,MAAOktB,GAAK,EAChB,IAAImB,GAAQprB,EAAMuK,OAAOjF,OAAO+lB,wBAC5BxJ,EAAS7hB,EAAM2hB,aAAahO,EAAM2X,QAAUF,EAAM9a,KAAKqD,EAAM4X,QAAUH,EAAM7a,MAC7EjV,EAAIumB,EAAO,GACXjlB,EAAIilB,EAAO,EACf,QAAO7hB,EAAM0M,WACb,IAAK,KACD,MAAO9P,GAAIqD,EAAEgD,KAAKrG,EAAI,MAAQ,IAClC,KAAK,KACD,MAAOA,GAAIqD,EAAEgD,KAAKrG,EAAI,MAAQ,IAClC,KAAK,KACD,MAAOtB,GAAI2E,EAAEgD,KAAK3H,EAAI,MAAQ,IAClC,KAAK,KACD,MAAOA,GAAI2E,EAAEgD,KAAK3H,EAAI,MAAQ,KAElC,KAAM,IAAI0F,OAAM,mBAAqBhB,EAAM0M,WAI/C,QAASoZ,GAAa9lB,EAAOsF,EAAM8H,GAC/B,QAASoe,GAAUvrB,GACf,GAAI4E,GAAMsmB,EAAQnrB,EAAOlG,EAAG6Z,MAAOsW,EAAMhqB,GACrCwrB,EAAKzrB,EAAMiJ,QAAQ9H,KAAKlB,EAC5ByrB,SAAQC,QAAQ7B,EAAW2B,EAAI5mB,IAAM+mB,KAAK,SAASC,GAC/C,GAAIC,IACAjnB,IAAKA,EACLyD,EAAGlM,KAAKqG,IAAI,EAAGopB,EAAStB,EAAYvqB,EAAOoN,EAAMvI,EAAK4mB,IAE1DnmB,GAAKuI,KAAK,SAASvF,GACfA,EAAEuiB,oBAAsBviB,IAAMrI,EAAI6rB,EAAS,OAE/CnB,EAAc3qB,EAAOsF,EAAM8H,KAInC,QAAS2e,GAAM9rB,GAGX,QAAS+rB,KACL,GAAInnB,GAAMsmB,EAAQnrB,EAAO2T,EAAOsW,EAAMhqB,EACtCA,GAAE6qB,aAAe7qB,EAAE6qB,iBACf7qB,EAAE6qB,aAAajmB,IAKfmlB,EAAShqB,EAAMiJ,QAAQ9H,KAAKlB,GAAIirB,EAAYe,KAAK,KAAMjsB,EAAOoN,EAAMvI,GAAMA,GAC1E5E,EAAE6qB,aAAajmB,IAAO,IALtBklB,EAAO/pB,EAAMiJ,QAAQ9H,KAAKlB,GAAI4E,EAAoB,aAAf8O,EAAMzM,MACzCjH,EAAE6qB,aAAajmB,IAAO,GAM1B8lB,EAAc3qB,EAAOsF,EAAM8H,GAC3BnN,EAAEisB,mBAAqB,KAd3B,GAAIvY,GAAQ7Z,EAAG6Z,KAgBf,OAfA7Y,SAAQqC,IAAIwW,EAAMzM,MAeX8kB,IAaX1mB,EACK8R,GAAG,4BAA6BoU,GAChCpU,GAAG,4BAA6BoU,GAChCpU,GAAG,2BAA4B,SAASnX,GACrCgrB,EAAejrB,EAAOsF,EAAM8H,KAE/BgK,GAAG,QAAS2U,GACZ3U,GAAG,WAAY2U,GAGxB,QAAS/F,GAAgBhmB,EAAOsF,EAAM8H,GAClC9H,EACK8R,GAAG,4BAA6B,MAChCA,GAAG,2BAA4B,MACpC6T,EAAejrB,EAAOsF,GAzN1B,GADA2kB,EAAOA,IAAS,QACbA,EAAKltB,OAAS,EACb,KAAM,IAAIiE,OAAM,6CA2NpB,OAAOvF,GAASyb,SAAS,mBACrB4O,aAAcA,EACdrJ,MAAOyN,EACPlE,gBAAiBA,KAKzBvqB,EAAS0wB,WAAa,WAElB,QAASC,GAAaC,GAClB,MAAIA,GAEGA,EAAKpwB,QAAQ,OAAQ,IADjB,KAGf,GAAIqwB,GAAOC,EAAOtc,CAElB,IADAqc,EAAQlxB,UAAU,GACI,IAAnBA,UAAU2B,OACTwvB,EAAQnxB,UAAU,GAClB6U,EAAW7U,UAAU,OAEpB,CAAA,GAAsB,IAAnBA,UAAU2B,OAGb,KAAM,IAAIiE,OAAM,8BAFjBiP,GAAW7U,UAAU,GAItBmxB,EAECC,QACKC,MAAM3yB,EAAG4yB,KAAMJ,GACfG,MAAM3yB,EAAG4yB,KAAMH,GACfI,MAAM,SAAS5xB,EAAOuM,EAAOE,GACvBzM,EACCkV,EAASlV,EAAO,MAEhBkV,EAAS,MAAO3I,MAAOA,EAAMslB,QAASplB,MAAOA,EAAMolB,YAG3D,UAAUhyB,KAAKwxB,EAAaE,IAChCxyB,EAAG4yB,KAAKJ,EAAOrc,GACX,cAAcrV,KAAKwxB,EAAaE,KACpCxyB,EAAGwiB,KAAKgQ,EAAO,SAAUvxB,EAAOE,GAC5B,GAAGF,EAEC,WADAkV,GAASlV,EAAO,KAGpB,IAAI8xB,GAAUC,YAAYC,MAAM9xB,GAE5B+xB,EAAYH,EAAQvlB,QACpBA,EAAQ,GAAIwH,OAAMke,EAAUjwB,OAChCiwB,GAAUxjB,QAAQ,SAAU+D,EAAMzR,GAC9B,GAAIwJ,GAAOgC,EAAMxL,GAAK+wB,EAAQhV,OAAOmV,EAAUlxB,GAC/CwJ,GAAKmI,GAAK3R,EACVwJ,EAAKiI,KAAOA,GAGhB,IAAI0f,GAAYJ,EAAQrlB,QACpBA,IACJylB,GAAUzjB,QAAQ,SAASC,GACvB,GAAI2D,GAAOyf,EAAQ/U,OAAOrO,EAC1BjC,GAAMvK,MACFsH,OAAQsoB,EAAQhV,OAAOzK,EAAK8f,GAAGzf,GAC/B5R,OAAQgxB,EAAQhV,OAAOzK,EAAK5R,GAAGiS,GAC/BmL,WAAYxL,EAAK8f,EACjBpU,WAAY1L,EAAK5R,KAGzB,IAAI2xB,IAAS7lB,MAAOA,EAAOG,MAAOD,EAClCyI,GAAS,KAAMkd,MAW3B1xB,EAAS2xB,YAAc,SAAS/lB,EAAMgmB,EAAaC,EAAYC,GAe3D,QAASC,GAAUhzB,EAAGizB,GAClB,MAAOA,GAAM1jB,OAAO,SAASlL,GAAK,QAASrE,EAAEqE,KAdjD,GAAIyI,GAAOE,EAAOkmB,EAAML,GAAe,OACnCM,EAAKL,GAAc,aAAcM,EAAKL,GAAc,YAExD,KAAInmB,EAAwBC,GAAO,CAC/B,GAAIwmB,IAAY,WAAY,YACxBC,EAAKD,EAASE,UAAU,SAAS9yB,GAAK,MAAOoM,GAAKpM,IAAMmM,EAAwBC,EAAKpM,KACzF,IAAG6yB,EAAG,EACF,KAAM,IAAI9sB,OAAM,0BACpBqG,GAAOA,EAAKwmB,EAASC,IAEzBtmB,EAAQH,EAAKG,OAASH,EAAKI,MAC3BH,EAAQD,EAAKC,OAASD,EAAKE,QAO3B,IAAIymB,GAAQxmB,EAAM,EAClB,IAAiBQ,SAAdgmB,EAAML,GAAmB,CACxB,GAAIM,GAAcX,GAAcA,IAAe,mBAAoB,QAAS,SAAU,QAClFY,EAAcX,GAAcA,IAAe,mBAAoB,QAAS,SAAU,QAElFY,GAAgB,OACpB,IAAGH,EAAMI,OAASJ,EAAMK,MACpBV,EAAK,QACLC,EAAK,YAEJ,CACD,GAAIU,GAAad,EAAUQ,EAAOC,EAClC,KAAIK,EAAWvxB,OAAQ,CAInB,GAHA+wB,EAAKK,EAAaJ,UAAU,SAASpX,GACjC,MAAOqX,GAAMrX,IAAM6W,EAAUQ,EAAMrX,GAAIsX,GAAalxB,SAErD+wB,EAAG,EACF,KAAGR,GACO,GAAItsB,OAAM,cAAgB2sB,EAAK,gBAE/B,GAAI3sB,OAAM,8BAExBwG,GAAQA,EAAMvJ,IAAI,SAASwL,GAAK,MAAOA,GAAE0kB,EAAaL,MACtDE,EAAQxmB,EAAM,GACd8mB,EAAad,EAAUQ,EAAOC,GAOlC,GALGK,EAAWvxB,OAAS,GACnBjC,QAAQyzB,KAAK,2CAA4CD,GAC7DX,EAAKW,EAAW,GAEhBA,EAAad,EAAUQ,EAAOE,IAC1BI,EAAWvxB,OACX,KAAGwwB,KAAeS,EAAMT,GACd,GAAIvsB,OAAM,cAAgB4sB,EAAK,gBAE/B,GAAI5sB,OAAM,8BAErBstB,GAAWvxB,OAAS,GACnBjC,QAAQyzB,KAAK,2CAA4CD,GAC7DV,EAAKU,EAAW,IAaxB,GAAIF,GAAQ9mB,EAAM,EAClB,IAAkBU,SAAfomB,EAAMV,GAAoB,CACzB,GAAIc,GAAenB,GAAeA,IAAgB,YAAa,KAAM,OACjEoB,GAAgB,SAEpB,IADAH,EAAad,EAAUY,EAAOI,IAC1BF,EAAWvxB,OAAQ,CAInB,GAHA+wB,EAAKW,EAAaV,UAAU,SAASpX,GACjC,MAAOyX,GAAMzX,IAAM6W,EAAUY,EAAMzX,GAAI6X,GAAczxB,SAEtD+wB,EAAG,EACF,KAAGT,GACO,GAAIrsB,OAAM,eAAiB0sB,EAAM,gBAEjC,GAAI1sB,OAAM,8BAExBsG,GAAQA,EAAMrJ,IAAI,SAASqK,GAAK,MAAOA,GAAEmmB,EAAaX,MACtDM,EAAQ9mB,EAAM,GACdgnB,EAAad,EAAUY,EAAOI,GAE/BF,EAAWvxB,OAAS,GACnBjC,QAAQyzB,KAAK,6CAA8CD,GAC/DZ,EAAMY,EAAW,GAGrB,OACIhnB,MAAOA,EACPE,MAAOA,EACP6lB,YAAaK,EACbJ,WAAYK,EACZJ,WAAYK,IASpBnyB,EAASizB,WAAa,WAOlB,QAASC,GAASC,GACd,OACItR,IAAK,WACD,MAAOsR,GAAMtR,MAAMvT,OAAO,SAAS0O,GAC/B,MAAoB,QAAbA,EAAGvQ,UAM1B,QAAS2mB,GAAUC,EAAKC,GACpB,GAAIC,GAAYF,EAAIE,UAAUD,EAC9B,QACIh1B,YAAa+0B,EACbE,UAAWA,EACXJ,MAAOD,EAASK,EAAUJ,QAAQ3kB,OAAOglB,EAAU5T,IACV4T,EAAU5S,OACV4S,EAAUplB,QAvB3D,GAAIolB,IACA5T,IAAK,SAAS1gB,EAAGa,GAAK,MAAOA,IAC7B6gB,OAAQ,WAAa,MAAO,OAC5BxS,KAAM,WAAa,MAAO,OAwB9B,QACIqlB,KAAM,SAASC,EAAKJ,GAChB,GAAID,GAAM/0B,EAAYo1B,EACtB,OAAON,GAAUC,EAAKC,IAE1BK,QAAS,SAASN,EAAKC,GACnB,MAAOF,GAAUC,EAAKC,QAQlCtzB,EAAS4zB,aAAe,SAASC,EAAM7B,EAAO8B,EAAaC,EAAgBC,EAAgB5jB,EAAQ6jB,GAC/FA,EAAUA,KACV,IAAItU,GAAQxa,OAAOD,KAAK+uB,GAAS3yB,MACjC,IAAG0wB,EAAM1wB,OAAQ,CACb,GAAIgH,GAAO0pB,EAAMkC,QACbroB,KAAYE,KACZooB,EAAWN,EAAKrxB,IAAI,SAASzC,GAC7Bk0B,EAAQ3rB,GAAQvI,EAAEgC,GAClB,IAAIse,GAAQ9f,IACRsJ,EAAO3J,EAAM+zB,EAKjB,IAJApqB,EAAKiqB,GAAezT,EACpBxW,EAAKiI,KAAOxJ,EAAO,IAAMvI,EAAEgC,IAC3B8H,EAAKuqB,OAASzU,EAAM,EACpB9T,EAAMrK,KAAKqI,GACRuG,EAAQ,CACP,GAAIuB,KACJA,GAAKoiB,GAAkB3jB,EACvBuB,EAAKqiB,GAAkB3T,EACvBtU,EAAMvK,KAAKmQ,GAEf,GAAI0iB,GAAUr0B,EAAS4zB,aAAa7zB,EAAEu0B,OAAQtC,EAAM7hB,MAAM,GAAI2jB,EAAaC,EAAgBC,EAAgB3T,EAAOngB,EAAM+zB,GACxH,OAAOI,IAEX,QAAQxoB,MAAOwH,MAAMkhB,UAAUtQ,OAAOvkB,MAAMmM,EAAOsoB,EAAS3xB,IAAIjE,EAAGi2B,MAAM,WACjEzoB,MAAOsH,MAAMkhB,UAAUtQ,OAAOvkB,MAAMqM,EAAOooB,EAAS3xB,IAAIjE,EAAGi2B,MAAM,YAExE,OAAQ3oB,MAAOgoB,EAAKrxB,IAAI,SAASzC,GAElC,MADAA,GAAEq0B,OAASzU,EAAM,EACV5f,IACPgM,MAAO8nB,EAAKrxB,IAAI,SAASzC,GACzB,GAAI4R,KAGJ,OAFAA,GAAKoiB,GAAkB3jB,EACvBuB,EAAKqiB,GAAkBj0B,EAAE+zB,GAClBniB,MAIf3R,EAASy0B,uBAAyB,SAAS5oB,EAAO6oB,EAASC,GAEvD,GAAI5oB,GAAQsH,MAAMkhB,UAAUtQ,OAAOvkB,SAAUmM,EAAMrJ,IAAI,SAASqK,GAC5D,MAAOA,GAAE6nB,EAAQE,aAAapyB,IAAI,SAASqyB,GACvC,GAAI7mB,KAOJ,OANG2mB,GAASxb,UACRnL,EAAE2mB,EAASxb,SAAW5Y,KAC1ByN,EAAE2mB,EAAShmB,YAAc9B,EAAE6nB,EAAQlnB,SACnCQ,EAAE2mB,EAAS9lB,YAAc6lB,EAAQI,UAAYD,EAAIH,EAAQI,WAAaD,EACnEF,EAASI,YACR/mB,EAAE2mB,EAASI,WAAaF,GACrB7mB,MAGf,QACInC,MAAOA,EACPE,MAAOA,IAKf/L,EAASg1B,YAAc,SAAStI,GAI5B,QAASuI,GAAmBxhB,EAAMwZ,EAAKC,GACnCgI,EAAOC,YAAYzvB,KAAK+N,GAAM1F,QAAQ,SAASqnB,GAC3C,GAAIrzB,GAAK4rB,CACT,QAAOuH,EAAOG,YAAY3vB,KAAK0vB,IAC/B,IAAK,OACDrzB,EAAMmzB,EAAO1nB,QAAQ9H,KAAK0vB,GAC1BzH,EAAQV,EAAIlrB,GAAOkrB,EAAIlrB,MACvB,MACJ,KAAK,OACDA,EAAMmzB,EAAOvmB,WAAWjJ,KAAK0vB,GAAW,IAAMF,EAAOrmB,WAAWnJ,KAAK0vB,GACrEzH,EAAQT,EAAInrB,GAAOmrB,EAAInrB,OAG3B4rB,EAAMnsB,KAAKiS,KAhBnB,GACI6hB,GAAYC,EAAeC,EAD3BrH,EAAwBnuB,EAASysB,+BAA+BC,GAAc,yBAoB9EwI,GACAO,SAAUrpB,EAASI,GAAU,GAC7BkpB,UAAWtpB,EAAS,MAAM,GAC1B+oB,YAAa/oB,EAASI,GAAU,GAChC6oB,YAAajpB,EAAS,MAAM,GAC5BoB,QAASpB,EAAS,MAAM,GACxBuC,WAAYvC,EAAS,MAAM,GAC3ByC,WAAYzC,EAAS,MAAM,GAC3BupB,MAAO,WACHxH,EAAsBnB,yBAE1BphB,KAAM,SAASA,GACX,GAAuCgqB,GAAnC3I,KAAUC,KAAU2I,IACxBX,GAAOO,SAAS/vB,KAAKkG,GAAMmC,QAAQ,SAAS0F,GACxC,GAAIA,EAAKqiB,OAASZ,EAAOQ,UAAUhwB,KAAK+N,GAAQ,CAC5C,GAAGmiB,KAAa,EACZ,KAAM,IAAIrwB,OAAM,kDACpBqwB,IAAa,MACV,CACH,GAAGA,KAAa,EACZ,KAAM,IAAIrwB,OAAM,kDACpBqwB,IAAa,EACbX,EAAmBxhB,EAAMwZ,EAAKC,GAElC2I,EAASr0B,KAAKiS,KAEfmiB,GACCN,EAAaO,EAASrzB,IAAI,SAASiR,GAC/B,GAAIsiB,IAAYtiB,EAAKqiB,OAAO,GAAGE,UAAWviB,EAAKqiB,OAAO,GAAGE,UAEzD,OADAD,GAAStiB,KAAOA,EACTsiB,IAGXR,EAAgBU,oBAAoBX,GACjCE,GACC7uB,KAAKuvB,QAAQV,KAEjBF,EAAa,KACbC,EAAgB,KAChBpH,EAAsBnB,cAAcC,EAAKC,EAAK2I,KAGtDM,aAAc,WACV,MAAOb,IAEXY,QAAS,SAASnO,GACd,GAAGA,GAAKwN,EAAe,CACnB,GAAI5H,MAAYV,KAAUC,IAC1BqI,GAAca,WAAWrO,EAAEiO,UAAW,SAASD,GAC3CpI,EAAMnsB,KAAKu0B,EAAStiB,MACpBwhB,EAAmBc,EAAStiB,KAAMwZ,EAAKC,KAE3CiB,EAAsBnB,cAAcC,EAAKC,EAAKS,GAElD6H,EAAQzN,GAIhB,OAAOmN,IAIXl1B,EAASq2B,cAAgB,SAASjmB,EAAQ8kB,EAAQxI,EAAY4J,GAO1D,QAAS5I,GAAcC,GACnB,MAAO,UAASla,GACZ,QAAOka,GAAQA,EAAM3W,QAAQvD,IAAO,GAI5C,QAASma,GAAoBD,GACzB,GAAIE,GAAKH,EAAcC,EACvB,OAAO,UAASla,GACZ,OAAQoa,EAAGpa,IAInB,QAASya,GAAaH,EAAQC,GAC1B,MAAID,GAEKC,EAENA,EAAOvZ,MAAMiZ,EAAcK,IACnBA,EAAOzf,OAAOsf,EAAoBI,IACjCD,EAAO9J,OAAO+J,EAAO1f,OAAOsf,EAAoBG,KAHjDA,EAFAC,EAYf,QAASuI,GAAW5I,GAChB,GAAI6I,GAAK1nB,EAAKuD,UAAU,sBAAsBzG,KAAK+hB,EACnD6I,GAAG7gB,QACE0F,OAAO,QACP/S,KAAK,QAAS,iBACdmuB,OACGC,eAAgB,MAChBC,eAAgB,QAChBC,eAAgB,OAChBC,gBAAiB,MACjBC,QAAW,eACXC,QAAS,MACTC,OAAQ,UACRC,OAAQ,QAEhBT,EAAGrV,OAAOzM,WAAW,KAAMpM,KAAK,UAAW,GAAGsY,SAC9C4V,EAAG3V,KAAK,SAASrc,EAAGnE,GAChB,MAAO,SAAWA,EAAE,GAAK,KAAO60B,EAAOC,YAAYzvB,KAAKlB,GAAGlD,OAAS,MAEnEqa,GAAG,YAAa,SAASnX,GACtB2pB,EAAsBZ,eAAe/oB,MAExCmX,GAAG,WAAY,SAASnX,GACrB2pB,EAAsBZ,cAAc,QAEvC5R,GAAG,QAAS,SAASnX,GAClB2pB,EAAsBV,eAAeS,EAAab,GAAW7oB,MAErE,IAAI0yB,GAAWpoB,EAAKuD,UAAU,iBAAiBzG,KAAsB,IAAjB+hB,EAAMrsB,QAAgB,MAC1E41B,GAAS/V,OAAOP,SAChBsW,EAASvhB,QACN0F,OAAO,QACL/S,KAAK,QAAS,YACnB4uB,EACKzQ,QAAQ,UAAW0Q,EAASC,cAC5BvW,KAAKsW,EAASC,eAAiBD,EAASE,UAAYF,EAASG,YAAcH,EAASI,iBAG7F,QAASC,KACL,GAAIC,GAAa/J,EAAcgK,EAC/B5oB,GAAKuD,UAAU,sBACVokB,OACGG,eAAgB,SAASpyB,EAAGnE,GAAK,MAAOo3B,GAAWjzB,GAAK,UAAY,QACpEkyB,eAAgB,SAASlyB,EAAGnE,GAAK,OAAQo3B,EAAWjzB,GAAK,EAAI,GAAK,MAClEuyB,QAAS,SAASvyB,EAAGnE,GAAK,OAAQo3B,EAAWjzB,GAAK,EAAI,GAAK,QAIvE,QAAS0qB,KACL,GAAIyI,GAAcjK,EAAcL,EAChCve,GAAKuD,UAAU,sBACVokB,OACGmB,mBAAoB,SAASpzB,EAAGnE,GAAK,MAAOs3B,GAAYnzB,GAAK,UAAY,SACzEqzB,MAAS,SAASrzB,EAAGnE,GAAK,MAAOs3B,GAAYnzB,GAAK,QAAU,WAtFxE,GAAI2pB,GAAwBnuB,EAASysB,+BAA+BC,GAAc,yBAC9E5d,EAAOzQ,EAAGgK,OAAO+H,GACjB0nB,KACAJ,EAAU,KAAMrK,EAAW,IAuF/Bc,GACKxS,GAAG,yBAA0B,SAASsR,EAAKC,EAAKS,GAC7C+J,EAAUrK,EAAW,KACrByK,EAASnK,EACTwJ,EAASlkB,WAEZ0I,GAAG,yBAA0B,SAASoc,GACnCL,EAAUK,EACVP,MAEH7b,GAAG,0BAA2B,SAASqc,GACpC3K,EAAW2K,EACX9I,KAER,IAAIiI,IACAI,aAAcnrB,EAAS,gBACvBkrB,UAAWlrB,EAAS,YACpBgrB,WAAYhrB,EAAS,MACrBirB,QAASjrB,GAAS,GAClB6G,OAAQ,WACJsjB,EAAWuB,GACXN,IACAtI,KAEJ7J,OAAQ,WAEJ,MADA1e,MAAKsM,SACEtM,MAIf,OADApI,GAAGmoB,cAAcyQ,EAAUb,GACpBa,GAGXn3B,EAASi4B,UAAY,SAAS53B,GAE1B,GAAGA,EAAE,GACD,MAAO63B,QAAOC,aAAa,GAAG93B,EAC7B,IAAGA,EAAE,GACN,MAAO63B,QAAOC,aAAa,GAAG93B,EAAE,GAC/B,IAAGA,EAAE,KACN,MAAOL,GAASi4B,UAAUt3B,KAAK2E,MAAMjF,EAAE,KAAOL,EAASi4B,UAAU53B,EAAE,GAClE,MAAM,IAAIkF,OAAM,yBAEzBvF,EAASo4B,YAAc,SAAS/3B,EAAG2xB,GAE/B,MADAA,GAAQA,MACDplB,EAAEyrB,QACLrmB,GAAI3R,EACJyR,KAAM9R,EAASi4B,UAAU53B,IAC1B2xB,IAGPhyB,EAASs4B,YAAc,SAASzU,EAAOxjB,EAAGwiB,EAAGmP,GAEzC,MADAA,GAAQA,MACDplB,EAAEyrB,QACLvvB,OAAQzI,EACRD,OAAQyiB,EACR1F,WAAY0G,EAAMxjB,GAClBgd,WAAYwG,EAAMhB,IACnBmP,IAGPhyB,EAASu4B,SAAW,SAAS9sB,EAAMkF,EAAM6nB,EAAKhkB,GAC1C,GAAI3I,GAAOE,EAAO1L,EAAGwiB,EACjB4V,EAAaD,EAAIC,YAAc,GAC/B5U,EAAQ,SAASxjB,GACjB,MAAOwL,GAAMxL,GAAGyR,MAEhB4mB,EAAI/nB,EAAK,GACTgoB,EAAaH,EAAIG,YAAc,EACnC,QAAOltB,GACP,IAAK,SACL,IAAK,YAGD,IAFAI,EAAQ,GAAIwH,OAAMqlB,GAClB3sB,KACI1L,EAAI,EAAGA,EAAEq4B,IAAKr4B,EAEd,IADAwL,EAAMxL,GAAKL,EAASo4B,YAAY/3B,GAAIu4B,OAAQ,IAAK9mB,KAAM2mB,EAAWz4B,EAASi4B,UAAU53B,KACjFwiB,EAAE,EAAGA,EAAExiB,IAAKwiB,EACZ9W,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOxjB,EAAGwiB,GAAI5D,WAAW,EAAM4Z,YAAY,IAEnF,IAAU,cAAPptB,EACC,IAAIpL,EAAI,EAAGA,EAAEq4B,IAAKr4B,EACdwL,EAAMxL,EAAEq4B,GAAK14B,EAASo4B,YAAY/3B,EAAEq4B,GACpC7sB,EAAMxL,EAAE,EAAEq4B,GAAK14B,EAASo4B,YAAY/3B,EAAE,EAAEq4B,GACxC3sB,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOxjB,EAAGA,EAAEq4B,GAAIG,YAAY,KAC5D9sB,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOxjB,EAAGA,EAAE,EAAEq4B,GAAIG,YAAY,IAEtE,MACJ,KAAK,QAED,IADAhtB,EAAQ,GAAIwH,OAAMqlB,GACdr4B,EAAI,EAAGA,EAAIq4B,IAAKr4B,EAChBwL,EAAMxL,GAAKL,EAASo4B,YAAY/3B,GAAIyR,KAAM2mB,EAAWz4B,EAASi4B,UAAU53B,IAC5E0L,GAAQ/L,EAAS+jB,YAAYF,EAAOjX,EAAE2N,MAAMme,GAAIA,EAAEC,EAAW,EAC7D,IAAIG,GAAY/sB,EAAM,GAAGsT,QACzB,KAAIhf,EAAI,EAAGA,EAAIsQ,EAAK,KAAMtQ,EACtB,IAAIwiB,EAAI,EAAGA,EAAI6V,IAAK7V,EAChB9W,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOhB,GAAIA,EAAE,GAAG6V,GAAIrZ,SAAUyZ,EAAWC,IAAK14B,EAAE,IACxF,MACJ,SACI,KAAM,IAAIkF,OAAM,2BAA2BkG,GAE/C,GAAIimB,IAAS7lB,MAAOA,EAAOG,MAAOD,EAClCyI,GAAS,KAAMkd,IAGnB1xB,EAAS+jB,YAAc,SAASF,EAAOD,EAAUD,GAM7C,IAAI,GALA+U,GAAI9U,EAAStiB,OACbyK,KACAitB,EAAYr4B,KAAK2E,MAAMozB,EAAE,GACzBI,EAAY,EAAInV,EAAIhjB,KAAKoH,IAAIpH,KAAKyG,GAAKsxB,GACvCO,EAAc,EAAItV,EAAIhjB,KAAKoH,IAAIixB,EAAYr4B,KAAKyG,GAAKsxB,GACjDr4B,EAAI,EAAGA,EAAIq4B,IAAKr4B,EACpB0L,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOD,EAASvjB,GAAIujB,GAAUvjB,EAAE,GAAGq4B,IAAKrZ,SAAUyZ,IACtF,KAAIz4B,EAAI,EAAGA,EAAIq4B,EAAE,IAAKr4B,EAClB0L,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOD,EAASvjB,GAAIujB,GAAUvjB,EAAE24B,GAAWN,IAAKrZ,SAAU4Z,KACvFP,EAAE,GAAKr4B,GAAKM,KAAK2E,MAAMozB,EAAE,IACxB3sB,EAAMvK,KAAKxB,EAASs4B,YAAYzU,EAAOD,EAASvjB,GAAIujB,GAAUvjB,EAAEq4B,EAAEM,GAAWN,IAAKrZ,SAAU4Z,IAEpG,OAAOltB,IAGX/L,EAASk5B,YAAc,SAASC,EAASC,GACrC,GAAIC,GAAS,GAAIC,QAAOH,EAAS,IACjC,OAAO,UAAStsB,GACZ,GACI0sB,GACuBC,EAFvB9hB,EAAI7K,EAAE9K,IAENkf,EAAO,GAAIF,KAAkB1gB,EAAI,CACrC,GACIk5B,GAASF,EAAOI,KAAK/hB,GAEjB8hB,EADDD,EACQ7hB,EAAEvH,MAAM9P,EAAGg5B,EAAOK,WAElBhiB,EAAEvH,MAAM9P,GAChB4gB,EAAK3f,OAASk4B,EAAKl4B,OAAS83B,GAAmBnY,EAAK3f,OAAS,IAC5Dyf,EAAMvf,KAAKyf,GACXA,EAAO,IAEXA,GAAQuY,EACRn5B,EAAIg5B,EAAOK,gBAEE,OAAXH,EAEN,OADAxY,GAAMvf,KAAKyf,GACJF,IAIf/gB,EAAS25B,iBAAmB,SAAS9tB,EAAOE,EAAO6tB,EAAMC,EAAOC,EAASC,GACrE,GAAIC,MAAWC,KAAaC,IAqB5B,OApBAruB,GAAMkC,QAAQ,SAASlB,GACnBmtB,EAAKJ,EAAK/sB,IAAMA,CAChB,IAAIkb,GAAI8R,EAAMhtB,EACVotB,GAAOlS,KACPkS,EAAOlS,IAAMtc,KAAMsc,MAE3Bhc,EAAMgC,QAAQ,SAASC,GACnB,GAA8CmsB,GAAIC,EAA9CtxB,EAASgxB,EAAQ9rB,GAAI5N,EAAS25B,EAAQ/rB,EAC1C,MAAKmsB,EAAKH,EAAKlxB,IACX,KAAM,IAAIvD,OAAM,cAAgBuD,EAAS,cAC7C,MAAKsxB,EAAKJ,EAAK55B,IACX,KAAM,IAAImF,OAAM,cAAgBnF,EAAS,cAC7C,IAAIi6B,GAAQR,EAAMM,GAAM,IAAMN,EAAMO,EAChCF,GAAOG,KACPH,EAAOG,IACH5uB,KAAM4uB,EACNvxB,OAAQ+wB,EAAMM,GACd/5B,OAAQy5B,EAAMO,QAItBvuB,MAAO1G,OAAOD,KAAK+0B,GAAQz3B,IAAI,SAASJ,GAAK,MAAO63B,GAAO73B,KAC3D2J,MAAO5G,OAAOD,KAAKg1B,GAAQ13B,IAAI,SAASJ,GAAK,MAAO83B,GAAO93B,OAInEpC,EAAS3B,GAAKA,EACd2B,EAAS1B,YAAcA,EACvB0B,EAASzB,GAAKA,EAEPyB,EAEH,GAAsB,kBAAXs6B,SAAyBA,OAAOC,IACvCD,QAAQ,KAAM,cAAe,MAAOl8B,OACjC,IAAqB,gBAAVo8B,SAAsBA,OAAOC,QAAS,CACpD,GAAIC,GAAMC,QAAQ,MACdC,EAAeD,QAAQ,cACC,mBAAjBC,KACPA,EAAeA,EAAat8B,YAEhC,IAAIu8B,GAAMF,QAAQ,KAClBH,QAAOC,QAAUr8B,EAAUs8B,EAAKE,EAAcC,OAE9Cl0B,MAAK3G,SAAW5B,EAAUC,GAAIC,YAAaC","file":"dc.graph.min.js"} \ No newline at end of file +{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","console","error","compose","f","g","apply","arguments","get_original","x","orig","v","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","uuid","replace","c","r","Math","random","toString","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","length","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","ret","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","this","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","align_f","axis","type","listname","can_get_graph_from_this","data","nodes","vertices","edges","links","version","constants","CHART_CLASS","property","defaultValue","unwrap","undefined","identity","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","script_path","_path","filename","scripts","getElementsByTagName","src","match","RegExp","depth_first_traversal","callbacks","diagram","place_tree","nodeKey","placed","skip","indegree","rows","place","outmap","forEach","e","ei","sib","pop","init","tree","filter","roots","reduce","m","tail","edgeSource","head","edgeTarget","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","parent","chartGroup","initLayout","_worker","Worker","_chart","layoutAlgorithm","args","handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize","rankdir","postMessage","command","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","name","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","window","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","event","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","_xScale","range","_yScale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","generateSvg","append","_defs","mouseZoomable","linear","behavior","zoom","on","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","marginMixin","_nodeLayer","_edgeLayer","dispatch","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","sourceAccessor","sourcename","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","edgeLength","edgeDistanceAccessor","distance","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","edgeId","textpathId","getNode","_enterNode","changedShape","remove","text","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","quicksort","by","wnodes","v1","dcg_nodeFixed","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","onmessage","response","elapsed","do_zoom","start","opts","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","svg","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","anchorName","chartID","_items","_legend","nodeWidth","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_constraints","rootf","treef","xgap","ygap","dfs","foo_x","tree_positions","rowf","ofsx","ofsy","nwidth","best_dist","functor","left_x","hit_ins","isroot","want","badi","badl","limit","extra","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","createElement","rowsEnter","outerHTML","select_nodes","_selected","select_nodes_group","node_set_changed","stopPropagation","present","nselect","brushgroup","chart_registry","create_type","create_group","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","bind","dcg_dblclk_timeout","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","warn","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","inherit","shift","children","_level","recurse","values","prototype","pluck","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","clear","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","style","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","line_breaks","charexp","max_line_length","regexp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","nmap","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file diff --git a/web/js/dc.js b/web/js/dc.js index 1253ac23..db79e60b 100644 --- a/web/js/dc.js +++ b/web/js/dc.js @@ -1,5 +1,5 @@ /*! - * dc 2.1.0-dev + * dc 2.1.2 * http://dc-js.github.io/dc.js/ * Copyright 2012-2016 Nick Zhu & the dc.js Developers * https://github.com/dc-js/dc.js/blob/master/AUTHORS @@ -29,7 +29,7 @@ * such as {@link dc.baseMixin#svg .svg} and {@link dc.coordinateGridMixin#xAxis .xAxis}, * return values that are themselves chainable d3 objects. * @namespace dc - * @version 2.1.0-dev + * @version 2.1.2 * @example * // Example chaining * chart.width(300) @@ -38,7 +38,7 @@ */ /*jshint -W079*/ var dc = { - version: '2.1.0-dev', + version: '2.1.2', constants: { CHART_CLASS: 'dc-chart', DEBUG_GROUP_CLASS: 'debug', @@ -278,7 +278,7 @@ dc.redrawAll = function (group) { /** * If this boolean is set truthy, all transitions will be disabled, and changes to the charts will happen - * immediately + * immediately. * @memberof dc * @member disableTransitions * @type {Boolean} @@ -367,7 +367,7 @@ dc.units = {}; * chart.xUnits(dc.units.integers) // already the default * @param {Number} start * @param {Number} end - * @return {Number} + * @returns {Number} */ dc.units.integers = function (start, end) { return Math.abs(end - start); @@ -376,12 +376,12 @@ dc.units.integers = function (start, end) { /** * This argument can be passed to the {@link dc.coordinateGridMixin#xUnits .xUnits} function of the to * specify ordinal units for the x axis. Usually this parameter is used in combination with passing - * {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales d3.scale.ordinal} to + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md d3.scale.ordinal} to * {@link dc.coordinateGridMixin#x .x}. * It just returns the domain passed to it, which for ordinal charts is an array of all values. * @method ordinal * @memberof dc.units - * @see {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales d3.scale.ordinal} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md d3.scale.ordinal} * @see {@link dc.coordinateGridMixin#xUnits coordinateGridMixin.xUnits} * @see {@link dc.coordinateGridMixin#x coordinateGridMixin.x} * @example @@ -390,7 +390,7 @@ dc.units.integers = function (start, end) { * @param {*} start * @param {*} end * @param {Array} domain - * @return {Array} + * @returns {Array} */ dc.units.ordinal = function (start, end, domain) { return domain; @@ -418,7 +418,7 @@ dc.units.fp = {}; * var thousandths = dc.units.fp.precision(0.001); * thousandths(0.5, 1.0) // returns 500 * @param {Number} precision - * @return {Function} start-end unit function + * @returns {Function} start-end unit function */ dc.units.fp.precision = function (precision) { var _f = function (s, e) { @@ -508,7 +508,7 @@ dc.dateFormat = d3.time.format('%m/%d/%Y'); dc.printers = {}; /** - * Converts a list of filters into a readable string + * Converts a list of filters into a readable string. * @method filters * @memberof dc.printers * @param {Array} filters @@ -528,7 +528,7 @@ dc.printers.filters = function (filters) { }; /** - * Converts a filter into a readable string + * Converts a filter into a readable string. * @method filter * @memberof dc.printers * @param {dc.filters|any|Array} filter @@ -554,8 +554,9 @@ dc.printers.filter = function (filter) { /** * Returns a function that given a string property name, can be used to pluck the property off an object. A function - * can be passed as the second argument to also alter the data being returned. This can be a useful shorthand method to create - * accessor functions. + * can be passed as the second argument to also alter the data being returned. + * + * This can be a useful shorthand method to create accessor functions. * @method pluck * @memberof dc * @example @@ -589,7 +590,7 @@ dc.pluck = function (n, f) { dc.utils = {}; /** - * Print a single value filter + * Print a single value filter. * @method printSingleValue * @memberof dc.utils * @param {any} filter @@ -635,6 +636,9 @@ dc.utils.add = function (l, r, t) { if (typeof r === 'string') { r = +r; } + if (t === 'millis') { + return new Date(l.getTime() + r); + } t = t || 'day'; return d3.time[t].offset(l, r); } else if (typeof r === 'string') { @@ -668,6 +672,9 @@ dc.utils.subtract = function (l, r, t) { if (typeof r === 'string') { r = +r; } + if (t === 'millis') { + return new Date(l.getTime() - r); + } t = t || 'day'; return d3.time[t].offset(l, -r); } else if (typeof r === 'string') { @@ -758,7 +765,7 @@ dc.utils.nameToId = function (name) { }; /** - * Append or select an item on a parent element + * Append or select an item on a parent element. * @method appendOrSelect * @memberof dc.utils * @param {d3.selection} parent @@ -894,7 +901,7 @@ dc.filters = {}; * @memberof dc.filters * @param {Number} low * @param {Number} high - * @return {Array} + * @returns {Array} * @constructor */ dc.filters.RangedFilter = function (low, high) { @@ -916,7 +923,7 @@ dc.filters.RangedFilter = function (low, high) { * @name TwoDimensionalFilter * @memberof dc.filters * @param {Array} filter - * @return {Array} + * @returns {Array} * @constructor */ dc.filters.TwoDimensionalFilter = function (filter) { @@ -948,7 +955,7 @@ dc.filters.TwoDimensionalFilter = function (filter) { * @name RangedTwoDimensionalFilter * @memberof dc.filters * @param {Array>} filter - * @return {Array>} + * @returns {Array>} * @constructor */ dc.filters.RangedTwoDimensionalFilter = function (filter) { @@ -970,9 +977,6 @@ dc.filters.RangedTwoDimensionalFilter = function (filter) { var x, y; if (value instanceof Array) { - if (value.length !== 2) { - return false; - } x = value[0]; y = value[1]; } else { @@ -996,7 +1000,7 @@ dc.filters.RangedTwoDimensionalFilter = function (filter) { * @memberof dc * @mixin * @param {Object} _chart - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ dc.baseMixin = function (_chart) { _chart.__dcFlag__ = dc.utils.uniqueId(); @@ -1118,8 +1122,7 @@ dc.baseMixin = function (_chart) { * chart.height(function(anchor) { return doSomethingWith(anchor); }); // set the chart's height with a function * chart.height(null); // reset the height to the default auto calculation * @param {Number|Function} [height] - * @return {Number} - * @return {dc.baseMixin} + * @returns {Number|dc.baseMixin} */ _chart.height = function (height) { if (!arguments.length) { @@ -1148,8 +1151,7 @@ dc.baseMixin = function (_chart) { * return (width && width > chart.minWidth()) ? width : chart.minWidth(); * }); * @param {Number|Function} [width] - * @return {Number} - * @return {dc.baseMixin} + * @returns {Number|dc.baseMixin} */ _chart.width = function (width) { if (!arguments.length) { @@ -1172,8 +1174,7 @@ dc.baseMixin = function (_chart) { * @instance * @see {@link dc.baseMixin#width width} * @param {Number} [minWidth=200] - * @return {Number} - * @return {dc.baseMixin} + * @returns {Number|dc.baseMixin} */ _chart.minWidth = function (minWidth) { if (!arguments.length) { @@ -1191,8 +1192,7 @@ dc.baseMixin = function (_chart) { * @instance * @see {@link dc.baseMixin#height height} * @param {Number} [minHeight=200] - * @return {Number} - * @return {dc.baseMixin} + * @returns {Number|dc.baseMixin} */ _chart.minHeight = function (minHeight) { if (!arguments.length) { @@ -1205,22 +1205,21 @@ dc.baseMixin = function (_chart) { /** * **mandatory** * - * Set or get the dimension attribute of a chart. In `dc`, a dimension can be any valid [crossfilter - * dimension](https://github.com/square/crossfilter/wiki/API-Reference#wiki-dimension). + * Set or get the dimension attribute of a chart. In `dc`, a dimension can be any valid + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension crossfilter dimension} * * If a value is given, then it will be used as the new dimension. If no value is specified then * the current dimension will be returned. * @method dimension * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/square/crossfilter/wiki/API-Reference#dimension crossfilter.dimension} + * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension crossfilter.dimension} * @example * var index = crossfilter([]); * var dimension = index.dimension(dc.pluck('key')); * chart.dimension(dimension); * @param {crossfilter.dimension} [dimension] - * @return {crossfilter.dimension} - * @return {dc.baseMixin} + * @returns {crossfilter.dimension|dc.baseMixin} */ _chart.dimension = function (dimension) { if (!arguments.length) { @@ -1234,7 +1233,7 @@ dc.baseMixin = function (_chart) { /** * Set the data callback or retrieve the chart's data set. The data callback is passed the chart's * group and by default will return - * {@link https://github.com/square/crossfilter/wiki/API-Reference#group_all group.all}. + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_all group.all}. * This behavior may be modified to, for instance, return only the top 5 groups. * @method data * @memberof dc.baseMixin @@ -1245,8 +1244,7 @@ dc.baseMixin = function (_chart) { * * chart.data(function (group) { return group.top(5); }); * @param {Function} [callback] - * @return {*} - * @return {dc.baseMixin} + * @returns {*|dc.baseMixin} */ _chart.data = function (callback) { if (!arguments.length) { @@ -1261,7 +1259,7 @@ dc.baseMixin = function (_chart) { * **mandatory** * * Set or get the group attribute of a chart. In `dc` a group is a - * {@link https://github.com/square/crossfilter/wiki/API-Reference#group-map-reduce crossfilter group}. + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group-map-reduce crossfilter group}. * Usually the group should be created from the particular dimension associated with the same chart. If a value is * given, then it will be used as the new group. * @@ -1270,7 +1268,7 @@ dc.baseMixin = function (_chart) { * @method group * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/square/crossfilter/wiki/API-Reference#group-map-reduce crossfilter.group} + * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group-map-reduce crossfilter.group} * @example * var index = crossfilter([]); * var dimension = index.dimension(dc.pluck('key')); @@ -1278,8 +1276,7 @@ dc.baseMixin = function (_chart) { * chart.group(dimension.group(crossfilter.reduceSum())); * @param {crossfilter.group} [group] * @param {String} [name] - * @return {crossfilter.group} - * @return {dc.baseMixin} + * @returns {crossfilter.group|dc.baseMixin} */ _chart.group = function (group, name) { if (!arguments.length) { @@ -1293,18 +1290,17 @@ dc.baseMixin = function (_chart) { /** * Get or set an accessor to order ordinal dimensions. The chart uses - * {@link https://github.com/square/crossfilter/wiki/API-Reference#quicksort_by crossfilter.quicksort.by} + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#quicksort_by crossfilter.quicksort.by} * to sort elements; this accessor returns the value to order on. * @method ordering * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/square/crossfilter/wiki/API-Reference#quicksort_by crossfilter.quicksort.by} + * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#quicksort_by crossfilter.quicksort.by} * @example * // Default ordering accessor * _chart.ordering(dc.pluck('key')); * @param {Function} [orderFunction] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.ordering = function (orderFunction) { if (!arguments.length) { @@ -1331,13 +1327,12 @@ dc.baseMixin = function (_chart) { }; /** - * Clear all filters associated with this chart - * - * The same can be achieved by calling {@link dc.baseMixin#filter chart.filter(null)}. + * Clear all filters associated with this chart. The same effect can be achieved by calling + * {@link dc.baseMixin#filter chart.filter(null)}. * @method filterAll * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.filterAll = function () { return _chart.filter(null); @@ -1352,11 +1347,11 @@ dc.baseMixin = function (_chart) { * @method select * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Selections d3.selection} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#d3_select d3.select} * @example - * // Similar to: - * d3.select('#chart-id').select(selector); - * @return {d3.selection} + * // Has the same effect as d3.select('#chart-id').select(selector) + * chart.select(selector) + * @returns {d3.selection} */ _chart.select = function (s) { return _root.select(s); @@ -1370,11 +1365,11 @@ dc.baseMixin = function (_chart) { * @method selectAll * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Selections d3.selection} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#d3_selectAll d3.selectAll} * @example - * // Similar to: - * d3.select('#chart-id').selectAll(selector); - * @return {d3.selection} + * // Has the same effect as d3.select('#chart-id').selectAll(selector) + * chart.selectAll(selector) + * @returns {d3.selection} */ _chart.selectAll = function (s) { return _root ? _root.selectAll(s) : null; @@ -1382,7 +1377,7 @@ dc.baseMixin = function (_chart) { /** * Set the root SVGElement to either be an existing chart's root; or any valid [d3 single - * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom + * selector](https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements) specifying a dom * block element such as a div; or a dom element or d3 selection. Optionally registers the chart * within the chartGroup. This class is called internally on chart initialization, but be called * again to relocate the chart. However, it will orphan any previously created SVGElements. @@ -1391,8 +1386,7 @@ dc.baseMixin = function (_chart) { * @instance * @param {anchorChart|anchorSelector|anchorNode} [parent] * @param {String} [chartGroup] - * @return {String|node|d3.selection} - * @return {dc.baseMixin} + * @returns {String|node|d3.selection|dc.baseMixin} */ _chart.anchor = function (parent, chartGroup) { if (!arguments.length) { @@ -1424,7 +1418,7 @@ dc.baseMixin = function (_chart) { * @method anchorName * @memberof dc.baseMixin * @instance - * @return {String} + * @returns {String} */ _chart.anchorName = function () { var a = _chart.anchor(); @@ -1447,8 +1441,7 @@ dc.baseMixin = function (_chart) { * @instance * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement HTMLElement} * @param {HTMLElement} [rootElement] - * @return {HTMLElement} - * @return {dc.baseMixin} + * @returns {HTMLElement|dc.baseMixin} */ _chart.root = function (rootElement) { if (!arguments.length) { @@ -1467,8 +1460,7 @@ dc.baseMixin = function (_chart) { * @instance * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/SVGElement SVGElement} * @param {SVGElement|d3.selection} [svgElement] - * @return {SVGElement|d3.selection} - * @return {dc.baseMixin} + * @returns {SVGElement|d3.selection|dc.baseMixin} */ _chart.svg = function (svgElement) { if (!arguments.length) { @@ -1484,7 +1476,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/SVGElement SVGElement} - * @return {SVGElement} + * @returns {SVGElement} */ _chart.resetSvg = function () { _chart.select('svg').remove(); @@ -1507,15 +1499,26 @@ dc.baseMixin = function (_chart) { /** * Set or get the filter printer function. The filter printer function is used to generate human - * friendly text for filter value(s) associated with the chart instance. By default dc charts use a - * default filter printer `dc.printers.filter` that provides simple printing support for both - * single value and ranged filters. + * friendly text for filter value(s) associated with the chart instance. The text will get shown + * in the `.filter element; see {@link dc.baseMixin#turnOnControls turnOnControls}. + * + * By default dc charts use a default filter printer {@link dc.printers.filters dc.printers.filters} + * that provides simple printing support for both single value and ranged filters. * @method filterPrinter * @memberof dc.baseMixin * @instance - * @param {Function} [filterPrinterFunction=dc.printers.filter] - * @return {Function} - * @return {dc.baseMixin} + * @example + * // for a chart with an ordinal brush, print the filters in upper case + * chart.filterPrinter(function(filters) { + * return filters.map(function(f) { return f.toUpperCase(); }).join(', '); + * }); + * // for a chart with a range brush, print the filter as start and extent + * chart.filterPrinter(function(filters) { + * return 'start ' + dc.utils.printSingleValue(filters[0][0]) + + * ' extent ' + dc.utils.printSingleValue(filters[0][1] - filters[0][0]); + * }); + * @param {Function} [filterPrinterFunction=dc.printers.filters] + * @returns {Function|dc.baseMixin} */ _chart.filterPrinter = function (filterPrinterFunction) { if (!arguments.length) { @@ -1532,8 +1535,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @param {Boolean} [controlsUseVisibility=false] - * @return {Boolean} - * @return {dc.baseMixin} + * @returns {Boolean|dc.baseMixin} **/ _chart.controlsUseVisibility = function (useVisibility) { if (!arguments.length) { @@ -1555,7 +1557,7 @@ dc.baseMixin = function (_chart) { * @method turnOnControls * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.turnOnControls = function () { if (_root) { @@ -1572,7 +1574,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @see {@link dc.baseMixin#turnOnControls turnOnControls} * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.turnOffControls = function () { if (_root) { @@ -1590,8 +1592,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @param {Number} [duration=750] - * @return {Number} - * @return {dc.baseMixin} + * @returns {Number|dc.baseMixin} */ _chart.transitionDuration = function (duration) { if (!arguments.length) { @@ -1607,8 +1608,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @param {Number} [delay=0] - * @return {Number} - * @return {dc.baseMixin} + * @returns {Number|dc.baseMixin} */ _chart.transitionDelay = function (delay) { if (!arguments.length) { @@ -1641,7 +1641,7 @@ dc.baseMixin = function (_chart) { * @method render * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.render = function () { _height = _width = undefined; // force recalculate @@ -1687,11 +1687,11 @@ dc.baseMixin = function (_chart) { * events (in particular {@link dc.redrawAll dc.redrawAll}); therefore, you only need to * manually invoke this function if data is manipulated outside of dc's control (for example if * data is loaded in the background using - * {@link https://github.com/square/crossfilter/wiki/API-Reference#crossfilter_add crossfilter.add}. + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#crossfilter_add crossfilter.add}). * @method redraw * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.redraw = function () { sizeSvg(); @@ -1719,7 +1719,7 @@ dc.baseMixin = function (_chart) { * @method commitHandler * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.commitHandler = function (commitHandler) { if (!arguments.length) { @@ -1736,7 +1736,7 @@ dc.baseMixin = function (_chart) { * @method redrawGroup * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.redrawGroup = function () { if (_commitHandler) { @@ -1759,7 +1759,7 @@ dc.baseMixin = function (_chart) { * @method renderGroup * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.renderGroup = function () { if (_commitHandler) { @@ -1818,8 +1818,7 @@ dc.baseMixin = function (_chart) { * return false; * }); * @param {Function} [hasFilterHandler] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.hasFilterHandler = function (hasFilterHandler) { if (!arguments.length) { @@ -1837,7 +1836,7 @@ dc.baseMixin = function (_chart) { * @instance * @see {@link dc.baseMixin#hasFilterHandler hasFilterHandler} * @param {*} [filter] - * @return {Boolean} + * @returns {Boolean} */ _chart.hasFilter = function (filter) { return _hasFilterHandler(_filters, filter); @@ -1880,8 +1879,7 @@ dc.baseMixin = function (_chart) { * return filters; * }); * @param {Function} [removeFilterHandler] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.removeFilterHandler = function (removeFilterHandler) { if (!arguments.length) { @@ -1918,8 +1916,7 @@ dc.baseMixin = function (_chart) { * return filters; * }); * @param {Function} [addFilterHandler] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.addFilterHandler = function (addFilterHandler) { if (!arguments.length) { @@ -1954,7 +1951,7 @@ dc.baseMixin = function (_chart) { * return filters; * }); * @param {Function} [resetFilterHandler] - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.resetFilterHandler = function (resetFilterHandler) { if (!arguments.length) { @@ -1976,12 +1973,13 @@ dc.baseMixin = function (_chart) { /** * Replace the chart filter. This is equivalent to calling `chart.filter(null).filter(filter)` + * but more efficient because the filter is only applied once. * * @method replaceFilter * @memberof dc.baseMixin * @instance * @param {*} [filter] - * @return {dc.baseMixin} + * @returns {dc.baseMixin} **/ _chart.replaceFilter = function (filter) { _filters = _resetFilterHandler(_filters); @@ -2008,8 +2006,8 @@ dc.baseMixin = function (_chart) { * {@link dc.baseMixin#resetFilterHandler resetFilterHandler} * * Note that this is always a toggle (even when it doesn't make sense for the filter type). If - * you wish to replace the current filter, either call `chart.filter(null)` first, or - * equivalently, call {@link dc.baseMixin#replaceFilter `chart.replaceFilter(filter)`} instead. + * you wish to replace the current filter, either call `chart.filter(null)` first - or it's more + * efficient to call {@link dc.baseMixin#replaceFilter `chart.replaceFilter(filter)`} instead. * * Each toggle is executed by checking if the value is already present using the * {@link dc.baseMixin#hasFilterHandler hasFilterHandler}; if it is not present, it is added @@ -2039,7 +2037,7 @@ dc.baseMixin = function (_chart) { * // from the syntax for filtering a crossfilter dimension directly, dimension.filter([15,20]) * chart.filter(dc.filters.RangedFilter(15,20)); * @param {*} [filter] - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.filter = function (filter) { if (!arguments.length) { @@ -2083,7 +2081,7 @@ dc.baseMixin = function (_chart) { * @method filters * @memberof dc.baseMixin * @instance - * @return {Array<*>} + * @returns {Array<*>} */ _chart.filters = function () { return _filters; @@ -2127,14 +2125,22 @@ dc.baseMixin = function (_chart) { * @method filterHandler * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/square/crossfilter/wiki/API-Reference#dimension_filter crossfilter.dimension.filter} + * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#dimension_filter crossfilter.dimension.filter} * @example - * // default filter handler + * // the default filter handler handles all possible cases for the charts in dc.js + * // you can replace it with something more specialized for your own chart * chart.filterHandler(function (dimension, filters) { - * dimension.filter(null); * if (filters.length === 0) { + * // the empty case (no filtering) * dimension.filter(null); + * } else if (filters.length === 1 && !filters[0].isFiltered) { + * // single value and not a function-based filter + * dimension.filterExact(filters[0]); + * } else if (filters.length === 1 && filters[0].filterType === 'RangedFilter') { + * // single range-based filter + * dimension.filterRange(filters[0]); * } else { + * // an array of values, or an array of filter objects * dimension.filterFunction(function (d) { * for (var i = 0; i < filters.length; i++) { * var filter = filters[i]; @@ -2157,8 +2163,7 @@ dc.baseMixin = function (_chart) { * return newFilter; // set the actual filter value to the new value * }); * @param {Function} [filterHandler] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.filterHandler = function (filterHandler) { if (!arguments.length) { @@ -2214,8 +2219,7 @@ dc.baseMixin = function (_chart) { * // custom key accessor for a multi-value crossfilter reduction * chart.keyAccessor(function(p) { return p.value.absGain; }); * @param {Function} [keyAccessor] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.keyAccessor = function (keyAccessor) { if (!arguments.length) { @@ -2239,8 +2243,7 @@ dc.baseMixin = function (_chart) { * // custom value accessor for a multi-value crossfilter reduction * chart.valueAccessor(function(p) { return p.value.percentageGain; }); * @param {Function} [valueAccessor] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.valueAccessor = function (valueAccessor) { if (!arguments.length) { @@ -2265,8 +2268,7 @@ dc.baseMixin = function (_chart) { * chart.label(function(d) { return d.data.key + '(' + Math.floor(d.data.value / all.value() * 100) + '%)'; }); * @param {Function} [labelFunction] * @param {Boolean} [enableLabels=true] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.label = function (labelFunction, enableLabels) { if (!arguments.length) { @@ -2285,8 +2287,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @param {Boolean} [renderLabel=false] - * @return {Boolean} - * @return {dc.baseMixin} + * @returns {Boolean|dc.baseMixin} */ _chart.renderLabel = function (renderLabel) { if (!arguments.length) { @@ -2317,8 +2318,7 @@ dc.baseMixin = function (_chart) { * + 'Fluctuation / Index Ratio: ' + numberFormat(p.value.fluctuationPercentage) + '%'; * }); * @param {Function} [titleFunction] - * @return {Function} - * @return {dc.baseMixin} + * @returns {Function|dc.baseMixin} */ _chart.title = function (titleFunction) { if (!arguments.length) { @@ -2335,8 +2335,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @param {Boolean} [renderTitle=true] - * @return {Boolean} - * @return {dc.baseMixin} + * @returns {Boolean|dc.baseMixin} */ _chart.renderTitle = function (renderTitle) { if (!arguments.length) { @@ -2368,7 +2367,7 @@ dc.baseMixin = function (_chart) { * moveChart.filter(chart.filter()); * }); * @param {Function} renderletFunction - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.renderlet = dc.logger.deprecate(function (renderletFunction) { _chart.on('renderlet.' + dc.utils.uniqueId(), renderletFunction); @@ -2382,8 +2381,7 @@ dc.baseMixin = function (_chart) { * @memberof dc.baseMixin * @instance * @param {String} [chartGroup] - * @return {String} - * @return {dc.baseMixin} + * @returns {String|dc.baseMixin} */ _chart.chartGroup = function (chartGroup) { if (!arguments.length) { @@ -2402,14 +2400,14 @@ dc.baseMixin = function (_chart) { /** * Expire the internal chart cache. dc charts cache some data internally on a per chart basis to * speed up rendering and avoid unnecessary calculation; however it might be useful to clear the - * cache if you have changed state which will affect rendering. For example if you invoke the - * {@link https://github.com/square/crossfilter/wiki/API-Reference#crossfilter_add crossfilter.add} - * function or reset group or dimension after rendering it is a good idea to + * cache if you have changed state which will affect rendering. For example, if you invoke + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#crossfilter_add crossfilter.add} + * function or reset group or dimension after rendering, it is a good idea to * clear the cache to make sure charts are rendered properly. * @method expireCache * @memberof dc.baseMixin * @instance - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.expireCache = function () { // do nothing in base, should be overridden by sub-function @@ -2425,8 +2423,7 @@ dc.baseMixin = function (_chart) { * @example * chart.legend(dc.legend().x(400).y(10).itemHeight(13).gap(5)) * @param {dc.legend} [legend] - * @return {dc.legend} - * @return {dc.baseMixin} + * @returns {dc.legend|dc.baseMixin} */ _chart.legend = function (legend) { if (!arguments.length) { @@ -2442,7 +2439,7 @@ dc.baseMixin = function (_chart) { * @method chartID * @memberof dc.baseMixin * @instance - * @return {String} + * @returns {String} */ _chart.chartID = function () { return _chart.__dcFlag__; @@ -2457,7 +2454,7 @@ dc.baseMixin = function (_chart) { * @example * chart.options({dimension: myDimension, group: myGroup}); * @param {{}} opts - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.options = function (opts) { var applyOptions = [ @@ -2503,7 +2500,7 @@ dc.baseMixin = function (_chart) { * @method on * @memberof dc.baseMixin * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Internals#dispatch_on d3.dispatch.on} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Internals.md#dispatch_on d3.dispatch.on} * @example * .on('renderlet', function(chart, filter){...}) * .on('pretransition', function(chart, filter){...}) @@ -2515,7 +2512,7 @@ dc.baseMixin = function (_chart) { * .on('zoomed', function(chart, filter){...}) * @param {String} event * @param {Function} listener - * @return {dc.baseMixin} + * @returns {dc.baseMixin} */ _chart.on = function (event, listener) { _listeners.on(event, listener); @@ -2532,7 +2529,7 @@ dc.baseMixin = function (_chart) { * @memberof dc * @mixin * @param {Object} _chart - * @return {dc.marginMixin} + * @returns {dc.marginMixin} */ dc.marginMixin = function (_chart) { var _margin = {top: 10, right: 50, bottom: 30, left: 30}; @@ -2548,8 +2545,7 @@ dc.marginMixin = function (_chart) { * chart.margins().left = 50; * leftMargin = chart.margins().left; // now 50 * @param {{top: Number, right: Number, left: Number, bottom: Number}} [margins={top: 10, right: 50, bottom: 30, left: 30}] - * @return {{top: Number, right: Number, left: Number, bottom: Number}} - * @return {dc.marginMixin} + * @returns {{top: Number, right: Number, left: Number, bottom: Number}|dc.marginMixin} */ _chart.margins = function (margins) { if (!arguments.length) { @@ -2577,7 +2573,7 @@ dc.marginMixin = function (_chart) { * @memberof dc * @mixin * @param {Object} _chart - * @return {dc.colorMixin} + * @returns {dc.colorMixin} */ dc.colorMixin = function (_chart) { var _colors = d3.scale.category20c(); @@ -2591,7 +2587,7 @@ dc.colorMixin = function (_chart) { * @method colors * @memberof dc.colorMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/Scales d3.scale} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale} * @example * // alternate categorical scale * chart.colors(d3.scale.category20b()); @@ -2602,8 +2598,7 @@ dc.colorMixin = function (_chart) { * // set a linear scale * chart.linearColors(["#4575b4", "#ffffbf", "#a50026"]); * @param {d3.scale} [colorScale=d3.scale.category20c()] - * @return {d3.scale} - * @return {dc.colorMixin} + * @returns {d3.scale|dc.colorMixin} */ _chart.colors = function (colorScale) { if (!arguments.length) { @@ -2619,13 +2614,13 @@ dc.colorMixin = function (_chart) { /** * Convenience method to set the color scale to - * {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales#ordinal d3.scale.ordinal} with + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal d3.scale.ordinal} with * range `r`. * @method ordinalColors * @memberof dc.colorMixin * @instance * @param {Array} r - * @return {dc.colorMixin} + * @returns {dc.colorMixin} */ _chart.ordinalColors = function (r) { return _chart.colors(d3.scale.ordinal().range(r)); @@ -2637,7 +2632,7 @@ dc.colorMixin = function (_chart) { * @memberof dc.colorMixin * @instance * @param {Array} r - * @return {dc.colorMixin} + * @returns {dc.colorMixin} */ _chart.linearColors = function (r) { return _chart.colors(d3.scale.linear() @@ -2658,8 +2653,7 @@ dc.colorMixin = function (_chart) { * // color accessor for a multi-value crossfilter reduction * .colorAccessor(function (d){return d.value.absGain;}) * @param {Function} [colorAccessor] - * @return {Function} - * @return {dc.colorMixin} + * @returns {Function|dc.colorMixin} */ _chart.colorAccessor = function (colorAccessor) { if (!arguments.length) { @@ -2685,8 +2679,7 @@ dc.colorMixin = function (_chart) { * @memberof dc.colorMixin * @instance * @param {Array} [domain] - * @return {Array} - * @return {dc.colorMixin} + * @returns {Array|dc.colorMixin} */ _chart.colorDomain = function (domain) { if (!arguments.length) { @@ -2702,7 +2695,7 @@ dc.colorMixin = function (_chart) { * @method calculateColorDomain * @memberof dc.colorMixin * @instance - * @return {dc.colorMixin} + * @returns {dc.colorMixin} */ _chart.calculateColorDomain = function () { var newDomain = [d3.min(_chart.data(), _chart.colorAccessor()), @@ -2718,27 +2711,31 @@ dc.colorMixin = function (_chart) { * @instance * @param {*} d * @param {Number} [i] - * @return {String} + * @returns {String} */ _chart.getColor = function (d, i) { return _colors(_colorAccessor.call(this, d, i)); }; /** - * Get the color for the datum d and counter i. This is used internally by charts to retrieve a color. + * **Deprecated.** Get/set the color calculator. This actually replaces the + * {@link dc.colorMixin#getColor getColor} method! + * + * This is not recommended, since using a {@link dc.colorMixin#colorAccessor colorAccessor} and + * color scale ({@link dc.colorMixin#colors .colors}) is more powerful and idiomatic d3. * @method colorCalculator * @memberof dc.colorMixin * @instance * @param {*} [colorCalculator] - * @return {*} + * @returns {Function|dc.colorMixin} */ - _chart.colorCalculator = function (colorCalculator) { + _chart.colorCalculator = dc.logger.deprecate(function (colorCalculator) { if (!arguments.length) { return _chart.getColor; } _chart.getColor = colorCalculator; return _chart; - }; + }, 'colorMixin.colorCalculator has been deprecated. Please colorMixin.colors and colorMixin.colorAccessor instead'); return _chart; }; @@ -2753,7 +2750,7 @@ dc.colorMixin = function (_chart) { * @mixes dc.marginMixin * @mixes dc.baseMixin * @param {Object} _chart - * @return {dc.coordinateGridMixin} + * @returns {dc.coordinateGridMixin} */ dc.coordinateGridMixin = function (_chart) { var GRID_LINE_CLASS = 'grid-line'; @@ -2767,39 +2764,6 @@ dc.coordinateGridMixin = function (_chart) { _chart.colors(d3.scale.category10()); _chart._mandatoryAttributes().push('x'); - - function zoomHandler () { - _refocused = true; - if (_zoomOutRestrict) { - _chart.x().domain(constrainRange(_chart.x().domain(), _xOriginalDomain)); - if (_rangeChart) { - _chart.x().domain(constrainRange(_chart.x().domain(), _rangeChart.x().domain())); - } - } - - var domain = _chart.x().domain(); - var domFilter = dc.filters.RangedFilter(domain[0], domain[1]); - - _chart.replaceFilter(domFilter); - _chart.rescale(); - _chart.redraw(); - - if (_rangeChart && !rangesEqual(_chart.filter(), _rangeChart.filter())) { - dc.events.trigger(function () { - _rangeChart.replaceFilter(domFilter); - _rangeChart.redraw(); - }); - } - - _chart._invokeZoomedListener(); - - dc.events.trigger(function () { - _chart.redrawGroup(); - }, dc.constants.EVENT_DELAY); - - _refocused = !rangesEqual(domain, _xOriginalDomain); - } - var _parent; var _g; var _chartBodyG; @@ -2858,7 +2822,7 @@ dc.coordinateGridMixin = function (_chart) { * @method rescale * @memberof dc.coordinateGridMixin * @instance - * @return {dc.coordinateGridMixin} + * @returns {dc.coordinateGridMixin} */ _chart.rescale = function () { _unitCount = undefined; @@ -2885,7 +2849,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {dc.coordinateGridMixin} [rangeChart] - * @return {dc.coordinateGridMixin} + * @returns {dc.coordinateGridMixin} */ _chart.rangeChart = function (rangeChart) { if (!arguments.length) { @@ -2902,8 +2866,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Array} [extent=[1, Infinity]] - * @return {Array} - * @return {dc.coordinateGridMixin} + * @returns {Array|dc.coordinateGridMixin} */ _chart.zoomScale = function (extent) { if (!arguments.length) { @@ -2919,8 +2882,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [zoomOutRestrict=true] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.zoomOutRestrict = function (zoomOutRestrict) { if (!arguments.length) { @@ -2957,8 +2919,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {SVGElement} [gElement] - * @return {SVGElement} - * @return {dc.coordinateGridMixin} + * @returns {SVGElement|dc.coordinateGridMixin} */ _chart.g = function (gElement) { if (!arguments.length) { @@ -2976,8 +2937,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [mouseZoomable=false] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.mouseZoomable = function (mouseZoomable) { if (!arguments.length) { @@ -2993,7 +2953,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {SVGElement} [chartBodyG] - * @return {SVGElement} + * @returns {SVGElement} */ _chart.chartBodyG = function (chartBodyG) { if (!arguments.length) { @@ -3007,20 +2967,19 @@ dc.coordinateGridMixin = function (_chart) { * **mandatory** * * Get or set the x scale. The x scale can be any d3 - * {@link https://github.com/mbostock/d3/wiki/Quantitative-Scales quantitive scale} or - * {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales ordinal scale}. + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md quantitive scale} or + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md ordinal scale}. * @method x * @memberof dc.coordinateGridMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/Scales d3.scale} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale} * @example * // set x to a linear scale * chart.x(d3.scale.linear().domain([-2500, 2500])) * // set x to a time scale to generate histogram * chart.x(d3.time.scale().domain([new Date(1985, 0, 1), new Date(2012, 11, 31)])) * @param {d3.scale} [xScale] - * @return {d3.scale} - * @return {dc.coordinateGridMixin} + * @returns {d3.scale|dc.coordinateGridMixin} */ _chart.x = function (xScale) { if (!arguments.length) { @@ -3042,9 +3001,9 @@ dc.coordinateGridMixin = function (_chart) { * number of dots for a line chart. This function is expected to return a Javascript array of all * data points on x axis, or the number of points on the axis. [d3 time range functions * d3.time.days, d3.time.months, and - * d3.time.years](https://github.com/mbostock/d3/wiki/Time-Intervals#aliases) are all valid xUnits - * function. dc.js also provides a few units function, see the {@link dc.utils Utilities} section for - * a list of built-in units functions. The default xUnits function is dc.units.integers. + * d3.time.years](https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#aliases) are all valid xUnits + * function. dc.js also provides a few units function, see the {@link dc.units Units Namespace} for + * a list of built-in units functions. * @method xUnits * @memberof dc.coordinateGridMixin * @instance @@ -3066,9 +3025,8 @@ dc.coordinateGridMixin = function (_chart) { * function(start, end, xDomain) { * // be aware using fixed units will disable the focus/zoom ability on the chart * return 1000; - * @param {Function} [xUnits] - * @return {Function} - * @return {dc.coordinateGridMixin} + * @param {Function} [xUnits=dc.units.integers] + * @returns {Function|dc.coordinateGridMixin} */ _chart.xUnits = function (xUnits) { if (!arguments.length) { @@ -3080,22 +3038,26 @@ dc.coordinateGridMixin = function (_chart) { /** * Set or get the x axis used by a particular coordinate grid chart instance. This function is most - * useful when x axis customization is required. The x axis in dc.js is an instance of a [d3 - * axis object](https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-axis); therefore it supports any - * valid d3 axis manipulation. **Caution**: The x axis is usually generated internally by dc; - * resetting it may cause unexpected results. + * useful when x axis customization is required. The x axis in dc.js is an instance of a + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3 axis object}; + * therefore it supports any valid d3 axis manipulation. + * + * **Caution**: The x axis is usually generated internally by dc; resetting it may cause + * unexpected results. Note also that when used as a getter, this function is not chainable: + * it returns the axis, not the chart, + * {@link https://github.com/dc-js/dc.js/wiki/FAQ#why-does-everything-break-after-a-call-to-xaxis-or-yaxis + * so attempting to call chart functions after calling `.xAxis()` will fail}. * @method xAxis * @memberof dc.coordinateGridMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/SVG-Axes d3.svg.axis} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis} * @example * // customize x axis tick format * chart.xAxis().tickFormat(function(v) {return v + '%';}); * // customize x axis tick values * chart.xAxis().tickValues([0, 100, 200, 300]); * @param {d3.svg.axis} [xAxis=d3.svg.axis().orient('bottom')] - * @return {d3.svg.axis} - * @return {dc.coordinateGridMixin} + * @returns {d3.svg.axis|dc.coordinateGridMixin} */ _chart.xAxis = function (xAxis) { if (!arguments.length) { @@ -3112,8 +3074,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [elasticX=false] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.elasticX = function (elasticX) { if (!arguments.length) { @@ -3135,8 +3096,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Number|String} [padding=0] - * @return {Number|String} - * @return {dc.coordinateGridMixin} + * @returns {Number|String|dc.coordinateGridMixin} */ _chart.xAxisPadding = function (padding) { if (!arguments.length) { @@ -3152,14 +3112,13 @@ dc.coordinateGridMixin = function (_chart) { * otherwise it is ignored. * * Padding unit is a string that will be used when the padding is calculated. Available parameters are - * the available d3 time intervals: - * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#interval d3.time.interval} + * the available d3 time intervals; see + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Intervals.md#interval d3.time.interval}. * @method xAxisPaddingUnit * @memberof dc.coordinateGridMixin * @instance * @param {String} [unit='days'] - * @return {String} - * @return {dc.coordinateGridMixin} + * @returns {String|dc.coordinateGridMixin} */ _chart.xAxisPaddingUnit = function (unit) { if (!arguments.length) { @@ -3171,11 +3130,11 @@ dc.coordinateGridMixin = function (_chart) { /** * Returns the number of units displayed on the x axis using the unit measure configured by - * .xUnits. + * {@link dc.coordinateGridMixin#xUnits xUnits}. * @method xUnitCount * @memberof dc.coordinateGridMixin * @instance - * @return {Number} + * @returns {Number} */ _chart.xUnitCount = function () { if (_unitCount === undefined) { @@ -3199,8 +3158,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [useRightYAxis=false] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.useRightYAxis = function (useRightYAxis) { if (!arguments.length) { @@ -3217,7 +3175,7 @@ dc.coordinateGridMixin = function (_chart) { * @method isOrdinal * @memberof dc.coordinateGridMixin * @instance - * @return {Boolean} + * @returns {Boolean} */ _chart.isOrdinal = function () { return _chart.xUnits() === dc.units.ordinal; @@ -3269,7 +3227,7 @@ dc.coordinateGridMixin = function (_chart) { } _chart.renderXAxis = function (g) { - var axisXG = g.selectAll('g.x'); + var axisXG = g.select('g.x'); if (axisXG.empty()) { axisXG = g.append('g') @@ -3277,7 +3235,7 @@ dc.coordinateGridMixin = function (_chart) { .attr('transform', 'translate(' + _chart.margins().left + ',' + _chart._xAxisY() + ')'); } - var axisXLab = g.selectAll('text.' + X_AXIS_LABEL_CLASS); + var axisXLab = g.select('text.' + X_AXIS_LABEL_CLASS); if (axisXLab.empty() && _chart.xAxisLabel()) { axisXLab = g.append('text') .attr('class', X_AXIS_LABEL_CLASS) @@ -3298,7 +3256,7 @@ dc.coordinateGridMixin = function (_chart) { }; function renderVerticalGridLines (g) { - var gridLineG = g.selectAll('g.' + VERTICAL_CLASS); + var gridLineG = g.select('g.' + VERTICAL_CLASS); if (_renderVerticalGridLine) { if (gridLineG.empty()) { @@ -3362,7 +3320,7 @@ dc.coordinateGridMixin = function (_chart) { * @instance * @param {String} [labelText] * @param {Number} [padding=12] - * @return {String} + * @returns {String} */ _chart.xAxisLabel = function (labelText, padding) { if (!arguments.length) { @@ -3398,7 +3356,7 @@ dc.coordinateGridMixin = function (_chart) { _chart.renderYAxisLabel = function (axisClass, text, rotation, labelXPosition) { labelXPosition = labelXPosition || _yAxisLabelPadding; - var axisYLab = _chart.g().selectAll('text.' + Y_AXIS_LABEL_CLASS + '.' + axisClass + '-label'); + var axisYLab = _chart.g().select('text.' + Y_AXIS_LABEL_CLASS + '.' + axisClass + '-label'); var labelYPosition = (_chart.margins().top + _chart.yAxisHeight() / 2); if (axisYLab.empty() && text) { axisYLab = _chart.g().append('text') @@ -3415,7 +3373,7 @@ dc.coordinateGridMixin = function (_chart) { }; _chart.renderYAxisAt = function (axisClass, axis, position) { - var axisYG = _chart.g().selectAll('g.' + axisClass); + var axisYG = _chart.g().select('g.' + axisClass); if (axisYG.empty()) { axisYG = _chart.g().append('g') .attr('class', 'axis ' + axisClass) @@ -3436,7 +3394,7 @@ dc.coordinateGridMixin = function (_chart) { }; _chart._renderHorizontalGridLinesForAxis = function (g, scale, axis) { - var gridLineG = g.selectAll('g.' + HORIZONTAL_CLASS); + var gridLineG = g.select('g.' + HORIZONTAL_CLASS); if (_renderHorizontalGridLine) { var ticks = axis.tickValues() ? axis.tickValues() : scale.ticks(axis.ticks()[0]); @@ -3489,15 +3447,14 @@ dc.coordinateGridMixin = function (_chart) { /** * Set or get the y axis label. If setting the label, you may optionally include additional padding - * to the margin to make room for the label. By default the padded is set to 12 to accomodate the + * to the margin to make room for the label. By default the padding is set to 12 to accommodate the * text height. * @method yAxisLabel * @memberof dc.coordinateGridMixin * @instance * @param {String} [labelText] * @param {Number} [padding=12] - * @return {String} - * @return {dc.coordinateGridMixin} + * @returns {String|dc.coordinateGridMixin} */ _chart.yAxisLabel = function (labelText, padding) { if (!arguments.length) { @@ -3515,10 +3472,9 @@ dc.coordinateGridMixin = function (_chart) { * @method y * @memberof dc.coordinateGridMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/Scales d3.scale} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale} * @param {d3.scale} [yScale] - * @return {d3.scale} - * @return {dc.coordinateGridMixin} + * @returns {d3.scale|dc.coordinateGridMixin} */ _chart.y = function (yScale) { if (!arguments.length) { @@ -3532,21 +3488,25 @@ dc.coordinateGridMixin = function (_chart) { /** * Set or get the y axis used by the coordinate grid chart instance. This function is most useful * when y axis customization is required. The y axis in dc.js is simply an instance of a [d3 axis - * object](https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-_axis); therefore it supports any - * valid d3 axis manipulation. **Caution**: The y axis is usually generated internally by dc; - * resetting it may cause unexpected results. + * object](https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis); therefore it supports any + * valid d3 axis manipulation. + * + * **Caution**: The y axis is usually generated internally by dc; resetting it may cause + * unexpected results. Note also that when used as a getter, this function is not chainable: it + * returns the axis, not the chart, + * {@link https://github.com/dc-js/dc.js/wiki/FAQ#why-does-everything-break-after-a-call-to-xaxis-or-yaxis + * so attempting to call chart functions after calling `.yAxis()` will fail}. * @method yAxis * @memberof dc.coordinateGridMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/SVG-Axes d3.svg.axis} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis} * @example * // customize y axis tick format * chart.yAxis().tickFormat(function(v) {return v + '%';}); * // customize y axis tick values * chart.yAxis().tickValues([0, 100, 200, 300]); * @param {d3.svg.axis} [yAxis=d3.svg.axis().orient('left')] - * @return {d3.svg.axis} - * @return {dc.coordinateGridMixin} + * @returns {d3.svg.axis|dc.coordinateGridMixin} */ _chart.yAxis = function (yAxis) { if (!arguments.length) { @@ -3563,8 +3523,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [elasticY=false] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.elasticY = function (elasticY) { if (!arguments.length) { @@ -3580,8 +3539,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [renderHorizontalGridLines=false] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.renderHorizontalGridLines = function (renderHorizontalGridLines) { if (!arguments.length) { @@ -3597,8 +3555,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [renderVerticalGridLines=false] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.renderVerticalGridLines = function (renderVerticalGridLines) { if (!arguments.length) { @@ -3613,7 +3570,7 @@ dc.coordinateGridMixin = function (_chart) { * @method xAxisMin * @memberof dc.coordinateGridMixin * @instance - * @return {*} + * @returns {*} */ _chart.xAxisMin = function () { var min = d3.min(_chart.data(), function (e) { @@ -3627,7 +3584,7 @@ dc.coordinateGridMixin = function (_chart) { * @method xAxisMax * @memberof dc.coordinateGridMixin * @instance - * @return {*} + * @returns {*} */ _chart.xAxisMax = function () { var max = d3.max(_chart.data(), function (e) { @@ -3641,7 +3598,7 @@ dc.coordinateGridMixin = function (_chart) { * @method yAxisMin * @memberof dc.coordinateGridMixin * @instance - * @return {*} + * @returns {*} */ _chart.yAxisMin = function () { var min = d3.min(_chart.data(), function (e) { @@ -3655,7 +3612,7 @@ dc.coordinateGridMixin = function (_chart) { * @method yAxisMax * @memberof dc.coordinateGridMixin * @instance - * @return {*} + * @returns {*} */ _chart.yAxisMax = function () { var max = d3.max(_chart.data(), function (e) { @@ -3675,8 +3632,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Number|String} [padding=0] - * @return {Number} - * @return {dc.coordinateGridMixin} + * @returns {Number|dc.coordinateGridMixin} */ _chart.yAxisPadding = function (padding) { if (!arguments.length) { @@ -3700,8 +3656,7 @@ dc.coordinateGridMixin = function (_chart) { * // select whole months * chart.round(d3.time.month.round); * @param {Function} [round] - * @return {Function} - * @return {dc.coordinateGridMixin} + * @returns {Function|dc.coordinateGridMixin} */ _chart.round = function (round) { if (!arguments.length) { @@ -3867,8 +3822,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Number} [padding=5] - * @return {Number} - * @return {dc.coordinateGridMixin} + * @returns {Number|dc.coordinateGridMixin} */ _chart.clipPadding = function (padding) { if (!arguments.length) { @@ -3967,11 +3921,58 @@ dc.coordinateGridMixin = function (_chart) { _chart.root().call(_nullZoom); }; - function constrainRange (range, constraint) { - var constrainedRange = []; - constrainedRange[0] = d3.max([range[0], constraint[0]]); - constrainedRange[1] = d3.min([range[1], constraint[1]]); - return constrainedRange; + function zoomHandler () { + _refocused = true; + if (_zoomOutRestrict) { + var constraint = _xOriginalDomain; + if (_rangeChart) { + constraint = intersectExtents(constraint, _rangeChart.x().domain()); + } + var constrained = constrainExtent(_chart.x().domain(), constraint); + if (constrained) { + _chart.x().domain(constrained); + } + } + + var domain = _chart.x().domain(); + var domFilter = dc.filters.RangedFilter(domain[0], domain[1]); + + _chart.replaceFilter(domFilter); + _chart.rescale(); + _chart.redraw(); + + if (_rangeChart && !rangesEqual(_chart.filter(), _rangeChart.filter())) { + dc.events.trigger(function () { + _rangeChart.replaceFilter(domFilter); + _rangeChart.redraw(); + }); + } + + _chart._invokeZoomedListener(); + + dc.events.trigger(function () { + _chart.redrawGroup(); + }, dc.constants.EVENT_DELAY); + + _refocused = !rangesEqual(domain, _xOriginalDomain); + } + + function intersectExtents (ext1, ext2) { + if (ext1[0] > ext2[1] || ext1[1] < ext2[0]) { + console.warn('could not intersect extents'); + } + return [Math.max(ext1[0], ext2[0]), Math.min(ext1[1], ext2[1])]; + } + + function constrainExtent (extent, constraint) { + var size = extent[1] - extent[0]; + if (extent[0] < constraint[0]) { + return [constraint[0], Math.min(constraint[1], dc.utils.add(constraint[0], size, 'millis'))]; + } else if (extent[1] > constraint[1]) { + return [Math.max(constraint[0], dc.utils.subtract(constraint[1], size, 'millis')), constraint[1]]; + } else { + return null; + } } /** @@ -4051,8 +4052,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc.coordinateGridMixin * @instance * @param {Boolean} [brushOn=true] - * @return {Boolean} - * @return {dc.coordinateGridMixin} + * @returns {Boolean|dc.coordinateGridMixin} */ _chart.brushOn = function (brushOn) { if (!arguments.length) { @@ -4075,7 +4075,7 @@ dc.coordinateGridMixin = function (_chart) { * @memberof dc * @mixin * @param {Object} _chart - * @return {dc.stackMixin} + * @returns {dc.stackMixin} */ dc.stackMixin = function (_chart) { @@ -4135,7 +4135,7 @@ dc.stackMixin = function (_chart) { * @method stack * @memberof dc.stackMixin * @instance - * @see {@link https://github.com/square/crossfilter/wiki/API-Reference#group-map-reduce crossfilter.group} + * @see {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group-map-reduce crossfilter.group} * @example * // stack group using default accessor * chart.stack(valueSumGroup) @@ -4144,8 +4144,7 @@ dc.stackMixin = function (_chart) { * @param {crossfilter.group} group * @param {String} [name] * @param {Function} [accessor] - * @return {Array<{group: crossfilter.group, name: String, accessor: Function}>} - * @return {dc.stackMixin} + * @returns {Array<{group: crossfilter.group, name: String, accessor: Function}>|dc.stackMixin} */ _chart.stack = function (group, name, accessor) { if (!arguments.length) { @@ -4188,8 +4187,7 @@ dc.stackMixin = function (_chart) { * @memberof dc.stackMixin * @instance * @param {Boolean} [hidableStacks=false] - * @return {Boolean} - * @return {dc.stackMixin} + * @returns {Boolean|dc.stackMixin} */ _chart.hidableStacks = function (hidableStacks) { if (!arguments.length) { @@ -4211,7 +4209,7 @@ dc.stackMixin = function (_chart) { * @memberof dc.stackMixin * @instance * @param {String} stackName - * @return {dc.stackMixin} + * @returns {dc.stackMixin} */ _chart.hideStack = function (stackName) { var layer = findLayerByName(stackName); @@ -4228,7 +4226,7 @@ dc.stackMixin = function (_chart) { * @memberof dc.stackMixin * @instance * @param {String} stackName - * @return {dc.stackMixin} + * @returns {dc.stackMixin} */ _chart.showStack = function (stackName) { var layer = findLayerByName(stackName); @@ -4266,12 +4264,12 @@ dc.stackMixin = function (_chart) { _chart.xAxisMin = function () { var min = d3.min(flattenStack(), dc.pluck('x')); - return dc.utils.subtract(min, _chart.xAxisPadding()); + return dc.utils.subtract(min, _chart.xAxisPadding(), _chart.xAxisPaddingUnit()); }; _chart.xAxisMax = function () { var max = d3.max(flattenStack(), dc.pluck('x')); - return dc.utils.add(max, _chart.xAxisPadding()); + return dc.utils.add(max, _chart.xAxisPadding(), _chart.xAxisPaddingUnit()); }; /** @@ -4292,8 +4290,7 @@ dc.stackMixin = function (_chart) { * var secondTitleFunction = chart.title('second stack'); * @param {String} [stackName] * @param {Function} [titleAccessor] - * @return {String} - * @return {dc.stackMixin} + * @returns {String|dc.stackMixin} */ dc.override(_chart, 'title', function (stackName, titleAccessor) { if (!stackName) { @@ -4318,14 +4315,13 @@ dc.stackMixin = function (_chart) { /** * Gets or sets the stack layout algorithm, which computes a baseline for each stack and - * propagates it to the next + * propagates it to the next. * @method stackLayout * @memberof dc.stackMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/Stack-Layout d3.layout.stack} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Stack-Layout.md d3.layout.stack} * @param {Function} [stack=d3.layout.stack] - * @return {Function} - * @return {dc.stackMixin} + * @returns {Function|dc.stackMixin} */ _chart.stackLayout = function (stack) { if (!arguments.length) { @@ -4401,7 +4397,7 @@ dc.stackMixin = function (_chart) { * @memberof dc * @mixin * @param {Object} _chart - * @return {dc.capMixin} + * @returns {dc.capMixin} */ dc.capMixin = function (_chart) { @@ -4418,7 +4414,11 @@ dc.capMixin = function (_chart) { topSet = d3.set(topKeys), others = allKeys.filter(function (d) {return !topSet.has(d);}); if (allRowsSum > topRowsSum) { - return topRows.concat([{'others': others, 'key': _othersLabel, 'value': allRowsSum - topRowsSum}]); + return topRows.concat([{ + 'others': others, + 'key': _chart.othersLabel(), + 'value': allRowsSum - topRowsSum + }]); } return topRows; }; @@ -4437,12 +4437,19 @@ dc.capMixin = function (_chart) { return _chart.valueAccessor()(d, i); }; + // return N biggest groups, where N is the cap, sorted in ascending order. _chart.data(function (group) { if (_cap === Infinity) { return _chart._computeOrderedGroups(group.all()); } else { - var topRows = group.top(_cap); // ordered by crossfilter group order (default value) - topRows = _chart._computeOrderedGroups(topRows); // re-order using ordering (default key) + var topRows = group.all(); // in key order + topRows = _chart._computeOrderedGroups(topRows); // re-order using ordering (defaults to key) + + if (_cap) { + var start = Math.max(0, topRows.length - _cap); + topRows = topRows.slice(start); + } + if (_othersGrouper) { return _othersGrouper(topRows); } @@ -4451,13 +4458,28 @@ dc.capMixin = function (_chart) { }); /** - * Get or set the count of elements to that will be included in the cap. + * Get or set the count of elements to that will be included in the cap. If there is an + * {@link dc.capMixin#othersGrouper othersGrouper}, any further elements will be combined in an + * extra element with its name determined by {@link dc.capMixin#othersLabel othersLabel}. + * + * Up through dc.js 2.0.*, capping uses + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_top group.top(N)}, + * which selects the largest items according to + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_order group.order()}. + * The chart then sorts the items according to {@link dc.baseMixin#ordering baseMixin.ordering()}. + * So the two values essentially have to agree, but if the former is incorrect (it's easy to + * forget about `group.order()`), the latter will mask the problem. This also makes + * {@link https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups fake groups} difficult to + * implement. + * + * In dc.js 2.1 and forward, only + * {@link https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_all group.all()} + * and `baseMixin.ordering()` are used. * @method cap * @memberof dc.capMixin * @instance * @param {Number} [count=Infinity] - * @return {Number} - * @return {dc.capMixin} + * @returns {Number|dc.capMixin} */ _chart.cap = function (count) { if (!arguments.length) { @@ -4468,13 +4490,12 @@ dc.capMixin = function (_chart) { }; /** - * Get or set the label for *Others* slice when slices cap is specified + * Get or set the label for *Others* slice when slices cap is specified. * @method othersLabel * @memberof dc.capMixin * @instance * @param {String} [label="Others"] - * @return {String} - * @return {dc.capMixin} + * @returns {String|dc.capMixin} */ _chart.othersLabel = function (label) { if (!arguments.length) { @@ -4492,6 +4513,8 @@ dc.capMixin = function (_chart) { * @memberof dc.capMixin * @instance * @example + * // Do not show others + * chart.othersGrouper(null); * // Default others grouper * chart.othersGrouper(function (topRows) { * var topRowsSum = d3.sum(topRows, _chart.valueAccessor()), @@ -4502,7 +4525,11 @@ dc.capMixin = function (_chart) { * topSet = d3.set(topKeys), * others = allKeys.filter(function (d) {return !topSet.has(d);}); * if (allRowsSum > topRowsSum) { - * return topRows.concat([{'others': others, 'key': _othersLabel, 'value': allRowsSum - topRowsSum}]); + * return topRows.concat([{ + * 'others': others, + * 'key': _chart.othersLabel(), + * 'value': allRowsSum - topRowsSum + * }]); * } * return topRows; * }); @@ -4520,8 +4547,7 @@ dc.capMixin = function (_chart) { * return data; * }); * @param {Function} [grouperFunction] - * @return {Function} - * @return {dc.capMixin} + * @returns {Function|dc.capMixin} */ _chart.othersGrouper = function (grouperFunction) { if (!arguments.length) { @@ -4548,11 +4574,13 @@ dc.capMixin = function (_chart) { * @mixin * @mixes dc.colorMixin * @param {Object} _chart - * @return {dc.bubbleMixin} + * @returns {dc.bubbleMixin} */ dc.bubbleMixin = function (_chart) { var _maxBubbleRelativeSize = 0.3; var _minRadiusWithLabel = 10; + var _sortBubbleSize = false; + var _elasticRadius = false; _chart.BUBBLE_NODE_CLASS = 'node'; _chart.BUBBLE_CLASS = 'bubble'; @@ -4563,7 +4591,13 @@ dc.bubbleMixin = function (_chart) { _chart.renderLabel(true); _chart.data(function (group) { - return group.top(Infinity); + var data = group.all(); + if (_sortBubbleSize) { + // sort descending so smaller bubbles are on top + var radiusAccessor = _chart.radiusValueAccessor(); + data.sort(function (a, b) { return d3.descending(radiusAccessor(a), radiusAccessor(b)); }); + } + return data; }); var _r = d3.scale.linear().domain([0, 100]); @@ -4574,15 +4608,14 @@ dc.bubbleMixin = function (_chart) { /** * Get or set the bubble radius scale. By default the bubble chart uses - * {@link https://github.com/mbostock/d3/wiki/Quantitative-Scales#linear d3.scale.linear().domain([0, 100])} + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md#linear d3.scale.linear().domain([0, 100])} * as its radius scale. * @method r * @memberof dc.bubbleMixin * @instance - * @see {@link http://github.com/mbostock/d3/wiki/Scales d3.scale} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale} * @param {d3.scale} [bubbleRadiusScale=d3.scale.linear().domain([0, 100])] - * @return {d3.scale} - * @return {dc.bubbleMixin} + * @returns {d3.scale|dc.bubbleMixin} */ _chart.r = function (bubbleRadiusScale) { if (!arguments.length) { @@ -4592,6 +4625,29 @@ dc.bubbleMixin = function (_chart) { return _chart; }; + /** + * Turn on or off the elastic bubble radius feature, or return the value of the flag. If this + * feature is turned on, then bubble radii will be automatically rescaled to fit the chart better. + * @method elasticRadius + * @memberof dc.bubbleChart + * @instance + * @param {Boolean} [elasticRadius=false] + * @returns {Boolean|dc.bubbleChart} + */ + _chart.elasticRadius = function (elasticRadius) { + if (!arguments.length) { + return _elasticRadius; + } + _elasticRadius = elasticRadius; + return _chart; + }; + + _chart.calculateRadiusDomain = function () { + if (_elasticRadius) { + _chart.r().domain([_chart.rMin(), _chart.rMax()]); + } + }; + /** * Get or set the radius value accessor function. If set, the radius value accessor function will * be used to retrieve a data value for each bubble. The data retrieved then will be mapped using @@ -4601,8 +4657,7 @@ dc.bubbleMixin = function (_chart) { * @memberof dc.bubbleMixin * @instance * @param {Function} [radiusValueAccessor] - * @return {Function} - * @return {dc.bubbleMixin} + * @returns {Function|dc.bubbleMixin} */ _chart.radiusValueAccessor = function (radiusValueAccessor) { if (!arguments.length) { @@ -4673,7 +4728,7 @@ dc.bubbleMixin = function (_chart) { _chart.doUpdateLabels = function (bubbleGEnter) { if (_chart.renderLabel()) { - var labels = bubbleGEnter.selectAll('text') + var labels = bubbleGEnter.select('text') .attr('pointer-events', labelPointerEvent) .text(labelFunction); dc.transition(labels, _chart.transitionDuration(), _chart.transitionDelay()) @@ -4697,8 +4752,25 @@ dc.bubbleMixin = function (_chart) { _chart.doUpdateTitles = function (g) { if (_chart.renderTitle()) { - g.selectAll('title').text(titleFunction); + g.select('title').text(titleFunction); + } + }; + + /** + * Turn on or off the bubble sorting feature, or return the value of the flag. If enabled, + * bubbles will be sorted by their radius, with smaller bubbles in front. + * @method sortBubbleSize + * @memberof dc.bubbleChart + * @instance + * @param {Boolean} [sortBubbleSize=false] + * @returns {Boolean|dc.bubbleChart} + */ + _chart.sortBubbleSize = function (sortBubbleSize) { + if (!arguments.length) { + return _sortBubbleSize; } + _sortBubbleSize = sortBubbleSize; + return _chart; }; /** @@ -4707,8 +4779,7 @@ dc.bubbleMixin = function (_chart) { * @memberof dc.bubbleMixin * @instance * @param {Number} [radius=10] - * @return {Number} - * @return {dc.bubbleMixin} + * @returns {Number|dc.bubbleMixin} */ _chart.minRadius = function (radius) { if (!arguments.length) { @@ -4725,8 +4796,7 @@ dc.bubbleMixin = function (_chart) { * @memberof dc.bubbleMixin * @instance * @param {Number} [radius=10] - * @return {Number} - * @return {dc.bubbleMixin} + * @returns {Number|dc.bubbleMixin} */ _chart.minRadiusWithLabel = function (radius) { @@ -4744,8 +4814,7 @@ dc.bubbleMixin = function (_chart) { * @memberof dc.bubbleMixin * @instance * @param {Number} [relativeSize=0.3] - * @return {Number} - * @return {dc.bubbleMixin} + * @returns {Number|dc.bubbleMixin} */ _chart.maxBubbleRelativeSize = function (relativeSize) { if (!arguments.length) { @@ -4805,11 +4874,11 @@ dc.bubbleMixin = function (_chart) { * // create a pie chart under #chart-container2 element using chart group A * var chart2 = dc.pieChart('#chart-container2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.pieChart} + * @returns {dc.pieChart} */ dc.pieChart = function (parent, chartGroup) { var DEFAULT_MIN_ANGLE_FOR_LABEL = 0.5; @@ -4847,8 +4916,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [cap] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.slicesCap = _chart.cap; @@ -5124,8 +5192,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [externalRadiusPadding=0] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.externalRadiusPadding = function (externalRadiusPadding) { if (!arguments.length) { @@ -5142,8 +5209,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [innerRadius=0] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.innerRadius = function (innerRadius) { if (!arguments.length) { @@ -5160,8 +5226,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [radius] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.radius = function (radius) { if (!arguments.length) { @@ -5177,8 +5242,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [cx] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.cx = function (cx) { if (!arguments.length) { @@ -5194,8 +5258,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [cy] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.cy = function (cy) { if (!arguments.length) { @@ -5227,8 +5290,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Number} [minAngleForLabel=0.5] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.minAngleForLabel = function (minAngleForLabel) { if (!arguments.length) { @@ -5295,8 +5357,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {String} [title] - * @return {String} - * @return {dc.pieChart} + * @returns {String|dc.pieChart} */ _chart.emptyTitle = function (title) { if (arguments.length === 0) { @@ -5307,15 +5368,14 @@ dc.pieChart = function (parent, chartGroup) { }; /** - * Position slice labels offset from the outer edge of the chart + * Position slice labels offset from the outer edge of the chart. * - * The given argument sets the radial offset. + * The argument specifies the extra radius to be added for slice labels. * @method externalLabels * @memberof dc.pieChart * @instance * @param {Number} [externalLabelRadius] - * @return {Number} - * @return {dc.pieChart} + * @returns {Number|dc.pieChart} */ _chart.externalLabels = function (externalLabelRadius) { if (arguments.length === 0) { @@ -5336,8 +5396,7 @@ dc.pieChart = function (parent, chartGroup) { * @memberof dc.pieChart * @instance * @param {Boolean} [drawPaths] - * @return {Boolean} - * @return {dc.pieChart} + * @returns {Boolean|dc.pieChart} */ _chart.drawPaths = function (drawPaths) { if (arguments.length === 0) { @@ -5413,13 +5472,13 @@ dc.pieChart = function (parent, chartGroup) { * // create a sub-chart under a composite parent chart * var chart3 = dc.barChart(compositeChart); * @param {String|node|d3.selection|dc.compositeChart} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} * specifying a dom block element such as a div; or a dom element or d3 selection. If the bar * chart is a sub-chart in a {@link dc.compositeChart Composite Chart} then pass in the parent * composite chart instance instead. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.barChart} + * @returns {dc.barChart} */ dc.barChart = function (parent, chartGroup) { var MIN_BAR_WIDTH = 1; @@ -5629,8 +5688,7 @@ dc.barChart = function (parent, chartGroup) { * @memberof dc.barChart * @instance * @param {Boolean} [centerBar=false] - * @return {Boolean} - * @return {dc.barChart} + * @returns {Boolean|dc.barChart} */ _chart.centerBar = function (centerBar) { if (!arguments.length) { @@ -5647,14 +5705,13 @@ dc.barChart = function (parent, chartGroup) { /** * Get or set the spacing between bars as a fraction of bar size. Valid values are between 0-1. * Setting this value will also remove any previously set {@link dc.barChart#gap gap}. See the - * {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales#wiki-ordinal_rangeBands d3 docs} + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal_rangeBands d3 docs} * for a visual description of how the padding is applied. * @method barPadding * @memberof dc.barChart * @instance * @param {Number} [barPadding=0] - * @return {Number} - * @return {dc.barChart} + * @returns {Number|dc.barChart} */ _chart.barPadding = function (barPadding) { if (!arguments.length) { @@ -5676,8 +5733,7 @@ dc.barChart = function (parent, chartGroup) { * @memberof dc.barChart * @instance * @param {Number} [padding=0.5] - * @return {Number} - * @return {dc.barChart} + * @returns {Number|dc.barChart} */ _chart.outerPadding = _chart._outerRangeBandPadding; @@ -5689,8 +5745,7 @@ dc.barChart = function (parent, chartGroup) { * @memberof dc.barChart * @instance * @param {Number} [gap=2] - * @return {Number} - * @return {dc.barChart} + * @returns {Number|dc.barChart} */ _chart.gap = function (gap) { if (!arguments.length) { @@ -5726,8 +5781,7 @@ dc.barChart = function (parent, chartGroup) { * @example * chart.round(function(n) { return Math.floor(n) + 0.5; }); * @param {Boolean} [alwaysUseRounding=false] - * @return {Boolean} - * @return {dc.barChart} + * @returns {Boolean|dc.barChart} */ _chart.alwaysUseRounding = function (alwaysUseRounding) { if (!arguments.length) { @@ -5789,13 +5843,13 @@ dc.barChart = function (parent, chartGroup) { * // create a sub-chart under a composite parent chart * var chart3 = dc.lineChart(compositeChart); * @param {String|node|d3.selection|dc.compositeChart} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} * specifying a dom block element such as a div; or a dom element or d3 selection. If the line * chart is a sub-chart in a {@link dc.compositeChart Composite Chart} then pass in the parent * composite chart instance instead. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.lineChart} + * @returns {dc.lineChart} */ dc.lineChart = function (parent, chartGroup) { var DEFAULT_DOT_RADIUS = 5; @@ -5824,7 +5878,7 @@ dc.lineChart = function (parent, chartGroup) { _chart.plotData = function () { var chartBody = _chart.chartBodyG(); - var layersList = chartBody.selectAll('g.stack-list'); + var layersList = chartBody.select('g.stack-list'); if (layersList.empty()) { layersList = chartBody.append('g').attr('class', 'stack-list'); @@ -5853,17 +5907,16 @@ dc.lineChart = function (parent, chartGroup) { /** * Gets or sets the interpolator to use for lines drawn, by string name, allowing e.g. step * functions, splines, and cubic interpolation. This is passed to - * {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#line_interpolate d3.svg.line.interpolate} and - * {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#area_interpolate d3.svg.area.interpolate}, - * where you can find a complete list of valid arguments + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_interpolate d3.svg.line.interpolate} and + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_interpolate d3.svg.area.interpolate}, + * where you can find a complete list of valid arguments. * @method interpolate * @memberof dc.lineChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#line_interpolate d3.svg.line.interpolate} - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#area_interpolate d3.svg.area.interpolate} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_interpolate d3.svg.line.interpolate} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_interpolate d3.svg.area.interpolate} * @param {String} [interpolate='linear'] - * @return {String} - * @return {dc.lineChart} + * @returns {String|dc.lineChart} */ _chart.interpolate = function (interpolate) { if (!arguments.length) { @@ -5876,16 +5929,15 @@ dc.lineChart = function (parent, chartGroup) { /** * Gets or sets the tension to use for lines drawn, in the range 0 to 1. * This parameter further customizes the interpolation behavior. It is passed to - * {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#line_tension d3.svg.line.tension} and - * {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#area_tension d3.svg.area.tension}. + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_tension d3.svg.line.tension} and + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_tension d3.svg.area.tension}. * @method tension * @memberof dc.lineChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#line_interpolate d3.svg.line.interpolate} - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#area_interpolate d3.svg.area.interpolate} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_interpolate d3.svg.line.interpolate} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#area_interpolate d3.svg.area.interpolate} * @param {Number} [tension=0.7] - * @return {Number} - * @return {dc.lineChart} + * @returns {Number|dc.lineChart} */ _chart.tension = function (tension) { if (!arguments.length) { @@ -5899,18 +5951,18 @@ dc.lineChart = function (parent, chartGroup) { * Gets or sets a function that will determine discontinuities in the line which should be * skipped: the path will be broken into separate subpaths if some points are undefined. * This function is passed to - * {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#line_defined d3.svg.line.defined} + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_defined d3.svg.line.defined} * * Note: crossfilter will sometimes coerce nulls to 0, so you may need to carefully write * custom reduce functions to get this to work, depending on your data. See - * https://github.com/dc-js/dc.js/issues/615#issuecomment-49089248 + * {@link https://github.com/dc-js/dc.js/issues/615#issuecomment-49089248 this GitHub comment} + * for more details and an example. * @method defined * @memberof dc.lineChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#line_defined d3.svg.line.defined} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#line_defined d3.svg.line.defined} * @param {Function} [defined] - * @return {Function} - * @return {dc.lineChart} + * @returns {Function|dc.lineChart} */ _chart.defined = function (defined) { if (!arguments.length) { @@ -5931,8 +5983,7 @@ dc.lineChart = function (parent, chartGroup) { * // create a Dash Dot Dot Dot * chart.dashStyle([3,1,1,1]); * @param {Array} [dashStyle=[]] - * @return {Array} - * @return {dc.lineChart} + * @returns {Array|dc.lineChart} */ _chart.dashStyle = function (dashStyle) { if (!arguments.length) { @@ -5949,8 +6000,7 @@ dc.lineChart = function (parent, chartGroup) { * @memberof dc.lineChart * @instance * @param {Boolean} [renderArea=false] - * @return {Boolean} - * @return {dc.lineChart} + * @returns {Boolean|dc.lineChart} */ _chart.renderArea = function (renderArea) { if (!arguments.length) { @@ -6167,7 +6217,7 @@ dc.lineChart = function (parent, chartGroup) { function renderTitle (dot, d) { if (_chart.renderTitle()) { - dot.selectAll('title').remove(); + dot.select('title').remove(); dot.append('title').text(dc.pluck('data', _chart.title(d.name))); } } @@ -6180,8 +6230,7 @@ dc.lineChart = function (parent, chartGroup) { * @memberof dc.lineChart * @instance * @param {Boolean} [xyTipsOn=false] - * @return {Boolean} - * @return {dc.lineChart} + * @returns {Boolean|dc.lineChart} */ _chart.xyTipsOn = function (xyTipsOn) { if (!arguments.length) { @@ -6197,8 +6246,7 @@ dc.lineChart = function (parent, chartGroup) { * @memberof dc.lineChart * @instance * @param {Number} [dotRadius=5] - * @return {Number} - * @return {dc.lineChart} + * @returns {Number|dc.lineChart} */ _chart.dotRadius = function (dotRadius) { if (!arguments.length) { @@ -6210,17 +6258,16 @@ dc.lineChart = function (parent, chartGroup) { /** * Always show individual dots for each datapoint. - * If `options` is falsy, it disables data point rendering. * - * If no `options` are provided, the current `options` values are instead returned. + * If `options` is falsy, it disables data point rendering. If no `options` are provided, the + * current `options` values are instead returned. * @method renderDataPoints * @memberof dc.lineChart * @instance * @example * chart.renderDataPoints({radius: 2, fillOpacity: 0.8, strokeOpacity: 0.8}) * @param {{fillOpacity: Number, strokeOpacity: Number, radius: Number}} [options={fillOpacity: 0.8, strokeOpacity: 0.8, radius: 2}] - * @return {{fillOpacity: Number, strokeOpacity: Number, radius: Number}} - * @return {dc.lineChart} + * @returns {{fillOpacity: Number, strokeOpacity: Number, radius: Number}|dc.lineChart} */ _chart.renderDataPoints = function (options) { if (!arguments.length) { @@ -6282,15 +6329,15 @@ dc.lineChart = function (parent, chartGroup) { /** * The data count widget is a simple widget designed to display the number of records selected by the * current filters out of the total number of records in the data set. Once created the data count widget - * will automatically update the text content of the following elements under the parent element. + * will automatically update the text content of child elements with the following classes: + * + * * `.total-count` - total number of records + * * `.filter-count` - number of records matched by the current filters * * Note: this widget works best for the specific case of showing the number of records out of a * total. If you want a more general-purpose numeric display, please use the * {@link dc.numberDisplay} widget instead. * - * '.total-count' - total number of records - * '.filter-count' - number of records matched by the current filters - * * Examples: * - {@link http://dc-js.github.com/dc.js/ Nasdaq 100 Index} * @class dataCount @@ -6304,11 +6351,11 @@ dc.lineChart = function (parent, chartGroup) { * .dimension(ndx) * .group(all); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.dataCount} + * @returns {dc.dataCount} */ dc.dataCount = function (parent, chartGroup) { var _formatNumber = d3.format(',d'); @@ -6330,8 +6377,7 @@ dc.dataCount = function (parent, chartGroup) { * all: 'All records selected. Click on charts to apply filters' * }) * @param {{some:String, all: String}} [options] - * @return {{some:String, all: String}} - * @return {dc.dataCount} + * @returns {{some:String, all: String}|dc.dataCount} */ _chart.html = function (options) { if (!arguments.length) { @@ -6351,12 +6397,11 @@ dc.dataCount = function (parent, chartGroup) { * @method formatNumber * @memberof dc.dataCount * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Formatting d3.format} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md d3.format} * @example * counter.formatNumber(d3.format('.2g')) * @param {Function} [formatter=d3.format('.2g')] - * @return {Function} - * @return {dc.dataCount} + * @returns {Function|dc.dataCount} */ _chart.formatNumber = function (formatter) { if (!arguments.length) { @@ -6394,8 +6439,8 @@ dc.dataCount = function (parent, chartGroup) { * The data table is a simple widget designed to list crossfilter focused data set (rows being * filtered) in a good old tabular fashion. * - * Note: Unlike other charts, the data table (and data grid chart) use the group attribute as a - * keying function for {@link https://github.com/mbostock/d3/wiki/Arrays#-nest nesting} the data + * Note: Unlike other charts, the data table (and data grid chart) use the {@link dc.dataTable#group group} attribute as a + * keying function for {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#nest nesting} the data * together in groups. Do not pass in a crossfilter group as this will not work. * * Another interesting feature of the data table is that you can pass a crossfilter group to the `dimension`, as @@ -6411,11 +6456,11 @@ dc.dataCount = function (parent, chartGroup) { * @memberof dc * @mixes dc.baseMixin * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.dataTable} + * @returns {dc.dataTable} */ dc.dataTable = function (parent, chartGroup) { var LABEL_CSS_CLASS = 'dc-table-label'; @@ -6594,14 +6639,30 @@ dc.dataTable = function (parent, chartGroup) { return _chart._doRender(); }; + /** + * Get or set the group function for the data table. The group function takes a data row and + * returns the key to specify to {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_nest d3.nest} + * to split rows into groups. + * + * Do not pass in a crossfilter group as this will not work. + * @method group + * @memberof dc.dataTable + * @instance + * @example + * // group rows by the value of their field + * chart + * .group(function(d) { return d.field; }) + * @param {Function} groupFunction Function taking a row of data and returning the nest key. + * @returns {Function|dc.dataTable} + */ + /** * Get or set the table size which determines the number of rows displayed by the widget. * @method size * @memberof dc.dataTable * @instance * @param {Number} [size=25] - * @return {Number} - * @return {dc.dataTable} + * @returns {Number|dc.dataTable} */ _chart.size = function (size) { if (!arguments.length) { @@ -6623,8 +6684,7 @@ dc.dataTable = function (parent, chartGroup) { * @memberof dc.dataTable * @instance * @param {Number} [beginSlice=0] - * @return {Number} - * @return {dc.dataTable} + * @returns {Number|dc.dataTable} */ _chart.beginSlice = function (beginSlice) { if (!arguments.length) { @@ -6641,8 +6701,7 @@ dc.dataTable = function (parent, chartGroup) { * @memberof dc.dataTable * @instance * @param {Number|undefined} [endSlice=undefined] - * @return {Number} - * @return {dc.dataTable} + * @returns {Number|dc.dataTable} */ _chart.endSlice = function (endSlice) { if (!arguments.length) { @@ -6729,8 +6788,7 @@ dc.dataTable = function (parent, chartGroup) { * @memberof dc.dataTable * @instance * @param {Array} [columns=[]] - * @return {Array}} - * @return {dc.dataTable} + * @returns {Array}|dc.dataTable} */ _chart.columns = function (columns) { if (!arguments.length) { @@ -6742,7 +6800,7 @@ dc.dataTable = function (parent, chartGroup) { /** * Get or set sort-by function. This function works as a value accessor at row level and returns a - * particular field to be sorted by. Default value: identity function + * particular field to be sorted by. * @method sortBy * @memberof dc.dataTable * @instance @@ -6750,9 +6808,8 @@ dc.dataTable = function (parent, chartGroup) { * chart.sortBy(function(d) { * return d.date; * }); - * @param {Function} [sortBy] - * @return {Function} - * @return {dc.dataTable} + * @param {Function} [sortBy=identity function] + * @returns {Function|dc.dataTable} */ _chart.sortBy = function (sortBy) { if (!arguments.length) { @@ -6768,13 +6825,12 @@ dc.dataTable = function (parent, chartGroup) { * @method order * @memberof dc.dataTable * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_ascending d3.ascending} - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_descending d3.descending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending} * @example * chart.order(d3.descending); * @param {Function} [order=d3.ascending] - * @return {Function} - * @return {dc.dataTable} + * @returns {Function|dc.dataTable} */ _chart.order = function (order) { if (!arguments.length) { @@ -6785,9 +6841,8 @@ dc.dataTable = function (parent, chartGroup) { }; /** - * Get or set if group rows will be shown. - * - * The .group() getter-setter must be provided in either case. + * Get or set if group rows will be shown. The dataTable {@link dc.dataTable#group group} + * function must be specified even if groups are not shown. * @method showGroups * @memberof dc.dataTable * @instance @@ -6796,8 +6851,7 @@ dc.dataTable = function (parent, chartGroup) { * .group([value], [name]) * .showGroups(true|false); * @param {Boolean} [showGroups=true] - * @return {Boolean} - * @return {dc.dataTable} + * @returns {Boolean|dc.dataTable} */ _chart.showGroups = function (showGroups) { if (!arguments.length) { @@ -6814,8 +6868,8 @@ dc.dataTable = function (parent, chartGroup) { * Data grid is a simple widget designed to list the filtered records, providing * a simple way to define how the items are displayed. * - * Note: Unlike other charts, the data grid chart (and data table) use the group attribute as a keying function - * for {@link https://github.com/mbostock/d3/wiki/Arrays#-nest nesting} the data together in groups. + * Note: Unlike other charts, the data grid chart (and data table) use the {@link dc.dataGrid#group group} attribute as a keying function + * for {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#nest nesting} the data together in groups. * Do not pass in a crossfilter group as this will not work. * * Examples: @@ -6824,11 +6878,11 @@ dc.dataTable = function (parent, chartGroup) { * @memberof dc * @mixes dc.baseMixin * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.dataGrid} + * @returns {dc.dataGrid} */ dc.dataGrid = function (parent, chartGroup) { var LABEL_CSS_CLASS = 'dc-grid-label'; @@ -6915,6 +6969,23 @@ dc.dataGrid = function (parent, chartGroup) { return _chart._doRender(); }; + /** + * Get or set the group function for the data grid. The group function takes a data row and + * returns the key to specify to {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_nest d3.nest} + * to split rows into groups. + * + * Do not pass in a crossfilter group as this will not work. + * @method group + * @memberof dc.dataGrid + * @instance + * @example + * // group rows by the value of their field + * chart + * .group(function(d) { return d.field; }) + * @param {Function} groupFunction Function taking a row of data and returning the nest key. + * @returns {Function|dc.dataTable} + */ + /** * Get or set the index of the beginning slice which determines which entries get displayed by the widget. * Useful when implementing pagination. @@ -6922,8 +6993,7 @@ dc.dataGrid = function (parent, chartGroup) { * @memberof dc.dataGrid * @instance * @param {Number} [beginSlice=0] - * @return {Number} - * @return {dc.dataGrid} + * @returns {Number|dc.dataGrid} */ _chart.beginSlice = function (beginSlice) { if (!arguments.length) { @@ -6934,14 +7004,13 @@ dc.dataGrid = function (parent, chartGroup) { }; /** - * Get or set the index of the end slice which determines which entries get displayed by the widget + * Get or set the index of the end slice which determines which entries get displayed by the widget. * Useful when implementing pagination. * @method endSlice * @memberof dc.dataGrid * @instance * @param {Number} [endSlice] - * @return {Number} - * @return {dc.dataGrid} + * @returns {Number|dc.dataGrid} */ _chart.endSlice = function (endSlice) { if (!arguments.length) { @@ -6957,8 +7026,7 @@ dc.dataGrid = function (parent, chartGroup) { * @memberof dc.dataGrid * @instance * @param {Number} [size=999] - * @return {Number} - * @return {dc.dataGrid} + * @returns {Number|dc.dataGrid} */ _chart.size = function (size) { if (!arguments.length) { @@ -6978,8 +7046,7 @@ dc.dataGrid = function (parent, chartGroup) { * @example * chart.html(function (d) { return '
'+data.exampleString+'
';}); * @param {Function} [html] - * @return {Function} - * @return {dc.dataGrid} + * @returns {Function|dc.dataGrid} */ _chart.html = function (html) { if (!arguments.length) { @@ -6997,8 +7064,7 @@ dc.dataGrid = function (parent, chartGroup) { * @example * chart.htmlGroup (function (d) { return '

'.d.key . 'with ' . d.values.length .' items

'}); * @param {Function} [htmlGroup] - * @return {Function} - * @return {dc.dataGrid} + * @returns {Function|dc.dataGrid} */ _chart.htmlGroup = function (htmlGroup) { if (!arguments.length) { @@ -7019,8 +7085,7 @@ dc.dataGrid = function (parent, chartGroup) { * return d.date; * }); * @param {Function} [sortByFunction] - * @return {Function} - * @return {dc.dataGrid} + * @returns {Function|dc.dataGrid} */ _chart.sortBy = function (sortByFunction) { if (!arguments.length) { @@ -7031,17 +7096,16 @@ dc.dataGrid = function (parent, chartGroup) { }; /** - * Get or set sort order function. + * Get or set sort the order function. * @method order * @memberof dc.dataGrid * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_ascending d3.ascending} - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_descending d3.descending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending} * @example * chart.order(d3.descending); * @param {Function} [order=d3.ascending] - * @return {Function} - * @return {dc.dataGrid} + * @returns {Function|dc.dataGrid} */ _chart.order = function (order) { if (!arguments.length) { @@ -7075,18 +7139,15 @@ dc.dataGrid = function (parent, chartGroup) { * // create a bubble chart under #chart-container2 element using chart group A * var bubbleChart2 = dc.bubbleChart('#chart-container2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.bubbleChart} + * @returns {dc.bubbleChart} */ dc.bubbleChart = function (parent, chartGroup) { var _chart = dc.bubbleMixin(dc.coordinateGridMixin({})); - var _elasticRadius = false; - var _sortBubbleSize = false; - _chart.transitionDuration(750); _chart.transitionDelay(0); @@ -7095,59 +7156,15 @@ dc.bubbleChart = function (parent, chartGroup) { return 'translate(' + (bubbleX(d)) + ',' + (bubbleY(d)) + ')'; }; - /** - * Turn on or off the elastic bubble radius feature, or return the value of the flag. If this - * feature is turned on, then bubble radii will be automatically rescaled to fit the chart better. - * @method elasticRadius - * @memberof dc.bubbleChart - * @instance - * @param {Boolean} [elasticRadius=false] - * @return {Boolean} - * @return {dc.bubbleChart} - */ - _chart.elasticRadius = function (elasticRadius) { - if (!arguments.length) { - return _elasticRadius; - } - _elasticRadius = elasticRadius; - return _chart; - }; - - /** - * Turn on or off the bubble sorting feature, or return the value of the flag. If enabled, - * bubbles will be sorted by their radius, with smaller bubbles in front. - * @method sortBubbleSize - * @memberof dc.bubbleChart - * @instance - * @param {Boolean} [sortBubbleSize=false] - * @return {Boolean} - * @return {dc.bubbleChart} - */ - _chart.sortBubbleSize = function (sortBubbleSize) { - if (!arguments.length) { - return _sortBubbleSize; - } - _sortBubbleSize = sortBubbleSize; - return _chart; - }; - _chart.plotData = function () { - if (_elasticRadius) { - _chart.r().domain([_chart.rMin(), _chart.rMax()]); - } - + _chart.calculateRadiusDomain(); _chart.r().range([_chart.MIN_RADIUS, _chart.xAxisLength() * _chart.maxBubbleRelativeSize()]); var data = _chart.data(); - if (_sortBubbleSize) { - // sort descending so smaller bubbles are on top - var radiusAccessor = _chart.radiusValueAccessor(); - data.sort(function (a, b) { return d3.descending(radiusAccessor(a), radiusAccessor(b)); }); - } var bubbleG = _chart.chartBodyG().selectAll('g.' + _chart.BUBBLE_NODE_CLASS) .data(data, function (d) { return d.key; }); - if (_sortBubbleSize) { - // Call order here to update dom order based on sort + if (_chart.sortBubbleSize()) { + // update dom order based on sort bubbleG.order(); } @@ -7173,7 +7190,7 @@ dc.bubbleChart = function (parent, chartGroup) { .attr('fill', _chart.getColor) .attr('r', 0); dc.transition(bubbleG, _chart.transitionDuration(), _chart.transitionDelay()) - .selectAll('circle.' + _chart.BUBBLE_CLASS) + .select('circle.' + _chart.BUBBLE_CLASS) .attr('r', function (d) { return _chart.bubbleR(d); }) @@ -7189,7 +7206,7 @@ dc.bubbleChart = function (parent, chartGroup) { function updateNodes (bubbleG) { dc.transition(bubbleG, _chart.transitionDuration(), _chart.transitionDelay()) .attr('transform', bubbleLocator) - .selectAll('circle.' + _chart.BUBBLE_CLASS) + .select('circle.' + _chart.BUBBLE_CLASS) .attr('fill', _chart.getColor) .attr('r', function (d) { return _chart.bubbleR(d); @@ -7247,11 +7264,11 @@ dc.bubbleChart = function (parent, chartGroup) { * // create a composite chart under #chart-container2 element using chart group A * var compositeChart2 = dc.compositeChart('#chart-container2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.compositeChart} + * @returns {dc.compositeChart} */ dc.compositeChart = function (parent, chartGroup) { @@ -7466,8 +7483,7 @@ dc.compositeChart = function (parent, chartGroup) { * @memberof dc.compositeChart * @instance * @param {Boolean} [useRightAxisGridLines=false] - * @return {Boolean} - * @return {dc.compositeChart} + * @returns {Boolean|dc.compositeChart} */ _chart.useRightAxisGridLines = function (useRightAxisGridLines) { if (!arguments) { @@ -7485,8 +7501,7 @@ dc.compositeChart = function (parent, chartGroup) { * @memberof dc.compositeChart * @instance * @param {Object} [childOptions] - * @return {Object} - * @return {dc.compositeChart} + * @returns {Object|dc.compositeChart} */ _chart.childOptions = function (childOptions) { if (!arguments.length) { @@ -7514,8 +7529,7 @@ dc.compositeChart = function (parent, chartGroup) { * @instance * @param {String} [rightYAxisLabel] * @param {Number} [padding] - * @return {String} - * @return {dc.compositeChart} + * @returns {String|dc.compositeChart} */ _chart.rightYAxisLabel = function (rightYAxisLabel, padding) { if (!arguments.length) { @@ -7552,7 +7566,7 @@ dc.compositeChart = function (parent, chartGroup) { * .centerBar(true) * ]); * @param {Array} [subChartArray] - * @return {dc.compositeChart} + * @returns {dc.compositeChart} */ _chart.compose = function (subChartArray) { _children = subChartArray; @@ -7575,7 +7589,7 @@ dc.compositeChart = function (parent, chartGroup) { * @method children * @memberof dc.compositeChart * @instance - * @return {Array} + * @returns {Array} */ _chart.children = function () { return _children; @@ -7590,8 +7604,7 @@ dc.compositeChart = function (parent, chartGroup) { * @memberof dc.compositeChart * @instance * @param {Boolean} [shareColors=false] - * @return {Boolean} - * @return {dc.compositeChart} + * @returns {Boolean|dc.compositeChart} */ _chart.shareColors = function (shareColors) { if (!arguments.length) { @@ -7608,8 +7621,7 @@ dc.compositeChart = function (parent, chartGroup) { * @memberof dc.compositeChart * @instance * @param {Boolean} [shareTitle=true] - * @return {Boolean} - * @return {dc.compositeChart} + * @returns {Boolean|dc.compositeChart} */ _chart.shareTitle = function (shareTitle) { if (!arguments.length) { @@ -7625,10 +7637,9 @@ dc.compositeChart = function (parent, chartGroup) { * @method rightY * @memberof dc.compositeChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Scales d3.scale} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Scales.md d3.scale} * @param {d3.scale} [yScale] - * @return {d3.scale} - * @return {dc.compositeChart} + * @returns {d3.scale|dc.compositeChart} */ _chart.rightY = function (yScale) { if (!arguments.length) { @@ -7646,7 +7657,7 @@ dc.compositeChart = function (parent, chartGroup) { * @memberof dc.compositeChart * @instance * @param {Boolean} [alignYAxes=false] - * @return {Chart} + * @returns {Chart} */ _chart.alignYAxes = function (alignYAxes) { if (!arguments.length) { @@ -7750,21 +7761,22 @@ dc.compositeChart = function (parent, chartGroup) { /** * Set or get the right y axis used by the composite chart. This function is most useful when y * axis customization is required. The y axis in dc.js is an instance of a [d3 axis - * object](https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-_axis) therefore it supports any valid - * d3 axis manipulation. **Caution**: The y axis is usually generated internally by dc; - * resetting it may cause unexpected results. + * object](https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis) therefore it supports any valid + * d3 axis manipulation. + * + * **Caution**: The y axis is usually generated internally by dc; resetting it may cause + * unexpected results. * @method rightYAxis * @memberof dc.compositeChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Axes d3.svg.axis} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis} * @example * // customize y axis tick format * chart.rightYAxis().tickFormat(function (v) {return v + '%';}); * // customize y axis tick values * chart.rightYAxis().tickValues([0, 100, 200, 300]); * @param {d3.svg.axis} [rightYAxis] - * @return {d3.svg.axis} - * @return {dc.compositeChart} + * @returns {d3.svg.axis|dc.compositeChart} */ _chart.rightYAxis = function (rightYAxis) { if (!arguments.length) { @@ -7793,11 +7805,11 @@ dc.compositeChart = function (parent, chartGroup) { * // create a series chart under #chart-container2 element using chart group A * var seriesChart2 = dc.seriesChart("#chart-container2", "chartGroupA"); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.seriesChart} + * @returns {dc.seriesChart} */ dc.seriesChart = function (parent, chartGroup) { var _chart = dc.compositeChart(parent, chartGroup); @@ -7878,8 +7890,7 @@ dc.seriesChart = function (parent, chartGroup) { * // do a scatter series chart * chart.chart(dc.scatterPlot) * @param {Function} [chartFunction=dc.lineChart] - * @return {Function} - * @return {dc.seriesChart} + * @returns {Function|dc.seriesChart} */ _chart.chart = function (chartFunction) { if (!arguments.length) { @@ -7902,8 +7913,7 @@ dc.seriesChart = function (parent, chartGroup) { * // simple series accessor * chart.seriesAccessor(function(d) { return "Expt: " + d.key[0]; }) * @param {Function} [accessor] - * @return {Function} - * @return {dc.seriesChart} + * @returns {Function|dc.seriesChart} */ _chart.seriesAccessor = function (accessor) { if (!arguments.length) { @@ -7919,13 +7929,12 @@ dc.seriesChart = function (parent, chartGroup) { * @method seriesSort * @memberof dc.seriesChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_ascending d3.ascending} - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_descending d3.descending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending} * @example * chart.seriesSort(d3.descending); * @param {Function} [sortFunction=d3.ascending] - * @return {Function} - * @return {dc.seriesChart} + * @returns {Function|dc.seriesChart} */ _chart.seriesSort = function (sortFunction) { if (!arguments.length) { @@ -7943,16 +7952,15 @@ dc.seriesChart = function (parent, chartGroup) { * @method valueSort * @memberof dc.seriesChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_ascending d3.ascending} - * @see {@link https://github.com/mbostock/d3/wiki/Arrays#d3_descending d3.descending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_ascending d3.ascending} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Arrays.md#d3_descending d3.descending} * @example * // Default value sort * _chart.valueSort(function keySort (a, b) { * return d3.ascending(_chart.keyAccessor()(a), _chart.keyAccessor()(b)); * }); * @param {Function} [sortFunction] - * @return {Function} - * @return {dc.seriesChart} + * @returns {Function|dc.seriesChart} */ _chart.valueSort = function (sortFunction) { if (!arguments.length) { @@ -7987,11 +7995,11 @@ dc.seriesChart = function (parent, chartGroup) { * // create a choropleth chart under '#us-chart2' element using chart group A * var chart2 = dc.compositeChart('#us-chart2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.geoChoroplethChart} + * @returns {dc.geoChoroplethChart} */ dc.geoChoroplethChart = function (parent, chartGroup) { var _chart = dc.colorMixin(dc.baseMixin({})); @@ -8155,8 +8163,8 @@ dc.geoChoroplethChart = function (parent, chartGroup) { * @memberof dc.geoChoroplethChart * @instance * @see {@link http://geojson.org/ GeoJSON} - * @see {@link https://github.com/mbostock/topojson/wiki TopoJSON} - * @see {@link https://github.com/mbostock/topojson/wiki/API-Reference#feature topojson.feature} + * @see {@link https://github.com/topojson/topojson/wiki TopoJSON} + * @see {@link https://github.com/topojson/topojson-1.x-api-reference/blob/master/API-Reference.md#wiki-feature topojson.feature} * @example * // insert a layer for rendering US states * chart.overlayGeoJson(statesJson.features, 'state', function(d) { @@ -8166,7 +8174,7 @@ dc.geoChoroplethChart = function (parent, chartGroup) { * @param {String} name - name of the layer * @param {Function} keyAccessor - accessor function used to extract 'key' from the GeoJson data. The key extracted by * this function should match the keys returned by the crossfilter groups. - * @return {dc.geoChoroplethChart} + * @returns {dc.geoChoroplethChart} */ _chart.overlayGeoJson = function (json, name, keyAccessor) { for (var i = 0; i < _geoJsons.length; ++i) { @@ -8181,15 +8189,15 @@ dc.geoChoroplethChart = function (parent, chartGroup) { }; /** - * Set custom geo projection function. See the available [d3 geo projection - * functions](https://github.com/mbostock/d3/wiki/Geo-Projections). + * Set custom geo projection function. See the available + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Projections.md d3 geo projection functions}. * @method projection * @memberof dc.geoChoroplethChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Geo-Projections d3.geo.projection} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Projections.md d3.geo.projection} * @see {@link https://github.com/d3/d3-geo-projection Extended d3.geo.projection} * @param {d3.projection} [projection=d3.geo.albersUsa()] - * @return {dc.geoChoroplethChart} + * @returns {dc.geoChoroplethChart} */ _chart.projection = function (projection) { _geoPath.projection(projection); @@ -8204,21 +8212,21 @@ dc.geoChoroplethChart = function (parent, chartGroup) { * @method geoJsons * @memberof dc.geoChoroplethChart * @instance - * @return {Array<{name:String, data: Object, accessor: Function}>} + * @returns {Array<{name:String, data: Object, accessor: Function}>} */ _chart.geoJsons = function () { return _geoJsons; }; /** - * Returns the {@link https://github.com/mbostock/d3/wiki/Geo-Paths#path d3.geo.path} object used to + * Returns the {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Paths.md#path d3.geo.path} object used to * render the projection and features. Can be useful for figuring out the bounding box of the * feature set and thus a way to calculate scale and translation for the projection. * @method geoPath * @memberof dc.geoChoroplethChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Geo-Paths#path d3.geo.path} - * @return {d3.geo.path} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Geo-Paths.md#path d3.geo.path} + * @returns {d3.geo.path} */ _chart.geoPath = function () { return _geoPath; @@ -8230,7 +8238,7 @@ dc.geoChoroplethChart = function (parent, chartGroup) { * @memberof dc.geoChoroplethChart * @instance * @param {String} name - * @return {dc.geoChoroplethChart} + * @returns {dc.geoChoroplethChart} */ _chart.removeGeoJson = function (name) { var geoJsons = []; @@ -8268,11 +8276,11 @@ dc.geoChoroplethChart = function (parent, chartGroup) { * // create a bubble overlay chart on top of the '#chart-container2 svg' element using chart group A * var bubbleChart2 = dc.compositeChart('#chart-container2', 'chartGroupA').svg(d3.select('#chart-container2 svg')); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.bubbleOverlay} + * @returns {dc.bubbleOverlay} */ dc.bubbleOverlay = function (parent, chartGroup) { var BUBBLE_OVERLAY_CLASS = 'bubble-overlay'; @@ -8292,7 +8300,7 @@ dc.bubbleOverlay = function (parent, chartGroup) { * // set up underlying svg element * chart.svg(d3.select('#chart svg')); * @param {SVGElement|d3.selection} [imageElement] - * @return {dc.bubbleOverlay} + * @returns {dc.bubbleOverlay} */ var _chart = dc.bubbleMixin(dc.baseMixin({})); var _g; @@ -8319,7 +8327,7 @@ dc.bubbleOverlay = function (parent, chartGroup) { * @param {String} name * @param {Number} x * @param {Number} y - * @return {dc.bubbleOverlay} + * @returns {dc.bubbleOverlay} */ _chart.point = function (name, x, y) { _points.push({name: name, x: x, y: y}); @@ -8348,6 +8356,7 @@ dc.bubbleOverlay = function (parent, chartGroup) { function initializeBubbles () { var data = mapData(); + _chart.calculateRadiusDomain(); _points.forEach(function (point) { var nodeG = getNodeG(point, data); @@ -8407,6 +8416,7 @@ dc.bubbleOverlay = function (parent, chartGroup) { function updateBubbles () { var data = mapData(); + _chart.calculateRadiusDomain(); _points.forEach(function (point) { var nodeG = getNodeG(point, data); @@ -8477,11 +8487,11 @@ dc.bubbleOverlay = function (parent, chartGroup) { * // create a row chart under #chart-container2 element using chart group A * var chart2 = dc.rowChart('#chart-container2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.rowChart} + * @returns {dc.rowChart} */ dc.rowChart = function (parent, chartGroup) { @@ -8490,7 +8500,7 @@ dc.rowChart = function (parent, chartGroup) { var _labelOffsetX = 10; var _labelOffsetY = 15; var _hasLabelOffsetY = false; - var _dyOffset = '0.35em'; // this helps center labels https://github.com/mbostock/d3/wiki/SVG-Shapes#svg_text + var _dyOffset = '0.35em'; // this helps center labels https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#svg_text var _titleLabelOffsetX = 2; var _gap = 5; @@ -8561,14 +8571,13 @@ dc.rowChart = function (parent, chartGroup) { /** * Gets or sets the x scale. The x scale can be any d3 - * {@link https://github.com/mbostock/d3/wiki/Quantitative-Scales quantitive scale} + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md quantitive scale}. * @method x * @memberof dc.rowChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Quantitative-Scales quantitive scale} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md quantitive scale} * @param {d3.scale} [scale] - * @return {d3.scale} - * @return {dc.rowChart} + * @returns {d3.scale|dc.rowChart} */ _chart.x = function (scale) { if (!arguments.length) { @@ -8669,7 +8678,7 @@ dc.rowChart = function (parent, chartGroup) { function createTitles (rows) { if (_chart.renderTitle()) { - rows.selectAll('title').remove(); + rows.select('title').remove(); rows.append('title').text(_chart.title()); } } @@ -8721,13 +8730,12 @@ dc.rowChart = function (parent, chartGroup) { } /** - * Turn on/off Title label rendering (values) using SVG style of text-anchor 'end' + * Turn on/off Title label rendering (values) using SVG style of text-anchor 'end'. * @method renderTitleLabel * @memberof dc.rowChart * @instance * @param {Boolean} [renderTitleLabel=false] - * @return {Boolean} - * @return {dc.rowChart} + * @returns {Boolean|dc.rowChart} */ _chart.renderTitleLabel = function (renderTitleLabel) { if (!arguments.length) { @@ -8755,18 +8763,18 @@ dc.rowChart = function (parent, chartGroup) { /** * Get the x axis for the row chart instance. Note: not settable for row charts. - * See the {@link https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-axis d3 axis object} + * See the {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3 axis object} * documention for more information. * @method xAxis * @memberof dc.rowChart * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-axis d3.svg.axis} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Axes.md#axis d3.svg.axis} * @example * // customize x axis tick format * chart.xAxis().tickFormat(function (v) {return v + '%';}); * // customize x axis tick values * chart.xAxis().tickValues([0, 100, 200, 300]); - * @return {d3.svg.axis} + * @returns {d3.svg.axis} */ _chart.xAxis = function () { return _xAxis; @@ -8783,8 +8791,7 @@ dc.rowChart = function (parent, chartGroup) { * @example * chart.fixedBarHeight( chartheight - (count + 1) * gap / count); * @param {Boolean|Number} [fixedBarHeight=false] - * @return {Boolean|Number} - * @return {dc.rowChart} + * @returns {Boolean|Number|dc.rowChart} */ _chart.fixedBarHeight = function (fixedBarHeight) { if (!arguments.length) { @@ -8795,13 +8802,12 @@ dc.rowChart = function (parent, chartGroup) { }; /** - * Get or set the vertical gap space between rows on a particular row chart instance + * Get or set the vertical gap space between rows on a particular row chart instance. * @method gap * @memberof dc.rowChart * @instance * @param {Number} [gap=5] - * @return {Number} - * @return {dc.rowChart} + * @returns {Number|dc.rowChart} */ _chart.gap = function (gap) { if (!arguments.length) { @@ -8818,8 +8824,7 @@ dc.rowChart = function (parent, chartGroup) { * @memberof dc.rowChart * @instance * @param {Boolean} [elasticX] - * @return {Boolean} - * @return {dc.rowChart} + * @returns {Boolean|dc.rowChart} */ _chart.elasticX = function (elasticX) { if (!arguments.length) { @@ -8835,8 +8840,7 @@ dc.rowChart = function (parent, chartGroup) { * @memberof dc.rowChart * @instance * @param {Number} [labelOffsetX=10] - * @return {Number} - * @return {dc.rowChart} + * @returns {Number|dc.rowChart} */ _chart.labelOffsetX = function (labelOffsetX) { if (!arguments.length) { @@ -8852,8 +8856,7 @@ dc.rowChart = function (parent, chartGroup) { * @memberof dc.rowChart * @instance * @param {Number} [labelOffsety=15] - * @return {Number} - * @return {dc.rowChart} + * @returns {Number|dc.rowChart} */ _chart.labelOffsetY = function (labelOffsety) { if (!arguments.length) { @@ -8870,8 +8873,7 @@ dc.rowChart = function (parent, chartGroup) { * @memberof dc.rowChart * @instance * @param {Number} [titleLabelOffsetX=2] - * @return {Number} - * @return {dc.rowChart} + * @returns {Number|dc.rowChart} */ _chart.titleLabelOffsetX = function (titleLabelOffsetX) { if (!arguments.length) { @@ -8899,7 +8901,7 @@ dc.rowChart = function (parent, chartGroup) { * @memberof dc * @example * chart.legend(dc.legend().x(400).y(10).itemHeight(13).gap(5)) - * @return {dc.legend} + * @returns {dc.legend} */ dc.legend = function () { var LABEL_GAP = 2; @@ -8914,7 +8916,8 @@ dc.legend = function () { _legendWidth = 560, _itemWidth = 70, _autoItemWidth = false, - _legendText = dc.pluck('name'); + _legendText = dc.pluck('name'), + _maxItems; var _g; @@ -8933,6 +8936,10 @@ dc.legend = function () { .attr('transform', 'translate(' + _x + ',' + _y + ')'); var legendables = _parent.legendables(); + if (_maxItems !== undefined) { + legendables = legendables.slice(0, _maxItems); + } + var itemEnter = _g.selectAll('g.dc-legend-item') .data(legendables) .enter() @@ -8982,15 +8989,13 @@ dc.legend = function () { var row = 0; itemEnter.attr('transform', function (d, i) { if (_horizontal) { - var translateBy = 'translate(' + _cumulativeLegendTextWidth + ',' + row * legendItemHeight() + ')'; var itemWidth = _autoItemWidth === true ? this.getBBox().width + _gap : _itemWidth; - - if ((_cumulativeLegendTextWidth + itemWidth) >= _legendWidth) { - ++row ; - _cumulativeLegendTextWidth = 0 ; - } else { - _cumulativeLegendTextWidth += itemWidth; + if ((_cumulativeLegendTextWidth + itemWidth) > _legendWidth && _cumulativeLegendTextWidth > 0) { + ++row; + _cumulativeLegendTextWidth = 0; } + var translateBy = 'translate(' + _cumulativeLegendTextWidth + ',' + row * legendItemHeight() + ')'; + _cumulativeLegendTextWidth += itemWidth; return translateBy; } else { return 'translate(0,' + i * legendItemHeight() + ')'; @@ -9008,8 +9013,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Number} [x=0] - * @return {Number} - * @return {dc.legend} + * @returns {Number|dc.legend} */ _legend.x = function (x) { if (!arguments.length) { @@ -9025,8 +9029,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Number} [y=0] - * @return {Number} - * @return {dc.legend} + * @returns {Number|dc.legend} */ _legend.y = function (y) { if (!arguments.length) { @@ -9042,8 +9045,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Number} [gap=5] - * @return {Number} - * @return {dc.legend} + * @returns {Number|dc.legend} */ _legend.gap = function (gap) { if (!arguments.length) { @@ -9059,8 +9061,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Number} [itemHeight=12] - * @return {Number} - * @return {dc.legend} + * @returns {Number|dc.legend} */ _legend.itemHeight = function (itemHeight) { if (!arguments.length) { @@ -9076,8 +9077,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Boolean} [horizontal=false] - * @return {Boolean} - * @return {dc.legend} + * @returns {Boolean|dc.legend} */ _legend.horizontal = function (horizontal) { if (!arguments.length) { @@ -9093,8 +9093,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Number} [legendWidth=500] - * @return {Number} - * @return {dc.legend} + * @returns {Number|dc.legend} */ _legend.legendWidth = function (legendWidth) { if (!arguments.length) { @@ -9105,13 +9104,12 @@ dc.legend = function () { }; /** - * legendItem width for horizontal legend. + * Legend item width for horizontal legend. * @method itemWidth * @memberof dc.legend * @instance * @param {Number} [itemWidth=70] - * @return {Number} - * @return {dc.legend} + * @returns {Number|dc.legend} */ _legend.itemWidth = function (itemWidth) { if (!arguments.length) { @@ -9123,13 +9121,12 @@ dc.legend = function () { /** * Turn automatic width for legend items on or off. If true, {@link dc.legend#itemWidth itemWidth} is ignored. - * This setting takes into account {@link dc.legend#gap gap}. + * This setting takes into account the {@link dc.legend#gap gap}. * @method autoItemWidth * @memberof dc.legend * @instance * @param {Boolean} [autoItemWidth=false] - * @return {Boolean} - * @return {dc.legend} + * @returns {Boolean|dc.legend} */ _legend.autoItemWidth = function (autoItemWidth) { if (!arguments.length) { @@ -9147,8 +9144,7 @@ dc.legend = function () { * @memberof dc.legend * @instance * @param {Function} [legendText] - * @return {Function} - * @return {dc.legend} + * @returns {Function|dc.legend} * @example * // default legendText * legend.legendText(dc.pluck('name')) @@ -9167,6 +9163,22 @@ dc.legend = function () { return _legend; }; + /** + * Maximum number of legend items to display + * @method maxItems + * @memberof dc.legend + * @instance + * @param {Number} [maxItems] + * @return {dc.legend} + */ + _legend.maxItems = function (maxItems) { + if (!arguments.length) { + return _maxItems; + } + _maxItems = dc.utils.isNumber(maxItems) ? maxItems : undefined; + return _legend; + }; + return _legend; }; @@ -9187,11 +9199,11 @@ dc.legend = function () { * // create a sub-chart under a composite parent chart * var chart3 = dc.scatterPlot(compositeChart); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.scatterPlot} + * @returns {dc.scatterPlot} */ dc.scatterPlot = function (parent, chartGroup) { var _chart = dc.coordinateGridMixin({}); @@ -9204,9 +9216,16 @@ dc.scatterPlot = function (parent, chartGroup) { _chart.valueAccessor(function (d) { return originalKeyAccessor(d)[1]; }); _chart.colorAccessor(function () { return _chart._groupName; }); + _chart.title(function (d) { + // this basically just counteracts the setting of its own key/value accessors + // see https://github.com/dc-js/dc.js/issues/702 + return _chart.keyAccessor()(d) + ',' + _chart.valueAccessor()(d) + ': ' + + _chart.existenceAccessor()(d); + }); + var _locator = function (d) { return 'translate(' + _chart.x()(_chart.keyAccessor()(d)) + ',' + - _chart.y()(_chart.valueAccessor()(d)) + ')'; + _chart.y()(_chart.valueAccessor()(d)) + ')'; }; var _highlightedSize = 7; @@ -9215,11 +9234,14 @@ dc.scatterPlot = function (parent, chartGroup) { var _excludedColor = null; var _excludedOpacity = 1.0; var _emptySize = 0; + var _emptyOpacity = 0; + var _nonemptyOpacity = 1; + var _emptyColor = null; var _filtered = []; _symbol.size(function (d, i) { if (!_existenceAccessor(d)) { - return _emptySize; + return Math.pow(_emptySize, 2); } else if (_filtered[i]) { return Math.pow(_symbolSize, 2); } else { @@ -9237,29 +9259,40 @@ dc.scatterPlot = function (parent, chartGroup) { _chart.plotData = function () { var symbols = _chart.chartBodyG().selectAll('path.symbol') - .data(_chart.data()); + .data(_chart.data()); symbols .enter() - .append('path') + .append('path') .attr('class', 'symbol') .attr('opacity', 0) .attr('fill', _chart.getColor) .attr('transform', _locator); + symbols.call(renderTitles, _chart.data()); + symbols.each(function (d, i) { _filtered[i] = !_chart.filter() || _chart.filter().isFiltered([d.key[0], d.key[1]]); }); dc.transition(symbols, _chart.transitionDuration(), _chart.transitionDelay()) .attr('opacity', function (d, i) { - return !_existenceAccessor(d) ? 0 : - _filtered[i] ? 1 : _chart.excludedOpacity(); + if (!_existenceAccessor(d)) { + return _emptyOpacity; + } else if (_filtered[i]) { + return _nonemptyOpacity; + } else { + return _chart.excludedOpacity(); + } }) .attr('fill', function (d, i) { - return _chart.excludedColor() && !_filtered[i] ? - _chart.excludedColor() : - _chart.getColor(d); + if (_emptyColor && !_existenceAccessor(d)) { + return _emptyColor; + } else if (_chart.excludedColor() && !_filtered[i]) { + return _chart.excludedColor(); + } else { + return _chart.getColor(d); + } }) .attr('transform', _locator) .attr('d', _symbol); @@ -9268,6 +9301,15 @@ dc.scatterPlot = function (parent, chartGroup) { .attr('opacity', 0).remove(); }; + function renderTitles (symbol, d) { + if (_chart.renderTitle()) { + symbol.selectAll('title').remove(); + symbol.append('title').text(function (d) { + return _chart.title()(d); + }); + } + } + /** * Get or set the existence accessor. If a point exists, it is drawn with * {@link dc.scatterPlot#symbolSize symbolSize} radius and @@ -9283,8 +9325,7 @@ dc.scatterPlot = function (parent, chartGroup) { * // default accessor * chart.existenceAccessor(function (d) { return d.value; }); * @param {Function} [accessor] - * @return {Function} - * @return {dc.scatterPlot} + * @returns {Function|dc.scatterPlot} */ _chart.existenceAccessor = function (accessor) { if (!arguments.length) { @@ -9300,15 +9341,14 @@ dc.scatterPlot = function (parent, chartGroup) { * @method symbol * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_type d3.svg.symbol().type()} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_type d3.svg.symbol.type} * @example * // Circle type * chart.symbol('circle'); * // Square type * chart.symbol('square'); * @param {String|Function} [type='circle'] - * @return {String|Function} - * @return {dc.scatterPlot} + * @returns {String|Function|dc.scatterPlot} */ _chart.symbol = function (type) { if (!arguments.length) { @@ -9323,10 +9363,9 @@ dc.scatterPlot = function (parent, chartGroup) { * @method symbolSize * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_size d3.svg.symbol().size()} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size} * @param {Number} [symbolSize=3] - * @return {Number} - * @return {dc.scatterPlot} + * @returns {Number|dc.scatterPlot} */ _chart.symbolSize = function (symbolSize) { if (!arguments.length) { @@ -9341,10 +9380,9 @@ dc.scatterPlot = function (parent, chartGroup) { * @method highlightedSize * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_size d3.svg.symbol().size()} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size} * @param {Number} [highlightedSize=5] - * @return {Number} - * @return {dc.scatterPlot} + * @returns {Number|dc.scatterPlot} */ _chart.highlightedSize = function (highlightedSize) { if (!arguments.length) { @@ -9356,14 +9394,13 @@ dc.scatterPlot = function (parent, chartGroup) { /** * Set or get size for symbols excluded from this chart's filter. If null, no - * special size is applied for symbols based on their filter status + * special size is applied for symbols based on their filter status. * @method excludedSize * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_size d3.svg.symbol().size()} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size} * @param {Number} [excludedSize=null] - * @return {Number} - * @return {dc.scatterPlot} + * @returns {Number|dc.scatterPlot} */ _chart.excludedSize = function (excludedSize) { if (!arguments.length) { @@ -9375,14 +9412,12 @@ dc.scatterPlot = function (parent, chartGroup) { /** * Set or get color for symbols excluded from this chart's filter. If null, no - * special color is applied for symbols based on their filter status + * special color is applied for symbols based on their filter status. * @method excludedColor * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_size d3.svg.symbol().size()} * @param {Number} [excludedColor=null] - * @return {Number} - * @return {dc.scatterPlot} + * @returns {Number|dc.scatterPlot} */ _chart.excludedColor = function (excludedColor) { if (!arguments.length) { @@ -9397,10 +9432,8 @@ dc.scatterPlot = function (parent, chartGroup) { * @method excludedOpacity * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_size d3.svg.symbol().size()} * @param {Number} [excludedOpacity=1.0] - * @return {Number} - * @return {dc.scatterPlot} + * @returns {Number|dc.scatterPlot} */ _chart.excludedOpacity = function (excludedOpacity) { if (!arguments.length) { @@ -9415,10 +9448,9 @@ dc.scatterPlot = function (parent, chartGroup) { * @method emptySize * @memberof dc.scatterPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/SVG-Shapes#symbol_size d3.svg.symbol().size()} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/SVG-Shapes.md#symbol_size d3.svg.symbol.size} * @param {Number} [emptySize=0] - * @return {Number} - * @return {dc.scatterPlot} + * @returns {Number|dc.scatterPlot} */ _chart.hiddenSize = _chart.emptySize = function (emptySize) { if (!arguments.length) { @@ -9428,6 +9460,58 @@ dc.scatterPlot = function (parent, chartGroup) { return _chart; }; + /** + * Set or get color for symbols when the group is empty. If null, just use the + * {@link dc.colorMixin#colors colorMixin.colors} color scale zero value. + * @name emptyColor + * @memberof dc.scatterPlot + * @instance + * @param {String} [emptyColor=null] + * @return {String} + * @return {dc.scatterPlot}/ + */ + _chart.emptyColor = function (emptyColor) { + if (!arguments.length) { + return _emptyColor; + } + _emptyColor = emptyColor; + return _chart; + }; + + /** + * Set or get opacity for symbols when the group is empty. + * @name emptyOpacity + * @memberof dc.scatterPlot + * @instance + * @param {Number} [emptyOpacity=0] + * @return {Number} + * @return {dc.scatterPlot} + */ + _chart.emptyOpacity = function (emptyOpacity) { + if (!arguments.length) { + return _emptyOpacity; + } + _emptyOpacity = emptyOpacity; + return _chart; + }; + + /** + * Set or get opacity for symbols when the group is not empty. + * @name nonemptyOpacity + * @memberof dc.scatterPlot + * @instance + * @param {Number} [nonemptyOpacity=1] + * @return {Number} + * @return {dc.scatterPlot} + */ + _chart.nonemptyOpacity = function (nonemptyOpacity) { + if (!arguments.length) { + return _emptyOpacity; + } + _nonemptyOpacity = nonemptyOpacity; + return _chart; + }; + _chart.legendables = function () { return [{chart: _chart, name: _chart._groupName, color: _chart.getColor()}]; }; @@ -9520,11 +9604,11 @@ dc.scatterPlot = function (parent, chartGroup) { * // create a number display under #chart-container1 element using the default global chart group * var display1 = dc.numberDisplay('#chart-container1'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.numberDisplay} + * @returns {dc.numberDisplay} */ dc.numberDisplay = function (parent, chartGroup) { var SPAN_CLASS = 'number-display'; @@ -9536,6 +9620,9 @@ dc.numberDisplay = function (parent, chartGroup) { // dimension not required _chart._mandatoryAttributes(['group']); + // default to ordering by value, to emulate old group.top(1) behavior when multiple groups + _chart.ordering(function (kv) { return kv.value; }); + /** * Gets or sets an optional object specifying HTML templates to use depending on the number * displayed. The text `%number` will be replaced with the current value. @@ -9551,8 +9638,7 @@ dc.numberDisplay = function (parent, chartGroup) { * some:'%number records', * none:'no records'}) * @param {{one:String, some:String, none:String}} [html={one: '', some: '', none: ''}] - * @return {{one:String, some:String, none:String}} - * @return {dc.numberDisplay} + * @returns {{one:String, some:String, none:String}|dc.numberDisplay} */ _chart.html = function (html) { if (!arguments.length) { @@ -9579,18 +9665,33 @@ dc.numberDisplay = function (parent, chartGroup) { }; /** - * Calculate and return the underlying value of the display + * Calculate and return the underlying value of the display. * @method value * @memberof dc.numberDisplay * @instance - * @return {Number} + * @returns {Number} */ _chart.value = function () { return _chart.data(); }; + // probably unnecessary efficiency over computeOrderedGroups sort + function maxBin (all) { + if (all.length < 1) { + return null; + } + var maxi = 0, max = _chart.ordering()(all[0]); + for (var i = 1; i < all.length; ++i) { + var v = _chart.ordering()(all[i]); + if (v > max) { + max = v; + maxi = i; + } + } + return all[maxi]; + } _chart.data(function (group) { - var valObj = group.value ? group.value() : group.top(1)[0]; + var valObj = group.value ? group.value() : maxBin(group.all()); return _chart.valueAccessor()(valObj); }); @@ -9640,10 +9741,9 @@ dc.numberDisplay = function (parent, chartGroup) { * @method formatNumber * @memberof dc.numberDisplay * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Formatting d3.format} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md d3.format} * @param {Function} [formatter=d3.format('.2s')] - * @return {Function} - * @return {dc.numberDisplay} + * @returns {Function|dc.numberDisplay} */ _chart.formatNumber = function (formatter) { if (!arguments.length) { @@ -9669,11 +9769,11 @@ dc.numberDisplay = function (parent, chartGroup) { * // create a heat map under #chart-container2 element using chart group A * var heatMap2 = dc.heatMap('#chart-container2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.heatMap} + * @returns {dc.heatMap} */ dc.heatMap = function (parent, chartGroup) { @@ -9712,8 +9812,7 @@ dc.heatMap = function (parent, chartGroup) { * // the default label function just returns the name * chart.colsLabel(function(d) { return d; }); * @param {Function} [labelFunction=function(d) { return d; }] - * @return {Function} - * @return {dc.heatMap} + * @returns {Function|dc.heatMap} */ _chart.colsLabel = function (labelFunction) { if (!arguments.length) { @@ -9733,8 +9832,7 @@ dc.heatMap = function (parent, chartGroup) { * // the default label function just returns the name * chart.rowsLabel(function(d) { return d; }); * @param {Function} [labelFunction=function(d) { return d; }] - * @return {Function} - * @return {dc.heatMap} + * @returns {Function|dc.heatMap} */ _chart.rowsLabel = function (labelFunction) { if (!arguments.length) { @@ -9762,15 +9860,11 @@ dc.heatMap = function (parent, chartGroup) { return !_chart.hasFilter(d.key); }); dc.events.trigger(function () { - if (unfilteredCellsOnAxis.empty()) { - cellsOnAxis.each(function (d) { - _chart.filter(d.key); - }); - } else { - unfilteredCellsOnAxis.each(function (d) { - _chart.filter(d.key); - }); - } + var selection = unfilteredCellsOnAxis.empty() ? cellsOnAxis : unfilteredCellsOnAxis; + var filters = selection.data().map(function (kv) { + return dc.filters.TwoDimensionalFilter(kv.key); + }); + _chart._filter([filters]); _chart.redrawGroup(); }); } @@ -9790,8 +9884,7 @@ dc.heatMap = function (parent, chartGroup) { * @memberof dc.heatMap * @instance * @param {Array} [rows] - * @return {Array} - * @return {dc.heatMap} + * @returns {Array|dc.heatMap} */ _chart.rows = function (rows) { @@ -9821,8 +9914,7 @@ dc.heatMap = function (parent, chartGroup) { * @memberof dc.heatMap * @instance * @param {Array} [cols] - * @return {Array} - * @return {dc.heatMap} + * @returns {Array|dc.heatMap} */ _chart.cols = function (cols) { if (!arguments.length) { @@ -9889,10 +9981,10 @@ dc.heatMap = function (parent, chartGroup) { if (_chart.renderTitle()) { gEnter.append('title'); - boxes.selectAll('title').text(_chart.title()); + boxes.select('title').text(_chart.title()); } - dc.transition(boxes.selectAll('rect'), _chart.transitionDuration(), _chart.transitionDelay()) + dc.transition(boxes.select('rect'), _chart.transitionDuration(), _chart.transitionDelay()) .attr('x', function (d, i) { return cols(_chart.keyAccessor()(d, i)); }) .attr('y', function (d, i) { return rows(_chart.valueAccessor()(d, i)); }) .attr('rx', _xBorderRadius) @@ -9903,7 +9995,7 @@ dc.heatMap = function (parent, chartGroup) { boxes.exit().remove(); - var gCols = _chartBody.selectAll('g.cols'); + var gCols = _chartBody.select('g.cols'); if (gCols.empty()) { gCols = _chartBody.append('g').attr('class', 'cols axis'); } @@ -9920,7 +10012,7 @@ dc.heatMap = function (parent, chartGroup) { .attr('x', function (d) { return cols(d) + boxWidth / 2; }) .attr('y', _chart.effectiveHeight()); gColsText.exit().remove(); - var gRows = _chartBody.selectAll('g.rows'); + var gRows = _chartBody.select('g.rows'); if (gRows.empty()) { gRows = _chartBody.append('g').attr('class', 'rows axis'); } @@ -9969,8 +10061,7 @@ dc.heatMap = function (parent, chartGroup) { * }); * }); * @param {Function} [handler] - * @return {Function} - * @return {dc.heatMap} + * @returns {Function|dc.heatMap} */ _chart.boxOnClick = function (handler) { if (!arguments.length) { @@ -9988,8 +10079,7 @@ dc.heatMap = function (parent, chartGroup) { * @memberof dc.heatMap * @instance * @param {Function} [handler] - * @return {Function} - * @return {dc.heatMap} + * @returns {Function|dc.heatMap} */ _chart.xAxisOnClick = function (handler) { if (!arguments.length) { @@ -10007,8 +10097,7 @@ dc.heatMap = function (parent, chartGroup) { * @memberof dc.heatMap * @instance * @param {Function} [handler] - * @return {Function} - * @return {dc.heatMap} + * @returns {Function|dc.heatMap} */ _chart.yAxisOnClick = function (handler) { if (!arguments.length) { @@ -10024,8 +10113,7 @@ dc.heatMap = function (parent, chartGroup) { * @memberof dc.heatMap * @instance * @param {Number} [xBorderRadius=6.75] - * @return {Number} - * @return {dc.heatMap} + * @returns {Number|dc.heatMap} */ _chart.xBorderRadius = function (xBorderRadius) { if (!arguments.length) { @@ -10041,8 +10129,7 @@ dc.heatMap = function (parent, chartGroup) { * @memberof dc.heatMap * @instance * @param {Number} [yBorderRadius=6.75] - * @return {Number} - * @return {dc.heatMap} + * @returns {Number|dc.heatMap} */ _chart.yBorderRadius = function (yBorderRadius) { if (!arguments.length) { @@ -10422,11 +10509,11 @@ dc.heatMap = function (parent, chartGroup) { * // create a box plot under #chart-container2 element using chart group A * var boxPlot2 = dc.boxPlot('#chart-container2', 'chartGroupA'); * @param {String|node|d3.selection} parent - Any valid - * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} specifying + * {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Selections.md#selecting-elements d3 single selector} specifying * a dom block element such as a div; or a dom element or d3 selection. * @param {String} [chartGroup] - The name of the chart group this chart instance should be placed in. * Interaction with a chart will only trigger events and redraws within the chart's group. - * @return {dc.boxPlot} + * @returns {dc.boxPlot} */ dc.boxPlot = function (parent, chartGroup) { var _chart = dc.coordinateGridMixin({}); @@ -10482,15 +10569,14 @@ dc.boxPlot = function (parent, chartGroup) { /** * Get or set the spacing between boxes as a fraction of box size. Valid values are within 0-1. - * See the {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales#wiki-ordinal_rangeBands d3 docs} + * See the {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal_rangeBands d3 docs} * for a visual description of how the padding is applied. * @method boxPadding * @memberof dc.boxPlot * @instance - * @see {@link https://github.com/mbostock/d3/wiki/Ordinal-Scales#wiki-ordinal_rangeBands d3.scale.ordinal.rangeBands} + * @see {@link https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#ordinal_rangeBands d3.scale.ordinal.rangeBands} * @param {Number} [padding=0.8] - * @return {Number} - * @return {dc.boxPlot} + * @returns {Number|dc.boxPlot} */ _chart.boxPadding = _chart._rangeBandPadding; _chart.boxPadding(0.8); @@ -10503,8 +10589,7 @@ dc.boxPlot = function (parent, chartGroup) { * @memberof dc.boxPlot * @instance * @param {Number} [padding=0.5] - * @return {Number} - * @return {dc.boxPlot} + * @returns {Number|dc.boxPlot} */ _chart.outerPadding = _chart._outerRangeBandPadding; _chart.outerPadding(0.5); @@ -10522,8 +10607,7 @@ dc.boxPlot = function (parent, chartGroup) { * @memberof dc.boxPlot * @instance * @param {Number|Function} [boxWidth=0.5] - * @return {Number|Function} - * @return {dc.boxPlot} + * @returns {Number|Function|dc.boxPlot} */ _chart.boxWidth = function (boxWidth) { if (!arguments.length) { @@ -10649,8 +10733,7 @@ dc.boxPlot = function (parent, chartGroup) { * @memberof dc.boxPlot * @instance * @param {Function} [tickFormat] - * @return {Number|Function} - * @return {dc.boxPlot} + * @returns {Number|Function|dc.boxPlot} */ _chart.tickFormat = function (tickFormat) { if (!arguments.length) { diff --git a/web/js/jquery-ui.js b/web/js/jquery-ui.js index 31ee9cd8..02135523 100644 --- a/web/js/jquery-ui.js +++ b/web/js/jquery-ui.js @@ -1,7 +1,7 @@ -/*! jQuery UI - v1.11.4 - 2015-03-11 +/*! jQuery UI - v1.12.1 - 2016-09-14 * http://jqueryui.com -* Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, button.js, datepicker.js, dialog.js, draggable.js, droppable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js, menu.js, progressbar.js, resizable.js, selectable.js, selectmenu.js, slider.js, sortable.js, spinner.js, tabs.js, tooltip.js -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ (function( factory ) { if ( typeof define === "function" && define.amd ) { @@ -14,319 +14,36 @@ factory( jQuery ); } }(function( $ ) { -/*! - * jQuery UI Core 1.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/category/ui-core/ - */ - -// $.ui might exist from components with no dependencies, e.g., $.ui.position $.ui = $.ui || {}; -$.extend( $.ui, { - version: "1.11.4", - - keyCode: { - BACKSPACE: 8, - COMMA: 188, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - LEFT: 37, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SPACE: 32, - TAB: 9, - UP: 38 - } -}); - -// plugins -$.fn.extend({ - scrollParent: function( includeHidden ) { - var position = this.css( "position" ), - excludeStaticParent = position === "absolute", - overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, - scrollParent = this.parents().filter( function() { - var parent = $( this ); - if ( excludeStaticParent && parent.css( "position" ) === "static" ) { - return false; - } - return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); - }).eq( 0 ); - - return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; - }, - - uniqueId: (function() { - var uuid = 0; - - return function() { - return this.each(function() { - if ( !this.id ) { - this.id = "ui-id-" + ( ++uuid ); - } - }); - }; - })(), - - removeUniqueId: function() { - return this.each(function() { - if ( /^ui-id-\d+$/.test( this.id ) ) { - $( this ).removeAttr( "id" ); - } - }); - } -}); - -// selectors -function focusable( element, isTabIndexNotNaN ) { - var map, mapName, img, - nodeName = element.nodeName.toLowerCase(); - if ( "area" === nodeName ) { - map = element.parentNode; - mapName = map.name; - if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { - return false; - } - img = $( "img[usemap='#" + mapName + "']" )[ 0 ]; - return !!img && visible( img ); - } - return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ? - !element.disabled : - "a" === nodeName ? - element.href || isTabIndexNotNaN : - isTabIndexNotNaN) && - // the element and all of its ancestors must be visible - visible( element ); -} - -function visible( element ) { - return $.expr.filters.visible( element ) && - !$( element ).parents().addBack().filter(function() { - return $.css( this, "visibility" ) === "hidden"; - }).length; -} - -$.extend( $.expr[ ":" ], { - data: $.expr.createPseudo ? - $.expr.createPseudo(function( dataName ) { - return function( elem ) { - return !!$.data( elem, dataName ); - }; - }) : - // support: jQuery <1.8 - function( elem, i, match ) { - return !!$.data( elem, match[ 3 ] ); - }, - - focusable: function( element ) { - return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); - }, - - tabbable: function( element ) { - var tabIndex = $.attr( element, "tabindex" ), - isTabIndexNaN = isNaN( tabIndex ); - return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); - } -}); - -// support: jQuery <1.8 -if ( !$( "
" ).outerWidth( 1 ).jquery ) { - $.each( [ "Width", "Height" ], function( i, name ) { - var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], - type = name.toLowerCase(), - orig = { - innerWidth: $.fn.innerWidth, - innerHeight: $.fn.innerHeight, - outerWidth: $.fn.outerWidth, - outerHeight: $.fn.outerHeight - }; - - function reduce( elem, size, border, margin ) { - $.each( side, function() { - size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; - if ( border ) { - size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; - } - if ( margin ) { - size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; - } - }); - return size; - } - - $.fn[ "inner" + name ] = function( size ) { - if ( size === undefined ) { - return orig[ "inner" + name ].call( this ); - } - - return this.each(function() { - $( this ).css( type, reduce( this, size ) + "px" ); - }); - }; - - $.fn[ "outer" + name] = function( size, margin ) { - if ( typeof size !== "number" ) { - return orig[ "outer" + name ].call( this, size ); - } - - return this.each(function() { - $( this).css( type, reduce( this, size, true, margin ) + "px" ); - }); - }; - }); -} - -// support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -// support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) -if ( $( "" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { - $.fn.removeData = (function( removeData ) { - return function( key ) { - if ( arguments.length ) { - return removeData.call( this, $.camelCase( key ) ); - } else { - return removeData.call( this ); - } - }; - })( $.fn.removeData ); -} - -// deprecated -$.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); - -$.fn.extend({ - focus: (function( orig ) { - return function( delay, fn ) { - return typeof delay === "number" ? - this.each(function() { - var elem = this; - setTimeout(function() { - $( elem ).focus(); - if ( fn ) { - fn.call( elem ); - } - }, delay ); - }) : - orig.apply( this, arguments ); - }; - })( $.fn.focus ), - - disableSelection: (function() { - var eventType = "onselectstart" in document.createElement( "div" ) ? - "selectstart" : - "mousedown"; - - return function() { - return this.bind( eventType + ".ui-disableSelection", function( event ) { - event.preventDefault(); - }); - }; - })(), - - enableSelection: function() { - return this.unbind( ".ui-disableSelection" ); - }, - - zIndex: function( zIndex ) { - if ( zIndex !== undefined ) { - return this.css( "zIndex", zIndex ); - } - - if ( this.length ) { - var elem = $( this[ 0 ] ), position, value; - while ( elem.length && elem[ 0 ] !== document ) { - // Ignore z-index if position is set to a value where z-index is ignored by the browser - // This makes behavior of this function consistent across browsers - // WebKit always returns auto if the element is positioned - position = elem.css( "position" ); - if ( position === "absolute" || position === "relative" || position === "fixed" ) { - // IE returns 0 when zIndex is not specified - // other browsers return a string - // we ignore the case of nested elements with an explicit value of 0 - //
- value = parseInt( elem.css( "zIndex" ), 10 ); - if ( !isNaN( value ) && value !== 0 ) { - return value; - } - } - elem = elem.parent(); - } - } - - return 0; - } -}); - -// $.ui.plugin is deprecated. Use $.widget() extensions instead. -$.ui.plugin = { - add: function( module, option, set ) { - var i, - proto = $.ui[ module ].prototype; - for ( i in set ) { - proto.plugins[ i ] = proto.plugins[ i ] || []; - proto.plugins[ i ].push( [ option, set[ i ] ] ); - } - }, - call: function( instance, name, args, allowDisconnected ) { - var i, - set = instance.plugins[ name ]; - - if ( !set ) { - return; - } - - if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) { - return; - } - - for ( i = 0; i < set.length; i++ ) { - if ( instance.options[ set[ i ][ 0 ] ] ) { - set[ i ][ 1 ].apply( instance.element, args ); - } - } - } -}; +var version = $.ui.version = "1.12.1"; /*! - * jQuery UI Widget 1.11.4 + * jQuery UI Widget 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - * - * http://api.jqueryui.com/jQuery.widget/ */ +//>>label: Widget +//>>group: Core +//>>description: Provides a factory for creating stateful widgets with a common API. +//>>docs: http://api.jqueryui.com/jQuery.widget/ +//>>demos: http://jqueryui.com/widget/ + -var widget_uuid = 0, - widget_slice = Array.prototype.slice; -$.cleanData = (function( orig ) { +var widgetUuid = 0; +var widgetSlice = Array.prototype.slice; + +$.cleanData = ( function( orig ) { return function( elems ) { var events, elem, i; - for ( i = 0; (elem = elems[i]) != null; i++ ) { + for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { try { // Only trigger remove when necessary to save time @@ -335,29 +52,34 @@ $.cleanData = (function( orig ) { $( elem ).triggerHandler( "remove" ); } - // http://bugs.jquery.com/ticket/8235 + // Http://bugs.jquery.com/ticket/8235 } catch ( e ) {} } orig( elems ); }; -})( $.cleanData ); +} )( $.cleanData ); $.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - // proxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - proxiedPrototype = {}, - namespace = name.split( "." )[ 0 ]; + var existingConstructor, constructor, basePrototype; + + // ProxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + var proxiedPrototype = {}; + var namespace = name.split( "." )[ 0 ]; name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; + var fullName = namespace + "-" + name; if ( !prototype ) { prototype = base; base = $.Widget; } - // create selector for plugin + if ( $.isArray( prototype ) ) { + prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); + } + + // Create selector for plugin $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { return !!$.data( elem, fullName ); }; @@ -365,30 +87,35 @@ $.widget = function( name, base, prototype ) { $[ namespace ] = $[ namespace ] || {}; existingConstructor = $[ namespace ][ name ]; constructor = $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without "new" keyword + + // Allow instantiation without "new" keyword if ( !this._createWidget ) { return new constructor( options, element ); } - // allow instantiation without initializing for simple inheritance + // Allow instantiation without initializing for simple inheritance // must use "new" keyword (the code above always passes args) if ( arguments.length ) { this._createWidget( options, element ); } }; - // extend with the existing constructor to carry over any static properties + + // Extend with the existing constructor to carry over any static properties $.extend( constructor, existingConstructor, { version: prototype.version, - // copy the object used to create the prototype in case we need to + + // Copy the object used to create the prototype in case we need to // redefine the widget later _proto: $.extend( {}, prototype ), - // track widgets that inherit from this widget in case this widget is + + // Track widgets that inherit from this widget in case this widget is // redefined after a widget inherits from it _childConstructors: [] - }); + } ); basePrototype = new base(); - // we need to make the options hash a property directly on the new instance + + // We need to make the options hash a property directly on the new instance // otherwise we'll modify the options hash on the prototype that we're // inheriting from basePrototype.options = $.widget.extend( {}, basePrototype.options ); @@ -397,17 +124,19 @@ $.widget = function( name, base, prototype ) { proxiedPrototype[ prop ] = value; return; } - proxiedPrototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; + proxiedPrototype[ prop ] = ( function() { + function _super() { + return base.prototype[ prop ].apply( this, arguments ); + } + + function _superApply( args ) { + return base.prototype[ prop ].apply( this, args ); + } + return function() { - var __super = this._super, - __superApply = this._superApply, - returnValue; + var __super = this._super; + var __superApply = this._superApply; + var returnValue; this._super = _super; this._superApply = _superApply; @@ -419,19 +148,20 @@ $.widget = function( name, base, prototype ) { return returnValue; }; - })(); - }); + } )(); + } ); constructor.prototype = $.widget.extend( basePrototype, { + // TODO: remove support for widgetEventPrefix // always use the name + a colon as the prefix, e.g., draggable:start // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name + widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName - }); + } ); // If this widget is being redefined then we need to find all widgets that // are inheriting from it and redefine all of them so that they inherit from @@ -441,11 +171,13 @@ $.widget = function( name, base, prototype ) { $.each( existingConstructor._childConstructors, function( i, child ) { var childPrototype = child.prototype; - // redefine the child widget using the same prototype that was + // Redefine the child widget using the same prototype that was // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); - }); - // remove the list of existing child constructors from the old constructor + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, + child._proto ); + } ); + + // Remove the list of existing child constructors from the old constructor // so the old child constructors can be garbage collected delete existingConstructor._childConstructors; } else { @@ -458,21 +190,25 @@ $.widget = function( name, base, prototype ) { }; $.widget.extend = function( target ) { - var input = widget_slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - value; + var input = widgetSlice.call( arguments, 1 ); + var inputIndex = 0; + var inputLength = input.length; + var key; + var value; + for ( ; inputIndex < inputLength; inputIndex++ ) { for ( key in input[ inputIndex ] ) { value = input[ inputIndex ][ key ]; if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + // Clone objects if ( $.isPlainObject( value ) ) { target[ key ] = $.isPlainObject( target[ key ] ) ? $.widget.extend( {}, target[ key ], value ) : + // Don't extend strings, arrays, etc. with objects $.widget.extend( {}, value ); + // Copy everything else by reference } else { target[ key ] = value; @@ -486,41 +222,55 @@ $.widget.extend = function( target ) { $.widget.bridge = function( name, object ) { var fullName = object.prototype.widgetFullName || name; $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = widget_slice.call( arguments, 1 ), - returnValue = this; + var isMethodCall = typeof options === "string"; + var args = widgetSlice.call( arguments, 1 ); + var returnValue = this; if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - if ( options === "instance" ) { - returnValue = instance; - return false; - } - if ( !instance ) { - return $.error( "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + " widget instance" ); - } - methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - }); + + // If this is an empty collection, we need to have the instance method + // return undefined instead of the jQuery instance + if ( !this.length && options === "instance" ) { + returnValue = undefined; + } else { + this.each( function() { + var methodValue; + var instance = $.data( this, fullName ); + + if ( options === "instance" ) { + returnValue = instance; + return false; + } + + if ( !instance ) { + return $.error( "cannot call methods on " + name + + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + + if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + + " widget instance" ); + } + + methodValue = instance[ options ].apply( instance, args ); + + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + } ); + } } else { // Allow multiple hashes to be passed on init if ( args.length ) { - options = $.widget.extend.apply( null, [ options ].concat(args) ); + options = $.widget.extend.apply( null, [ options ].concat( args ) ); } - this.each(function() { + this.each( function() { var instance = $.data( this, fullName ); if ( instance ) { instance.option( options || {} ); @@ -530,7 +280,7 @@ $.widget.bridge = function( name, object ) { } else { $.data( this, fullName, new object( options, this ) ); } - }); + } ); } return returnValue; @@ -544,21 +294,25 @@ $.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "
", + options: { + classes: {}, disabled: false, - // callbacks + // Callbacks create: null }, + _createWidget: function( options, element ) { element = $( element || this.defaultElement || this )[ 0 ]; this.element = $( element ); - this.uuid = widget_uuid++; + this.uuid = widgetUuid++; this.eventNamespace = "." + this.widgetName + this.uuid; this.bindings = $(); this.hoverable = $(); this.focusable = $(); + this.classesElementLookup = {}; if ( element !== this ) { $.data( element, this.widgetFullName, this ); @@ -568,13 +322,15 @@ $.Widget.prototype = { this.destroy(); } } - }); + } ); this.document = $( element.style ? - // element within the document + + // Element within the document element.ownerDocument : - // element is window or document + + // Element is window or document element.document || element ); - this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); + this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); } this.options = $.widget.extend( {}, @@ -583,36 +339,46 @@ $.Widget.prototype = { options ); this._create(); + + if ( this.options.disabled ) { + this._setOptionDisabled( this.options.disabled ); + } + this._trigger( "create", null, this._getCreateEventData() ); this._init(); }, - _getCreateOptions: $.noop, + + _getCreateOptions: function() { + return {}; + }, + _getCreateEventData: $.noop, + _create: $.noop, + _init: $.noop, destroy: function() { + var that = this; + this._destroy(); - // we can probably remove the unbind calls in 2.0 + $.each( this.classesElementLookup, function( key, value ) { + that._removeClass( value, key ); + } ); + + // We can probably remove the unbind calls in 2.0 // all event bindings should go through this._on() this.element - .unbind( this.eventNamespace ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); + .off( this.eventNamespace ) + .removeData( this.widgetFullName ); this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); + .off( this.eventNamespace ) + .removeAttr( "aria-disabled" ); - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); + // Clean up events and states + this.bindings.off( this.eventNamespace ); }, + _destroy: $.noop, widget: function() { @@ -620,18 +386,20 @@ $.Widget.prototype = { }, option: function( key, value ) { - var options = key, - parts, - curOption, - i; + var options = key; + var parts; + var curOption; + var i; if ( arguments.length === 0 ) { - // don't return a reference to the internal hash + + // Don't return a reference to the internal hash return $.widget.extend( {}, this.options ); } if ( typeof key === "string" ) { - // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + + // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } options = {}; parts = key.split( "." ); key = parts.shift(); @@ -658,6 +426,7 @@ $.Widget.prototype = { return this; }, + _setOptions: function( options ) { var key; @@ -667,86 +436,198 @@ $.Widget.prototype = { return this; }, + _setOption: function( key, value ) { + if ( key === "classes" ) { + this._setOptionClasses( value ); + } + this.options[ key ] = value; if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled", !!value ); + this._setOptionDisabled( value ); + } - // If the widget is becoming disabled, then nothing is interactive - if ( value ) { - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); + return this; + }, + + _setOptionClasses: function( value ) { + var classKey, elements, currentElements; + + for ( classKey in value ) { + currentElements = this.classesElementLookup[ classKey ]; + if ( value[ classKey ] === this.options.classes[ classKey ] || + !currentElements || + !currentElements.length ) { + continue; } + + // We are doing this to create a new jQuery object because the _removeClass() call + // on the next line is going to destroy the reference to the current elements being + // tracked. We need to save a copy of this collection so that we can add the new classes + // below. + elements = $( currentElements.get() ); + this._removeClass( currentElements, classKey ); + + // We don't use _addClass() here, because that uses this.options.classes + // for generating the string of classes. We want to use the value passed in from + // _setOption(), this is the new value of the classes option which was passed to + // _setOption(). We pass this value directly to _classes(). + elements.addClass( this._classes( { + element: elements, + keys: classKey, + classes: value, + add: true + } ) ); } + }, - return this; + _setOptionDisabled: function( value ) { + this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); + + // If the widget is becoming disabled, then nothing is interactive + if ( value ) { + this._removeClass( this.hoverable, null, "ui-state-hover" ); + this._removeClass( this.focusable, null, "ui-state-focus" ); + } }, enable: function() { - return this._setOptions({ disabled: false }); + return this._setOptions( { disabled: false } ); }, + disable: function() { - return this._setOptions({ disabled: true }); + return this._setOptions( { disabled: true } ); }, - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement, - instance = this; + _classes: function( options ) { + var full = []; + var that = this; - // no suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; + options = $.extend( { + element: this.element, + classes: this.options.classes || {} + }, options ); + + function processClassString( classes, checkOption ) { + var current, i; + for ( i = 0; i < classes.length; i++ ) { + current = that.classesElementLookup[ classes[ i ] ] || $(); + if ( options.add ) { + current = $( $.unique( current.get().concat( options.element.get() ) ) ); + } else { + current = $( current.not( options.element ).get() ); + } + that.classesElementLookup[ classes[ i ] ] = current; + full.push( classes[ i ] ); + if ( checkOption && options.classes[ classes[ i ] ] ) { + full.push( options.classes[ classes[ i ] ] ); + } + } } - // no element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { + this._on( options.element, { + "remove": "_untrackClassesElement" + } ); + + if ( options.keys ) { + processClassString( options.keys.match( /\S+/g ) || [], true ); + } + if ( options.extra ) { + processClassString( options.extra.match( /\S+/g ) || [] ); + } + + return full.join( " " ); + }, + + _untrackClassesElement: function( event ) { + var that = this; + $.each( that.classesElementLookup, function( key, value ) { + if ( $.inArray( event.target, value ) !== -1 ) { + that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); + } + } ); + }, + + _removeClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, false ); + }, + + _addClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, true ); + }, + + _toggleClass: function( element, keys, extra, add ) { + add = ( typeof add === "boolean" ) ? add : extra; + var shift = ( typeof element === "string" || element === null ), + options = { + extra: shift ? keys : extra, + keys: shift ? element : keys, + element: shift ? this.element : element, + add: add + }; + options.element.toggleClass( this._classes( options ), add ); + return this; + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement; + var instance = this; + + // No suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // No element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { element = delegateElement = $( element ); this.bindings = this.bindings.add( element ); } $.each( handlers, function( event, handler ) { function handlerProxy() { - // allow widgets to customize the disabled handling + + // Allow widgets to customize the disabled handling // - disabled as an array instead of boolean // - disabled class as method for disabling individual parts if ( !suppressDisabledCheck && ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { + $( this ).hasClass( "ui-state-disabled" ) ) ) { return; } return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } - // copy the guid so direct unbinding works + // Copy the guid so direct unbinding works if ( typeof handler !== "string" ) { handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; } - var match = event.match( /^([\w:-]*)\s*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; + var match = event.match( /^([\w:-]*)\s*(.*)$/ ); + var eventName = match[ 1 ] + instance.eventNamespace; + var selector = match[ 2 ]; + if ( selector ) { - delegateElement.delegate( selector, eventName, handlerProxy ); + delegateElement.on( eventName, selector, handlerProxy ); } else { - element.bind( eventName, handlerProxy ); + element.on( eventName, handlerProxy ); } - }); + } ); }, _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + + eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); + element.off( eventName ).off( eventName ); // Clear the stack to avoid memory leaks (#10056) this.bindings = $( this.bindings.not( element ).get() ); @@ -767,40 +648,41 @@ $.Widget.prototype = { this.hoverable = this.hoverable.add( element ); this._on( element, { mouseenter: function( event ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); + this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); }, mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); + this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); } - }); + } ); }, _focusable: function( element ) { this.focusable = this.focusable.add( element ); this._on( element, { focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); + this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); }, focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); + this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); } - }); + } ); }, _trigger: function( type, event, data ) { - var prop, orig, - callback = this.options[ type ]; + var prop, orig; + var callback = this.options[ type ]; data = data || {}; event = $.Event( event ); event.type = ( type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type ).toLowerCase(); - // the original event may come from any element + + // The original event may come from any element // so we need to reset the target on the new event event.target = this.element[ 0 ]; - // copy original event properties over to the new event + // Copy original event properties over to the new event orig = event.originalEvent; if ( orig ) { for ( prop in orig ) { @@ -812,7 +694,7 @@ $.Widget.prototype = { this.element.trigger( event, data ); return !( $.isFunction( callback ) && - callback.apply( this.element[0], [ event ].concat( data ) ) === false || + callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || event.isDefaultPrevented() ); } }; @@ -822,228 +704,47 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { if ( typeof options === "string" ) { options = { effect: options }; } - var hasOptions, - effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; + + var hasOptions; + var effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + options = options || {}; if ( typeof options === "number" ) { options = { duration: options }; } + hasOptions = !$.isEmptyObject( options ); options.complete = callback; + if ( options.delay ) { element.delay( options.delay ); } + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { element[ method ]( options ); } else if ( effectName !== method && element[ effectName ] ) { element[ effectName ]( options.duration, options.easing, callback ); } else { - element.queue(function( next ) { + element.queue( function( next ) { $( this )[ method ](); if ( callback ) { callback.call( element[ 0 ] ); } next(); - }); + } ); } }; -}); +} ); var widget = $.widget; /*! - * jQuery UI Mouse 1.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/mouse/ - */ - - -var mouseHandled = false; -$( document ).mouseup( function() { - mouseHandled = false; -}); - -var mouse = $.widget("ui.mouse", { - version: "1.11.4", - options: { - cancel: "input,textarea,button,select,option", - distance: 1, - delay: 0 - }, - _mouseInit: function() { - var that = this; - - this.element - .bind("mousedown." + this.widgetName, function(event) { - return that._mouseDown(event); - }) - .bind("click." + this.widgetName, function(event) { - if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { - $.removeData(event.target, that.widgetName + ".preventClickEvent"); - event.stopImmediatePropagation(); - return false; - } - }); - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind("." + this.widgetName); - if ( this._mouseMoveDelegate ) { - this.document - .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate) - .unbind("mouseup." + this.widgetName, this._mouseUpDelegate); - } - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - if ( mouseHandled ) { - return; - } - - this._mouseMoved = false; - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var that = this, - btnIsLeft = (event.which === 1), - // event.target.nodeName works around a bug in IE 8 with - // disabled inputs (#7620) - elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - that.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // Click event may never have fired (Gecko & Opera) - if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { - $.removeData(event.target, this.widgetName + ".preventClickEvent"); - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return that._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return that._mouseUp(event); - }; - - this.document - .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .bind( "mouseup." + this.widgetName, this._mouseUpDelegate ); - - event.preventDefault(); - - mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // Only check for mouseups outside the document if you've moved inside the document - // at least once. This prevents the firing of mouseup in the case of IE<9, which will - // fire a mousemove event if content is placed under the cursor. See #7778 - // Support: IE <9 - if ( this._mouseMoved ) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { - return this._mouseUp(event); - - // Iframe mouseup check - mouseup occurred in another document - } else if ( !event.which ) { - return this._mouseUp( event ); - } - } - - if ( event.which || event.button ) { - this._mouseMoved = true; - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - this.document - .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) - .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate ); - - if (this._mouseStarted) { - this._mouseStarted = false; - - if (event.target === this._mouseDownEvent.target) { - $.data(event.target, this.widgetName + ".preventClickEvent", true); - } - - this._mouseStop(event); - } - - mouseHandled = false; - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(/* event */) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(/* event */) {}, - _mouseDrag: function(/* event */) {}, - _mouseStop: function(/* event */) {}, - _mouseCapture: function(/* event */) { return true; } -}); - - -/*! - * jQuery UI Position 1.11.4 + * jQuery UI Position 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -1053,14 +754,17 @@ var mouse = $.widget("ui.mouse", { * http://api.jqueryui.com/position/ */ -(function() { +//>>label: Position +//>>group: Core +//>>description: Positions elements relative to other elements. +//>>docs: http://api.jqueryui.com/position/ +//>>demos: http://jqueryui.com/position/ -$.ui = $.ui || {}; -var cachedScrollbarWidth, supportsOffsetFractions, +( function() { +var cachedScrollbarWidth, max = Math.max, abs = Math.abs, - round = Math.round, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, @@ -1080,7 +784,7 @@ function parseCss( element, property ) { } function getDimensions( elem ) { - var raw = elem[0]; + var raw = elem[ 0 ]; if ( raw.nodeType === 9 ) { return { width: elem.width(), @@ -1115,8 +819,10 @@ $.position = { return cachedScrollbarWidth; } var w1, w2, - div = $( "
" ), - innerDiv = div.children()[0]; + div = $( "
" + + "
" ), + innerDiv = div.children()[ 0 ]; $( "body" ).append( div ); w1 = innerDiv.offsetWidth; @@ -1125,12 +831,12 @@ $.position = { w2 = innerDiv.offsetWidth; if ( w1 === w2 ) { - w2 = div[0].clientWidth; + w2 = div[ 0 ].clientWidth; } div.remove(); - return (cachedScrollbarWidth = w1 - w2); + return ( cachedScrollbarWidth = w1 - w2 ); }, getScrollInfo: function( within ) { var overflowX = within.isWindow || within.isDocument ? "" : @@ -1138,9 +844,9 @@ $.position = { overflowY = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), + ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); + ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); return { width: hasOverflowY ? $.position.scrollbarWidth() : 0, height: hasOverflowX ? $.position.scrollbarWidth() : 0 @@ -1148,20 +854,18 @@ $.position = { }, getWithinInfo: function( element ) { var withinElement = $( element || window ), - isWindow = $.isWindow( withinElement[0] ), - isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9; + isWindow = $.isWindow( withinElement[ 0 ] ), + isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, + hasOffset = !isWindow && !isDocument; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, - offset: withinElement.offset() || { left: 0, top: 0 }, + offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), - - // support: jQuery 1.6.x - // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows - width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(), - height: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight() + width: withinElement.outerWidth(), + height: withinElement.outerHeight() }; } }; @@ -1171,7 +875,7 @@ $.fn.position = function( options ) { return _position.apply( this, arguments ); } - // make a copy, we don't want to modify arguments + // Make a copy, we don't want to modify arguments options = $.extend( {}, options ); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, @@ -1182,24 +886,26 @@ $.fn.position = function( options ) { offsets = {}; dimensions = getDimensions( target ); - if ( target[0].preventDefault ) { - // force left top to allow flipping + if ( target[ 0 ].preventDefault ) { + + // Force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; - // clone to reuse original targetOffset later + + // Clone to reuse original targetOffset later basePosition = $.extend( {}, targetOffset ); - // force my and at to have valid horizontal and vertical positions + // Force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each( [ "my", "at" ], function() { var pos = ( options[ this ] || "" ).split( " " ), horizontalOffset, verticalOffset; - if ( pos.length === 1) { + if ( pos.length === 1 ) { pos = rhorizontal.test( pos[ 0 ] ) ? pos.concat( [ "center" ] ) : rvertical.test( pos[ 0 ] ) ? @@ -1209,7 +915,7 @@ $.fn.position = function( options ) { pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - // calculate offsets + // Calculate offsets horizontalOffset = roffset.exec( pos[ 0 ] ); verticalOffset = roffset.exec( pos[ 1 ] ); offsets[ this ] = [ @@ -1217,14 +923,14 @@ $.fn.position = function( options ) { verticalOffset ? verticalOffset[ 0 ] : 0 ]; - // reduce to just the positions without the offsets + // Reduce to just the positions without the offsets options[ this ] = [ rposition.exec( pos[ 0 ] )[ 0 ], rposition.exec( pos[ 1 ] )[ 0 ] ]; - }); + } ); - // normalize collision option + // Normalize collision option if ( collision.length === 1 ) { collision[ 1 ] = collision[ 0 ]; } @@ -1245,15 +951,17 @@ $.fn.position = function( options ) { basePosition.left += atOffset[ 0 ]; basePosition.top += atOffset[ 1 ]; - return this.each(function() { + return this.each( function() { var collisionPosition, using, elem = $( this ), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss( this, "marginLeft" ), marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, + collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + + scrollInfo.width, + collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + + scrollInfo.height, position = $.extend( {}, basePosition ), myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); @@ -1272,12 +980,6 @@ $.fn.position = function( options ) { position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; - // if the browser doesn't support fractions, then round for consistent results - if ( !supportsOffsetFractions ) { - position.left = round( position.left ); - position.top = round( position.top ); - } - collisionPosition = { marginLeft: marginLeft, marginTop: marginTop @@ -1298,12 +1000,13 @@ $.fn.position = function( options ) { at: options.at, within: within, elem: elem - }); + } ); } - }); + } ); if ( options.using ) { - // adds feedback as second argument to using callback, if present + + // Adds feedback as second argument to using callback, if present using = function( props ) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, @@ -1343,7 +1046,7 @@ $.fn.position = function( options ) { } elem.offset( $.extend( position, { using: using } ) ); - }); + } ); }; $.ui.position = { @@ -1357,16 +1060,20 @@ $.ui.position = { overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; - // element is wider than within + // Element is wider than within if ( data.collisionWidth > outerWidth ) { - // element is initially over the left side of within + + // Element is initially over the left side of within if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; + newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - + withinOffset; position.left += overLeft - newOverRight; - // element is initially over right side of within + + // Element is initially over right side of within } else if ( overRight > 0 && overLeft <= 0 ) { position.left = withinOffset; - // element is initially over both left and right sides of within + + // Element is initially over both left and right sides of within } else { if ( overLeft > overRight ) { position.left = withinOffset + outerWidth - data.collisionWidth; @@ -1374,13 +1081,16 @@ $.ui.position = { position.left = withinOffset; } } - // too far left -> align with left edge + + // Too far left -> align with left edge } else if ( overLeft > 0 ) { position.left += overLeft; - // too far right -> align with right edge + + // Too far right -> align with right edge } else if ( overRight > 0 ) { position.left -= overRight; - // adjust based on position and margin + + // Adjust based on position and margin } else { position.left = max( position.left - collisionPosLeft, position.left ); } @@ -1394,16 +1104,20 @@ $.ui.position = { overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; - // element is taller than within + // Element is taller than within if ( data.collisionHeight > outerHeight ) { - // element is initially over the top of within + + // Element is initially over the top of within if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; + newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - + withinOffset; position.top += overTop - newOverBottom; - // element is initially over bottom of within + + // Element is initially over bottom of within } else if ( overBottom > 0 && overTop <= 0 ) { position.top = withinOffset; - // element is initially over both top and bottom of within + + // Element is initially over both top and bottom of within } else { if ( overTop > overBottom ) { position.top = withinOffset + outerHeight - data.collisionHeight; @@ -1411,13 +1125,16 @@ $.ui.position = { position.top = withinOffset; } } - // too far up -> align with top + + // Too far up -> align with top } else if ( overTop > 0 ) { position.top += overTop; - // too far down -> align with bottom edge + + // Too far down -> align with bottom edge } else if ( overBottom > 0 ) { position.top -= overBottom; - // adjust based on position and margin + + // Adjust based on position and margin } else { position.top = max( position.top - collisionPosTop, position.top ); } @@ -1447,12 +1164,14 @@ $.ui.position = { newOverLeft; if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; + newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - + outerWidth - withinOffset; if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { position.left += myOffset + atOffset + offset; } } else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { position.left += myOffset + atOffset + offset; } @@ -1481,12 +1200,14 @@ $.ui.position = { newOverTop, newOverBottom; if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; + newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - + outerHeight - withinOffset; if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { position.top += myOffset + atOffset + offset; } } else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + + offset - offsetTop; if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { position.top += myOffset + atOffset + offset; } @@ -1505,10282 +1226,12147 @@ $.ui.position = { } }; -// fraction support test -(function() { - var testElement, testElementParent, testElementStyle, offsetLeft, i, - body = document.getElementsByTagName( "body" )[ 0 ], - div = document.createElement( "div" ); - - //Create a "fake body" for testing based on method used in jQuery.support - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - background: "none" - }; - if ( body ) { - $.extend( testElementStyle, { - position: "absolute", - left: "-1000px", - top: "-1000px" - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || document.documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - div.style.cssText = "position: absolute; left: 10.7432222px;"; - - offsetLeft = $( div ).offset().left; - supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11; - - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); -})(); - -})(); +} )(); var position = $.ui.position; /*! - * jQuery UI Accordion 1.11.4 + * jQuery UI :data 1.12.1 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - * - * http://api.jqueryui.com/accordion/ */ +//>>label: :data Selector +//>>group: Core +//>>description: Selects elements which have data stored under the specified key. +//>>docs: http://api.jqueryui.com/data-selector/ -var accordion = $.widget( "ui.accordion", { - version: "1.11.4", - options: { - active: 0, - animate: {}, - collapsible: false, - event: "click", - header: "> li > :first-child,> :not(li):even", - heightStyle: "auto", - icons: { - activeHeader: "ui-icon-triangle-1-s", - header: "ui-icon-triangle-1-e" - }, - // callbacks - activate: null, - beforeActivate: null - }, +var data = $.extend( $.expr[ ":" ], { + data: $.expr.createPseudo ? + $.expr.createPseudo( function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + } ) : - hideProps: { - borderTopWidth: "hide", - borderBottomWidth: "hide", - paddingTop: "hide", - paddingBottom: "hide", - height: "hide" - }, + // Support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + } +} ); - showProps: { - borderTopWidth: "show", - borderBottomWidth: "show", - paddingTop: "show", - paddingBottom: "show", - height: "show" - }, +/*! + * jQuery UI Disable Selection 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - _create: function() { - var options = this.options; - this.prevShow = this.prevHide = $(); - this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) - // ARIA - .attr( "role", "tablist" ); +//>>label: disableSelection +//>>group: Core +//>>description: Disable selection of text content within the set of matched elements. +//>>docs: http://api.jqueryui.com/disableSelection/ - // don't allow collapsible: false and active: false / null - if ( !options.collapsible && (options.active === false || options.active == null) ) { - options.active = 0; - } +// This file is deprecated - this._processPanels(); - // handle negative values - if ( options.active < 0 ) { - options.active += this.headers.length; - } - this._refresh(); - }, - _getCreateEventData: function() { - return { - header: this.active, - panel: !this.active.length ? $() : this.active.next() +var disableSelection = $.fn.extend( { + disableSelection: ( function() { + var eventType = "onselectstart" in document.createElement( "div" ) ? + "selectstart" : + "mousedown"; + + return function() { + return this.on( eventType + ".ui-disableSelection", function( event ) { + event.preventDefault(); + } ); }; - }, + } )(), - _createIcons: function() { - var icons = this.options.icons; - if ( icons ) { - $( "" ) - .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) - .prependTo( this.headers ); - this.active.children( ".ui-accordion-header-icon" ) - .removeClass( icons.header ) - .addClass( icons.activeHeader ); - this.headers.addClass( "ui-accordion-icons" ); - } - }, + enableSelection: function() { + return this.off( ".ui-disableSelection" ); + } +} ); - _destroyIcons: function() { - this.headers - .removeClass( "ui-accordion-icons" ) - .children( ".ui-accordion-header-icon" ) - .remove(); - }, - _destroy: function() { - var contents; +/*! + * jQuery UI Effects 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - // clean up main element - this.element - .removeClass( "ui-accordion ui-widget ui-helper-reset" ) - .removeAttr( "role" ); +//>>label: Effects Core +//>>group: Effects +// jscs:disable maximumLineLength +//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. +// jscs:enable maximumLineLength +//>>docs: http://api.jqueryui.com/category/effects-core/ +//>>demos: http://jqueryui.com/effect/ - // clean up headers - this.headers - .removeClass( "ui-accordion-header ui-accordion-header-active ui-state-default " + - "ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) - .removeAttr( "role" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-selected" ) - .removeAttr( "aria-controls" ) - .removeAttr( "tabIndex" ) - .removeUniqueId(); - this._destroyIcons(); - // clean up content panels - contents = this.headers.next() - .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom " + - "ui-accordion-content ui-accordion-content-active ui-state-disabled" ) - .css( "display", "" ) - .removeAttr( "role" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-labelledby" ) - .removeUniqueId(); +var dataSpace = "ui-effects-", + dataSpaceStyle = "ui-effects-style", + dataSpaceAnimated = "ui-effects-animated", - if ( this.options.heightStyle !== "content" ) { - contents.css( "height", "" ); - } - }, + // Create a local jQuery because jQuery Color relies on it and the + // global may not exist with AMD and a custom build (#10199) + jQuery = $; - _setOption: function( key, value ) { - if ( key === "active" ) { - // _activate() will handle invalid values and update this.options - this._activate( value ); - return; - } +$.effects = { + effect: {} +}; - if ( key === "event" ) { - if ( this.options.event ) { - this._off( this.headers, this.options.event ); - } - this._setupEvents( value ); - } +/*! + * jQuery Color Animations v2.1.2 + * https://github.com/jquery/jquery-color + * + * Copyright 2014 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Wed Jan 16 08:47:09 2013 -0600 + */ +( function( jQuery, undefined ) { - this._super( key, value ); + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + + "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", - // setting collapsible: false while collapsed; open first panel - if ( key === "collapsible" && !value && this.options.active === false ) { - this._activate( 0 ); - } + // Plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - if ( key === "icons" ) { - this._destroyIcons(); - if ( value ) { - this._createIcons(); + // A set of RE's that can match strings and generate color tuples. + stringParsers = [ { + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; } - } - - // #5332 - opacity doesn't cascade to positioned elements in IE - // so we need to add the disabled class to the headers and panels - if ( key === "disabled" ) { - this.element - .toggleClass( "ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.headers.add( this.headers.next() ) - .toggleClass( "ui-state-disabled", !!value ); - } - }, - - _keydown: function( event ) { - if ( event.altKey || event.ctrlKey ) { - return; - } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { - var keyCode = $.ui.keyCode, - length = this.headers.length, - currentIndex = this.headers.index( event.target ), - toFocus = false; + // This regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { - switch ( event.keyCode ) { - case keyCode.RIGHT: - case keyCode.DOWN: - toFocus = this.headers[ ( currentIndex + 1 ) % length ]; - break; - case keyCode.LEFT: - case keyCode.UP: - toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; - break; - case keyCode.SPACE: - case keyCode.ENTER: - this._eventHandler( event ); - break; - case keyCode.HOME: - toFocus = this.headers[ 0 ]; - break; - case keyCode.END: - toFocus = this.headers[ length - 1 ]; - break; - } + // This regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + } ], - if ( toFocus ) { - $( event.target ).attr( "tabIndex", -1 ); - $( toFocus ).attr( "tabIndex", 0 ); - toFocus.focus(); - event.preventDefault(); - } + // JQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, - _panelKeyDown: function( event ) { - if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { - $( event.currentTarget ).prev().focus(); + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } } }, - - refresh: function() { - var options = this.options; - this._processPanels(); - - // was collapsed or no panel - if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { - options.active = false; - this.active = $(); - // active false only when collapsible is true - } else if ( options.active === false ) { - this._activate( 0 ); - // was active, but active panel is gone - } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - // all remaining panel are disabled - if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { - options.active = false; - this.active = $(); - // activate previous panel - } else { - this._activate( Math.max( 0, options.active - 1 ) ); - } - // was active, active panel still exists - } else { - // make sure active index is correct - options.active = this.headers.index( this.active ); + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true } + }, + support = color.support = {}, - this._destroyIcons(); + // Element for support tests + supportElem = jQuery( "

" )[ 0 ], - this._refresh(); - }, + // Colors = jQuery.Color.names + colors, - _processPanels: function() { - var prevHeaders = this.headers, - prevPanels = this.panels; + // Local aliases of functions called often + each = jQuery.each; - this.headers = this.element.find( this.options.header ) - .addClass( "ui-accordion-header ui-state-default ui-corner-all" ); +// Determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - this.panels = this.headers.next() - .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) - .filter( ":not(.ui-accordion-content-active)" ) - .hide(); +// Define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +} ); - // Avoid memory leaks (#10056) - if ( prevPanels ) { - this._off( prevHeaders.not( this.headers ) ); - this._off( prevPanels.not( this.panels ) ); - } - }, +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; - _refresh: function() { - var maxHeight, - options = this.options, - heightStyle = options.heightStyle, - parent = this.element.parent(); + if ( value == null ) { + return ( allowEmpty || !prop.def ) ? null : prop.def; + } - this.active = this._findActive( options.active ) - .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) - .removeClass( "ui-corner-all" ); - this.active.next() - .addClass( "ui-accordion-content-active" ) - .show(); + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); - this.headers - .attr( "role", "tab" ) - .each(function() { - var header = $( this ), - headerId = header.uniqueId().attr( "id" ), - panel = header.next(), - panelId = panel.uniqueId().attr( "id" ); - header.attr( "aria-controls", panelId ); - panel.attr( "aria-labelledby", headerId ); - }) - .next() - .attr( "role", "tabpanel" ); + // IE will pass in empty strings as value for alpha, + // which will hit this case + if ( isNaN( value ) ) { + return prop.def; + } - this.headers - .not( this.active ) - .attr({ - "aria-selected": "false", - "aria-expanded": "false", - tabIndex: -1 - }) - .next() - .attr({ - "aria-hidden": "true" - }) - .hide(); + if ( type.mod ) { - // make sure at least one header is in the tab order - if ( !this.active.length ) { - this.headers.eq( 0 ).attr( "tabIndex", 0 ); - } else { - this.active.attr({ - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - }) - .next() - .attr({ - "aria-hidden": "false" - }); - } + // We add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return ( value + type.mod ) % type.mod; + } - this._createIcons(); + // For now all property types without mod have min and max + return 0 > value ? 0 : type.max < value ? type.max : value; +} - this._setupEvents( options.event ); +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; - if ( heightStyle === "fill" ) { - maxHeight = parent.height(); - this.element.siblings( ":visible" ).each(function() { - var elem = $( this ), - position = elem.css( "position" ); + string = string.toLowerCase(); - if ( position === "absolute" || position === "fixed" ) { - return; - } - maxHeight -= elem.outerHeight( true ); - }); + each( stringParsers, function( i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; - this.headers.each(function() { - maxHeight -= $( this ).outerHeight( true ); - }); + if ( values ) { + parsed = inst[ spaceName ]( values ); - this.headers.next() - .each(function() { - $( this ).height( Math.max( 0, maxHeight - - $( this ).innerHeight() + $( this ).height() ) ); - }) - .css( "overflow", "auto" ); - } else if ( heightStyle === "auto" ) { - maxHeight = 0; - this.headers.next() - .each(function() { - maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); - }) - .height( maxHeight ); + // If this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // Exit each( stringParsers ) here because we matched + return false; } - }, + } ); - _activate: function( index ) { - var active = this._findActive( index )[ 0 ]; + // Found a stringParser that handled it + if ( rgba.length ) { - // trying to activate the already active panel - if ( active === this.active[ 0 ] ) { - return; + // If this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); } + return inst; + } - // trying to collapse, simulate a click on the currently active header - active = active || this.active[ 0 ]; + // Named colors + return colors[ string ]; +} - this._eventHandler({ - target: active, - currentTarget: active, - preventDefault: $.noop - }); - }, +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } - _findActive: function( selector ) { - return typeof selector === "number" ? this.headers.eq( selector ) : $(); - }, + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = []; - _setupEvents: function( event ) { - var events = { - keydown: "_keydown" - }; - if ( event ) { - $.each( event.split( " " ), function( index, eventName ) { - events[ eventName ] = "_eventHandler"; - }); + // More than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; } - this._off( this.headers.add( this.headers.next() ) ); - this._on( this.headers, events ); - this._on( this.headers.next(), { keydown: "_panelKeyDown" }); - this._hoverable( this.headers ); - this._focusable( this.headers ); - }, + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } - _eventHandler: function( event ) { - var options = this.options, - active = this.active, - clicked = $( event.currentTarget ), - clickedIsActive = clicked[ 0 ] === active[ 0 ], - collapsing = clickedIsActive && options.collapsible, - toShow = collapsing ? $() : clicked.next(), - toHide = active.next(), - eventData = { - oldHeader: active, - oldPanel: toHide, - newHeader: collapsing ? $() : clicked, - newPanel: toShow - }; + if ( type === "array" ) { + each( spaces.rgba.props, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + } ); + return this; + } - event.preventDefault(); + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + } ); + } else { + each( spaces, function( spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { - if ( - // click on active header, but not collapsible - ( clickedIsActive && !options.collapsible ) || - // allow canceling activation - ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { - return; - } + // If the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { - options.active = collapsing ? false : this.headers.index( clicked ); + // If the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } - // when the call to ._toggle() comes after the class changes - // it causes a very odd bug in IE 8 (see #6720) - this.active = clickedIsActive ? $() : clicked; - this._toggle( eventData ); + // This is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + } ); - // switch classes - // corner classes on the previously active header stay after the animation - active.removeClass( "ui-accordion-header-active ui-state-active" ); - if ( options.icons ) { - active.children( ".ui-accordion-header-icon" ) - .removeClass( options.icons.activeHeader ) - .addClass( options.icons.header ); - } + // Everything defined but alpha? + if ( inst[ cache ] && + jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - if ( !clickedIsActive ) { - clicked - .removeClass( "ui-corner-all" ) - .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); - if ( options.icons ) { - clicked.children( ".ui-accordion-header-icon" ) - .removeClass( options.icons.header ) - .addClass( options.icons.activeHeader ); + // Use the default of 1 + inst[ cache ][ 3 ] = 1; + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + } ); } - - clicked - .next() - .addClass( "ui-accordion-content-active" ); + return this; } }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; - _toggle: function( data ) { - var toShow = data.newPanel, - toHide = this.prevShow.length ? this.prevShow : data.oldPanel; - - // handle activating a panel during the animation for another activation - this.prevShow.add( this.prevHide ).stop( true, true ); - this.prevShow = toShow; - this.prevHide = toHide; + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if ( isCache ) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + } ); + } + return same; + } ); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + } ); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); - if ( this.options.animate ) { - this._animate( toShow, toHide, data ); - } else { - toHide.hide(); - toShow.show(); - this._toggleComplete( data ); - } + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; - toHide.attr({ - "aria-hidden": "true" - }); - toHide.prev().attr({ - "aria-selected": "false", - "aria-expanded": "false" - }); - // if we're switching panels, remove the old header from the tab order - // if we're opening from collapsed state, remove the previous header from the tab order - // if we're collapsing, then keep the collapsing header in the tab order - if ( toShow.length && toHide.length ) { - toHide.prev().attr({ - "tabIndex": -1, - "aria-expanded": "false" - }); - } else if ( toShow.length ) { - this.headers.filter(function() { - return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; - }) - .attr( "tabIndex", -1 ); - } + // If null, don't override start value + if ( endValue === null ) { + return; + } - toShow - .attr( "aria-hidden", "false" ) - .prev() - .attr({ - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - }); + // If null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + } ); + return this[ spaceName ]( result ); }, + blend: function( opaque ) { - _animate: function( toShow, toHide, data ) { - var total, easing, duration, - that = this, - adjust = 0, - boxSizing = toShow.css( "box-sizing" ), - down = toShow.length && - ( !toHide.length || ( toShow.index() < toHide.index() ) ), - animate = this.options.animate || {}, - options = down && animate.down || animate, - complete = function() { - that._toggleComplete( data ); - }; - - if ( typeof options === "number" ) { - duration = options; - } - if ( typeof options === "string" ) { - easing = options; + // If we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; } - // fall back from options to animation in case of partial down settings - easing = easing || options.easing || animate.easing; - duration = duration || options.duration || animate.duration; - if ( !toHide.length ) { - return toShow.animate( this.showProps, duration, easing, complete ); - } - if ( !toShow.length ) { - return toHide.animate( this.hideProps, duration, easing, complete ); + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + } ) ); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + } ); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; } - total = toShow.show().outerHeight(); - toHide.animate( this.hideProps, { - duration: duration, - easing: easing, - step: function( now, fx ) { - fx.now = Math.round( now ); - } - }); - toShow - .hide() - .animate( this.showProps, { - duration: duration, - easing: easing, - complete: complete, - step: function( now, fx ) { - fx.now = Math.round( now ); - if ( fx.prop !== "height" ) { - if ( boxSizing === "content-box" ) { - adjust += fx.now; - } - } else if ( that.options.heightStyle !== "content" ) { - fx.now = Math.round( total - toHide.outerHeight() - adjust ); - adjust = 0; - } - } - }); + return prefix + rgba.join() + ")"; }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } - _toggleComplete: function( data ) { - var toHide = data.oldPanel; + // Catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + } ); - toHide - .removeClass( "ui-accordion-content-active" ) - .prev() - .removeClass( "ui-corner-top" ) - .addClass( "ui-corner-all" ); + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join() + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); - // Work around for rendering bug in IE (#5421) - if ( toHide.length ) { - toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); } - this._trigger( "activate", null, data ); - } -}); + return "#" + jQuery.map( rgba, function( v ) { -/*! - * jQuery UI Menu 1.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/menu/ - */ + // Default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + } ).join( "" ); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } +} ); +color.fn.parse.prototype = color.fn; +// Hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 -var menu = $.widget( "ui.menu", { - version: "1.11.4", - defaultElement: "

    ", - delay: 300, - options: { - icons: { - submenu: "ui-icon-carat-1-e" - }, - items: "> *", - menus: "ul", - position: { - my: "left-1 top", - at: "right top" - }, - role: "menu", +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + ( q - p ) * h * 6; + } + if ( h * 2 < 1 ) { + return q; + } + if ( h * 3 < 2 ) { + return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; + } + return p; +} - // callbacks - blur: null, - focus: null, - select: null - }, +spaces.hsla.to = function( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; - _create: function() { - this.activeMenu = this.element; + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } - // Flag used to prevent firing of the click handler - // as the event bubbles up through nested menus - this.mouseHandled = false; - this.element - .uniqueId() - .addClass( "ui-menu ui-widget ui-widget-content" ) - .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) - .attr({ - role: this.options.role, - tabIndex: 0 - }); + // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; +}; - if ( this.options.disabled ) { - this.element - .addClass( "ui-state-disabled" ) - .attr( "aria-disabled", "true" ); - } +spaces.hsla.from = function( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; - this._on({ - // Prevent focus from sticking to links inside menu after clicking - // them (focus should always stay on UL during navigation). - "mousedown .ui-menu-item": function( event ) { - event.preventDefault(); - }, - "click .ui-menu-item": function( event ) { - var target = $( event.target ); - if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { - this.select( event ); + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; - // Only set the mouseHandled flag if the event will bubble, see #9469. - if ( !event.isPropagationStopped() ) { - this.mouseHandled = true; - } +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; - // Open submenu on click - if ( target.has( ".ui-menu" ).length ) { - this.expand( event ); - } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) { + // Makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { - // Redirect focus to the menu - this.element.trigger( "focus", [ true ] ); + // Generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } - // If the active item is on the top level, let it stay active. - // Otherwise, blur the active item since it is no longer visible. - if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { - clearTimeout( this.timer ); - } - } - } - }, - "mouseenter .ui-menu-item": function( event ) { - // Ignore mouse events while typeahead is active, see #10458. - // Prevents focusing the wrong item when typeahead causes a scroll while the mouse - // is over an item in the menu - if ( this.previousFilter ) { - return; - } - var target = $( event.currentTarget ); - // Remove ui-state-active class from siblings of the newly focused menu item - // to avoid a jump caused by adjacent elements both having a class with a border - target.siblings( ".ui-state-active" ).removeClass( "ui-state-active" ); - this.focus( event, target ); - }, - mouseleave: "collapseAll", - "mouseleave .ui-menu": "collapseAll", - focus: function( event, keepActiveItem ) { - // If there's already an active item, keep it active - // If not, activate the first item - var item = this.active || this.element.find( this.options.items ).eq( 0 ); + var ret, + type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); - if ( !keepActiveItem ) { - this.focus( event, item ); + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + } ); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // Makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + + // Alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); } - }, - blur: function( event ) { - this._delay(function() { - if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { - this.collapseAll( event ); + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + } ); +} ); + +// Add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, curElem, + backgroundColor = ""; + + if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || + ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + while ( + ( backgroundColor === "" || backgroundColor === "transparent" ) && + curElem && curElem.style + ) { + try { + backgroundColor = jQuery.css( curElem, "backgroundColor" ); + curElem = curElem.parentNode; + } catch ( e ) { + } + } + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); } - }); - }, - keydown: "_keydown" - }); - this.refresh(); + value = value.toRgbaString(); + } + try { + elem.style[ hook ] = value; + } catch ( e ) { + + // Wrapped to prevent IE from throwing errors on "invalid" values like + // 'auto' or 'inherit' + } + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + } ); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { + expanded[ "border" + part + "Color" ] = value; + } ); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + +} )( jQuery ); + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +( function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each( + [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], + function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; + } +); + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView ? + elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : + elem.currentStyle, + styles = {}; + + if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ $.camelCase( key ) ] = style[ key ]; + } + } + + // Support: Opera, IE <9 + } else { + for ( key in style ) { + if ( typeof style[ key ] === "string" ) { + styles[ key ] = style[ key ]; + } + } + } + + return styles; +} + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +// Support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // Map the animated objects to store the original styles. + allAnimations = allAnimations.map( function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + } ); + + // Apply class change + applyClassChange = function() { + $.each( classAnimationActions, function( i, action ) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + } ); + }; + applyClassChange(); + + // Map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map( function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + } ); + + // Apply original class + animated.attr( "class", baseClass ); + + // Map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map( function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend( {}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + } ); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + } ); + + // Once all animations have completed: + $.when.apply( $, allAnimations.get() ).done( function() { + + // Set the final class + applyClassChange(); + + // For each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function( key ) { + el.css( key, "" ); + } ); + } ); + + // This is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + } ); + } ); +}; + +$.fn.extend( { + addClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.addClass ), + + removeClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return arguments.length > 1 ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.removeClass ), + + toggleClass: ( function( orig ) { + return function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + + // Without speed parameter + return orig.apply( this, arguments ); + } else { + return $.effects.animateClass.call( this, + ( force ? { add: classNames } : { remove: classNames } ), + speed, easing, callback ); + } + } else { + + // Without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }; + } )( $.fn.toggleClass ), + + switchClass: function( remove, add, speed, easing, callback ) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +} ); + +} )(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +( function() { + +if ( $.expr && $.expr.filters && $.expr.filters.animated ) { + $.expr.filters.animated = ( function( orig ) { + return function( elem ) { + return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); + }; + } )( $.expr.filters.animated ); +} + +if ( $.uiBackCompat !== false ) { + $.extend( $.effects, { + + // Saves a set of properties in a data storage + save: function( element, set ) { + var i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if ( mode === "toggle" ) { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // If the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + return element.parent(); + } + + // Wrap the element + var props = { + width: element.outerWidth( true ), + height: element.outerHeight( true ), + "float": element.css( "float" ) + }, + wrapper = $( "
    " ) + .addClass( "ui-effects-wrapper" ) + .css( { + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + } ), + + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // Support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + active.id; + } catch ( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + + // Hotfix for jQuery 1.4 since some change in wrap() seems to actually + // lose the reference to the wrapped element + wrapper = element.parent(); + + // Transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css( { position: "relative" } ); + element.css( { position: "relative" } ); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + } ); + $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + } ); + element.css( { + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + } ); + } + element.css( size ); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + } + + return element; + } + } ); +} + +$.extend( $.effects, { + version: "1.12.1", + + define: function( name, mode, effect ) { + if ( !effect ) { + effect = mode; + mode = "effect"; + } + + $.effects.effect[ name ] = effect; + $.effects.effect[ name ].mode = mode; + + return effect; + }, + + scaledDimensions: function( element, percent, direction ) { + if ( percent === 0 ) { + return { + height: 0, + width: 0, + outerHeight: 0, + outerWidth: 0 + }; + } + + var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, + y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; + + return { + height: element.height() * y, + width: element.width() * x, + outerHeight: element.outerHeight() * y, + outerWidth: element.outerWidth() * x + }; + + }, + + clipToBox: function( animation ) { + return { + width: animation.clip.right - animation.clip.left, + height: animation.clip.bottom - animation.clip.top, + left: animation.clip.left, + top: animation.clip.top + }; + }, + + // Injects recently queued functions to be first in line (after "inprogress") + unshift: function( element, queueLength, count ) { + var queue = element.queue(); + + if ( queueLength > 1 ) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); + } + element.dequeue(); + }, + + saveStyle: function( element ) { + element.data( dataSpaceStyle, element[ 0 ].style.cssText ); + }, + + restoreStyle: function( element ) { + element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; + element.removeData( dataSpaceStyle ); + }, + + mode: function( element, mode ) { + var hidden = element.is( ":hidden" ); + + if ( mode === "toggle" ) { + mode = hidden ? "show" : "hide"; + } + if ( hidden ? mode === "hide" : mode === "show" ) { + mode = "none"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + getBaseline: function( origin, original ) { + var y, x; + + switch ( origin[ 0 ] ) { + case "top": + y = 0; + break; + case "middle": + y = 0.5; + break; + case "bottom": + y = 1; + break; + default: + y = origin[ 0 ] / original.height; + } + + switch ( origin[ 1 ] ) { + case "left": + x = 0; + break; + case "center": + x = 0.5; + break; + case "right": + x = 1; + break; + default: + x = origin[ 1 ] / original.width; + } + + return { + x: x, + y: y + }; + }, + + // Creates a placeholder element so that the original element can be made absolute + createPlaceholder: function( element ) { + var placeholder, + cssPosition = element.css( "position" ), + position = element.position(); + + // Lock in margins first to account for form elements, which + // will change margin if you explicitly set height + // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 + // Support: Safari + element.css( { + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ); + + if ( /^(static|relative)/.test( cssPosition ) ) { + cssPosition = "absolute"; + + placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { + + // Convert inline to inline block to account for inline elements + // that turn to inline block based on content (like img) + display: /^(inline|ruby)/.test( element.css( "display" ) ) ? + "inline-block" : + "block", + visibility: "hidden", + + // Margins need to be set to account for margin collapse + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ), + "float": element.css( "float" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ) + .addClass( "ui-effects-placeholder" ); + + element.data( dataSpace + "placeholder", placeholder ); + } + + element.css( { + position: cssPosition, + left: position.left, + top: position.top + } ); + + return placeholder; + }, + + removePlaceholder: function( element ) { + var dataKey = dataSpace + "placeholder", + placeholder = element.data( dataKey ); + + if ( placeholder ) { + placeholder.remove(); + element.removeData( dataKey ); + } + }, + + // Removes a placeholder if it exists and restores + // properties that were modified during placeholder creation + cleanUp: function( element ) { + $.effects.restoreStyle( element ); + $.effects.removePlaceholder( element ); + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + } ); + return value; + } +} ); + +// Return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // Allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // Convert to an object + effect = { effect: effect }; + + // Catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // Catch (effect, callback) + if ( $.isFunction( options ) ) { + callback = options; + speed = null; + options = {}; + } + + // Catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // Catch (effect, options, callback) + if ( $.isFunction( speed ) ) { + callback = speed; + speed = null; + } + + // Add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardAnimationOption( option ) { + + // Valid standard speeds (nothing, number, named speed) + if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { + return true; + } + + // Invalid strings - treat as "normal" speed + if ( typeof option === "string" && !$.effects.effect[ option ] ) { + return true; + } + + // Complete callback + if ( $.isFunction( option ) ) { + return true; + } + + // Options hash (but not naming an effect) + if ( typeof option === "object" && !option.effect ) { + return true; + } + + // Didn't match any standard API + return false; +} + +$.fn.extend( { + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + effectMethod = $.effects.effect[ args.effect ], + defaultMode = effectMethod.mode, + queue = args.queue, + queueName = queue || "fx", + complete = args.complete, + mode = args.mode, + modes = [], + prefilter = function( next ) { + var el = $( this ), + normalizedMode = $.effects.mode( el, mode ) || defaultMode; + + // Sentinel for duck-punching the :animated psuedo-selector + el.data( dataSpaceAnimated, true ); + + // Save effect mode for later use, + // we can't just call $.effects.mode again later, + // as the .show() below destroys the initial state + modes.push( normalizedMode ); + + // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13 + if ( defaultMode && ( normalizedMode === "show" || + ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { + el.show(); + } + + if ( !defaultMode || normalizedMode !== "none" ) { + $.effects.saveStyle( el ); + } + + if ( $.isFunction( next ) ) { + next(); + } + }; + + if ( $.fx.off || !effectMethod ) { + + // Delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, complete ); + } else { + return this.each( function() { + if ( complete ) { + complete.call( this ); + } + } ); + } + } + + function run( next ) { + var elem = $( this ); + + function cleanup() { + elem.removeData( dataSpaceAnimated ); + + $.effects.cleanUp( elem ); + + if ( args.mode === "hide" ) { + elem.hide(); + } + + done(); + } + + function done() { + if ( $.isFunction( complete ) ) { + complete.call( elem[ 0 ] ); + } + + if ( $.isFunction( next ) ) { + next(); + } + } + + // Override mode option on a per element basis, + // as toggle can be either show or hide depending on element state + args.mode = modes.shift(); + + if ( $.uiBackCompat !== false && !defaultMode ) { + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, done ); + } + } else { + if ( args.mode === "none" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, cleanup ); + } + } + } + + // Run prefilter on all elements first to ensure that + // any showing or hiding happens before placeholder creation, + // which ensures that any layout changes are correctly captured. + return queue === false ? + this.each( prefilter ).each( run ) : + this.queue( queueName, prefilter ).queue( queueName, run ); + }, + + show: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.show ), + + hide: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.hide ), + + toggle: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) || typeof option === "boolean" ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.toggle ), + + cssUnit: function( key ) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + } ); + return val; + }, + + cssClip: function( clipObj ) { + if ( clipObj ) { + return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + + clipObj.bottom + "px " + clipObj.left + "px)" ); + } + return parseClip( this.css( "clip" ), this ); + }, + + transfer: function( options, done ) { + var element = $( this ), + target = $( options.to ), + targetFixed = target.css( "position" ) === "fixed", + body = $( "body" ), + fixTop = targetFixed ? body.scrollTop() : 0, + fixLeft = targetFixed ? body.scrollLeft() : 0, + endPosition = target.offset(), + animation = { + top: endPosition.top - fixTop, + left: endPosition.left - fixLeft, + height: target.innerHeight(), + width: target.innerWidth() + }, + startPosition = element.offset(), + transfer = $( "
    " ) + .appendTo( "body" ) + .addClass( options.className ) + .css( { + top: startPosition.top - fixTop, + left: startPosition.left - fixLeft, + height: element.innerHeight(), + width: element.innerWidth(), + position: targetFixed ? "fixed" : "absolute" + } ) + .animate( animation, options.duration, options.easing, function() { + transfer.remove(); + if ( $.isFunction( done ) ) { + done(); + } + } ); + } +} ); + +function parseClip( str, element ) { + var outerWidth = element.outerWidth(), + outerHeight = element.outerHeight(), + clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, + values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; + + return { + top: parseFloat( values[ 1 ] ) || 0, + right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), + bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), + left: parseFloat( values[ 4 ] ) || 0 + }; +} + +$.fx.step.clip = function( fx ) { + if ( !fx.clipInit ) { + fx.start = $( fx.elem ).cssClip(); + if ( typeof fx.end === "string" ) { + fx.end = parseClip( fx.end, fx.elem ); + } + fx.clipInit = true; + } + + $( fx.elem ).cssClip( { + top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, + right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, + bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, + left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left + } ); +}; + +} )(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +( function() { + +// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +} ); + +$.extend( baseEasings, { + Sine: function( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +} ); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +} ); + +} )(); + +var effect = $.effects; + + +/*! + * jQuery UI Effects Blind 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Blind Effect +//>>group: Effects +//>>description: Blinds the element. +//>>docs: http://api.jqueryui.com/blind-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { + var map = { + up: [ "bottom", "top" ], + vertical: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + horizontal: [ "right", "left" ], + right: [ "left", "right" ] + }, + element = $( this ), + direction = options.direction || "up", + start = element.cssClip(), + animate = { clip: $.extend( {}, start ) }, + placeholder = $.effects.createPlaceholder( element ); + + animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animate ) ); + } + + animate.clip = start; + } + + if ( placeholder ) { + placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Bounce 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Bounce Effect +//>>group: Effects +//>>description: Bounces an element horizontally or vertically n times. +//>>docs: http://api.jqueryui.com/bounce-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { + var upAnim, downAnim, refValue, + element = $( this ), + + // Defaults: + mode = options.mode, + hide = mode === "hide", + show = mode === "show", + direction = options.direction || "up", + distance = options.distance, + times = options.times || 5, + + // Number of internal animations + anims = times * 2 + ( show || hide ? 1 : 0 ), + speed = options.duration / anims, + easing = options.easing, + + // Utility: + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ), + i = 0, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + refValue = element.css( ref ); + + // Default distance for the BIGGEST bounce is the outer Distance / 3 + if ( !distance ) { + distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; + } + + if ( show ) { + downAnim = { opacity: 1 }; + downAnim[ ref ] = refValue; + + // If we are showing, force opacity 0 and set the initial position + // then do the "first" animation + element + .css( "opacity", 0 ) + .css( ref, motion ? -distance * 2 : distance * 2 ) + .animate( downAnim, speed, easing ); + } + + // Start at the smallest distance if we are hiding + if ( hide ) { + distance = distance / Math.pow( 2, times - 1 ); + } + + downAnim = {}; + downAnim[ ref ] = refValue; + + // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here + for ( ; i < times; i++ ) { + upAnim = {}; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element + .animate( upAnim, speed, easing ) + .animate( downAnim, speed, easing ); + + distance = hide ? distance * 2 : distance / 2; + } + + // Last Bounce when Hiding + if ( hide ) { + upAnim = { opacity: 0 }; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element.animate( upAnim, speed, easing ); + } + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Clip 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Clip Effect +//>>group: Effects +//>>description: Clips the element on and off like an old TV. +//>>docs: http://api.jqueryui.com/clip-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { + var start, + animate = {}, + element = $( this ), + direction = options.direction || "vertical", + both = direction === "both", + horizontal = both || direction === "horizontal", + vertical = both || direction === "vertical"; + + start = element.cssClip(); + animate.clip = { + top: vertical ? ( start.bottom - start.top ) / 2 : start.top, + right: horizontal ? ( start.right - start.left ) / 2 : start.right, + bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, + left: horizontal ? ( start.right - start.left ) / 2 : start.left + }; + + $.effects.createPlaceholder( element ); + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + animate.clip = start; + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); + +} ); + + +/*! + * jQuery UI Effects Drop 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Drop Effect +//>>group: Effects +//>>description: Moves an element in one direction and hides it at the same time. +//>>docs: http://api.jqueryui.com/drop-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { + + var distance, + element = $( this ), + mode = options.mode, + show = mode === "show", + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", + oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", + animation = { + opacity: 0 + }; + + $.effects.createPlaceholder( element ); + + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; + + animation[ ref ] = motion + distance; + + if ( show ) { + element.css( animation ); + + animation[ ref ] = oppositeMotion + distance; + animation.opacity = 1; + } + + // Animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Explode 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Explode Effect +//>>group: Effects +// jscs:disable maximumLineLength +//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. +// jscs:enable maximumLineLength +//>>docs: http://api.jqueryui.com/explode-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { + + var i, j, left, top, mx, my, + rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, + cells = rows, + element = $( this ), + mode = options.mode, + show = mode === "show", + + // Show and then visibility:hidden the element before calculating offset + offset = element.show().css( "visibility", "hidden" ).offset(), + + // Width and height of a piece + width = Math.ceil( element.outerWidth() / cells ), + height = Math.ceil( element.outerHeight() / rows ), + pieces = []; + + // Children animate complete: + function childComplete() { + pieces.push( this ); + if ( pieces.length === rows * cells ) { + animComplete(); + } + } + + // Clone the element for each row and cell. + for ( i = 0; i < rows; i++ ) { // ===> + top = offset.top + i * height; + my = i - ( rows - 1 ) / 2; + + for ( j = 0; j < cells; j++ ) { // ||| + left = offset.left + j * width; + mx = j - ( cells - 1 ) / 2; + + // Create a clone of the now hidden main element that will be absolute positioned + // within a wrapper div off the -left and -top equal to size of our pieces + element + .clone() + .appendTo( "body" ) + .wrap( "
    " ) + .css( { + position: "absolute", + visibility: "visible", + left: -j * width, + top: -i * height + } ) + + // Select the wrapper - make it overflow: hidden and absolute positioned based on + // where the original was located +left and +top equal to the size of pieces + .parent() + .addClass( "ui-effects-explode" ) + .css( { + position: "absolute", + overflow: "hidden", + width: width, + height: height, + left: left + ( show ? mx * width : 0 ), + top: top + ( show ? my * height : 0 ), + opacity: show ? 0 : 1 + } ) + .animate( { + left: left + ( show ? 0 : mx * width ), + top: top + ( show ? 0 : my * height ), + opacity: show ? 1 : 0 + }, options.duration || 500, options.easing, childComplete ); + } + } + + function animComplete() { + element.css( { + visibility: "visible" + } ); + $( pieces ).remove(); + done(); + } +} ); + + +/*! + * jQuery UI Effects Fade 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Fade Effect +//>>group: Effects +//>>description: Fades the element. +//>>docs: http://api.jqueryui.com/fade-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { + var show = options.mode === "show"; + + $( this ) + .css( "opacity", show ? 0 : 1 ) + .animate( { + opacity: show ? 1 : 0 + }, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Fold 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Fold Effect +//>>group: Effects +//>>description: Folds an element first horizontally and then vertically. +//>>docs: http://api.jqueryui.com/fold-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { + + // Create element + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + size = options.size || 15, + percent = /([0-9]+)%/.exec( size ), + horizFirst = !!options.horizFirst, + ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], + duration = options.duration / 2, + + placeholder = $.effects.createPlaceholder( element ), + + start = element.cssClip(), + animation1 = { clip: $.extend( {}, start ) }, + animation2 = { clip: $.extend( {}, start ) }, + + distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], + + queuelen = element.queue().length; + + if ( percent ) { + size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; + } + animation1.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 1 ] ] = 0; + + if ( show ) { + element.cssClip( animation2.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animation2 ) ); + } + + animation2.clip = start; + } + + // Animate + element + .queue( function( next ) { + if ( placeholder ) { + placeholder + .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) + .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); + } + + next(); + } ) + .animate( animation1, duration, options.easing ) + .animate( animation2, duration, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, 4 ); +} ); + + +/*! + * jQuery UI Effects Highlight 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Highlight Effect +//>>group: Effects +//>>description: Highlights the background of an element in a defined color for a custom duration. +//>>docs: http://api.jqueryui.com/highlight-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { + var element = $( this ), + animation = { + backgroundColor: element.css( "backgroundColor" ) + }; + + if ( options.mode === "hide" ) { + animation.opacity = 0; + } + + $.effects.saveStyle( element ); + + element + .css( { + backgroundImage: "none", + backgroundColor: options.color || "#ffff99" + } ) + .animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Size 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Size Effect +//>>group: Effects +//>>description: Resize an element to a specified width and height. +//>>docs: http://api.jqueryui.com/size-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectSize = $.effects.define( "size", function( options, done ) { + + // Create element + var baseline, factor, temp, + element = $( this ), + + // Copy for children + cProps = [ "fontSize" ], + vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], + hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], + + // Set options + mode = options.mode, + restore = mode !== "effect", + scale = options.scale || "both", + origin = options.origin || [ "middle", "center" ], + position = element.css( "position" ), + pos = element.position(), + original = $.effects.scaledDimensions( element ), + from = options.from || original, + to = options.to || $.effects.scaledDimensions( element, 0 ); + + $.effects.createPlaceholder( element ); + + if ( mode === "show" ) { + temp = from; + from = to; + to = temp; + } + + // Set scaling factor + factor = { + from: { + y: from.height / original.height, + x: from.width / original.width + }, + to: { + y: to.height / original.height, + x: to.width / original.width + } + }; + + // Scale the css box + if ( scale === "box" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, vProps, factor.from.y, from ); + to = $.effects.setTransition( element, vProps, factor.to.y, to ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + from = $.effects.setTransition( element, hProps, factor.from.x, from ); + to = $.effects.setTransition( element, hProps, factor.to.x, to ); + } + } + + // Scale the content + if ( scale === "content" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, cProps, factor.from.y, from ); + to = $.effects.setTransition( element, cProps, factor.to.y, to ); + } + } + + // Adjust the position properties based on the provided origin points + if ( origin ) { + baseline = $.effects.getBaseline( origin, original ); + from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; + from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; + to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; + to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; + } + element.css( from ); + + // Animate the children if desired + if ( scale === "content" || scale === "both" ) { + + vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); + hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); + + // Only animate children with width attributes specified + // TODO: is this right? should we include anything with css width specified as well + element.find( "*[width]" ).each( function() { + var child = $( this ), + childOriginal = $.effects.scaledDimensions( child ), + childFrom = { + height: childOriginal.height * factor.from.y, + width: childOriginal.width * factor.from.x, + outerHeight: childOriginal.outerHeight * factor.from.y, + outerWidth: childOriginal.outerWidth * factor.from.x + }, + childTo = { + height: childOriginal.height * factor.to.y, + width: childOriginal.width * factor.to.x, + outerHeight: childOriginal.height * factor.to.y, + outerWidth: childOriginal.width * factor.to.x + }; + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); + childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); + childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); + } + + if ( restore ) { + $.effects.saveStyle( child ); + } + + // Animate children + child.css( childFrom ); + child.animate( childTo, options.duration, options.easing, function() { + + // Restore children + if ( restore ) { + $.effects.restoreStyle( child ); + } + } ); + } ); + } + + // Animate + element.animate( to, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: function() { + + var offset = element.offset(); + + if ( to.opacity === 0 ) { + element.css( "opacity", from.opacity ); + } + + if ( !restore ) { + element + .css( "position", position === "static" ? "relative" : position ) + .offset( offset ); + + // Need to save style here so that automatic style restoration + // doesn't restore to the original styles from before the animation. + $.effects.saveStyle( element ); + } + + done(); + } + } ); + +} ); + + +/*! + * jQuery UI Effects Scale 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Scale Effect +//>>group: Effects +//>>description: Grows or shrinks an element and its content. +//>>docs: http://api.jqueryui.com/scale-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectScale = $.effects.define( "scale", function( options, done ) { + + // Create element + var el = $( this ), + mode = options.mode, + percent = parseInt( options.percent, 10 ) || + ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), + + newOptions = $.extend( true, { + from: $.effects.scaledDimensions( el ), + to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), + origin: options.origin || [ "middle", "center" ] + }, options ); + + // Fade option to support puff + if ( options.fade ) { + newOptions.from.opacity = 1; + newOptions.to.opacity = 0; + } + + $.effects.effect.size.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Puff 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Puff Effect +//>>group: Effects +//>>description: Creates a puff effect by scaling the element up and hiding it at the same time. +//>>docs: http://api.jqueryui.com/puff-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { + var newOptions = $.extend( true, {}, options, { + fade: true, + percent: parseInt( options.percent, 10 ) || 150 + } ); + + $.effects.effect.scale.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Pulsate 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Pulsate Effect +//>>group: Effects +//>>description: Pulsates an element n times by changing the opacity to zero and back. +//>>docs: http://api.jqueryui.com/pulsate-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + showhide = show || hide, + + // Showing or hiding leaves off the "last" animation + anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), + duration = options.duration / anims, + animateTo = 0, + i = 1, + queuelen = element.queue().length; + + if ( show || !element.is( ":visible" ) ) { + element.css( "opacity", 0 ).show(); + animateTo = 1; + } + + // Anims - 1 opacity "toggles" + for ( ; i < anims; i++ ) { + element.animate( { opacity: animateTo }, duration, options.easing ); + animateTo = 1 - animateTo; + } + + element.animate( { opacity: animateTo }, duration, options.easing ); + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Shake 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Shake Effect +//>>group: Effects +//>>description: Shakes an element horizontally or vertically n times. +//>>docs: http://api.jqueryui.com/shake-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectShake = $.effects.define( "shake", function( options, done ) { + + var i = 1, + element = $( this ), + direction = options.direction || "left", + distance = options.distance || 20, + times = options.times || 3, + anims = times * 2 + 1, + speed = Math.round( options.duration / anims ), + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + animation = {}, + animation1 = {}, + animation2 = {}, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + // Animation + animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; + animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; + animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; + + // Animate + element.animate( animation, speed, options.easing ); + + // Shakes + for ( ; i < times; i++ ) { + element + .animate( animation1, speed, options.easing ) + .animate( animation2, speed, options.easing ); + } + + element + .animate( animation1, speed, options.easing ) + .animate( animation, speed / 2, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Slide 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Slide Effect +//>>group: Effects +//>>description: Slides an element in and out of the viewport. +//>>docs: http://api.jqueryui.com/slide-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { + var startClip, startRef, + element = $( this ), + map = { + up: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + right: [ "left", "right" ] + }, + mode = options.mode, + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), + animation = {}; + + $.effects.createPlaceholder( element ); + + startClip = element.cssClip(); + startRef = element.position()[ ref ]; + + // Define hide animation + animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; + animation.clip = element.cssClip(); + animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; + + // Reverse the animation if we're showing + if ( mode === "show" ) { + element.cssClip( animation.clip ); + element.css( ref, animation[ ref ] ); + animation.clip = startClip; + animation[ ref ] = startRef; + } + + // Actually animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Transfer 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Transfer Effect +//>>group: Effects +//>>description: Displays a transfer effect from one element to another. +//>>docs: http://api.jqueryui.com/transfer-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effect; +if ( $.uiBackCompat !== false ) { + effect = $.effects.define( "transfer", function( options, done ) { + $( this ).transfer( options, done ); + } ); +} +var effectsEffectTransfer = effect; + + +/*! + * jQuery UI Focusable 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :focusable Selector +//>>group: Core +//>>description: Selects elements which can be focused. +//>>docs: http://api.jqueryui.com/focusable-selector/ + + + +// Selectors +$.ui.focusable = function( element, hasTabindex ) { + var map, mapName, img, focusableIfVisible, fieldset, + nodeName = element.nodeName.toLowerCase(); + + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap='#" + mapName + "']" ); + return img.length > 0 && img.is( ":visible" ); + } + + if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { + focusableIfVisible = !element.disabled; + + if ( focusableIfVisible ) { + + // Form controls within a disabled fieldset are disabled. + // However, controls within the fieldset's legend do not get disabled. + // Since controls generally aren't placed inside legends, we skip + // this portion of the check. + fieldset = $( element ).closest( "fieldset" )[ 0 ]; + if ( fieldset ) { + focusableIfVisible = !fieldset.disabled; + } + } + } else if ( "a" === nodeName ) { + focusableIfVisible = element.href || hasTabindex; + } else { + focusableIfVisible = hasTabindex; + } + + return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); +}; + +// Support: IE 8 only +// IE 8 doesn't resolve inherit to visible/hidden for computed values +function visible( element ) { + var visibility = element.css( "visibility" ); + while ( visibility === "inherit" ) { + element = element.parent(); + visibility = element.css( "visibility" ); + } + return visibility !== "hidden"; +} + +$.extend( $.expr[ ":" ], { + focusable: function( element ) { + return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); + } +} ); + +var focusable = $.ui.focusable; + + + + +// Support: IE8 Only +// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop +// with a string, so we need to find the proper form. +var form = $.fn.form = function() { + return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); +}; + + +/*! + * jQuery UI Form Reset Mixin 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Form Reset Mixin +//>>group: Core +//>>description: Refresh input widgets when their form is reset +//>>docs: http://api.jqueryui.com/form-reset-mixin/ + + + +var formResetMixin = $.ui.formResetMixin = { + _formResetHandler: function() { + var form = $( this ); + + // Wait for the form reset to actually happen before refreshing + setTimeout( function() { + var instances = form.data( "ui-form-reset-instances" ); + $.each( instances, function() { + this.refresh(); + } ); + } ); + }, + + _bindFormResetHandler: function() { + this.form = this.element.form(); + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ) || []; + if ( !instances.length ) { + + // We don't use _on() here because we use a single event handler per form + this.form.on( "reset.ui-form-reset", this._formResetHandler ); + } + instances.push( this ); + this.form.data( "ui-form-reset-instances", instances ); + }, + + _unbindFormResetHandler: function() { + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ); + instances.splice( $.inArray( this, instances ), 1 ); + if ( instances.length ) { + this.form.data( "ui-form-reset-instances", instances ); + } else { + this.form + .removeData( "ui-form-reset-instances" ) + .off( "reset.ui-form-reset" ); + } + } +}; + + +/*! + * jQuery UI Support for jQuery core 1.7.x 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + */ + +//>>label: jQuery 1.7 Support +//>>group: Core +//>>description: Support version 1.7.x of jQuery core + + + +// Support: jQuery 1.7 only +// Not a great way to check versions, but since we only support 1.7+ and only +// need to detect <1.8, this is a simple check that should suffice. Checking +// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 +// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting +// 1.7 anymore). See #11197 for why we're not using feature detection. +if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { + + // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() + // Unlike jQuery Core 1.8+, these only support numeric values to set the + // dimensions in pixels + $.each( [ "Width", "Height" ], function( i, name ) { + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], + type = name.toLowerCase(), + orig = { + innerWidth: $.fn.innerWidth, + innerHeight: $.fn.innerHeight, + outerWidth: $.fn.outerWidth, + outerHeight: $.fn.outerHeight + }; + + function reduce( elem, size, border, margin ) { + $.each( side, function() { + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; + if ( border ) { + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; + } + if ( margin ) { + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; + } + } ); + return size; + } + + $.fn[ "inner" + name ] = function( size ) { + if ( size === undefined ) { + return orig[ "inner" + name ].call( this ); + } - // Clicks outside of a menu collapse any open menus - this._on( this.document, { - click: function( event ) { - if ( this._closeOnDocumentClick( event ) ) { - this.collapseAll( event ); - } + return this.each( function() { + $( this ).css( type, reduce( this, size ) + "px" ); + } ); + }; - // Reset the mouseHandled flag - this.mouseHandled = false; + $.fn[ "outer" + name ] = function( size, margin ) { + if ( typeof size !== "number" ) { + return orig[ "outer" + name ].call( this, size ); } - }); - }, - _destroy: function() { - // Destroy (sub)menus - this.element - .removeAttr( "aria-activedescendant" ) - .find( ".ui-menu" ).addBack() - .removeClass( "ui-menu ui-widget ui-widget-content ui-menu-icons ui-front" ) - .removeAttr( "role" ) - .removeAttr( "tabIndex" ) - .removeAttr( "aria-labelledby" ) - .removeAttr( "aria-expanded" ) - .removeAttr( "aria-hidden" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .show(); + return this.each( function() { + $( this ).css( type, reduce( this, size, true, margin ) + "px" ); + } ); + }; + } ); - // Destroy menu items - this.element.find( ".ui-menu-item" ) - .removeClass( "ui-menu-item" ) - .removeAttr( "role" ) - .removeAttr( "aria-disabled" ) - .removeUniqueId() - .removeClass( "ui-state-hover" ) - .removeAttr( "tabIndex" ) - .removeAttr( "role" ) - .removeAttr( "aria-haspopup" ) - .children().each( function() { - var elem = $( this ); - if ( elem.data( "ui-menu-submenu-carat" ) ) { - elem.remove(); - } - }); + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} - // Destroy menu dividers - this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); - }, +; +/*! + * jQuery UI Keycode 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - _keydown: function( event ) { - var match, prev, character, skip, - preventDefault = true; +//>>label: Keycode +//>>group: Core +//>>description: Provide keycodes as keynames +//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ + + +var keycode = $.ui.keyCode = { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 +}; - switch ( event.keyCode ) { - case $.ui.keyCode.PAGE_UP: - this.previousPage( event ); - break; - case $.ui.keyCode.PAGE_DOWN: - this.nextPage( event ); - break; - case $.ui.keyCode.HOME: - this._move( "first", "first", event ); - break; - case $.ui.keyCode.END: - this._move( "last", "last", event ); - break; - case $.ui.keyCode.UP: - this.previous( event ); - break; - case $.ui.keyCode.DOWN: - this.next( event ); - break; - case $.ui.keyCode.LEFT: - this.collapse( event ); - break; - case $.ui.keyCode.RIGHT: - if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { - this.expand( event ); - } - break; - case $.ui.keyCode.ENTER: - case $.ui.keyCode.SPACE: - this._activate( event ); - break; - case $.ui.keyCode.ESCAPE: - this.collapse( event ); - break; - default: - preventDefault = false; - prev = this.previousFilter || ""; - character = String.fromCharCode( event.keyCode ); - skip = false; - clearTimeout( this.filterTimer ); - if ( character === prev ) { - skip = true; - } else { - character = prev + character; - } - match = this._filterMenuItems( character ); - match = skip && match.index( this.active.next() ) !== -1 ? - this.active.nextAll( ".ui-menu-item" ) : - match; +// Internal use only +var escapeSelector = $.ui.escapeSelector = ( function() { + var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g; + return function( selector ) { + return selector.replace( selectorEscape, "\\$1" ); + }; +} )(); - // If no matches on the current filter, reset to the last character pressed - // to move down the menu to the first item that starts with that character - if ( !match.length ) { - character = String.fromCharCode( event.keyCode ); - match = this._filterMenuItems( character ); - } - if ( match.length ) { - this.focus( event, match ); - this.previousFilter = character; - this.filterTimer = this._delay(function() { - delete this.previousFilter; - }, 1000 ); - } else { - delete this.previousFilter; - } - } +/*! + * jQuery UI Labels 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - if ( preventDefault ) { - event.preventDefault(); - } - }, +//>>label: labels +//>>group: Core +//>>description: Find all the labels associated with a given input +//>>docs: http://api.jqueryui.com/labels/ - _activate: function( event ) { - if ( !this.active.is( ".ui-state-disabled" ) ) { - if ( this.active.is( "[aria-haspopup='true']" ) ) { - this.expand( event ); - } else { - this.select( event ); - } - } - }, - refresh: function() { - var menus, items, - that = this, - icon = this.options.icons.submenu, - submenus = this.element.find( this.options.menus ); - this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ); +var labels = $.fn.labels = function() { + var ancestor, selector, id, labels, ancestors; - // Initialize nested menus - submenus.filter( ":not(.ui-menu)" ) - .addClass( "ui-menu ui-widget ui-widget-content ui-front" ) - .hide() - .attr({ - role: this.options.role, - "aria-hidden": "true", - "aria-expanded": "false" - }) - .each(function() { - var menu = $( this ), - item = menu.parent(), - submenuCarat = $( "" ) - .addClass( "ui-menu-icon ui-icon " + icon ) - .data( "ui-menu-submenu-carat", true ); + // Check control.labels first + if ( this[ 0 ].labels && this[ 0 ].labels.length ) { + return this.pushStack( this[ 0 ].labels ); + } - item - .attr( "aria-haspopup", "true" ) - .prepend( submenuCarat ); - menu.attr( "aria-labelledby", item.attr( "id" ) ); - }); + // Support: IE <= 11, FF <= 37, Android <= 2.3 only + // Above browsers do not support control.labels. Everything below is to support them + // as well as document fragments. control.labels does not work on document fragments + labels = this.eq( 0 ).parents( "label" ); - menus = submenus.add( this.element ); - items = menus.find( this.options.items ); + // Look for the label based on the id + id = this.attr( "id" ); + if ( id ) { - // Initialize menu-items containing spaces and/or dashes only as dividers - items.not( ".ui-menu-item" ).each(function() { - var item = $( this ); - if ( that._isDivider( item ) ) { - item.addClass( "ui-widget-content ui-menu-divider" ); + // We don't search against the document in case the element + // is disconnected from the DOM + ancestor = this.eq( 0 ).parents().last(); + + // Get a full set of top level ancestors + ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); + + // Create a selector for the label based on the id + selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; + + labels = labels.add( ancestors.find( selector ).addBack( selector ) ); + + } + + // Return whatever we have found for labels + return this.pushStack( labels ); +}; + + +/*! + * jQuery UI Scroll Parent 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: scrollParent +//>>group: Core +//>>description: Get the closest ancestor element that is scrollable. +//>>docs: http://api.jqueryui.com/scrollParent/ + + + +var scrollParent = $.fn.scrollParent = function( includeHidden ) { + var position = this.css( "position" ), + excludeStaticParent = position === "absolute", + overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, + scrollParent = this.parents().filter( function() { + var parent = $( this ); + if ( excludeStaticParent && parent.css( "position" ) === "static" ) { + return false; } - }); + return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + + parent.css( "overflow-x" ) ); + } ).eq( 0 ); - // Don't refresh list items that are already adapted - items.not( ".ui-menu-item, .ui-menu-divider" ) - .addClass( "ui-menu-item" ) - .uniqueId() - .attr({ - tabIndex: -1, - role: this._itemRole() - }); + return position === "fixed" || !scrollParent.length ? + $( this[ 0 ].ownerDocument || document ) : + scrollParent; +}; - // Add aria-disabled attribute to any disabled menu item - items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); - // If the active item has been removed, blur the menu - if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - this.blur(); - } - }, +/*! + * jQuery UI Tabbable 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - _itemRole: function() { - return { - menu: "menuitem", - listbox: "option" - }[ this.options.role ]; - }, +//>>label: :tabbable Selector +//>>group: Core +//>>description: Selects elements which can be tabbed to. +//>>docs: http://api.jqueryui.com/tabbable-selector/ - _setOption: function( key, value ) { - if ( key === "icons" ) { - this.element.find( ".ui-menu-icon" ) - .removeClass( this.options.icons.submenu ) - .addClass( value.submenu ); - } - if ( key === "disabled" ) { - this.element - .toggleClass( "ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - } - this._super( key, value ); - }, - focus: function( event, item ) { - var nested, focused; - this.blur( event, event && event.type === "focus" ); - this._scrollIntoView( item ); +var tabbable = $.extend( $.expr[ ":" ], { + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + hasTabindex = tabIndex != null; + return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); + } +} ); - this.active = item.first(); - focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" ); - // Only update aria-activedescendant if there's a role - // otherwise we assume focus is managed elsewhere - if ( this.options.role ) { - this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); - } - // Highlight active parent menu item, if any - this.active - .parent() - .closest( ".ui-menu-item" ) - .addClass( "ui-state-active" ); +/*! + * jQuery UI Unique ID 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - if ( event && event.type === "keydown" ) { - this._close(); - } else { - this.timer = this._delay(function() { - this._close(); - }, this.delay ); - } +//>>label: uniqueId +//>>group: Core +//>>description: Functions to generate and remove uniqueId's +//>>docs: http://api.jqueryui.com/uniqueId/ - nested = item.children( ".ui-menu" ); - if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { - this._startOpening(nested); - } - this.activeMenu = item.parent(); - this._trigger( "focus", event, { item: item } ); - }, - _scrollIntoView: function( item ) { - var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; - if ( this._hasScroll() ) { - borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; - paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; - offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; - scroll = this.activeMenu.scrollTop(); - elementHeight = this.activeMenu.height(); - itemHeight = item.outerHeight(); +var uniqueId = $.fn.extend( { + uniqueId: ( function() { + var uuid = 0; - if ( offset < 0 ) { - this.activeMenu.scrollTop( scroll + offset ); - } else if ( offset + itemHeight > elementHeight ) { - this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + return function() { + return this.each( function() { + if ( !this.id ) { + this.id = "ui-id-" + ( ++uuid ); + } + } ); + }; + } )(), + + removeUniqueId: function() { + return this.each( function() { + if ( /^ui-id-\d+$/.test( this.id ) ) { + $( this ).removeAttr( "id" ); } - } - }, + } ); + } +} ); - blur: function( event, fromFocus ) { - if ( !fromFocus ) { - clearTimeout( this.timer ); - } - if ( !this.active ) { - return; - } +/*! + * jQuery UI Accordion 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ - this.active.removeClass( "ui-state-focus" ); - this.active = null; +//>>label: Accordion +//>>group: Widgets +// jscs:disable maximumLineLength +//>>description: Displays collapsible content panels for presenting information in a limited amount of space. +// jscs:enable maximumLineLength +//>>docs: http://api.jqueryui.com/accordion/ +//>>demos: http://jqueryui.com/accordion/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/accordion.css +//>>css.theme: ../../themes/base/theme.css - this._trigger( "blur", event, { item: this.active } ); - }, - _startOpening: function( submenu ) { - clearTimeout( this.timer ); - // Don't open if already open fixes a Firefox bug that caused a .5 pixel - // shift in the submenu position when mousing over the carat icon - if ( submenu.attr( "aria-hidden" ) !== "true" ) { - return; - } +var widgetsAccordion = $.widget( "ui.accordion", { + version: "1.12.1", + options: { + active: 0, + animate: {}, + classes: { + "ui-accordion-header": "ui-corner-top", + "ui-accordion-header-collapsed": "ui-corner-all", + "ui-accordion-content": "ui-corner-bottom" + }, + collapsible: false, + event: "click", + header: "> li > :first-child, > :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, - this.timer = this._delay(function() { - this._close(); - this._open( submenu ); - }, this.delay ); + // Callbacks + activate: null, + beforeActivate: null }, - _open: function( submenu ) { - var position = $.extend({ - of: this.active - }, this.options.position ); - - clearTimeout( this.timer ); - this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) - .hide() - .attr( "aria-hidden", "true" ); + hideProps: { + borderTopWidth: "hide", + borderBottomWidth: "hide", + paddingTop: "hide", + paddingBottom: "hide", + height: "hide" + }, - submenu - .show() - .removeAttr( "aria-hidden" ) - .attr( "aria-expanded", "true" ) - .position( position ); + showProps: { + borderTopWidth: "show", + borderBottomWidth: "show", + paddingTop: "show", + paddingBottom: "show", + height: "show" }, - collapseAll: function( event, all ) { - clearTimeout( this.timer ); - this.timer = this._delay(function() { - // If we were passed an event, look for the submenu that contains the event - var currentMenu = all ? this.element : - $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); + _create: function() { + var options = this.options; - // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway - if ( !currentMenu.length ) { - currentMenu = this.element; - } + this.prevShow = this.prevHide = $(); + this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); + this.element.attr( "role", "tablist" ); - this._close( currentMenu ); + // Don't allow collapsible: false and active: false / null + if ( !options.collapsible && ( options.active === false || options.active == null ) ) { + options.active = 0; + } - this.blur( event ); - this.activeMenu = currentMenu; - }, this.delay ); - }, + this._processPanels(); - // With no arguments, closes the currently active menu - if nothing is active - // it closes all menus. If passed an argument, it will search for menus BELOW - _close: function( startMenu ) { - if ( !startMenu ) { - startMenu = this.active ? this.active.parent() : this.element; + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; } - - startMenu - .find( ".ui-menu" ) - .hide() - .attr( "aria-hidden", "true" ) - .attr( "aria-expanded", "false" ) - .end() - .find( ".ui-state-active" ).not( ".ui-state-focus" ) - .removeClass( "ui-state-active" ); + this._refresh(); }, - _closeOnDocumentClick: function( event ) { - return !$( event.target ).closest( ".ui-menu" ).length; + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next() + }; }, - _isDivider: function( item ) { + _createIcons: function() { + var icon, children, + icons = this.options.icons; - // Match hyphen, em dash, en dash - return !/[^\-\u2014\u2013\s]/.test( item.text() ); + if ( icons ) { + icon = $( "" ); + this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); + icon.prependTo( this.headers ); + children = this.active.children( ".ui-accordion-header-icon" ); + this._removeClass( children, icons.header ) + ._addClass( children, null, icons.activeHeader ) + ._addClass( this.headers, "ui-accordion-icons" ); + } }, - collapse: function( event ) { - var newItem = this.active && - this.active.parent().closest( ".ui-menu-item", this.element ); - if ( newItem && newItem.length ) { - this._close(); - this.focus( event, newItem ); - } + _destroyIcons: function() { + this._removeClass( this.headers, "ui-accordion-icons" ); + this.headers.children( ".ui-accordion-header-icon" ).remove(); }, - expand: function( event ) { - var newItem = this.active && - this.active - .children( ".ui-menu " ) - .find( this.options.items ) - .first(); + _destroy: function() { + var contents; - if ( newItem && newItem.length ) { - this._open( newItem.parent() ); + // Clean up main element + this.element.removeAttr( "role" ); - // Delay so Firefox will not hide activedescendant change in expanding submenu from AT - this._delay(function() { - this.focus( event, newItem ); - }); - } - }, + // Clean up headers + this.headers + .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) + .removeUniqueId(); - next: function( event ) { - this._move( "next", "first", event ); - }, + this._destroyIcons(); - previous: function( event ) { - this._move( "prev", "last", event ); - }, + // Clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role aria-hidden aria-labelledby" ) + .removeUniqueId(); - isFirstItem: function() { - return this.active && !this.active.prevAll( ".ui-menu-item" ).length; + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } }, - isLastItem: function() { - return this.active && !this.active.nextAll( ".ui-menu-item" ).length; - }, + _setOption: function( key, value ) { + if ( key === "active" ) { - _move: function( direction, filter, event ) { - var next; - if ( this.active ) { - if ( direction === "first" || direction === "last" ) { - next = this.active - [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) - .eq( -1 ); - } else { - next = this.active - [ direction + "All" ]( ".ui-menu-item" ) - .eq( 0 ); + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); } + this._setupEvents( value ); } - if ( !next || !next.length || !this.active ) { - next = this.activeMenu.find( this.options.items )[ filter ](); + + this._super( key, value ); + + // Setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); } - this.focus( event, next ); + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } }, - nextPage: function( event ) { - var item, base, height; + _setOptionDisabled: function( value ) { + this._super( value ); - if ( !this.active ) { - this.next( event ); + this.element.attr( "aria-disabled", value ); + + // Support: IE8 Only + // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + this._toggleClass( null, "ui-state-disabled", !!value ); + this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", + !!value ); + }, + + _keydown: function( event ) { + if ( event.altKey || event.ctrlKey ) { return; } - if ( this.isLastItem() ) { - return; + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.nextAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base - height < 0; - }); - this.focus( event, item ); - } else { - this.focus( event, this.activeMenu.find( this.options.items ) - [ !this.active ? "first" : "last" ]() ); + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + $( toFocus ).trigger( "focus" ); + event.preventDefault(); } }, - previousPage: function( event ) { - var item, base, height; - if ( !this.active ) { - this.next( event ); - return; - } - if ( this.isFirstItem() ) { - return; + _panelKeyDown: function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().trigger( "focus" ); } - if ( this._hasScroll() ) { - base = this.active.offset().top; - height = this.element.height(); - this.active.prevAll( ".ui-menu-item" ).each(function() { - item = $( this ); - return item.offset().top - base + height > 0; - }); + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // Was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || + !this.headers.length ) { + options.active = false; + this.active = $(); + + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - this.focus( event, item ); + // all remaining panel are disabled + if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { + options.active = false; + this.active = $(); + + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + + // was active, active panel still exists } else { - this.focus( event, this.activeMenu.find( this.options.items ).first() ); + + // make sure active index is correct + options.active = this.headers.index( this.active ); } - }, - _hasScroll: function() { - return this.element.outerHeight() < this.element.prop( "scrollHeight" ); - }, + this._destroyIcons(); - select: function( event ) { - // TODO: It should never be possible to not have an active item at this - // point, but the tests don't trigger mouseenter before click. - this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); - var ui = { item: this.active }; - if ( !this.active.has( ".ui-menu" ).length ) { - this.collapseAll( event, true ); - } - this._trigger( "select", event, ui ); + this._refresh(); }, - _filterMenuItems: function(character) { - var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ), - regex = new RegExp( "^" + escapedCharacter, "i" ); - - return this.activeMenu - .find( this.options.items ) + _processPanels: function() { + var prevHeaders = this.headers, + prevPanels = this.panels; - // Only match on items, not dividers or other content (#10571) - .filter( ".ui-menu-item" ) - .filter(function() { - return regex.test( $.trim( $( this ).text() ) ); - }); - } -}); + this.headers = this.element.find( this.options.header ); + this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", + "ui-state-default" ); + this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); + this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); -/*! - * jQuery UI Autocomplete 1.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/autocomplete/ - */ + // Avoid memory leaks (#10056) + if ( prevPanels ) { + this._off( prevHeaders.not( this.headers ) ); + this._off( prevPanels.not( this.panels ) ); + } + }, + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(); -$.widget( "ui.autocomplete", { - version: "1.11.4", - defaultElement: "", - options: { - appendTo: null, - autoFocus: false, - delay: 300, - minLength: 1, - position: { - my: "left top", - at: "left bottom", - collision: "none" - }, - source: null, + this.active = this._findActive( options.active ); + this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) + ._removeClass( this.active, "ui-accordion-header-collapsed" ); + this._addClass( this.active.next(), "ui-accordion-content-active" ); + this.active.next().show(); - // callbacks - change: null, - close: null, - focus: null, - open: null, - response: null, - search: null, - select: null - }, + this.headers + .attr( "role", "tab" ) + .each( function() { + var header = $( this ), + headerId = header.uniqueId().attr( "id" ), + panel = header.next(), + panelId = panel.uniqueId().attr( "id" ); + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + } ) + .next() + .attr( "role", "tabpanel" ); - requestIndex: 0, - pending: 0, + this.headers + .not( this.active ) + .attr( { + "aria-selected": "false", + "aria-expanded": "false", + tabIndex: -1 + } ) + .next() + .attr( { + "aria-hidden": "true" + } ) + .hide(); - _create: function() { - // Some browsers only repeat keydown events, not keypress events, - // so we use the suppressKeyPress flag to determine if we've already - // handled the keydown event. #7269 - // Unfortunately the code for & in keypress is the same as the up arrow, - // so we use the suppressKeyPressRepeat flag to avoid handling keypress - // events when we know the keydown event was used to modify the - // search term. #7799 - var suppressKeyPress, suppressKeyPressRepeat, suppressInput, - nodeName = this.element[ 0 ].nodeName.toLowerCase(), - isTextarea = nodeName === "textarea", - isInput = nodeName === "input"; + // Make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ) + .next() + .attr( { + "aria-hidden": "false" + } ); + } - this.isMultiLine = - // Textareas are always multi-line - isTextarea ? true : - // Inputs are always single-line, even if inside a contentEditable element - // IE also treats inputs as contentEditable - isInput ? false : - // All other element types are determined by whether or not they're contentEditable - this.element.prop( "isContentEditable" ); + this._createIcons(); - this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; - this.isNewMenu = true; + this._setupEvents( options.event ); - this.element - .addClass( "ui-autocomplete-input" ) - .attr( "autocomplete", "off" ); + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each( function() { + var elem = $( this ), + position = elem.css( "position" ); - this._on( this.element, { - keydown: function( event ) { - if ( this.element.prop( "readOnly" ) ) { - suppressKeyPress = true; - suppressInput = true; - suppressKeyPressRepeat = true; + if ( position === "absolute" || position === "fixed" ) { return; } + maxHeight -= elem.outerHeight( true ); + } ); - suppressKeyPress = false; - suppressInput = false; - suppressKeyPressRepeat = false; - var keyCode = $.ui.keyCode; - switch ( event.keyCode ) { - case keyCode.PAGE_UP: - suppressKeyPress = true; - this._move( "previousPage", event ); - break; - case keyCode.PAGE_DOWN: - suppressKeyPress = true; - this._move( "nextPage", event ); - break; - case keyCode.UP: - suppressKeyPress = true; - this._keyEvent( "previous", event ); - break; - case keyCode.DOWN: - suppressKeyPress = true; - this._keyEvent( "next", event ); - break; - case keyCode.ENTER: - // when menu is open and has focus - if ( this.menu.active ) { - // #6055 - Opera still allows the keypress to occur - // which causes forms to submit - suppressKeyPress = true; - event.preventDefault(); - this.menu.select( event ); - } - break; - case keyCode.TAB: - if ( this.menu.active ) { - this.menu.select( event ); - } - break; - case keyCode.ESCAPE: - if ( this.menu.element.is( ":visible" ) ) { - if ( !this.isMultiLine ) { - this._value( this.term ); - } - this.close( event ); - // Different browsers have different default behavior for escape - // Single press can mean undo or clear - // Double press in IE means clear the whole form - event.preventDefault(); + this.headers.each( function() { + maxHeight -= $( this ).outerHeight( true ); + } ); + + this.headers.next() + .each( function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + } ) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each( function() { + var isVisible = $( this ).is( ":visible" ); + if ( !isVisible ) { + $( this ).show(); } - break; - default: - suppressKeyPressRepeat = true; - // search timeout should be triggered before the input value is changed - this._searchTimeout( event ); - break; - } - }, - keypress: function( event ) { - if ( suppressKeyPress ) { - suppressKeyPress = false; - if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { - event.preventDefault(); + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + if ( !isVisible ) { + $( this ).hide(); } - return; - } - if ( suppressKeyPressRepeat ) { - return; - } + } ) + .height( maxHeight ); + } + }, - // replicate some key handlers to allow them to repeat in Firefox and Opera - var keyCode = $.ui.keyCode; - switch ( event.keyCode ) { - case keyCode.PAGE_UP: - this._move( "previousPage", event ); - break; - case keyCode.PAGE_DOWN: - this._move( "nextPage", event ); - break; - case keyCode.UP: - this._keyEvent( "previous", event ); - break; - case keyCode.DOWN: - this._keyEvent( "next", event ); - break; - } - }, - input: function( event ) { - if ( suppressInput ) { - suppressInput = false; - event.preventDefault(); - return; - } - this._searchTimeout( event ); - }, - focus: function() { - this.selectedItem = null; - this.previous = this._value(); - }, - blur: function( event ) { - if ( this.cancelBlur ) { - delete this.cancelBlur; - return; - } + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; - clearTimeout( this.searching ); - this.close( event ); - this._change( event ); - } - }); + // Trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // Trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler( { + target: active, + currentTarget: active, + preventDefault: $.noop + } ); + }, - this._initSource(); - this.menu = $( "
      " ) - .addClass( "ui-autocomplete ui-front" ) - .appendTo( this._appendTo() ) - .menu({ - // disable ARIA support, the live region takes care of that - role: null - }) - .hide() - .menu( "instance" ); + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, - this._on( this.menu.element, { - mousedown: function( event ) { - // prevent moving focus out of the text field - event.preventDefault(); + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split( " " ), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + } ); + } - // IE doesn't prevent moving focus even with event.preventDefault() - // so we set a flag to know when we should ignore the blur event - this.cancelBlur = true; - this._delay(function() { - delete this.cancelBlur; - }); - - // clicking on the scrollbar causes focus to shift to the body - // but we can't detect a mouseup or a click immediately afterward - // so we have to track the next mousedown and close the menu if - // the user clicks somewhere outside of the autocomplete - var menuElement = this.menu.element[ 0 ]; - if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { - this._delay(function() { - var that = this; - this.document.one( "mousedown", function( event ) { - if ( event.target !== that.element[ 0 ] && - event.target !== menuElement && - !$.contains( menuElement, event.target ) ) { - that.close(); - } - }); - }); - } - }, - menufocus: function( event, ui ) { - var label, item; - // support: Firefox - // Prevent accidental activation of menu items in Firefox (#7024 #9118) - if ( this.isNewMenu ) { - this.isNewMenu = false; - if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { - this.menu.blur(); + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, - this.document.one( "mousemove", function() { - $( event.target ).trigger( event.originalEvent ); - }); + _eventHandler: function( event ) { + var activeChildren, clickedChildren, + options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; - return; - } - } + event.preventDefault(); - item = ui.item.data( "ui-autocomplete-item" ); - if ( false !== this._trigger( "focus", event, { item: item } ) ) { - // use value to match what will end up in the input, if it was a key event - if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { - this._value( item.value ); - } - } + if ( - // Announce the value in the liveRegion - label = ui.item.attr( "aria-label" ) || item.value; - if ( label && $.trim( label ).length ) { - this.liveRegion.children().hide(); - $( "
      " ).text( label ).appendTo( this.liveRegion ); - } - }, - menuselect: function( event, ui ) { - var item = ui.item.data( "ui-autocomplete-item" ), - previous = this.previous; + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || - // only trigger when focus was lost (click on menu) - if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) { - this.element.focus(); - this.previous = previous; - // #6109 - IE triggers two focus events and the second - // is asynchronous, so we need to reset the previous - // term synchronously and asynchronously :-( - this._delay(function() { - this.previous = previous; - this.selectedItem = item; - }); - } + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } - if ( false !== this._trigger( "select", event, { item: item } ) ) { - this._value( item.value ); - } - // reset the term after the select event - // this allows custom select handling to work properly - this.term = this._value(); + options.active = collapsing ? false : this.headers.index( clicked ); - this.close( event ); - this.selectedItem = item; - } - }); + // When the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); - this.liveRegion = $( "", { - role: "status", - "aria-live": "assertive", - "aria-relevant": "additions" - }) - .addClass( "ui-helper-hidden-accessible" ) - .appendTo( this.document[ 0 ].body ); + // Switch classes + // corner classes on the previously active header stay after the animation + this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + activeChildren = active.children( ".ui-accordion-header-icon" ); + this._removeClass( activeChildren, null, options.icons.activeHeader ) + ._addClass( activeChildren, null, options.icons.header ); + } - // turning off autocomplete prevents the browser from remembering the - // value when navigating through history, so we re-enable autocomplete - // if the page is unloaded before the widget is destroyed. #7790 - this._on( this.window, { - beforeunload: function() { - this.element.removeAttr( "autocomplete" ); + if ( !clickedIsActive ) { + this._removeClass( clicked, "ui-accordion-header-collapsed" ) + ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + clickedChildren = clicked.children( ".ui-accordion-header-icon" ); + this._removeClass( clickedChildren, null, options.icons.header ) + ._addClass( clickedChildren, null, options.icons.activeHeader ); } - }); + + this._addClass( clicked.next(), "ui-accordion-content-active" ); + } }, - _destroy: function() { - clearTimeout( this.searching ); - this.element - .removeClass( "ui-autocomplete-input" ) - .removeAttr( "autocomplete" ); - this.menu.element.remove(); - this.liveRegion.remove(); + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // Handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr( { + "aria-hidden": "true" + } ); + toHide.prev().attr( { + "aria-selected": "false", + "aria-expanded": "false" + } ); + + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( { + "tabIndex": -1, + "aria-expanded": "false" + } ); + } else if ( toShow.length ) { + this.headers.filter( function() { + return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; + } ) + .attr( "tabIndex", -1 ); + } + + toShow + .attr( "aria-hidden", "false" ) + .prev() + .attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ); }, - _setOption: function( key, value ) { - this._super( key, value ); - if ( key === "source" ) { - this._initSource(); + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + boxSizing = toShow.css( "box-sizing" ), + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; } - if ( key === "appendTo" ) { - this.menu.element.appendTo( this._appendTo() ); + if ( typeof options === "string" ) { + easing = options; } - if ( key === "disabled" && value && this.xhr ) { - this.xhr.abort(); + + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( this.showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( this.hideProps, duration, easing, complete ); } + + total = toShow.show().outerHeight(); + toHide.animate( this.hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + } ); + toShow + .hide() + .animate( this.showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + if ( boxSizing === "content-box" ) { + adjust += fx.now; + } + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + } ); }, - _appendTo: function() { - var element = this.options.appendTo; + _toggleComplete: function( data ) { + var toHide = data.oldPanel, + prev = toHide.prev(); - if ( element ) { - element = element.jquery || element.nodeType ? - $( element ) : - this.document.find( element ).eq( 0 ); + this._removeClass( toHide, "ui-accordion-content-active" ); + this._removeClass( prev, "ui-accordion-header-active" ) + ._addClass( prev, "ui-accordion-header-collapsed" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; } + this._trigger( "activate", null, data ); + } +} ); + + + +var safeActiveElement = $.ui.safeActiveElement = function( document ) { + var activeElement; + + // Support: IE 9 only + // IE9 throws an "Unspecified error" accessing document.activeElement from an

5q!RY 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 diff --git a/web/fonts/fontawesome-webfont.svg b/web/fonts/fontawesome-webfont.svg index d05688e9..855c845e 100644 --- a/web/fonts/fontawesome-webfont.svg +++ b/web/fonts/fontawesome-webfont.svg @@ -1,655 +1,2671 @@ - - + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/fonts/fontawesome-webfont.ttf b/web/fonts/fontawesome-webfont.ttf index 26dea7951a73079223b50653c455c5adf46a4648..35acda2fa1196aad98c2adf4378a7611dd713aa3 100644 GIT binary patch delta 30646 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 F{t4uIb!h+q delta 7574 zcmb6;3s_S})^q0GBsUL|o7YVUAqfd2ydOzO5al5v;v3%&Pyq!25m8amTEpU_ma0{* zORTHbwQA9Itt-}aZELCPT5Da`w$`@RT5WB0U20vct*a9M3E*z`|Nig)zdtwko^xi- zIWu==&ST~tSTA|-3FAY65R#)NM4{4xg7G73sCjXuq>J3fA^C#~@DW5K1Pq}qqsOH< z*G^exB6KXFOJ~k4tAF)9-&{hkMF`)WUAD0P$rGXp(aT9aGrM+ar8<$HPv}($9wk;) zl+6m0y*B~DlS8E5Q&m;rD^pOCVp4FE6hv3eZD{1K{PkS>xc_(WB z7aRHywuxayz7X4!Z=TG0GVRHfC*z+Cdg8n){p!Y7Z(RB5%ST@xyJTjKYy=z5>RBDj zv07Hcs#z7QWNDUSF$*kGJW&J{-HOMGM~a7ve<~g*epdXXxUaaU_)&3J@ejov#Se<_ z6_)H4EuSQ5@}l7$1!r^zz~K;8iJ2Mj4> zPX6^v>-f}gmXb6HnvfYe5Q^bvyu=l;LW`aCSOiV2OCPr_Z53%Po`Q-jao)JqYgUiT z6K7Qvcr02`u=85*#I?XN zP;e*6Vp&IP3Jq8;?bwnUFQAh1lRN&LPC*ayf#(Y$rd51<*1Ncv^=1Qq zD?5!6`lESsj)%ey6+b1%*|9$74+<=0_}tOIl1dqTN-Z;VXA=7C=u|m*e|2}JT1`p~ z0*03qnF(h{LXiw2LRF+VR86WD5-CBaK}JYM%8wm0DYdtr5!ek)27Av#!2A!q_|#LO z&&P}+N`J}zA4)s&#-_+&G{2xU9w!68y>t+5iq|OlZ%VT%&JfAl%4{7&%iaaLI#^P} z%V&28OI|GeQOwhZHUE*c8MI=U9638pd#J!ujmGQ%R`Avk10F(?VS(0Vf4LWkY!(Qyt= zBqWHVkJSAFl3Ja{CQNs`2o_=jrAC+l)?}Oo{EFs`*>WJ1JzeScxT2gKv@o(TF(Z>X z#bQP!7N-lyv{Mp^Q79pcQX*bPE0m0a9Y7YnG80>9mZeVZTXL0EauRpH;OG@ZPFOmjc)mDR zuQwQ^mL&1~;t5N6|4K_(GsWqs-e&e8{F-?p4X)A_HBub@( z6UJ^wh<|NGvBZ^YE)tiIYzqFsYkWh+%BGR!;v#ddtE18v1**Yl0&zTUM>3>9GPYUe z!26r}YcVw>JzZerB&y5|R-~43)XW#X{NI}TO9V`UF_O|q2IldpzZwXLum9DzT4L=_ zUhSF8u|%5&k$LNxhn%=*3#}5O;1@R|!vD{av?M?o?1Hj$xam=F-bjI7_3{5cBFaii zr5B8ZO^-e#Qs;s%qmG|eh6$Bkl!F$Mb>vdo$ck_zV_w}-Nn=WY`Ly*qzO`j2O;JM3 zf7vpwBkhIpA}pXfo@U0d1X`?#&pWdOz`OooRT&>s2kpbD!Kr{_iqeW;XLShiw z_!-w$QIaqj|LwI09bbIi4q;X_gmhJFO98vX#@Bso;167PfSCXEdJbrL!?%M8N5Ow^ z3?#K3-)4ihme%RSNl- zwfpTduw!FpV3Z8@f+S|}AiL3MA2c{75DbGG;3KvuKuCd7LPqQWyGW>2YIK~->4j*G z97NC~Ah)fvHe%1fp|hCqaAwxffqQB@Ykx@w-ef@nJ`z3q+=iBf zh7>Zo&JZ)(=t40KX>bnyD?O}^J(_cg(Xv5^NOV|yM48^%0p$r#hnFos?{rlAh6 z&BdLgLwoZ_5Gyj}Z_cE7E_!2pvHC%OYVMBNt&Tr!Olel;0s!`B#z7HQYW?ftAfB0Jj*Hc10r-!{!IFSG9_$nr6bDL@ppC+; zA#g7hcF;KaoxtXFxK81O{J^q)@Tm;fB>2Y_z$@6M2s|hNmw<{yG5+Kcz%d@D8KS%% zr+?H4&}U>68LvbAbz@ORaOcWnD_0()E(b3^KAoJGmkdq8rVykuAez)0uU|K26nz`w zAx0F~IRb`ZEWm-TQSc@sei3a)zeDe!kNt-x!6rxx44Molz)w$w&jpJ}=DF6NS`H4s zxEO|l`_-||33!X zUWc0HDX;8ogN^nYQeJ-xHreUYVKx3C%faHWUJif46dOo>7M1}nNDAy<0e_@@ONf!I zC$FJI$!Gv7AyaR{LQyhJY&RQpT#ShhnX=7FXkx|0N7_AJkBbCKp~&v=IP8wlBIML2 zN+k(deJ`U&TVa^k6Ky~LiNEtxqplg@VJugPwKeNwf@tkDe5_qir{68q_62gI|f zCXqQQ#~PP14kjtR%H(iU#GnP`Vxgg19GRIAt{6R(o9uGf2Dwa`xl)xaUPoJ#2F4_& zO`u-SdUnUofn&B*j*bTFs^t#rxOcm_O5c^{$s%($@ThWIrsC#)iOXsC4};-9n{9~ow?#$k21y~I@! zPvs!Yq}C;}$#F=hw`ZD&h}Wglh-^Z_)l<}?lJk=J3N=D%MZ_D2bdsJt<>_npzxTuQ zi(dHttw0mf;36;Z?;dk(GI?ncr?c4|q#2Kw=$8X)0@4Y)!^P=HyFw9Zt|$NcrBlT( zhoxwg9IVSG)4{@7xM`N8AR4VoJFim7;maIiXyRCpk^3Gt4_cS#d-fMnnxMJO-8XP zVum-~7WYD!m{YMC6en^~a@|?6ku%3egli)tMlLCRNQU9hbQqls8i&qjbfqX5Oj={? zkwe$ZMLMN2gHlV}v_iK%BO#sAMVe#0F=poXe4x^luo0R3?ov<6@n0_Flv#Q(Krfew=%^pxp%pblfa7hipL>p=XEzKS#Q_8NGyFCWibf+K+yZ4x=~Gar7=aiO%^~ z?S<)-(**vn_rh@+3xwGJ+gIU3l8{4SVLMPFyn0oj@io}3z>%ha=^Yp>lOBe5;WM}i z-B=c=`v9H+Lk^^CNj^k^Dsh^2hn%qq9db%!6mYG;1#xw-zzd|~YEZ*P$JnR9n|N40tOkpAT6F-Cjf$9(8w#GLQ zH4r}(vT>c-Mum(sgmMPrpkjJ$Uk5$uk5^45MNKR{R4Sruzd(r?L|Gk>OuUiDjZBNZlk*dOip9SyH-+X5n>K>F3Ts_VZ zXMs(o1|wXN$&>S3F~KTqlgm@`QtjP)@qT;iKbu^z++Lquy;&+Xu?ZrKZ2D;}l1U3^ zj|q;4k};WvE`(S0yHFztJ|5{6@B{;WqZ z952Z7w>*Nu*un%pd;}YWUK!GmP=UZ1$|ifanjE$u7Lhx~>FF7E;)tDO20R$$W%umD zvo`rRV;mK(pmT#4f|G+6AQ9R}sEn#}t#Xx0zGPqEJjP$qR4y9tKP0<2B#F5h)6D4zxC0}O-h(|$Fk||p zpD^ekDcSsou&*w7tuT0Rhrc`+Y-vs1kY2#PEc>ZpW^z9x+2>BbO zxP&3EDMdOo$A4Lhb9DVd8Ct1M5-~;EC?`qiZBbg6)1N29Sqhf5*xhyuuq+$A!?OMz zGVC(5@Vq)YbXpRv7PD8`Cbqtw?YX-*)|1E|cr3$jOL9o&hiDLPtXWkwLowh!l8Q({ z@44MmNDk0K`?nCu^c>%XFd|3xwqNo_h)}PfntIMY5DsmqJ3}{r4h(q|;S&O##wz2P2z3(U~eA;I^Bu;j3KA?A6R-p7$MlmGu^LPe+* zU4T5Ohl6CBHh_wzn(0FN9Q{x*K(JTvSU6sIQdB8=%#3GRnXBSLal1Gu87tW+xg<@L zZk6TB8f9m~JYgliu-)=}dAovBj8N=lC$lZ=*UEV1E>*0mN$u2N&2-H%twvkN>A4o} zu`X4&T-T|)tvBe)^_RjYho3OS8>Sj|8qOQKA}kTv5p@wqBCZ=bW3I8rc+_|+GCy)n z9jf7+-yE+er$1D>MZS+uBZV~>!MCXU9tK+)@Ey$ZMv=97K~mKeK966<~w_{ z{RHvBMUG{To3XjEvtswhUXA183gY(0U5?L%15pkg-4Z)x-vR> zbkpbyBqp97Lys9XX3d!EV@t<9oZy+zIWczPvWa^q`tDB3p42kw;$-XOy2)E6pP1Y= zg_|;c%7H1jraGt2n%Y@xEM8ZK zySmn}_R!kzo*(dh>+@Gyj4g{>PQMWU!n$?Bb!*q%TYqHztqtxCtsBn1$h^31WBkT7 z8_#V*n?`Ip)EeZEZ?6A!LtFh8dQ0AxH?~}T$@0>+t$6E#t(Sf?>Nj26ineubXScU( zKeFTA%M*9T?ri^U>~C9tdvjOSuE(!b`F5k-<98q3jvu=Fhi!+^;bk4}j-5xG zM>>yA4P^Y0Ic7Qb_|4KcFTXYYt+Q`We|zuSw~n7Ue)S#ponh~s>n!O!*!kVNjqi4y zsQlBYKV3SRdeV33e8r)p1~c+c|QuG3fFx4ysi40mSpnVTP6JiGiamcMK}N1vN` zZuehhe_eLobpG&%<3GIf(d3Vge{BD_^y3XZ*U1Zs7uqibKdJkq>tgK1l8aj}c72-h zY00IAOJ~1W^Tqkg`pc!4+b`ez((vWjFWyFIpZu_6EkWaFr_Y1U`IBq#fpn7qNY>k`yaGD&{9qPjcB(7iV!-d4fKJ3FqXczeu(ksg#Jsj@C z#Yh8Z`fw?Vhbw)!91XxsFYZC75r^~pD&9w_cxoSh1~Is$5B~s3aBDCAIfV>(n}0(U zPJ?uRXBAHJZ>q*z_*hhdW|Qo;7L}m|B-|_|&xI%xS^OKTu}(@5^$Af72YC;BTFS2lytDnsQXx(?Uo#jp$D$CzuOJs}?khlrJVQ)Xh+xhx9%T zWss+fTu-~7PO|t4a@F_rptrZ7-qiK*xI+#Zy zN?AHee_CjYtFHG-+ b=>>xXvun#12DZ<~3snq)iK91=53m0PtWqDQ diff --git a/web/fonts/fontawesome-webfont.woff b/web/fonts/fontawesome-webfont.woff index dc35ce3c2cf688c89b0bd0d4a82bc4be82b14c40..400014a4b06eee3d0c0d54402a47ab2601b2862b 100644 GIT binary patch literal 98024 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 SdSQM28?+M|D(2r_;{O0|uQ74} literal 83588 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�>=olG4!T4BYNCc4f{&*Kgc`m= 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 literal 66624 zcmV(@K-Rx^Pew8T0RR910R%t*4gdfE0xIYL0R!Lw1OWyB00000000000000000000 z0000#Mn+Uk92y`7U;u@35eN#0_8f+=H32pPBm62nVnrKX+wfW(HgQ z!I6O0K-P>G<)&^!fXB<6<#Yj5Ot;CQ^kxN!)^r`A$jGp90LJL4HT(bn|35uxh-~H3 zkzCt$Y#@RIRR4qQkYX0n71<#4F$ZSDx}G=GREJU13W|b66FWM;(5@0Om2B6(YIcaP zWzq-i(r%LvMTw{f-=J$XKJTMs4>wV%Y>IzEVU*kol6B&ET`u{Bi`MzTSCT`uhLOl5 zt~eBSBcJhkV6?(U6(2ESP2xC%nCPpZg{pVyJ$xt8l!7p(iBx>7@G>tPicRz-o?;TS zAc%BXBq6BEkdVU9HDh8E%$lNuTspY;0^V{*< zT0I?=4BFN;W95x&`CqzjGwkDxzT7BR$%FRokJR~({TJI#VP`7_uLYgoPv)q!Qo$#( z!p1d-hN3+`gy+Bi>und#soPAyh@A|i9y+kziz@VAR=x)E7vLBJ*YNz@dMkQkgE3$T zj8P+Mj2`SSl3FmLwh=9r!bX)6X@Oz|Mj|rLJViyts1xlw>+~XZKhd21+u7X|4jO{g zQrUr8>PS+t9YoXnw|J^qEDbe+RCK0xVic;JWzW3kSx$fJsdGk7L@NXT`t!H;^tSJ} zF$f6=hm{!5q+o!y*#X)_3n-E%Hez8=HYlKg)ff?2vo>c=SH?DLF4Z|*x~O&?AM2r- z>i?`HLuRygz;^l&ct8-aElRjxN3fUKchvrOTM*bmgTNFM1i0li18s9jJ^;o4&uQ=3 z&lB?)9&iQ2fJP`XVzs;47=B2}T}qW*l(A~vxvkvPM$Kj|ehWbS$MeM+`e$bkLZB_6 z1yp$MC8?@#Rn>K#jBRBH&Itx5zxuMe0UYAxJH`R%KsV40bOSwbPS6ADvicnlFJB*3 zIKY4nl<#ulhQRRubM~F{SUqRguY`ocNC*+2of_?k=#>^~lo4at*^ZFhpJdmQUomVt zF=>I~Nuab;lyZdEKBKy-?Z9?>M`GBvv8hxsD(~^qX4Ngtc-Jjy?Av>yj4=YtXuz<* zJ_OGwk?J$`Gl1bCq9nOG1R2{I6>8Of|L>dZ-#T??cF!L8mGY?w86}w%(Y+h$gu6en z46tOO5H%~Z6aoMDzh+hKdKIkFjacGX96ah{B|v6ENKe8zo5Ki?`f2&=N3Va4d&C5< zTh+4CO(Ua5T5AU)UzaBmZhQN0CXqL#v$Ru6?Sdg;!$I;D0G6^9#F|iQrFKE^=O>Bp z*z^FHmAB3Gw5`>DRZq~pm)TC2skxo02vPaQz=Y7tkAe5o`pWhy3m+mxeo!2ane3`C zrp(5-NlJ2PFZ8yfdJX`%8MU06L84F+A-l!-n`Ow0lyTvk@*rmTFvV zY-FT~!RYn81tK{T_w=S^yZ{QYh;(A@xtZh!_22qXZ?0Hk=+0L5j4 z)ac;E0U-whAO`{{jdhec<9`D(4Qfn-G6QlQ$aUmeaxAsZYR(xSB$r)XG~tAogd3jm z(O#Tg7&;qd_xGk+r2s{YwAN_nybq#T=knXiFUaxU|J}|1e>cGH21s=`KnVaT5ddYn zK}Z59&Hx~(Z8k}{brjcWv`*_aTIYxcWk89u1T{`t>!J%X<7^h}Wm^|So8=c|7vx6} zE}PBGU01KMXoHd2rH9%TLV-jG3BmGEdJxM3iX`c7GUo}b8(@F}KtkpJa5sQ|n#}Hl zRf5UJu~hFp@n3{V>*Gl8@sBhI-TTax^L z2`~U3PP>N#-~+9HH{kQ75mV^X%0Np1U@;iG2!rpQ15U3uYY@C&;m-kpMeSkjB)}}= z&#T7QzkdY$8%knBF~_JFfU2Ec9k#^}%|6`oPj3s-dTb!@@ zVDF5cGAKn~`~v%Ht%zb`uD#72=x{gsxdZ*bjJF6e$m%vb;H(>dcEJB{Tf}0w4%aZ;+rPsxd` z-jM874pGC@vE|ubCl;m5*h1%rzXh87|mf(IBA@oeGB zL~pxL)g#C}}arC5MF9cV!wjLDJQgya%j}N?jIBG-b4iAj4<4 zlEld6V)2wdYCw?`rrc#!cM5fS^8mGP$|KL;TU7~r zGdC(KMe+k?TMtAuM`}U)(V`6};X3c08ROF4%*puFg*dkSU{}8fMilXq9rI&rPcE9T zzB&S^amor%X-^m|wpP5=)2rRR^4@sm1T#x+H5Qbm7syI#!In%QdwX7_6wwi8vw6E+ zPhK656G5Iv(U!e{&jAe|=E(Cyny@f~eX+P$_egGmyN-FQG}UxU6cX)Y0VXB|d%#+M zbK^$0$;bPAa#)N;8#RfAw9C5QQ0j^mA7(ZDg1N2_4qpLk^Z*Ct+YVY2v1^#2?QSUP z@(J%8p7GI9bKE?YA4U0}C!9JW0$|BZ#Yg#+Ip_JjYii98Q$seK205hq5|klTUb<pH62cdHjPyA-yyO8WDliCYPmV}O>Z*bfIGH=i%hY&8~%-_ zq@A(auwN1)?L-bdpo_%LJnmB`EE)Z`1UC&YSOZ0rIGt{^z8^&^Kl7YC(^uF78k6{qCNO5CR_`RLNmIW?p;cTUQ>qM!jnq-G z)M-DPpgwEfJhBvztR0BSDlKaw=~@bXZRd?SzbK4~E_->*%#NwuknyMOC20Olk|j$s4B%)(ygq4GCl(9FtDjtP0i)u5UIbf5ZKkF+ediC9-9(gyn2Hxg}K&H6kDgRvavqjVanh~_ak zW}S>jwn%N0Wt)hVrnZb(NrE5>)ZhbC%5SC;8V*~T8mhsta#@VH*V>HwTtQ?hF_stw z_S=x`o$vJrtJ@e)7)o!=y8H4I0Ar9*X!e*PQ)xZ3^dIjGn+1)>*eww#yx>grdf|lT zOGFd|y@*2uI!$A(~ZAQzG#?NwLVKhKmk$yrF%^LlA+V}4 z`WLN8Cpy+i8ee7=$}H7G17f5BnVM>&L0qHGh_dxe;gqj2ASv0%NRqh%VVIc}wh4kg zuIruYPAFB$I}V$;vvIJ#o|W}%apTV6(UN34Xt3MSGhk;2tZRA@jv}ok<%QPgyvr!; z^EmwikXTsIjLb@F1z)dsvu|C~o}?Zi4+6Zm8cOLnVKmw{q$bxeGc!Ha1_e2u1u4pQ z%$~0Gz9!Pz%}P*K-u=uP%c3y)+gzA&tR$|ssYvSSSrCXZX|}#O{~j-yX`_9sw=^t& za-`F6)w_VEa?MxAbz;vIi1}&UofET0w6Rv&Twwj%)$YyCPM*ueQTT13i-(oa zuABu_$-UL%eaGoYdH%}Dkz6icEz=!q@UG18#&iF{bgC-O_%$SWj44gEFRSNd(P*dSWR(;J5~Dnbn-~(&xmc=Q6j{gMO~} zl0n%BZup%v+w!?sJK)IVEk>MhYGl*SFiqy3_2nW>JDsr_qHqgppD^{+|!QyxBPNU-f z-m+TlL&$YrIsORs79ECF4)p)nR4;j;|br2w8KMh7-DZFNw_NLngHvsG#5zrM4feTo4d5-gV#Wn0JMx zL{G~N3MMhPR=U_#c)M+f>sRRPT*}{nnE?6IjR)W9d*s@3JR|Fhyt1Q1=bVcvLL#;W z7ZsO*+^`OMF+n6r=r>SpaMs?vF;#eDEQ>bHo=f$TaQiBYRX+PYHWSB)ugsMgJMuGlbWE=(Y zs^V{UXYStoguz`1l+RiP5%vb5VC1!`J$CvHO-16gJnT}*+K(LL@QbEwUeI7Zr|~1YSF$1QJ9~v_{wv0 zdFcKolqdrNj!CY67*D)7m)n35Q?GC8_ZMX3ttWIM6c?M1`)SFu*a0BUnb9>r**B$@ z(e1_QND`M?)U@x0G?Jj$0Kz?P%!2oqB8y60W~Xa7{K@n-;?rlY2;@k8BbI%;{t}G}9o?sshTPXe5E?;6$;c zxRe*E|LaNN`R!0Khf;N^ZZ^%2-aK1)_&8E`ig6j^<8)C;oTQ#%APT-R!e3SUT9}iG zB<@xqnDHK7SVwZ_4g)<4n4Wi>MBjBvdawc79BVVXtej9q0Cuimo{KI|QaD`&8Ds&k zizG(#8+<AVw$aL?|*SX?ZT2nR86uu}%U4*;xY_p$m1D)CFatuZW_|p2?*xV(a4lKCA|o*hG9Ie3*8kyc zRqjB}l{*Mj+%BHe*?G+qtHN(x+m!t$2^t-3$FX_&55b88nGpnGPCGTH8lgzP??BE0 zRtdRVKp zFtkxy7Zt#s)~_``-I7G{a&v|8tUjzv%AZ7Qr3pYpJ^f5 z@y|2>2l<&MmWu_pqvTtDd)gv_`Z6oz+dNCsnF2sMN#;RYRClO2h=(QXruh-3y$ieU zY0p1kh~=ij{MrXL9S4i8L`fzg5{%R!PX_b;Ih+RB^8OeZ0p3C02AaJS0*?)W8}FzP zZ9DAXr38a0O7z`hD>cwSt1z(Zm#B58?~~b`K|mxsJ+FWl#rsbFbSrx-$<3~#<=EPY zO5)h={6-i zVdxKkACeuEGyj2{G=q@(7qG$3D<|E*F~5_hD^=v!%v)2r`n}tt{x=CSD8+<@a&IyX zPcf<4!K)o^vFfcYu55*;Z_p}bhBO`y)j+#6zs}}sbG)f}h9OZy2>9&Yp7)?O=eg=1`Z6%w_8i2$a=9ju zQWI!fz%{UdrBVqymZ)EoIv`X!gZL{=eylpT+q_cV9Y4YqG1jhxn$HLq^&sI~-su}5 z5ZsPnFz?Z;W#x-j&aQ~mdmcnaZY_@_`71nkpkEmga*&6}`Qju-y2Dzv>zjNphJ^OC^{DZdLmBWdDiFQ@p;iaj|T!%M~ZrSZzK& zRbAH%AFNuj2z5!>G^q;ralcEVbTOZl8J?wbS-p*Tl4;9LsaJIW;yGHzRuN8b2&2(o zes|EI!hK%fP;xpDuZCk@!TP95u(@&8ZxqAC|4U{)Ss<6p6?4P%56|av_BibW8j>h$ z$tOOJ)qxD2t2(9#qcN7l_{hZt6S~@mjVwZckrx`ujbPu{n3s($zV) z7wjfs={`H|k7x23G$}{<>Qa-UY6VRxR_Z=AY76;@j(2wJdI?GvDy>dE0Zp;@n3jSm zQtGi$8LEzcjg6v`9#><2 zFyMvd=KjjmR$5ZyO3e3Ml2;1X^DW>?#co3+s|u2STZOQzT+6KR$*j8)55IDgisokm zt$Ky*AoKoHnvL?;5uJ>5yR_Nzi-mD~U&N@CgL$o8ssu;MvAv@l9AVlUYb?h#W&BLIyHklQhXwn?z5t#!4T$Y z9;kSLF@C9$Tp0(Hs;SD)kxV2Y_3Ogx`?|iT&FzXh7JY|sk_X5`+%}t&n1Fb{eZdqD z^`N*j$;pt^R-3I>m)<(>q2*P&cpyg>uAEkm5FhGXe5V<_!aP`UQm95P!h~V!3~ZUn zJb#l^#ZQrzVKZY#ShF(H(^_}raK>o9G=%NU{7Lj8ojewe1`9XBIbi!qg4)rzJ5nM1 zz(u4Wh01{iOl%TEF%=h^X?GgT9V9&?R1nhe-utCl&aF{_yLLJHaMtYUt}ppB9kajrpB)M4H-`kF;4K&T~|cmwL>_ z6N$*q<~TQ)fuKlB7LwC->B9;a;8YpfDcZ{6wgS7hb-TpNMA2Zo$?1E|Ex){48B{e( z;E(`-4SlZU%Yo>R4&Hv$I?fSwa4Ny|UgGE_2>j|xUNSBR1_QH0I^C+%Z{Jl^ zZluK&so$l-%s+2t5&rS+R$<+?GBN3A^YfSI*vi3BNbH|n%5NOM1TeRa(*;Y;ly@+P zuRHwJS8wnoJ3gawN&=32At3_l#!bU!1@ZU@1jjJ@h(nNNqBjbLdsP%6{i^W1Qahxhn^0@qJgex~*H(n;xL_>woo<49CLf2cS zXleQ$S; zk<9RONVg@QZT`8RPZ!lqm=32Um7{@pLLll_&SJ##(zwfN`7q+E>jW8&0r`oJ1Kq*# z-W3;27@6h-^FZb3I!VvqIjV|qige|$4f(VLU8Z&ftm!fSAg>BP-7T=Rxi45!BIt7@k$f9_eVE~!h z-*DOdzN)>EC^Ns(+Nl~e?`q>H;cgjw)OA^WVsz2>kDb9O1tuNXICE73jV+PY@a+5a z8J);KDr{SvM-MMmabeN^3kF?5=Lh}!?t2=R70Ldg(+vy6ERVAT#@HpOH+h|U<0lS9 zZ(aZI3jH%hY~}tIzyBWVuYUz7Fc~p! z=Wv~)pIBZDrZQu?#zYy}W}v{?47{f0k!Lr7{-Q`llURH2vx z8$L7N$0w=Pwb4X#SzYR;=l7${OG#SqIR?Df@Y31Q$98c`Ps|6|D@pFW+`n97xiO>F zJ86CGh|#6<=OKTId%1vYiq=}E3RV`;T4Uj|*9p(g;wrre>TtgQGJv|#`ZAa05~zTl z>v@Vm|AxZF^OgzcCAEEu_4i-M#P(YFh=MwAZ<{6_7PzJYwgfmCJXP-sV(Y|C&uGr( zA1NxPeV1p(=|ij!ntWjjvfR#D*JqrF0rk^tSJ;Xybh9S4n-l`#Z9i?7$IRY8&h^L3i&V&iIETrTp-8(BG}3-wWOa} z+0YpY#nQ>Cak$Nrr(nux!*jE!K>(k-5(n5S83Z-QYFLhWjO#&$3}7;X81qbY0H4Vs zL}7#hpcal8;0&pZMTp%7gt{e4N=6DuFisazKV?BMLmr9%+Ze46%KPQyLBBG<+;2Dy zRq7*JW6oXzS(1&Mhb+J&6t`HE0!?*63R2@;;2xkY06q9*-anLDmQW z1VB!;h3bDmxFa?syVLOJaR~eNQ4YhvQX*3C@>IIa?gf5 z13PIP)$$;xClq-tg^nP_ria~G6c{fDWaj2RL&#S~24e_|agJQlQPgOdD*zf_A2jq-oo9#2* zcI$~PN1lj^6%mw+XC1|%b|yzRMd&Pa^T*@`gMr~EOV{^G9|PPdK)G8kp#d>!rH_Qh zXf7wSRM!`3N@$JMAhu&{!gTeOTo+rX+utp05M?tTU@c=&r5u#St^Wsu$tF>Sq0>hv zAeoS@ED?ox!fFuncQJSa1^bF`gn<=%mgO>hlu0WL6Nm;Lgu9qe_pW~22$O&(Gr;P- znMWA~nx;I9UExBL(CHSG)HXF9K*&ORT{7Y#UooC4fsa4riR3vk6q~%0^-{RXgd%)$ zn{r9DPut}+?gm0Ht73gY4FAM_`q5Lcj*vWk8sPrRHZOjx$Wmn1-qmI{#7s$Rgz>m3 zHfKk#q8ihS)8?K!?OYf(b(N?gJ*TLmFE9@>)JmNqM;-O{cv?DByO_oMZF&3sGp$lG z%aK`RW?zqLzc(sr2q8r@;m4({KZlaT)Qv)g>2evqTIT+IEjmdZ`hn-kY(FH_A!D4!4b*-E2K2wBC0Z$lf1wmjobKZ}t^e3mY; z>2X%f!$!=1tvn!#%5!XV&y$oPv0=^V)X7k-ebZd$>6_EpQco5KXmD8?B?|8%TqPnG8%Xw6!#MQC?{VQ>(a{Q9=giWgVZT{o8?GS(CCR~5DGcz~fy$`6gB5}fTKCu-!| z7!y?_Rjz)Oaq`YNxIDIt^i%r`S7%8179H29Ez=6>Q94gkIhy_#e^~*p zj9Ql=C4w=fjAi^-F?L4#7hx5DNItq>z%KazY7N!xqRHT7a0<1C$v?M;$?#M-4T^P~ z{Lv~c)fJhwFVMg#NYHFq%X9i{b%?pH5dp@rluufMQMv9ca4KcA%$cJR$VFOsEG9UX z6(vg&#f1NbuQj z%q2CN#L>g2+aB|m0jQf{Ztu{(S9fs2{*t-m*sW`1AP!%7!g$$eDM&q2ucP4%RT zied~+9UqWg3!~r;`8!ndZWF-g>wH9{g|K}QOS_*1_@tPx(s2%A^*RykCqW&EtO`+b z!b6tDCO-k#-K?EVq8-XZBocg()y9hd#rI53^l7N@m}POshH$m)%}fT7kOQJoXFG(3 z9!|4nUQ&}1RbqPQUV+d)^&i5XWWBs{EH8FTPa^y4Z07b7Aq(~iqnKxD!?*A$ogn11STN0oZBpRpVCM#wfdInAW(}SRZ-Lns0XTW zc^T)o18(FH=_Zy|x<#R)tUX^@x?x^|S!$~*N;P%j1epTd`wp!7x5wr5@9D@uweA`| zkH+dV()R8*S2Mzov?X;pUo&MqDgH2cHn|!`nD-U1dWxVRoa$9Y$|*$eZ;`N>@7@hy*@SSlAfC9$%<9(VpbH9BM{0l=rNQYDAeNK+OXZlN@RXEa z2Q52~oDIRhMPkMaI9qf-8^~XZ42%S(Gz^Xff;Vkma!H>zd+x+R5N6h9lGHB`2IoTL;Y10a9BZD*XHr2i&OTG-9 zAxi6~kr^&s(u^1DLk>ZXV$@c$IT+`JC=AMpCn0h2YA@IU5d8&5#7p z6!G8w%naQ!xRjd^=s~LYoV2BUyXb!sZQZ4OG9c;uGFU#Mh#dl)@7XH2KNgC=9YrLw)N&ODx@{*Mk0|GkHy(LZ3M8AjTZRh2Q0p6f&P$w*m?q_p6}F-AI5 z#>>))`Ja?$-pGQMF3aB0(f!!z3oya)*oxJB@V31=wAvR$24SsE!GNd>vTg*->g7z8 zjt_b8;=h{~-j_~nip|=TEF1zE0!!;1j6r{^_v0{QDO*xh#7WFXkI8&0Bp@eSNtC@3 znokczW~+c2T+V(W)*^9}1l^}Im(^>CFG|!{nzJzdrC%YJcE5%Tv>$xogaX$9WwlzE z*tZ^K%$42pD89!XiZWXhd5BSHqV{7Ha*)YK_6^v{`7kjIi-E>qxK$7 zaSFZD?Ek0UYVp*G0%df@N;9^pvLzQz)F&&enZiKCcgJs|b1h+I9!2JEs?)(SLJdN{ ztIp0RfFlpkJRZOPd{-^%-Zs4qhe^=FMjeoH7S?(AR zzE0^C5$JZ$^-UkzV4sICmKnbdJ$G`7%AyjX_Tg84oboHCV@Soms0G(qpO&W`O~V*4 zpm+R>IEM)1DVu*jdtN`0o-&VU1re>uRxtPsJ!lLFcLKS&1-`Fb&**uz1{WBpD{`LK zD5ULbf9}U+E69jHqYIibk@OLu_dqUO$WiB!IFfb zcW8mZbeiv>E#riBF50&O!<5vtoAG0xmn0|k>j2&)jj};eH*%CW{pKcTz>t~olNWKN zV`nc~JV)&yS5k7c?s<Zh5Bp&#U|YG+y2dS120{I?|%!U+9Aw$Lfg&7#1xTxO{Ph1C4)@t!4C( z?s=Fk>by=(qijfeL@7sAE3SF~)T^hxk3#(~OH&4+4VF97pT`x1PrV!}~W-2_CF zc^#gJ0{Jt{1lWq_LC;~eZXkpwa_xvGT|1qB0zQ6k^F1I^vjgzuL zp_J!x$q27BgjD(^HQI>mj3ESQ5hx4Gq{d2~75$-1do@pPBWnJXG*FHUZthH-5Py$+ z<|@SaNdp>6)E_sm18#Ik7@@SnxG=C_k^=lT1MV~W$59+jV0dC8{7z)@x!fIbq_;*t z7=eeedeb!0pyUy+V@Y){WQO<@tiEa?^!39d?qJ%`g_b>*x^%;z#bhdKFfvCOYoI~D^+Ne;M*ym6# zLCMmGvN;7iaKQQhw`t>@;j&s?%c#qn*%ghwDTV86+`) zd+qJ=Ob@MfN3Sr0yaurt=9>mW>S8n(neW(V0@P?XV#UV$`K%fCn{UjgrRMoy2m-_NkFc;XFAO<8}zHn5%!%F@d;j5vExe24E@G^=!nu-uAXEEO0k( zi;`mrSHT#su^XFL=UDP*E*vm5zrq3?a~q)VHBZx&f|I{|r z0Y$mTGgZEsbOy>A6$xo|#8)*ov^j%b|CA%n{rmJ8L;^fMF zdWTZxL;mixbZGU4Bc14MsW7)v_F<1EVq2?ws!kY^N$7NX7=Rdd{%y;M7l1Lg1bp&!DBgo3g_veFW>(PdRP=)sM3dB0H( zqJ%j>Y`_uM)CcxY2wD(DmBSSI%jeKce9!BN7Aq{i6#rtkCefnI4eEA(M1snBID_|` z+>1M$O3;x=K|NkjPbP%HK$14$Ecbyn;I6^5bIQg%vEVL~@EO4g-mUE*MuJ*WxttK4W*FdeGA0uH!>s{1<{8ET;{QoljQee_e4 za%U_i&Xy<=9UEFarU{*`@sZ}UBje61+UsV{X3RAm?ur{SRTXfdVwyqhJZQbS<^vr~ z5C|O0Vn=*%2e==#PT*TxJIiWW)&XUi6g76YJ5Fop-{cxE_H-17ICs{Drn9@WA|ww;1@AE9c2t@mF!j z%wQP$CB8xbjo*gpvUH`^B?{DrW&whtlbp3Pya zvS)^;tgs{1+|C!N7haYh*d& z!2KXongxM`ci9_;k?o+074aGN3}`coOGojsg0Th|Ij;gp#XQC~ct%FnSfA@fteBm0|bv2EfK_wynjE ztpD>}%aa$&a`f^#DeqpjPKDT|o@gUhnHiqX#Qu+*beo(U9y3I9W${?O*sX-0ABi88 zE;4RI)GPBBj?UHcFWM!q{$SXweug&8aw*rYxyYM1>}U|GCAV0eVik#bye@p@#JT(I z(YPdfMPJ|1kmFKrg@a!*K00cbV9PTX^Qd-l=m(R9kDEW1(}jxV;rZ(#GlU7l4B`wQ zdylX*62T!1L?idZaazX}T}N-9fB$)y3~GrfjMbP0BpluGmTcH*Up`m0#p*}Q%2trW zVGe~6g*QAR3Cpr~0en&oo^PE5p_1X}eYPoR^fKG9r=v<(ErZZEy5AZ{sY&H+=H&-hQplxt!B{^aaJJJkz0#fkJ3yZ-Sk{LEf9EFt4w%s8N#E^c@hyzF* zNMovSkEY3fHji@O=bqVPJ=B|QP4^V_32KAhDPS3%# zfOKxYL9d-IUFb5tmYB!znv`-0(ia`gahtxZ`x80qt0!ggi|-*;qR zd9BI8==N}!Ax~o7>zzEqWjkLg7j$xP2*_K=pc-HZ=xzv$X_ulsx>B?Kk-cA_R;#5! z^Qj5+F`KXRgSL{-WI|cFg+GLbOTYw|{QlO<1@dl=TP&WfO{eqWxHLCOrlae?u2>t8 zFP_bUi`m@R53%j*HB>7+z&%?ix(!IG1B+W9Wt{*h*Sx!~E68X{p!0unD>hr|DGNdW z*-PH68+oQhi9R>GCc7No->107UATPt@N1&=iV&L(8?&BHrKeDMUMzb0^eiS=NW?hc z;*PE(a<;~5HS0ffgYc>;hiYk|)R82WuMpWv9O_WAC>5)hhjm3TJ2}_Rbk{9e&s=U0 z7`B_&MKqchjTWk(*5~TnG|rJ* zW!N#jb@|$QZvy!b3@RjQkK{r#?{kGgFwB&Og>%NB%LJ4ceW@lF`J9{z`%6g-xz%8) zv&sRrz*TyQXWSyZxqnR&JsM+Fw|tHVi7mV_xz;gjtusfZZ{>!o57;Vl2g!SyJN-jY z50ai}Y8y^*J&K0k8rpo1zV_z5b{tatagXN_ zP?wd)vm&q9(R>db=(QyGLc`G+bn(RbIkpy?ZnJ{HY>^auqe5R}I}}Ua3a4LVCN8LS z@2}&Vyp(v>T9;|Q(DV7@t{g-vKXP%Fd8N6ReOJ5fMK0G}xZ}g#F@gvm9?pqgYQE0b zXc_R+-6I(>wRYMwFwbhINL7&n3T_kEObU%wFQW=Al#$wU+&*PSnMkTrQc|aVoM)FKI z(Mp>Jr$B^gD<$-V+&UxbwNE>LR8$k4g3O;&QrPTlv?$%~Mhjd7m{`nw2^*KC6ux&$1XrPX*#`ZXJBchQ^a`Bn${600AM2?b9V1;oy!gF@QwM zUs=l?6R;a<5EUG#SlzcmJrqv+7YK7nwf?eyE71W_*dth(l;w1V5aJ!g-LQ)c3PQY4 z^&HR}b}N-LqY5U~3Vm6LHu#jn6WzdNb$Y^M)IZG6WyNZ0lw#94ysKJ?bKb#JVvzZ@ zw&549h+Ve|Vi>ed))=lyA-=jXd`;;trdnjMVYX=2GLUjdAcOSUZ%S&5x7m78#T6eK zi;^6rwAM8}nzv#l{A4s15=lJvI#W&~$EyUm8i)zrK)f`+>!2qd+G<`xQ~@> zbS7j^Ic=e{&W!dZbu<_=pEuO#J6%65fk+}7+$zRTF(r)0G=Syh#T_%VrY8QBxe8JO z;FIN()8ld@U1aj)WT5SdSq0ZGo!Ue7FC%ZpJ;6oiPpF)H1w+?zc*@tNrU@%r2k#KR zcvwxu3ABgm5@P(OmC1#WSBw|PIh{wI>fM={P~>+Bx-3t4t@rMSi4_p9rxBeXaI@*k zW6f=U04`)m+AO?Oi6o&@!eN-oEp*Bh6YR=9`E|F6(KO6muh?BqQyESj%$SCD0qT<(3muW$T-tR%i-k$oROg! zBa7zi>Cby{T3G^P*WB0I^wKcm{i#^~l|#WpIvSeF*i`S~m&;&Eudfjq!Tcbq{kKIE zNfH|)D((P;?cQ2~2KCZx<1^o%B)9SH$-9qF{O>fOR&l3bk;3?v>K8#rfwhmVH=}Fd z!}xU=;_F0L*VqR}ZtsrhRdv7Wha2Bj9UCG!Q-Yf?AHou>jTEHq*Cu5nwHY?^HpnP0imt@$^6iSd{wv_@|B8}7A|pDv_fuPm$-xzfR3HWAGz zYOsIPJ>cbxEf}fx2Ws|3s|*InxZGYN5z29dpup$hz;lH>G?EuE?=H3?#cBk{ zlPZm8`3Tmdh-3)}_`0!sfZA$2_ymwHaG=~Y;F0x(K-ZiW1A3}_-SmN~x(`rZSc4w5) zon>S?63|bBT~Qse%V1N|+&QCl^-gE{K4=B}VhF7u4=BD`&{mmJw63ntYTKbk<>Ffs zwOXA6yCz65F{|KUoa?!)Z$->B(obbY3|Av)MK!j~-1ttNq<70h$#@p|cfeR)2FuzJ zT0naGT?(A_ffCKI8V(KOO`~?N#7;k70DrbfG|=z8SV$WlVG=q2e#dZa4@Bb zcC6Pa%*$4H<^B_)WJ|k@c(0`E8csU5(o~={_hWv__T{SG-!13{z1gH%N<;7md2dv$ z#|m&dvW^Mmu0iq^q7q&DME)drBKK^?oV*~n0oF@*OPt)J-PwpCi`SfckfP}KMU5aw`<(x@05a>D!-`e8bjo5a z1>BaL=Q=jg)2B`pJKbX0pG^2|&$dohn;X{+Ob1#|uFywQ;dz=G9xVC^8Z3s~V)Y?X zYuJ~PU-$qWc0`lt`wI?>Ln}+Dz|E*An5{Bl=ICCBFTrnQ@wyfRZsB^S9!`5qhCl@k zbDu4q{5U_UxLXb!*&pYMXl+SVLpWA9LsSg>XZ;w%^=^X6{Zi@h0n+NI@NwR1LX-{W zKfP&MiDIcJrr4b0L_TAM3NHC=a`T>RBWQR*Q?=%FfVDezs2u8!9gW}X{BsTG?2-w# znNHU{Da*=%bjrcH9K&Kh;+w%#aQLyEURE7ktEV?DP3zG{&2F*Yf|TqpUy4qi_em(=)%m|Lpq1GrYMUIGsWL+ zj%{fAoJYKl7aZEL$3ce-oyrcp@!U(>l&`q)HoH2586HRA>)e)11f`vj>k9GzZJUO# zBTZ=rIpUFWFGV<6;Ds|t!1&=mB69{)%|~^X?No%y@}+YL;AefN2B45A77g@7bZVpTI`S?Mht>;;)SsKUOU>7 z053q$zwZ}ZuzxjIfoh{H2XIFKh5`!$I$zWgUdn8&j}ioP6t)~ooziC>p0Wtej$?5c zf1GBTtYd}rJ5d>9qlIr(pVDH5S`xeKdhmAW6DojPA@elWnRB(5n zc!$4ONq=-&0^U^L8{2Ry@a&UNiDMYhm)F>HEthrj8?W7^daP>VK>>`_fo%nQgHZag zFZq^p+_>n0KQc_!_#D7KG8UUnuHb_;x=ol|e&(E@;) zk%}M@!Qr;T773g&JIPpC>XF_DH_()5@U_#9C09npUD_ba*hKQDKkhv!6+2!=UY*#< z$)PEOk=!F{xXZ5$0wQR@pX2J&2_PnAK3+v$UdFQ2V<MZ$lTY5 z3@iRCqz7V6+Wpc^ONp9gU)2fbdlG&ve1uyO<{VS$|*DhD+c_zF#$Y}Ao;rg*|Takq4Q_qHQ#H=t9C3Fn4 z?ubrt!)VeDAq=AhN^0SRbTfqb_I@WY5DqUjDfTxVhFAEXGo>5(ytNZXXfxGRidD%PeG(t(c) z?xL21z`aL%vrxWijVUnKPM$d-4X_Pb?l_n6*p`uPQq(lhD_vwcucYk)fmJ)y+RC;E z7B_C_g#xpWPr?tXbO=7A`J3JDuet-&sQAt0=a}SJK8Y_s_DdC#zgpNr1mgacNHXJV zNwp+5cj9qx6A`WNqsXoBdZq+!o}KlzEQk|M*8)4Rkmp7KL!SB2`|HtAAI~7UO@R~XE>75)A0;}7fv?PrI`Q*@hYrs0N8$3}b zP+lgc&SSiiZ`U`k?M3&&*-!NFkuBzjP55w%6(HLkq z0KRlKjP8^ahBV@K1L23?%Nmqdhzo~x-@N1x&B(#lOgl}$m5>rC8iZATzNK2UYDDYG z^6Hv%S#!0eA!B!6eZKX!!MLQEJ5e2)nKJ9Eu0pl(a1CNYt`&jeQ7ZNM6XSBzMTr~( zLLpFKoOC|lqlJ6FU`^Urd>bYwfAwZx@>jeI7lId~;tDRzt*;-_`KxS(R5s0!YE%wO zi}1+@94@jWZu>GJv~(7GK!veIs|9BS0;#;^~{5~}liwa z0(cese>VJyWDsD>)@Qf^Fg8E&m`!cwe{#afXAHG|2=k#lE)LykWtu^vN zCK4i)Oc-}fNiq2x$Gby`x#fn?a1N3|r0dwNB^9E^slAe%VO>+*CNQgWIhsP$^{xfp z$aDJk-!jX?W?v4tboBa}*{PCt{zd$VyxUoOL|I!CP-TNUS#qBz8<(AaH?95Xy1Ls_ zC3te*$&L5Kv9o`>+*-G?srvIr$L;PRF-tB{bI)xKbZv8M1$Cg)ji@jg=s|P^$o{22 z`Fm0T9`a>daj~1ihb7K{yuFb~NR)yf)pZ$1mzEWGpNmQ;TdcZ?Upv}BL0zVx znc~~^doLSnw@F{M^h<4XL2D~wO?#)-JI=RkVbKT4+6pa{kbHcTY^(N*v1pXd0MAZk zq)trD17384M^wRwb*p?g`MyHpA}R+w_Qj|&B91m5Kyz?&Q{WYRqY9igQu~jECH>w? zTYKRQ#ufVGrv4NRTMnQC-K!$|&ef+{51v9F!n?yiM-cm8=WWE|PazMx2ji~rj9A_U@g%R^@2VgTSQ8W#kDEeIZYI0q3Nz+ zUEP^_5O!Qj)K(gG$dI9MaM-zA2FFsmlh>6%?7f8s3<~5q<$jny*+7oYoehIOXoHR> z!k&4+k)#E?_WG2304&Y#Tv5W5t2JHL6IYOUS)pghSwWo*_VC{!D*Np(m0D5DS%Ku8fIvyqnKzW@Cn-%2maOCiD( z<^Y}nKMRwn9ab3|<E9vcT?T{}8dDlb;c(_Ws43WuKP+m(-P5oB{q-kz-R}?{R1W^# zUkId^T>$Y{yl9;)xkJEgKsWgEY=s{U$HVDQk<9-@CMS-CNbWu=Wr!*N%GnQwmkGd$ zGnY?GF!Skx^yJi3dAj#B>HI9(q{Yl8-(w^ z8xA6G?*2ee*lJgwXQ{pK-KTno-Xk5a+>C;;#f8d<<| ziTD=wf@O+T^5c7@V7;SO_NMO1T$4)ob-?xgy%aro{Cce=fHtAR67e^D%ZAepz%%^e z@q2Yc_uKFksMhqoVIPgtX5}QdSbL;le&P*F^;Pe*&ux08U*+!oJp4lI57_MkgcfX`Y0PP|5w``Mb^!$Tv z37p8Wzqr2@pQL?#R4p3qg@!RdS=pWs%sQI0+YJku%rw5I^QBS64p5$Rw#;-ssK?40 z$w@ReXONlXm^8xt8BfM*shyZP*sCsOfHr>Hjd^;=`gUHZFE7YJehmt>H9= z=j=OaDz4DUF$5p80`gY&Q4P%ZaG%Xq`_R4hyF*IdK0~+`+HRGXN{Krg*@yL@(u97~ zUR0-8)==i>GEydcD$iA>FjUDf5z-d}j6eJX<*Sh+R1XdPk>0ZCnguv{{)_=Wuq+{@ z&~Wx5cShc3Z1C|$=Za<(?VCLV%WB25)|dzWq2|j(wBdI~*-JxCuzz%1TWCw#VTi7z z*u9SBFzbOvvyD{+gm^>-M`5`^a}_R|PX|0+kU2@juQm(kuJBwmI~~2l?+#>&VUbAx zF7u9LbR`%>y{I_Q>o$ul#t2jIHy>Z;%SFP+hDeUmz7V6X0XGql&g4$f(84!SjvO8s z__zv*LIW;OixO|q$=Y3@y{WGxYgO*P1A#e4&|jVQ8>*Gs9Kgp5GQBiRvj96c+|>3 zzNM!bN38{TzJo&TLlTr#EIezqJn{#)-7+c=2N1JAzx_SrogaDy#@>as(%{jv@}m7W zL;+jy=*(CMd#9W#+cjvnmsd~2)#C_a6tttHI&NG#`J#nQJ`vl}0>u z?Np|8BLXOYQ4Qi$UbWCq9#2<8vH`!5Ynwp<@nv|oni^(?32Bfn2*O=S&p3!Lj5Jqi zVVLfspbf|NodW{V&}M+!ytiPA|EqVbNO1)(7Q25{6MO<*Qfv9rowi_M|CN^9Z5$ju zRB8;&zE?Nw_Ie{DuswAp$7(h{rv zA>3(Aw6U;4lL*`siEQ$?Jr+7K;+!_O1q-Bx48jC@yObV1jPYT^3(nRUSB-%oRPA${ z-mq;|sOss(ny-u|aPP|b(kzx%G)qkQs9XN|fs07@7K&bjut0fziLZcZaZ>2mp^K0g z4nwJ-vMDvaJKnODRA>mUu@=sJMv?ovU<${}dr?yidHn$6yK8WrRgq~fp}U|S(L+JDnQ#c#8a zS@H~8(j_@Eahcf)or>Moc+cjvhgPYsQAa1#5QflCA&MPk-2%Mq+UT*yIP za*clLeE4@dlHTi;QJu?+O7a_mjAz!=@opUwBG~NMB&$<|w}a#R!i|&_+UdBPAyk}` z&9FNHhP<>!h2rV)lk#8zi>C4U_RV(lrQqG9Z4am1E~_Ec2J0N>9tIQDJX)mO5Cm!N z2ZJE#$q)M8a^Gm24tQviaK9%O$6WT@F~-{F*j_zvNm38hrFCG`pp=Ob)%$9;}qalqY`FDl(k`-Dc6UAr;+4_SNm>} ze3L6dpIYwDD`yqegNrBw5YnbGHF$>Cw=t0auEj$nzo&P#UfDOGFnFS{S(c5lBzxtN z+YWv2y~gxW(w*s<22TiRAM11B21*)Z*~Us?g&M0Xe|)0k_qm6)NAkHFGpVLWnUhF% z5sGr3u{SJe|7V%U-}9{f-`{^M$F9h)a6nlve0HqtAiaB_w}2 zF7ZU~ht!1?{fF&Em3gEm3F={lT_^B1D?UXglH`#)tF=)y5y{hXmzLGi>b)TQ{<$i( z85wK(uceJ4h^8h)`=uzFJc_Dgt~WOp7_`m?8XaN88$wHYL}pHvhHgH2`v=9qRA`JDHc7o_^dSq8b-Ip|1Um2-X5O*j3@ctYO!Puxe&S7 z2=3QB*^XC!rk9%GgSxNPS*N?jhJh@5^QiJqj#%F}?wC3%epSQz@KVWePD18?#mtF5 zG1{7xMe#G8a!aR$*x#S5`{%KFad2XEzn)><^k+ROEN`1Qo*p&BX8CmM_ImG?v$}s} zlvdS2l|uUEEikm$HSujTvp9J}%J^Q@U;sM9@X(cGLv7asDP?pu3pM}mDR|MO@^J~{ z#Di&l$?-Q6vA=ZnLK<`cIrcZHem=NVEvC=CSc|G?PVXw;`#f*EXCq?H*xY;H2Q~(7zL%?%_?mka9c^ON<3*G2pyG(JN zmaCTi2AE=Avh}65%d-9>?$6syqVG0WqRF7O9Q32_7LUEW`m`^#ns3bt?F--!hh)=w z`Vy?WZRO>MwNys9RvrXDOqK25UMTpi`cIvWL_1efn+1d57?)n@`Nj5We9F9PuDN`8 zN)k*ydWo6pNy4~zfo`~KNu=6mzS=`&F;gj)ft}u~aSbL8GXOLkhx>~#qvaP&hG>Gu zGC^OcZ!`Bfz=dKY<$iJjQRXTYDcUIX-*>y@Ye7?=!(Bju6I=>~ zd81ob>uY-f;Gl6jU^!*O44p>CYWdazK8_DNx`jIJQD1P4j$brFlt5exOAA1?&dm>~ z*A))5u?J9K_-IOPR#2hI6jmDgGTq!~ooHmQ7i9%oG!1B1$mLy$3rn3*x}q}mCf^4m z_yru!x2^q*R$K{nlbe+5rD%&>X8ATh9Rb<-Dc3Y{@u+i(L#bvLN`Xw&@D(%ky8eKoo3=Q=&c%Z&5e3UX%8l*>X zDJsh(orEh9*)2};=Ryd-JcvmD0thv58)|m^X}}mTVFH#*ZoI|j*c24lMrvg`%_wfOTSO^2440d6yn2{XM#1*UTy%L)N9dKNvP7N z_``cHxz`jhk>mSqRNbSyM<0*Btd# z1qd;zJP`g+tTH5kdTYOvmP9R1-K{gFQBw@66kFssh@8`rx$eXME2TYkNHmZa;uww` z8YkBklG79u-=fQLV!Rdp*QRyJ4TH7_?K^}iM=AfAxIn#~*?rPvlXKzZQ_tO~4@a7Bqt;|LqMhXY`qM8{KSBv(*xu-QR7VU$x zXD>TFLCX$M!$cvLPhIkKi}Y0KZZ{QA`b1|0kKns`C?>QzP>`BWX>6)EZ}p6zcafNj zqXmadSGNS|lvqKDoj-1oj{Q!Ugc)V5vwN9sqJY!v+%!Y^ry5*dvA9_IVxEE(HvLqY z0>;ae$zn8{CZ+Ejf^>x*-gpqOt2m02$e2Bwt-Ry#(ygA-njwU2#$tIaxH$GPPh!H{ z$7**B6SI?Z7Y$zvdFfEh?wXxA;6^A*KI{QRU>&SBX8(x8-wKBP_9k|L@irRBI>Y9~ z)gXz1R~4@zEg36%Y{8%ejZ~q@m~QiTh*3mgxq4 z!yK*uR3?2UPcThqST;X8LRp`JxeU&po<+zZxo1AX!0&2-0rjL@X*4-F2P79747b8_?=3mCA?*tT#hO6q>vKK}n>;>LpV^~FpWo53wTj{?_niHX1m#Vyr8jFqwRpXVEA*_AnPsQ;aU z{cl(?a|NpEahLFB&Zkl;r;{uFKOY6WB{ZWxR!}5Ad$gcZpclk!QBX#(03s}4g`q$B zIRpzLZ~L&evh)4VPeh`cO1*|)y&!@A&;>&BPb84Odr_K8eo7@-R;T}RRHkH19l#Bq zG-NEQnb>_?$HkxD^ThV{Ogp zp`u_gnw+!=EhJb=OSm!1bLY^wcs$-BHD*#-9nT5P0IDQYRQiD!l9XeTN*cqI!`JOA zm30E+`mRlqF~ytq0{qPMfI5+>Z-Bm}KlF*_+n`cKNHdP3$W}c9Op}@#xRnv&;oi|G znDqS6*Qr>El&$bBub4P=&!Pd-4cJo^C65|qy!Ve(LCR}#ulADQEDwiKgx&dLpZ0lV zA=x^Sw#@U2aK}J+y8`S4AMvARIPQn~y_}vu?diu?9Jp|EPBz{)$7k7Kc;^km-!@edDs(@cz^EuBj%D*1>;T&Eh$j{{j=Hh$ZgImH>*?5U*7h( zTj;ZWPT|@{xZ2fZ!?IAaT}#Y?UUn4Bb)~Dp0UY5Z=CJn2Wx#5JrLcPHi3!`O6E31n z$v)n8db;)GvIe_1A7J;^UFEJ#-IggW+&bufx#VuQrGh`6;eXWD!?*}+hOq?wFL_t? zlau}A)l~=6lJ5%YecX+V^3u+q_G4WYl=2r5?|1Lz+QTK%_)#6X$Z{#t+jR|gtlXlWF1QOv=3yS9?Uxl{um>lpzPg{!gSEd zH8I@_B1X0t)OnxBz(jXyA(047s(>K^hcVnB<2Ek$!@da2Iwg}!9k4jrIDV}oCR+MI zb5XsgeTPdwQbY5%YjB0*MotpR#QWwp=c{UU7#GhpbW0=KO7F z%o95;MTxTad$5YNGBijgg^IT#A+KrHt8oPhci<*8&NgzsvaZmxra(kIYN=O9w)(Hm z0m}7#ed21{8m__Z>izu_WTX4x;|H93a+nfT6-n`w8ogc{!w)~NubyRl3bd;vq;tpd z!tUdFY$C;8`1_u-y^(~MiX;G!fFS>_n3m7=G-%m@xqN<(3M|er=rI-%ZP1F)M{8c^ z89jb03vdIpTb5)|=5>r1 z<%Jc$z}3Scn>w=b0DVSBYvf=%K0S7Uq)HB)78`A+>*hqQcIs4qyjsOKp%ako(EMCV z)@v)LaArGNk>iO$y?Cjo5Aqe##aTvNLX8Yop25_zX5L`eoOIsMhEWne^60;Vtd48p zHCW14JY0K^L2y@h6>`~lBRS5b2|FbzV1?hP9Bof0qv2lhU}mIandY)AvpPUk5lUnV zx;%KguFz0O&|wT>X18gOGvOEkkQ869KTS2?e@LQc~H`x$ZgmWB?(}S%Ysful#ryYu$&7CMR*3B7I1M zfg@N-4G08K`x0x*~YH!}qMnMVzPO7yOw3hnsKZE*wE zS-0>o82(m@^+4RStady(bwI6vSZQf2EMgX^)d)hSH8fmF(zs(}dRV4+Kl{nIzg8kN z?!|&whQI%Sn@8gwv2s@b&ZU^83JX13`EP}) z9t-E%KLjh6D0E7|!qozP0^X0ZJ^W0g!Gvu~!M3_fwU<^^7`ZS?sv9Rwgx1=@p1Oj% zsJb>lFAHC3pBa$OWo5aB8#3Lcv^MvSwi%?XVR)7+mlcq1pNX%;=|Q~pURj=Y1FC9> z``IAu$a>fd!QTM=NG2nMv@Vp0%vmaAg&;Z@OLexdo$6Bnb!Z-xHJk;xfQ}zOED(+A zwicK7Mlga#6b5vP*0P2I36z}b0h~$g+8Z4OVLs&KF^5|jD!Ul2Mhc@8Bdk+BfN>zN z`Kx&D&YjNAIYQX;^8o^#&MxZ)wDmxOzb_+xN9PzBK+p;gO-8RQiwPlbY5f&qlAW#jQ_=3vpmJoGQ$F?mxeVZq(HJn@?Usjwd#+e|4{k!P$io-0A|}0wrfuf7Yce zz;FKyP(!1NHhDdMxxat9z}XL>e;hh#Z01b!SFI)zfWyBW&B`Oxj?!eYOr#+s}m19)1BEn zRDWhG0=9VeY+3qz>sMpj&jnPv_YF-d7?b5hGVdN=2r9i@$AJ zn}7T-qn2Iz{?fTCZp-UhN)PJ}q^{f-zPLNXK^#GUkpo=Tc<>+`xk-2#uqcZnf+$Sy za;)$PnO3->6Vh|pKGHmgc6Y9*hZ|pY#PJ*P|0MqN+qLsMv8stj$Hs|Z_B(BJt_q5V zQbUOYKzcN=K-Fj{3fH+-c5Us(x!~YALck|r8ey9Tcg%|iBUYBy#Ih1L$rOw-_|HFs zmH--5NkRJ7>q_PItqN*j6acqr71EMnLPeiOQ%xQ!BaQ7%emAlIT03FjCL$hR9)_1K2VoY_IP?yI$1D(dW%#gibni_-3_ED@NsF_yV%u)N4yM%g zA^NIrt>_%zINsU0M5*Cm4L%%RFbgz`J|7J9+<|#>K1nU$4)T!FWJ5&6E~{M(#^=Hc zf;M4CF-m6SHODn0)vRS_HZId=BleOo9*)J8zdgV(zVhgBH~5{87cd#j14d6@fD~I^ z5aq-~5LE07@4k<&6HFpRWKOIfa`XWa+AjKH&v=Kz{`JLK&LwF+q`tPpIBbaom@eB{uj)yuI^5Qx}w&Afqffq5a!_9#dJ3gn-v#i zHEV8Ylpwuv1qEXmk4KpeVOJMqYcynYG3e_bf&h`|>im0wR3K{A zP3!jUH;dMLRkNbm?X18h#GnC^s35(dzL0EuTXrgI(Y?k)?&MNy6~mTW!ANo-54G>$ z_Bt$3aq`y82)BxLy0jJo%O;SIjVeF##VF|Ha*s1el= zu+=!@a1x@AOR}Rb+{I}M+!1;lY9l9EBv*R}a^#y90F-)HCtHvdB-rs^!l(9}|E;+l zbpZxrnQ6)Ik{`HNMztZF42*Zb&De9!cnA^v?g2_!e;nnkd!oouwUtxRU4X#Ch+|xM zvJ=a}Rs6FKgFL+QmsF9Ts6=1YPH&ms1BFPU83eRylL`=s1`mTteIw*@IyXq<@!iD zE@$59Gv(B|kO3?1ynE)fkZUdYIR74>@_6Qk=(Pnl(Uzdb8@G{ zj5KfwEWyJOI{ElQ2es+Z9ilH|8cjy8jGU?b^a>O@9a~x&3z2%njR@9-fGrGBp|3C=dj6157%&nOND-8W z7FzPBMO;2L4jBOP5H50nJ2X8|DIn|-qkUscD6b$UdOH<``?;qldlVT9oI;^a`e*!& zfqc6i?N}Em_GyQach>gsU^tGdeKR@8GvGRd2azX&o|-ipMF9j}6S2xYI?S~?*qN$4 z9TxJ)f0BOwM1P9!P;u&zXu>$gW~a7IK{pO)vW3gmm^;ou`8pNs3fEfN=n(>D&`RFN|oe&$RPJrpGb9q{Hzj8p!0SU@mmPX|q z>o5tkL`a|_AmK1QaS4pe0I1QBuLfeBI7sj)QY%->zpHq{+Q;7jZifv98JqK+&Y;-z z)?U6b5tJ-qjg=x*yEnT8Y+z)=W=s#z%8a~h$feY@?zLCy0IHeV-;bA<0Qw7FBGAz9 zCWiTfHlX-krZpgG7NoELsRMR8T|p?iHcXR^NqOMp^7bpZih;yB%2duu5 zey~>Gr~a=^@*HF`U-%ET&#lktpRD6h*fX|09SopOhoEGC0Ygp&0$?(Gx!oVVP*j>~ zO=<>&5gcsSU!@M|+u3{8C{T~KdtP9kg?vF<$j6;1pIfhtE$9--iD+JSps!0KdaU;=%KZbxQEMs1U>(IK#K)~xT|j13ktHoV5@-TN-zz=6KIXlwjIUny@YscefP2YEl>GI% zv%d7ZEhnO*Lwvz$@$no6nUQl`d=>aQ#T1)$M_o{{+%0ZSEZv&ev-*KeYCn$V&`3zA zNRJUWfuLq(MaB5|2n|*$bqhMkE<&PH?0a@+B|+e*jKnuSq&e`^BAWn3X-N>?gznP) zq*g52KgCT-B5{9Mm6Bp_KTwtidL-_L7$hP`gg2~in|=dqMxw0ChV@E8*?Z>JXU28I z1s@)()rVJT2C7E<{I^-T@9;d|9)}B>ecJ?^g22;c~FYh z)5tmi=g1mtUWG!g}`QnMLkR7)NH;^^zwe1M)1gi6C13MxDQ-3p# z)bfF6`HDZa8c_~`wWir>L~E3ju+~O=%yxkGT*;QFh^YV&Po-uAE+Uv{B!3pArHxtQ6`EM~~q76AI ziEIO9Yq{=L1#vcc6)ri6Oe2qvJ%2ufdkAio4K6?5#+PMhhx;$EP%toZ*j_KX{fWh+ z+a(FVsh8iXS~Igvu)Q?4z9r39NY^E1%{<;YONRRM3=zoo!Ec1ec|+Uq5UExNY3_!7PfK^=6vg%rhoZm z+G!nBTCPF{n8P&{f?sW-^eB@j1gLAyLe$$T`+)< z@cOV-L_TjdngB>d(=wf9MKVz&CxDjK(UP+$H4nne9ZOMv` z6XR^V{YO3>wr;=+?>jd?-F_+pUtd4J{b28KyIWiHpuDZEZuh>smd3`k=0e@@4#IH* zSIu(%ZOGeB@Q65BX-r?nR}46j!fnHxr@!j5`<_%6Kk2h~MeoYkB6LP^cKPgvI=heV z@U6$WB&7WI5~?|UNLAK@i8=&FqnFVB=tDx?me6LfR8%&!e;j@vGd>DM78!VB7BO}p z6dav+eTk>N?nd-5Su$z(#?)gq(?cxFGHKZ@*EZOaHB>!v)N_@Z zW+cwSXW+XH`dm`hra9o#2^QYbltx4mkO|nJpF%FF(G4b+v{}6wND0YIN z&H+erbcD4QMQU88lPtb?9KW7g7Dz|Dfw#|!>FSEbgg&=emr&v8Z#v)g+gSK*i;ibb1Nxbe;4pyu6-l4cJMnOq3zt3)YF+JA z#flHQu=M?#zh<0qh!{pgD}2Alos1>whczQ5575pKu1O)ISIpP?e)|vV26L0 zmpV2+t9LZ|r+T5$&oR$e+CSZX@L^!>8(fri+@ix4x*o6QSU$of7t zaB~F@Mm*+--J6m$+>v%{Z{+wgU4_Fw=k~6KJL};x2mnviO@~_^>NB8 zlz#MW*HAF%c864;6nC*#A((j8LF2FyqJjxyB{1M=h!s*L(3z-li-Hd+B@1K4QacEZ z$QXsmq=Za6=?sv|K1N`mNvmM7k#qXbWIGUC@{xh!G1JGCPP; zf8%x5ko_k%M9gWgX<7B|<8*M!{I~za0SRbHbLKcdeQp6j>yIg9sk2@19vSYM^|jcr z$1Y&EvphUzI=T=6JD3paQ_nsBT>R=$&!xDSFH|I+=Ysn58{?EIBu>!az?3wjo~?J; zEJ=c4m{$c+M5RNg4h=SPjVNIKKuB|<24Uu_Q%-n1e)P5lO(2jQ_UF* z$BKR1gucEhldL*pV57ULfH2_A<}v^L8N8!Kt`TaWlqG8V2xN(ly zKzMBQ&KQ<96)2zG^UyPo@ZR!lO;ymN6=^Rl18Q z8olR5G0Jnn<;nDw0C;3(r2u^yj~=^Ss{bto6RT;>-*_Si!W3 z@(mzH*642k8QEpqx6em{--_zM&36@DTc?KhUU_##hPMm_q42}2aF}z9$KaF+C^Zz! z7yYDkaNtaY5&(^mClKuEIh=mKgR|us1}e1rK{`X-mbZZc5Fio-=!sc0v=-11v$+E= zCw8Z_xQp`&^vqn*sUTjZ!Wov}_LCKg$B*YI?$Ocil)25D54OzDEH2JW&-?k!Ppc*8 zTMlMqC=}#Js6X||-#_%EJT^)uNlXf6g5aWQcZdp8n zgIM`SCONCCtIdta%9B_PMulf{El(TU84@O}+o}?C(8lBI+H4H-H-$(4QFv_Ja$w2W z*>e^cn&hU{ROxX0&o%$>YLhxGghjqC*)mQTTvFTjVMj2ht*E8eNNODqZV;Ka?1%ST z4o)+Gzn7pQt*NC}r$;bYf>nz;g5RCGUPJ10Qh8kxWDQrRxA;fqSC{4#B#OO+x%Zr| zh4>`XhJ;DiU;@I}XBAu@MHw3Z z=qRc(RB<&dgOR43w5)P!>xmC!(F1r#bAJ-0XyQ|WCGG_C}#{m}U5|n8JNB5LpSLoJUroD(Pcot2Rt0W1U*4qN+ueqNt zanZfEJ66?7J-SXp3uMRlIJH?;O)42_8DWa6p-O6Wl-e(Md^~T~CnK$z%qDZ%p*a66 ztgFgMYAJX6;t`eA5@Z&jUkH#06|QQJd5`?kzI~fO7b+|&o8aWkigwcY3IPqZ0-(aG zWvK^#ai7G!fhACQrI_Z`P_v@=tOkn+iv~hEYN&Y^$D#0I3EUebyH20x_^`d_=F~eY zkL@sy((EWe?M2!ng&)w+4T89DQ_IE-yU9o}ydF$878(kt(#ZDq*T5E%_C93OQm=)- zUfSD(AL`y7fBVN>1eaYYVAK40oDf(TpW`%~^mgs~!A-SYf=YPyTR0P5@wUxH^ecAog7senKW+RGxHL`du4I3|Hf=VzB8mPIr7LbUPP`;Is ziIHPvhKyWR2x$Ul{lSC1y$KK4U`H^>&;~@0fJD}Hbmi0?m1MA8mBEjF!Y#Le@_%P` zM*04k0B-HLzEw}Jf%>|JFJ0GHu^3Z|92H1bMfnHPh3v@6WNy(h&3&IzB%3Y_^j{Sv z5sa217eo3gr0e+fB*~;G6H)Lj>ON6BceQiO&S`vaN0oJ3M+~oW#Kmc7-*WHKgk0?+b=l82W4Qko8}#Uq90`4{bypRdneNQHhy5>$CE{HRWb$ z5%0N%V5PLM4p}h`IhNz7@m#)HZLaRw-pl##-}NpH9#`F;n*>`aS6K_QiiK7d36>PA zX}1!`<$&wzV{#}ubdr8fQcr(lA8H zj>95CF8Oz)?3_H7DxHH~)e;F`|MBi|ucCdXD_xEr&v$m`!M3llQzBP+tS=!9%~m1V z&e3qDM|8g|(L+=_l6?50VU<(InKK=IitHl1BG{=sFCx_tg#Gc&U{ib;Uoh|N;`;qR z>R*2yx<{vPF76-Bp7~h!pVPqGsBN8QcTV=B)rn@~+ulYw4K#f7R%Udfjl0eV!=Ai}?lZM?lp&BRR zY7<8k38D>scz1E%zQr340j7{B_%Lblwo@`~{z%m$je7ik!-mJ6`S5OtW8$CD@P=6qg+K!Orp*pP@nTz9#)pr}=E?7CwfS*Wbd)P{853o@Dhs+I2 zii|)t29e~-esLEW^NieUx>>!lDTU31&U4gj53UEjNP1)r!O0+ecNmEn)HJG7IQ3iG z8(m&}v~`tSaDjwo4L|LL%JYm!KkI-PlD!d(GU@C3%*($8WYHJ=%JXn9%|9x77d7^? zrM5bHVo(qBMATp6o~u8Y0~iL_cb&YQb0&0V^A$T>k*7bNa1cTnQ4-f%f4rNneQU$9 zYIF0)$MSdI(Xa^FQDHq`dM`*sP#j~USiyFgjwNI>ZqmsX^Z!b_Ps)JFvkdt3M7D?2 zmfhb!D=PZdZ-;R4UxEbWZ$%`zL}`Eszu$$=tzCbx7eH?My~&pb>FxH3+y$%UqPmW) zXYT#|io`W4LkKyX_;?!W+F=ypO~XQGIP;1OkQRkF|2=S~KthN@xp3qR!k&=<5IDdC z2mU1~{uYrG6PKjoZHweyR_JfLIcBB#7VSZH*e_;>Qv9S`%?A6!#LsCxU1@wSa#;!w z3AVkU0aPAFKRTYm@HGpGV%f5C#xokcno86cXN8jhrmQlI_PD{iz; z)rPzZq7}O(`|2e@v@f9achN0|8U87$C`h=#k+#LmJH1IAA@*$5lE&uFnBl=T-N2!R z5XL7_PWV6MbXjR%c5T^J??;<`RWuCf{8JCQh+eJ5!7kR0X+xeyxlKJDRmsf7POmRu@&6p@+4!DZo`-rvf{O1ncNR;BSAC}#aF zQNUh|u|5g<26rk*&<(YKAU&W*f6z@p(nt#&=a~{*mL7-(Gw(M8lY?ZKwXZNt5e8h? z7zVhEJmR1fKMV}RBK^Z~`15<*Y5bAGUZ@uD@$O_N3#5276YbmW8>VFuRB)C20SOAQ zAmFt0@e+uxt66}|A7lxKA>lTbkkzTicWW#vapaOcMfL2ON5^W?-6eSe^Myji?ulqzbGzeVR_h-fHy1`14K}`jMP=3dv zTIKh`05L$$zbw%R$#7O74HyX2;=2FM=If~d?q>zk@LJP#M%N&nPQy!evYNlsPyW3AV&kx7rc{Aql$HWbyIHpIzMT?>v$T?h(}|X5Tc(=E_KqB^Huj>eLaBQfP7O= zr>2TJY#CW4A-6a=X`Z-d&Ako_yuhyc&G@Q3<;tP8)Pq0hKbVutOPQ?Rs7k*=5BseH za!*}LDX>b7X8Z`Z`in(Lb!U9FEP~4YT~R-D^H-HEP=*q3|7sBvWf`dfjKm=_A)`Qq z2pz0DGGas;WDK1Fs|gVnz#)tyivrMM0JMzHtNDJdt>>9OlHwRtZ}9jZEj^wP&_B7} zDfZa?0Wy*@;3pQ)=+yKUWKMmDv_u@ETB9d&t8ouwGYK5qUIF}TgCUJkP%N$8y{ml& za&DtM2u01k$qP_D&ujXTp_-{;O2pERocb+Dab>S9he=?E)wqk?^wy~J$*TY<0z{d+ zd2^29{*3;8+A7a<3rx+lW9al}GRB=Ucm2j5H_EA@!MU?<7tWrexL##liQzJ%`%j=^ z&{xW@;nJZ&skF9E8h8DM>}^PpCrm~4wKCbwnnrUmtk*$#p-2)#>&)4v`>xzu*l49%%Kn}yc@u9|gZJySC-A#wM2x2$GX_%8YAMXCCvv{u<*mpnR2W>l{i zsp^-&k|7z}uJ1~nz_}}Z8`P>=WfGdIUoTQbDclhk(>>TKllrr-aTH_8p<*@jP|JNB z_EH_=nZWUg2NbZXF?nm zTzjXmf99iR=nj-kDLQd%|7YyUKp3QE=#S5Ko6Ud%NmB%8CeeVdbXD*Q*SUNRMZk8Y ztC!u~J=A-|p7YURVbfJgc>svkhqoGN;3be?j#q8kRMnZ8={sytTE21W@zbfz<)x`< zlP1_jBziI}JtiurU~se`KQhv{)$o%XlF1*GDP3H!qW0Gfl^W? zcg#xaxL8&4cE+3Ke4xG%$4^?P6;i;J72C$0hNmJHu%=X8lp-l$GJ_LLLTvY~ zg7Wmo>wHyf}ddYI^z>hTASU4ilR1W7V0lnT2lPX^IKFbc7e#*;Fu+ey$ZKcBtG-kS1Hi zT?Bwy?;m^)7x^etj$>iJ4F+9gk4E7=vtiH4!qXG9m@Cw9|+bx*A;Yo;2xn7Fa(*v*2 zmZ%2LXm_p3J1H;Trfm8*;~+!4U}LPF3NwU~hay={X49Fl+aP(|qG2Sw#snuv>jzy+ z5E#in5%pb-%h9!{AFxH3$W6|WFhmqwU|&QU+F9vU?HwkfM_N>y#%_u}W6&zkZrTOb z)SW@H`G5y&eGzi1wQwd~S#OU>2#ooVlgC`8SzXKHoN;z z7Q>~e!{RS20n=))2jE#HB8_O#$O9pSau)u;w%YVz9BhC>Mf5l<(o3!X*?3x8vCA$> zBBl56TO|edp{ZuPX3yEc{NV7q`L5j0W98MCpEs_}KNixYNM7UK&d!V76lMRoj<8@6 zkMK+$UwW{6eAi6tp01CD;llVQC4L@fpL>Bxmi{N@-eG|LxP$1~zMto{COLfG10O-+RZaK;obD94Vm_vVX>qG?rQw(m>(0tSj& z^9^dcx+hG(8j_G$nRX1qI#RoV4c=`LVgtSN&mA84ZUwhS4dc zftp60ZchSYf`S4bP#4wsNi#Ciq<<>28k6?fKFT2eXj;^N=25ZTldj#d=5H7CC{v+H z(rH(no}*H24+GWr)YCCx8aR6PJ<&VfANl!nWPcHWkTVCIcQg|jJxlMqOV?g)7RLJ# z6_&|f;_-<3!tL!G{qRLJZDtw8mntY+Hp;Zpx5pm9V&46mLBNQHYM8t6P>wWzToI%U zBFoGVpA|-=90ckE8iWp|7UZdJ#WGnHB`z6ZNN@oV z48I`C2%?u@%8Q$OsL|0`^17gMj3TI57c?1ddaVlIjRwILKD2ur;O2LGz#W<{5v+T^K73(vt`1FsYmX>h1XowXsSR2v!@R_^!S#kr@)nYMV+%KN!pSge1#F=49D z>e6|dp_;(=j$!4Yk=mTn4Vj6121<`ZXB7yE_5>NTbjAa~qUtgm7+q)#{S7j@6g1gk z72JfzHc;5OG^A|yOd0da74fK;E`_3NRabiY2KAj}*0Zhm<>w z8a3h(54zJJtM8E$+;&C;Pu12trMFUuTO4kiF@Jn(01)Lwy+QO5$BcBb!}FekxlsdI zS1|P4VL9M<1U;xn!htRS?4B`iv)b6(##2QE*}4mx2tW!VF_T!yv`8#^Bu+ z6i)06_lv|Sq-Lx;{bK5_+l(-xRUr~+@MqFyz7{EZ`eCx-ia=ze{E#3x#AI9B8bg)I z#cZtRX`Re$hasKE`+g z&d8x)Cx5a0W9f_YAzrgio4lA+tU`iilhM_%tb?UqTBP=ea@P*^CTYZW1~@mQ4cLY? znFIxNrjti3U5(p-3~NtnR^k#%wnAk5gmtEKbe}ELE$o+6igLy7!_^**6p-;1JGZU) z5Gx^MILp{zgOPRr5)D!XE6CAoR0dyO-8NvwAx;uAJH}m?U#B+2TS-3E- zWc^8ZKAUpn2;@wxc(;rDjByIIE~SWX514d~(e_CtSDDt(pnFsEe5(nGR? zvdL57m8!VXfC;ogD|DLCrEDTgIMjsO{ca?KX+$ z8SOLAINqbW;%gHbEh^EVXFFQDOB%2^mFO^k&-8D4HaJIhlnjMw>7xdzF>2Hfvu;Xf zczz}c3a?-K*twY~Nvx!17tO>J$cD&UM_TRkBs0;4kMC<`0#V#K1(dL&r8!B0^5k<= zzoojCEh$NJ41g%f?wg$p%InblQ7Im4_sfDWJ_@E&P~V5-y3nKRII@A6h==9{+Xgvo z$TOD2C{AkwlYG-Y1Ky|Cooas^{th6nwrRZcZJkwYN5(DznV{}3`=&o`9Jpxag<;6- z4}11}$VP&W$o>Fjd(GH~6Z1axuWhpb%j2H6o#RcltGz#5Xhp`e+@RTGw$YDZF`GAU!L9&p&}}xr)1POi$ijmo2BsiEHj)IG zoe+nN0-u6^e2EBsSnPpcoDAm755UHYj1t1^zk5e&uQ%`u-}_TVyOO)5pEG@T2Bz6suUCc`POVE$N0t*q>R+CD#j321OD?VRb=lv9g}!v`k4I22aHMN604{ihv|5G;p&GS4|0Qb3~woEh+|-KRGn&W}-E z`WJfLxXe#s%0b|`n_k-_k#*}%t8n80{`+GTw>3$0igU1(8`F!9ES}$3x8X2f}xTWf(Jmr?qO?1;tt73c0RAoMjx;cj^e2IA5^sDgnS; zB7n+mGZYknj~{b`aa#!xL~!3=86t*jE@5rVKBfatovc*tES1Ux@c61WVH?Uwt8CaG ze@>7lx{2L?{vk8y28yM)X5vP)om5*+@VS#7SJ3{=;Oh?Tphs8A(oQfhtnNJZdcV$yVN zS@j{KV>ql&I4o|D1nemQFNrh5ePVKAV`cKZG-O24IF0M(&rFJH$LalfUZLTG6rJgkqy2_K$-|R5q0h`K;~2k*30XFPFY!^Krrl; zj*ZSRb--sEDzoBCgos=ajNQ5O@6A8!YCRBb!*AFB1K+8+Kt5^Oy$j#-(wvJBC=K18 z<@Z~KyBbdzU9O zA(8Hdq<2!cb?pNOmq><7z*yhayayHDPlNy~Aa+5N9&Gk1TMDEliZeRV7P3 zY-6DZ1h2;ev0~J+ncaL2hK0ib_LYeA`8%OP%zErac)+ub^^jI2%f*F>v2J8RADQhO zBBO;vZ*8B0VKE%I<)}jJH19>|N5H+dvDzn}SUbEM0g{S&N49 zhWrzB*^m*#8VvOE`2Z#+E6XjXge*9KH)NNWr$KMo79>?Dl+>bA_O?y*MQ)ABYWBBp zlcY(BM07_x-JW-~*A*23H|mtLtqO1uq|ugDN2CdVIbnjB1@T$CGFrMCDkO~p;h)D$ zj{PZIP~ZR;Zq}~&)6fspG!b+pw5mg$y-{)|9a=ZW>gXDftt3>A-^qq5l@Ru1wF#26 zpxAQD800J=3>>T=o!+k%Qo)*C8MY;)uo7=xC|&3q1gBsxWx-AeeS$;~l*cLS_GCqX zPlDy}lb!Lc(FFwwX;OU>BuiE|sHJ16{%0)n&|z_GnZmr@{$bs-Ohc1hx^v7pb1N(J zIFcTwONVBksW*M8H&>L!isw$t`cW7vSe)?R<{vS}j?m?W>EPWa=NDrHi=BMT3EuzN zv*J)en858U2wqxM6Q7~-6fkyZQH<7pFP77`*k_fJY_AwC<34c#LAc+`C@1l~FHT*0 z?=|T#+v`$h`n+fNnjWb1w#c%0d7O6M*`)WNg++cQ5|)$UXWxc7dU<)@R%3wL%-j;b z1>gcS=~!Uf9zbO_AUjE3rrWBa?bENP+0v6ClvB=UPXapf&7X2$rcy}=Dnp_tQd6tf zuHCT+AY`vD46-bU@BlhGp`!eAW+p57_cbHto%K+9HV<+udATq&&)NoOkONyr%zv+D zC1+-~v5B}#16d-dWPTP2vYe_^MtN~H2teqU3RYbmozv$$`|U!mOnk~yUl=+6OY5Na7oh&&|FF1s z03^}F_}+PA`T1lTxq_@wEg5`xUGR}UP9dkUu_h5J)U0V73&BTvq~sfFvUEnwe=vxj7v+q^*|n4*E19YH?!@ZRxp|6rvu z_}1bRKqiB8l1o~!=Qogo;mY=q=(#P2DMcpR3gya{E7p1jA6Boku<#QUc4S9LS#@r9 z0ui@n6$%`PpI3iUmby>ZoO5Z3P^JedNOgu;^kX}I+F+_LO?358D@Q&UV7Ao z=)B;GM;+2p|CT{x>~uOiD$KEq5e$E8nprVp!JXx9`&(=Vr)VhSZJTAsB2GUizikFL z32t``DxDq4aL^Xk)&<5J8tHHUNDglfGah;7!*o+q6bre?RP6;`lZRMyn|Y2$&5E~Z zVN{qmu}JSH@qRG{!ixw9_Ch!cQ@G@k1XmJt5nl>^Q%97I^^i@>F$aey?1oK`;Z3LN z{PM0NJJ#D86$Bc;VuFR|5F2{!jPgjPhK)YOXItygPEY4VUw!$t(x#IHShe~7pfj>5DUFWgS1UL`BkM(EVytMxReBjfY)b^ukHR8RCblT|80 zO|I}`EnUL%j!4LF_#Umd+mV4*?Z+-{AkR5lk}Vh%W>=!b}oYUz?r6jPGWoKI$&O9Yc0F z<{m!R3afLIB_zLTM1hk{!%-Nb;>O_oYuyN~`7*{~?)3+x+{yweudSUPL=~CZ(xA%K zX!@<*gqU@8!|0=!?wgZlOyz*3D&f%PLfm20@Tz<_!7boUhttq>IUV$=2Sj*qfSI8_ zU0;>STjCYujx_xGdL_L2doDucyXAnMP|`~)OU81w%KEpczFfs_+V~0p>nyb%4q^dF z1Ya~wuVYf`Mmt#RH^h>#Hc72Ps1TRCjap|#tE;1|Md*zgwVE(YP>-pvjH^|KFyfT@ z@&56^_lNlv$B{RsP2+D&mF!11p%Dz%-RM{azEmWkLzc9BkvIxWe zkS^1yM@jLmlBWPfE$O@c?;N6NX)$1lT$**z%zxX8CgIT!nTFad0u*1uZtA);2{8FFAYQiX*8N= z1-@pVD)2D&Z)B)`PyuoHk&h~a>+BU+7!WLS^5rBdR`7eGk1pQCQrGNIS+Rq!_oFg` zdH##9VwdogVuTXxCpEUoZ0=0WSlyjdwfO+quJA_T&Rx2?+DLd-HR_H`et4m(69^x& zx;-&xDtlRP{`6$;Kso;55P-i6_g&7|7u_ObQuuKE#6pdyAo&lbg8*WD?prE2_`a^m zt1N>&cacwU6Nnjw60A2>lElPHYid_Gsh;RuU!X2P2$cYCLsMJY^nNy-WEX(_0D9XC zBePj!h?c=k_?KELt)2 znC$n$E&nmC7E^v4GbG!Z?VjK`p9l)8=X#t-+aBy8ZsxP;gh-Gf&e-TTw+(C_dxJ9% z`)jwEd_CV|OA8!pK9uJmkM$Vk_Fb5;bv*8tR=7DlTOjVbI$e78SJ3kZMYF z8a-|NOc1H8!9#q)kv%5%P<~vFu^mqY9pwrOg~oAM1Oi0B3eC)9TdB;I|LQ*6m#^m` z<~5JQLPr#ks|0xTjDfKSb8wF-9}N)S}21$Fey)hnQ`#Cjz^5 zU8rMsBF7^gPCB^gv`gf$Xf`pKX6LJ#Rfld#5{i=MLbrz=PvQnRldK8mkfXPK<9)CC z#b2C!LoB+hitXQvePNsSM}(dw=6%pVYJ48E3bW?lOn9fj)5<#$DF|4gT^lpaI4sjo zXAgI$Y);@Sl<$%5l+MY8zJj?B+1HdHiId&&GXM7IJQ~Q%%=m5%aF(TZ|GQ_u`A3{% z&#%KU!05eaN2k$8%MG5RDLc2&Amgymw9Q>Z_>b1r@*D~k)49^(Gahii1A*1t=i4u! zE3@*eZ-LGy^{=W%E>almB3Tw{zbSp)Z4mMymAZh=s_ul`gH7D7d(;voRg4b0{8xR7 z0-0;fLI0WJ9~Kql{v}W$d<%w$2*^nG(|usoU_dT2xgKN~555JKWl{~-eNA0_{g}_=r>Mh#0_V22 zc#CT5uHUO_Ibj4};zX=!CDBQ?L?`2!|K|>9>KbAy)oCvGjG2^^caY0X#>i#8Z$R1h zccqe|BAFOXsT=|N5I0Bcs;Zi%?X1$UfCHlEienGwQQXxTKfpNku)z=CRQ&vZ9cwBM z4oxtT8Ox-O0fw2mNLc2H0u}3RP%T&liR!6~){WAw7Q7(LrF)|t#_xP4-is!u z&p$P}XZ+HC`(KmV$sZ~(DNq3`fUU5b$!(9EBnt_ zwm=*YeC=Do_-2jNu1X6w>nR*@xEK_wI5Z6<8AyLREsPWBsmoX8G#X|^g9S(z)iGbYPT3xJX8|#FZXIS4vqvc)2#?;v zUq3;=Lep}wa{Z;dL-2GYV{kNMPcU)qOFQWX(*L$INoX<;p0VO&llFKC^_DlB)M^+@ zi`#7Pr7OgBFwTS_i^5Q6(_?2aVB@1v)lZ*0+Z$N;9i_9!1vg_qBpvjM0CI(GL3z=V zGHRIzb@GfF>mp^wI$jb;1ayoeG3|Xl<8S;AE>^u3249;|cd4)iOB-@Y zz-JkwOUB`?14_{{;z{wp)M?%7#NV!#q?Z6is1Y89A-V$ts(8M6by&6Ln8q=RqM-1- zq*N)5J=h2CL4J9aKbW_ATR=KlO{Uu>(o$*uWwAWAPl$ldi!G>bJAwLE8Ez6p4*H;w z1PQdkeWI+u%$=5Cd$^V%@bdrbi)q+Sz3AP_Ne8!?x$Uaycbm;6b!-I4%VcWW#H*z4 z$BT?|j(3n=vfgjKgEg((&)V@IC;DW*&hD>m@Ke@)9sjgl=2+HH1YU@||JtqF-k0f8 zcf4d%N#L^r{Tj08Ph{~Mj{>YJQ%4%KcsfuzDjMeS zsi(5qEM>ccE04)kXUH57?rEeHe^AWK85z0>NPPMZ zsC#`yu<4O=z*7g=sxXc-hBvByvR#@l3)2XU`GcEG{f_Za65Xc6F9rIjMg*v}rO{lE z#@sb>+7#Y_N$iPo8_|V=wY^GF?hr`as;V^Lx^U!{a`RT{;{@#b$xi|OV*=}yGn@d^ z#+lwGWj6%!r(*z!R=_(Fj}gGwxUjLLlhlJD+{oyljd7M>UE)udplp-Wkcn~>kX>0O z`V(Os?Zk6t@N83p>)0+6D_Z~9zPwty{<7UIbD`@c6^t3Y=31F)6Nbf4o!CRx!?9Mx z@aXs=3Kp3Tiimv7)Dlo624=rmQ>SG0`dE^IoueUS(>bFR;4nd(uM$anv<9OYoqc3D zaDsX{6^p#)0V#HU3+A4pebCoL+29}>@EoU-dxZddhf(6jjlidtBnUUiisW&D`w*!* zGD3Dg^71YvCK&86>u2m^xoc@N_ZQ=b%XEIw8k*7oF+2hpe5^p|UnwJF19)GZ&?_$z zaeIR~1_&D4mP+7g2o@#D6do*TY?^`Mxpb8u{3;Y4nRK<+hLWEpRx(o+W)OYr!7Z9k*Y?$Ir=NaO^%<32V#78Uld zxi7j}pXcfqsg*x+G{B1g?O@&yBa#s8cMpF1@lcvfK zmd|rVz0VxJ=D+}m*|MzcF!QDW|M1fC`TXlfQxXB8) zg6S-V_zA&t-0|z(6{j|}@p?xszT;#r?^m(JMh0r5oAbkz*C2%Vm6UupeKMy&G-^4!n2N`G*|Di$-oNEa3yoLm(90rqdO~{>9mSfjQKKY@vnFDzI_JxZx*2J^8b1Jp4YWWk`L*< zME(y0fa_~;jAZ7f)(o2eg*<%?<6aMyyNP&qWz@bhI$UIcNar}C=|z5!eo8(sMo`wW z)*@?_dU&Naw=W*gBvkPM51-!3yJuJekLaMgC@?uP_UNV!uN1(aeM0c^d=H}|z8 zONcxfN+hI6Nk!|b+mByAn~iy}e0MI^CiQWAF(Z>EU9gL@i@6+~Ps%lkn={}V#1HoZ zzHP9F1m-)~Ahev#R*3>TS2rxF;a)^T!S&MS`Rt;0NL}6JWJGgdAkW99%PacI6Pcvl z6dw7J5knM zX)I&RdI`Nm)6PoNoVN@3tnLlXV3r7XUGEbw*w&I>D`o2RZ*;`nvw*Lg@uq8zU!AhP0+gp%qPtU zG1~y^<}6S)Sm^I-XAE1iS^gzNxrC?ir!r7g$!;%alXqV>)1 zeF#r*k2BSPgm{p|yw+1D@eC)2p@M;}2#gN+hnjT{@xizPJcL7?qHN4fu zv6uqfutQ>H-Y%@+VaBFhaLy1bdjSdY$T^QL7aJ2R%4_Ck@+CI=ocoOZgZ&%y)~(mu zaO|?xlozt0g46x5x#W6=P1oy-?~{n`1%K%!q$T*nliLKIg$~4!Qg>Am;ZkVx2MfOH z1fdR-G@%(l)Sa>fKfMHq-)_*qwMYAfz8E^=qA-Ye>$t~YnNOaeoF*TrHyqE4naGNt zU<-oThVFhdFSvJK2oEQ0d~9})^u4y=C~RrrfKYhg@JRo@Cg0?fbPSq*L~4xGul&*= z%fDU9ckQVzde*DYYb}qRZ}M_K6oNTxZYYduNl54=pbS|7m2y@v$7e{x{3Wn+BavTxacfq6B_O48ib{U4zFc-4^Qb!Shw^zhw{#^o0-l-qce*QZr1 z-)M95^ySl))qCsj*4I7M1F*(=RkwYtzi%{E7Cr}v8Vmm3anKL`{FR$2KGoF%t%A+9 zApantnYl3NP^6hqQ|TNe{2}r4^-W>dN6u+`6HnQgv4ccjo0&`ZeFtW^$aPjnlf-m( z^7VCO1b&FJ?KC=b;^a86PHOr?x72<6l7gf_=%Io0=S3exA@arguD!VS@#vs_`v=|+ zDAe=3MVbAazv-8TEo=QDKYA^M^L48W;vAwTszcBLD=o(`!?mbf@gp17erwau8w5s` zAGb|y9S2%TRIOZgdU{Q(g9~{vlH?s)ls8h88)}T*XTB9%K2RwyERf3z^Q8pLG!_Ff zF0BtM$7-=#wGUoZByoS0w5VWHVS#kpb$kw4HEyNW`@{EJr|kUs-=V`lejGLm&|#ep z-^a?H{`L9b?9Z?Jx{kVcjszH>#fN_WKWoxJKk#sC^MTetDopS9idMT)(VUWtB9XRX z#^c-GEZ)bT5?GWqlubw#*H10lE?!ua*jgO0m=Qk7dhMJ4egYz|5I$n~YjH}YFzG``qE~pt#hwl0z5F}vi3(y^4 zQh1GH!T+K7II_4pJ_y|Eo#dNV%1f~J*Nw`U7kU0J4_xoY}!p}PG9i?SouaL>CUr23&^GNs8e>1h|*9$p(|{X3sce1FzYTE6h>r+8K@{WrZK zZfQRMz<=dThsQl8tuGtIrbIj49D-Z=p@tLg*|Ni=V}K!7~6R7 zZyMkZ7bbZVHWpp8b5Kj0Wlqxq*O-umkP=sAIha`w%Yv0e`kxnIc_E`vRa710*DeVi z67a%($k}y74-4AqfynHLnBT-+h zS>JwUZ}gt1pg0bTFRcn}blC$~pWd9B8XJEKG4^@I;Z3C&f@sEO?KLL88*w~Br%?gNhrJ;Fpo6{a__TI5ye3bp91H&y3KA&5jr~x(gYG|T&?3%T3E2kU$f^fjNMAe zPo))P-a?{KfN)z{DW;19NOCs~e@rHWyP5RO4Q&n%#!PViNoGA;`t#TtHs4|C;v>84 z`M7(gJ!uc!!E^-s8<&PU*zNtK-HO+s-t$uL*gMJ4*;Ko^u4L0&Mz?#lP0m%GEraX1 zw;GxHaU+y7Wx=nPcN5mr!b3kre=IfBTW6qk2<9kYZgcRDUu_c3c(E)RC5CHU9TNV% zd*zERS_}fYPyp^18RQ)r+Y?~=YL84Uti>h(jnqVoBGle-z)YKOiEr~*HbGYa(Bp-g z>+G~Nnw)~65boEy&)DsXRX|5hnc^%pHYqLBVG0G)kb(?!_0`nY`m0u{a+h8G>JlqP;!JysP8e zFO~4GdZ{F4nVv!1b(Mt@pd83uUsaf_mV}i`gM8OFGfcp^RxmK~3C0$&Rt za!5<0i2zh-!SQZQ_?Mc)=!QK2mIlFKE=^sde#a<1^=*PxOv8a=*vet`0&5}gD`Aen z;l)f_&{d93X!P7H3DjQoLa2I%Q8K)b**%R_0e5-SsJ9t$wv%TVtYYZ=v{Rbt!n1y; zKh`mEIObf&G|g$+<)F`@Qv;HJVIe;-Up+ntT?P(+@WYq_6`S_!*6{zll1uVXNfWpq z#srKihThX;D*xX9`u8s*&2F?Wc4j^8#@P;)l-EX0Qz_Rcj$ZaYYaNp;h#okL#NU%A zblOz1A{tYU?Uj_-S8T6~^sSf5%0krEyv*4C-Su{Hg?UreRC(FvwQdFer6DdcLN^&U zDtz|jOigmSGUn97`88#EhV~qOBzJ=$zHMZ-Su?Y@rE}9v$Mx{DJzE5>zN^cO>b?hY znfZo{Xa=bM!v1RK+NnBM8f$5AFwbUtu3MBHG-elR7d6hXWAi1Xp#Mq){Je0)v)aRl zo7BRi4yl`Fd$eiZ$neb32xHB;Lv3}Z#;qz|r|fUr7~_+Ume`EJP8;dZoiQ>3(a*X~ zmz7SJ(hSq3{1N#aw4ZUU?pzFqd-%PB!Q14I}ku zUKiia*W0(-^f|8GYxwY|hZXeG9xKTau{ITD2O;TuaphL?F}XvcWRjB_#xgM(0WXrz9w-9O8XF*ccHBCU;G(csPC{`0$#H`BON=Vz%lmRk=Bcv5(m4OSCBQ$CAAy69x)Y!nP zDGIY_+{ja^R)Ub0*&Mdd#xmzRK|177hTi}T`&_K4){sEEqz&At?YL%e==H4OBJl)C zQtXlwFLn8wJs#*~KaEoL6@C-S)<9$7Lzk~ zZe6-%$8EBl`fq*}_NlFpH?Q#*1JVFBwk__HsgeE#I35_GUG*o!MMHuc+u*9P5P7N? zTYL(stuFu>yphGDY=;}RcEI@jY)l=dh5#pEYmjvWxXPD!k$9G%r*DA&5r0wNP>* zH9u3cu~pcAbl2-6aj1V#RVZXCq=lfbp}*?wF+iIkzM3`-db%nK>O1N)7K_0mKAZky zxM*N_pz8y0@n`rq%qOEy_%*3WVWNZvT>+U|TC=J`{ zd!a-n8Uc{wZmmU$$CO4{*IRLGjQgy$WX*^GL*22)GPtc7+V1e^z5LGu5Dvh)@Ew{h zmhT&F^%&HSM4W5@><;&q*tBq)+np#dJI*Cf*utnWl0ny_nS*NPrKilgk3j-h7dlX2r0yjB23e&X4n@ zkq8}ertsy7 zw2~{maay8K(*wQ6Y-P-^_7NK`3&S$p`rH^;n!`#v90*PKH4$Qn%Mv(xQ7{~aiZQqYPH__Y7Fo`?zT3r@E zTKkEUDTG8`%W2q_>DQs2GW%UT=k$W)&cfw*J!KB*qA~G~Dz6+_aUw)9Ia%^VKRa$TvI(mX*tejX? z-IkX0H6q}kfG2Sk3tTv2A;(5)#S`*m0WzsD--=%`-dR>Lv8rlyV#1@R(Hry*2X45t+?a03E#FO~YX<+p3_~h}=`n z=bNORF{`iRa^dM&0!UJ#<5bCPtIvxUKCKA~guJi2ZX79${dmFj*?k*&{ELR>JWI3T z1wH=0&9e)pp&ySF0<%%w+xIIjXtV*rlok4A*S{Gy4e$a| z@`d|@nx(ZjPN>ThB);y}2=n4l?~(c8Ihc7V%^|$9qLMMx~G{N}g4kgM8)XrTe-=pt>`J2@-}{2im6^tI_p<9|Awv(Ea@H5qIyK z|C%H~;B=bclD6t%#@_Cw-8{G6iF+)hf@es^%8jEpYZ7PIVcs;iEM&&?Yd=Z?XHM=75Y&5@MWl7v_QNt>L!Rp*?)46agS1wI5)waLq}8X@(^ka>hzm zioIuv6A1DN2?yVC_9Zz=8?m!(=zPWurQSOwY7#zyY$kmXxJ$Z_Lk2953EY6&bAId8T2 zMsbs}j)My;6J&Nt#>s+*o{@=hjt?E8QzK(`9rtrldq-Lro5bs?xba{u-2xq){7{0} zMgBBm&GaEeBSw+asPdv|!HXqIcaKn|2RB5;^#G_tSp6@h8(r(TR?+KR+gq#mL6q%P z(Gz}wwhfft@bn%g@1%WH{!pVo#h^7H#g9ec%rZF>6%(TdeJu+ zn{3z&vCy0>4m*(T8KOEAsa8iG`T;;l^ACg5PgU-pJA7HzKg6hCTa$W!!-o4Q)tgN= z0QAE`2Yk{^6#B73=v}a`=C<<}o10v;WSm7u3C-6u2@|@gz_|MQBz)i$qNKPl&kF8*dfC|gSjZVda0xt&$m5t< zy1W}5bI|I>fzkh#ow*=D77+pjjUX*IQmP#WaN-!qQC2LzlcmMLvaB4tM@?9k#^;Sq zFo7lO?FTswy>WWPgloagvjtaw>ZQe$@!Cx~8)EQ*bQ})s}Q!FOGMaJDEMo6ipeg-1OO0f!x&S2-^AuD9-)oi3UGM=>Rj{yoEA6 zeqrIWIi3P*bV5!#&C@khPWA3^6Vaf1tDfalSB?-lxf%A_* zP8h`(^j(k0&D_vd&X+pdr{wNOvucmOsm*19U}vC7Bn4&b3P`Xly?m^(*`;Iaxl_l+ zYLG}F&#wKhRReVN(m&?B+5DKk1t@>i_xm5%Y6_`?V85Va=P{*YZP`XJecu%MTBlae z76CIrF-vbXzn-<@Qb<(Ia_En+=4gm)Vzw|hM^_&u zGDz7Z2JusmaiWx+Lz6H}u%+AXw{6?DZQHhO+qP}nwr$(C=bO#U;;!xwsEEp}ii*g} zljqTi;p*EiYj@ICDW#-nn>OL(A#4N`N$c*yt0nTuO^RWTzUS@~`HqWE^QSU?nQojH z29fHPY=HkD6Ja(=(ctJP|~bZXW}usj4A-Z+}_pcSyghq zTyh+#3_enBFAKfVZ8Ck^WXZ+lIS@@h0~fwe-mQ0jzOP;>+`!V&>c#n{Hl1AM@U@{b zj)`e#1oPR9#p={r9AwU<*W_yR{R*nnTes#6`(-oq^nKyN&yXqTzx+rD?<-Y8gYt8) z4jEh}6>Ck{1d|9#PzV}*z2Eo8(18<}Qc|d4asYQKC%rwh~rIa7Dlv zB;C@2Peyaa=$a6ij-3H2-5Vd~y6)g9lX zuwALV6&;Fs#59P(|Dt8b49gcCjr=V97naU0g3g5lIq?&TqCkYug;Vd~%Y=DgIMa{x zAxH~^&0x#UH+H#$I4=k>^B|V_>^ngjrit3Th!GyT%o>tg1qN-EB4_~UroVH3zP!9z zgVrs_dVGe*#VQO-)t4k}H(<6xBqKhe{1xfFWsKyVpGBoEz>^~ZDv_y*{ zn_EXEC31+?)(C?T3M@0zolDttT#qXpYX1~}#hNX5Hzas znkT(wGajtY)~5Puje>kgi~O_spI!UI@d0dR!4lA6CbMwIAzu#!hnTW_;so$zcFUR* zJJzzovwOCi6HFT}(Ngp&Qsd&)Z#C_Qy;&j{3&*DATi?8^Ap+>n4VL&{4=!3LmC~)B zxll3~XNPbm7%9Bpp=CPFvsgLz=n!gxhY=DvY~K(!9S_T_M@+)qKby`vrSP$R>C_t1 z=M`X$3K1>{WE4o_kuj`^mls$X2r1M1Q_u&<#zbAI??j1-J(%>F>js9()xC3W>zN_R zBJf1TBtcJ{+H^Lks?3?X<_WSi(i(Q5(yITosbYbu!BAv=DN_ZgMXgY_?JGRP26;Tk z{o8P?GI;T-ua06T7RU8dn8rai1O{9lcouE?P6Eb;9!kg#r)!C$!DqZCJ>vd@1q1?s zSVt>krWcdXVyS_O+lZ!v~E8UhI z+{50{;4F|Z0b+5t0;2FfQj$M1s^7a2%j_$0|JjJ3^M{KsR=$w%V;Z-8{82U0^H>)= zmxvyyfiFH@2Ea}UOl05)_Uxd#_h&&9`}(-&gx0;2Jp%CjcG8jB=inZjvk@|Iq7ZDT z0jzUFo5~FuDKy|{+d&9R&1vtJTN&a)xX_mmjx9_gD~UF+4zvnOv{k8Z+BQ7&mDj2B z%W`BN);F8v%ly`IS}!3Bc_nv6Es!LJgz;zx%?J9|%N}!ShA158zr=fUjG~vU6{?w| z>~AZ%Q;N2!_%&Jaw_BhN6DLJqC-cXjdV;q2qNh?cM+Q_m@Z{QNG4rf@ zPqFjvu8hoOF09)6I)=amiMuq7tXze!FJD2frPqKzBrB#~kR!C&?C5satZ&TG4aPWg z?@gm%9-5ck+*&%P8yncfjgMUgi!IT|1yBvNHLBnn*JjaZ*5I94k9(xlC!Cnp%n+0% zP!yzMqeWnlls-nAti9m{5qWt!T1KfO$yWacGKWE4nIpA`@Njs2`Z~jTv!$h;Y{GDE zw3-ZKpx-##(N6vM13?mK_u=-n&$scYbPFzt?Q;o?+aE-Lb?WscWX2WauWLJu+nMc8JRu7W>ugZ%{*0ST%N+n+)78 z07r^|q7gOw*Wvhg1cjPN~msPeXL$*B$aI4>|H{0Vm1krg9j=@ZbR4$WJfH}b=D zpPqxnow2=!a)OqEe8$%xR0DGl5jujQ-wchypxtU2r>_%|l=c;~KULCBvj)gB83mC| zqdQ6fK`%iT4wnv>4mXJehuc4Ui`0W&165_{#+GfV(LtY7mRu;a8A1(>U7}ZrftPiz z+t<|I-Q|VF12qu2aX@{dp|{AlfA#fS1mKlOkeEN`oAcrx#QK*)M8*hdj^lhgxA?fB zFr2R)uN}is*Lhu$LV^IsGENl9HW`;tUO)p?oh@xPP%DRMmFPbp5U zI8m$`dmSq8Ht&dIhF2haYZ6)K6cf@>;BLQ;udv^?Ys%eZza3jB-j(Mv#V*z*luJjN z#h`CGn*qi=JgosxC%=jG7alKR3L3&xk=KK5B`8ZiNgv@Zy;u!M!KwZN{mlM#aG_tc zr3F8U?&1H99wKZUxMDrvyW?;BMdXtq01fx`JXo~gwm1_eo`;Vy&}`FSZBL~O7nAsN zz9La~#j71D2oVi(=FkzD*{H z;FB(R2TH{D=BhuVc^~}(_g7JxRbp)H4#U`(4mt^^YT-411WyxV6hiilI3!79CS3>R zb_gy_pm2G`>Cblq-az3npvFut=r9XS;!h5PoQcJ)Tpx5#u z-b8T(vXHN(qMI65o4te;2DU_DuXj(EA`nh31r3b$@{z>U-sZAI|1=)U%V{qVjrs_U zdlBH{8QV?1l?m9Z#}hzef?1?pLC~L914ZZW0YUrV8W41XkX0dJXMz^<(2yxh73?o_HLC?MQKg3+&Mutx@DeLpLoeL z8UD7a%+-qcsl4!do`y~3l-^kxgB(8rugk8WtOv;FEC{FQe!r)3W)Rk`y;oS^F+y1N z&sdpPXhDrL0-By(hcUg6oV@adR^oSV_pA~gb8a4r~QStoKQ7*~0 zjOsd$qd~Z>QF~Doq322LJzSw)%In}D@R_>a0M62c&8xGLJ3pqFb}jT&SSk1X*Fc(O zcd{vynImp*u;^21n60Rottt3mv-W7|x>GygDHHTi8DV|VCvjs3;#L*GCf%3(f{td;%)hn8gEsiVcmDBRcbp0 zLYhnoGvhiv;;%T*9Rq)bVwL25xZtY$)u$$y_*&ao6^I8Rsj9_c>*q{}QG>_Km6*|z z3qunW{`82eL!fpXDGI-ryNmdf(D3|E9GaB67+OHT=wopom7kAr-7~wM@9Ok0k-6F_ z&LbbvWjKs0m^=X>YF-&gRO_r9rk{22SuoQ1&scplWlWp1bVa zf84omeV=p-eebpB^>DsBI2co{!qLy+mEh$0u}mhceDgOh(5CU>>`Y*a-TM7ahDM*9 z?{_SqL5ku7@+#YD@JNLqqu|E&gdnIWa%v~hv1Fa+q-mHoH-4W226mF^@N+*BZW@`W z@W3J1kN>}`KhKN-EM}lV$VZDrT;tdBXI6^U(}*TZHkd;%8-T7JY(z=twHR!4OJ_@t zcD0p7nGBgxMZ30nO;`w1vQ3ZTrsHrQF2!2L8Cv(6VuD9C!3Q`OOaP@6cSEP+!|CF3 zK3h-Nw$A9QIP(5m`JIvDQGx=hyOMJJOf2bWkKe_ac&^L7oAgyFIw)RMGG`DSxDB}e zk;`6J!dWqv4whd-GS}{6F*cF}r7i90j=bNc(jdN=Z-?ycem{pMN#L~N^e5;V=n7S) z>0qyaRkqaL-cmC3dYKZv+Kv4kuI@d6F4otL^H9omg9bgOGL@0JE7(nXeK+X3Cd-e~ z6o&;^kvw&oC(aeH_x-ecOlWE35h-=$4P2*-Ib-d+`O2mA+Wc``l z>KFE@MT&`iyW?h_{@yl6fAK1S&CDsbG&$kN4E{R}Iw-1&{ElYShK&N2 z)rAGwHC})k5WHhG&2W8MT;M@RQ$5CPGMHv5cF@(AL*JTZCY>#@q^d6 zdSjHhN;abs86_aX#G91Pcq)O`jGq^`jocm$# zZdg_is%buX1hftFQit5Be~9A{0PW-069Y$|Ief)-o&@PJ0NfartgxSirJFL<9NYX- zN8v!kwzHg2h*}ELf}0TW=+MTB#tB46_vKCf*Yvk>xc|CfB#Pj`w4ok-H&cCl`Fk!q zqMN&lw~b3a-ZZouWUJY#)?jIHYDo-julhP`{U1&*s^ptVmseUE`}r3Vr~&E&+a}#0 z>kYB{XklDhol=Y-v{>5yHBXwfT#j1LUW}qU8CtLxG*>~T({Yj-ZQK!eUE>VoUQ1x0 zgyLf`OTE9>F_QdnhZQogI1hZl`DY93+@)NJ($EJoF@R&tfcCBT=JIp1Z2W)nfhnsF zn7?9TEPW!DGp9%X$E^p)LFNN$1HJ-z|1ILBI=?@N{Rj4$!VL|DAj&u3IH!>#J^0cH zhtys)_iSk5YcgU^K#CBzkqD_(hj;GS-0`}h7~uAfHQum{pNftB`1!@eer2HTpV-W| z^dYY&od&}F;(I^{OUF5MEy^7p6{t&SbNQYT_%Clp5xlO{9%7djra**hJ~x7FgenAL zDPn=RD%gj+;Y%%Dxl)JAcAV=ZN_3Fn=B{jvLa~0#gnFvJ4)3esql(3YU2zp(!hXkB zNQ@lao@-N)Lrdya=g1bZbV%Vn052ujv#EqHIng{`$IGW-!KDEu)iMY_o9aFrAr7YC zad;)|PdOpA%dy48Jo)}+b&cbH>5>)`Dk=?tQ{|ZiU`b#$+qFK7OnpwQu=sMfqHqFKPFcdn{qATYd2?KDM;U~AIoLi`2Ce187n;f3=dGP~W#%2M?-ga% zf!hT?&;9KZb+j{XuC=E`MWQlz+_vC?PfV!2p@pX|X1jGR>I>beygOZv$IXs}hi^B<7Uca@Yf+Uixy{jPrcnY~b_?}<^GPfs`Z=Y8 zp>LX+&NOfr`4Y{B??g^VruXb;^l;&odC~RxMXw!!$9c9@p9*3V*Jt1ApjH7hq|MFJ zMoF|K9r<<*QX3m)h)8Ga4_Y$pn<1`*g=M0gFi!Tf@5hBS5KI^5#}}4I>-M?z8gN_K z`3!vr&Sj}FEujT#b}`z=enjxZ!%?@nJBmU^8Kz-XA^{;2A81P2KLcz-j|(Nb4eeC@ zFp_iZ!9lh6HrK+y(%5CY+GxLO;O5rgZl>$eJ3EzX+5))5%z$qR!s>rbh(hmLJdK$? zPn8SbaYOSf%E(q^CQyxevF>(o7pq?>BIwAM+Dck2yJa?>1E$rxh@Gw3b~m$UJ5rI) zD!pIT18ReiVaq6B7_YFoNSlwtsg71@3iV}TNk7bb}HEsC!ipebXz8sK?K}bpq8iqC0AHLYf_Hq(e=Ng1vlmQPj7n!HU>aAEI z8gT!xe6h>Q(%F4+-dGCJN<0WvJn=gEk@WNc;1Je>LWM$Ju_qag8a4=1{*xphNe1!g z=CBN#-#{MZnH`tOu;JX#dK*3o(ug*a2RBJFyPXzz9#Pb1mGH++i3fnd%JiMVh!V(h zock!DiD2+;C<)5Y?8Pkj>rL3P=|wZs>^6HNIjh*Hs(#Jaj<5Tac9pCUf6|k#9v&`!oBR)3vE;NYvHF0W|>< zQ(7-@r`0qRJ_;A-cKV79Ki|ITnWXWG_6{bqpZ&ANc96o>ln2#g$&CNtf@1Pk%gMI4T(MRP2MK-i-+=x6AvWx@JLG#G zKuacE#AtSf@Vvp#E9(z8UPq;PK8B*KI%;tuF>EF~b%#~+aUYP|cYB=kAGJhFxqge` z6D}MPcvx%;jgej8qkmXz=d)CFv={Y}kJV*7ef+tmG?J6&+so|1?FaArDc-*u?mb{{ zE?#{X20Oa@07ms|GdySuYYkqLIHcC~NT9o}3T?=M5$&Kuk=gqbHgu|_Zrjr+X8G@S zERE1gI7d7>=)^)ks)+1WZq?oC+oIjnytA|(KO&`K-oq6)u>}ZYHFg=ryv8{-!aLGf zo0wn9eVh43UuS1TIO&wnM81cvyI{tCP4WdopA10*j!QExyTrs!qL6OAa?_QLz^=W| z`)8;ZcZ!oDN7ekF21{XgT|sm()h1||Ph zd}yol_eH@z^6!V0V((X7NUqr&>^J|!4{4iMPHYQMR4ASi{ja1@H+t$|!}*81^LvT( z`nDDpL@j;hB{8qnDIhueRwam+mfZj2z54zrY6%G_=ZUm6;+U=QgxChs!L{ugJ zoeY53dbOc=LhUlQe|Pt6=;tswHp7b9YpB$h%({T-sKo$zRgQ`^4Qx zBtK~z;q;*Vvs7eY-tqm~DbXo|Jt*UbY?QkBByCM_zel=*&u}57<*IUZU{4@b0aORh zTkgQTB-DFcP@i9EVKgN66# zy3{4P%NF;20spTx`4-UGX=Sn{sOy7jrx-Njn0;?zHk*u)4FgksylJG=Kr}<+qtR7Y zqr(W87cC&YEkXXH0^K#nqHut!rZ&QRPY&(!27n$<2bNuzdD(5l3%OH9T)vLSAc@Y& z*YLCa5QT1MLNLl6>|Xnj4OpKBTuQo z*HLuFZq`jzR!m$qCy9eY6@{Oa$-ci+Bu5%I7oc9<8%2ynoSeD;0cvsCR#W{x>4JY_ zmvBCruZ90yYC#%Z7IONzTVj0azD>RT0BQOI2xt7DqDhrH9r6u!tiB)K+n8bVem7kG zd{V*XC)NJ8w>MD%6joOiVAI;|NGvO^6NEKM2QVa>`@+6WZt1ry+h4Ag>f1vGAjCDd zyK5)3_uiM*OTlfooXAYF@Hv5VyFAGmlbRj8^p^F&M1t!$uG=nl<@1jq<4MDJ21T%) z0JzBvWjcYkrNrGzvyqf%-$G7@y_W@`hUUmlA~o#6-s9l322ek{IW%lyN7*a|{=ge_ z`fbBj&PDJ{K2^ViQF1;Y6RQzwTb$?ph;Gz;+S1eYLrQqX0zz`7=D91Vll zK{oO(=qgLu42pMc$;HWetLL1KFB3NG2#^{5DH$SNTyA+-8*CmhM751ne;Nb>2~)9- zCd#EW4Lr&siuQT05dpC$I(O2>wq|1D;F2JR`Z1cPFIM#+e#d%$RA1a6nStNijXQX0 zxDgc8$9g_G2fCGyA5thFZ=mRRwsL@P)Q72)0j-!ghD|*=Z7y~suR)^TA+;2Z({5f# z<;Z7|O;?I`W(^SlmsU+XMAM~Sq+9<1 z7ziB;zgF;U43v#SJ)cC0t}Xc7Y#|=UqGa%BB*zWa2>{;<*udZoU`VZO0$3+rDs%kg zR;101XL7Pu9t$9nN6|?M_pxC;v0!_E=oq#^y!9J?vSJ0|Cj|CPaP19t?yNbV2JbGK z>}+@b?rs#-ZfHIC-*UosbLkIiOtbODayJoHNddD5#fLdU4Vr!u|DftN)k*d~)an*<3RFRyDEx&gH!uP$<`i`2MoFT;J~-atC|^4F%$wCHOhl7>l0;23NWsh75+z7`W_rRc)JyA~PtG*6 zg@{0}3peK%(`A)r{P)EaHA4MTbqjoRE}8w~Coz^6{~Q^@{;?Fqc2yekAg4e+birYQhk&X6JYWA4wv|`(H^|itsswFPHL*lN2ztwOLa5hXDdGez50Uz9eHe zGQhidz@M&BeNme9_M!qJTzr4(^F|`2 z1d#t6ue8(tW>i<50B=qF=@_4;g(RO$>b<+da5nyI_PRYsaVf*Uw-A0aTnFb1bk$m??qAIH1ZC3OB)EVPR++X0oIz>@c zM?bm6ARkv7zrL7Y3Y9rvD$l-H|&1bC4Y_^I8SG4Pf+)e(+k!VH6CeAH5l24 zG2mvG9D)1WEMaFxoGXFl=YlCa>I9dY<$Fw-hOkc17!D@3wVp5KH>Siygzz|aGt-9D zzb<<2sva!yhr#Lwp%Z2>M~9a%I?t!#XwIqM{{FZDy)+^1N;14K!!Jc%{Z@t6Lxw4F zXDpmgbql`LX!K6C54$I4)wlu1qozw7y@J?tvn5*Ru5O%Pi9MKxmN9nhN-dN0?c&F> z_wPjE<+Z@w{{bCT1$pDl4OO!0O?bI;EHcm^ZkPWtVRKOX-x}2NwGjtFOnj)o*gOD>-Oz#`z+VQ=icj~FIb8ut*PIvTmFm$ADQ_fxk}N>(hKT2W_139Wy%Oo_381WzN8ax2rDd)4*VGBF~9OBpaFXf>=$U>ire9&A({y(PdL5RS0a;A$1wh`L;^CjJV4vX1 zo!oNBs5p?ei^MBzNNTOBw1=%zF2I?;%{6CoCffu&x&WK8MF9(I5KSsTAv(?>BIQXs z|A$oFpmv<0bAsCPp4!2ayD+MrB>Qa42KMndK8Ia5(#E}tr+4=lw1u>T>dl7<%?Qqf zWM<$1yQ-z(UGNw5lv46z`2^{G(NPF{u@R!oE!z`y>YJToDI{yT9pBFY={q*E)ciOY zBB>+?AeOEw*ul%aiTx^*#_7t)_O^;DCsFy4W+VH1*Yl72G()U{v8V_cgU~E?rfttF zwU2qeaIVjOIR{02x<_=@3OsZ+hozwi<6GK1xDK)t58p|8pp3D5e}jpoF2{2< zhYJOY_iqExyoI={qQa#8XvMPL9VUnX9uX0BwwDn^wU(5(SHkCk@MXIoN{?Y7jV-|S z_KWrL4PM7dyMA$n1RsCE$dUA5gW&-9qM^iONk&6L6kgvTQ3_iNENaNKB}J=E73Oa` zE2GAaRe(RRVRkaI#;7DxlJZu72CQk`y{y3CLl2;As~z5R`CY4lO{jg3LuIXybX8P` zszP4(7ONee>bDOPc8oZE6ChTZ?MP)SzR7eiw578%2rEk4J!P*~ z*UethZRjGK1y;9(iNj~&>M4)9?F8_bFM0X$>W+_TzWS?Qd$cnI?VSmBA0;-zL?ru# zTeVh(4vswp_MVO29sTdQ-|IvS@N1a@_~;F~Zch$O^!L}S0Tl2;>g0@P?$z_>*LwW* zaOo$)gZ=HCq0ArRXKrsWAb#(+xnxw@Y)GPy&3vi~P$fk~2-3*;c?ETCH(e5t%7v(; zMuhA2Eo*Y~`N^L2=}CIEvn^#OSw)Ryy4bk%*P85T zKi54H&Z0d<<0ps;UGoC?6gvv$fM2Em`z zKm!V~W(1-8Tg=qaBV-#XgmGU<#V{+r?kf8B*vr({y`6XBt!cA!LrqkQ+iGUP7_S1fBQ~VfZf_d;R~v?8RPeicFye&-~|)JbUO&*j;KeI zFoHk5IVHT2G;(WDOMV310<)~CvAn0CjDu%`BPBssu^HcZGW!Mu3^ z)nFnihUT@DS_p;`!(j5%NI327WPq|qI`CQ1X+}~c8Q{h4L_btoev5z=Y{qPld^1c0 zN4QYtS#xl(P%>Ahb<s?-sUh z;^h{0jWidKpa`tvx447;R#xE6f3AKD#cs=rx7Rg;k$zVIhk37Jx7!oXL!En6&x(P& z#qf_wTlpt#mB zi2Mven7o=ow(aEMzoHB#UbWY9>k^MO9nO?3LJ{dt;JJehpG>j__h|r@PkYbMhM>i? z?Pl@cPyIm}-quFgF6VhOXY4wpch!IR^PA1~+0pIr%Uj9~{JRizx?)u~4n2a%v{&AY0kY(q=2)BlXcOf0=e(wk%b zzAMzaEFb6&fQ|otK3ss`P6aCXKbO6GHm&{Nn@a_$FiprjKvObP+UE0Uf^IUSv_<8$ zDJxL~(YBm$)Xbf$V8oEq zl2e1>I#1B2h61&T0D;nshaRlPXH_ef0c!++uQmgh10+klA5RQWZ_RrMgWTK#1xHEy{Pgsq)5BmoN+6`B#c5uwbJVp}J2iaf?Q?%?a}-?*pZ_Q5S5xofaFHv@ zJ@7fv)_H35o^WiFl2M`Bf)GKZ`6_5qV7E0O@zH(tUK6wqqz6s`YO{lQ!V_=^xgQjU zZK{7*q6jMqClEM*{K1R*RvC@ux`C82T`Z=i$6Xa2>*&1g#MZ&tyX1mXIYOp}*~>~o zTh2z{5|bagXq9B(uf$~Z0O>hx)JzXKkRkq7E=g&fJpFlUZ1bQ5m9Jcd{+LXedo}Y6 zuRdOFts)oLW;?+`_ZYeupg0SU9+>74Ct2ps+pgyS3F6MAo3CU61v6O!7(l=CdjyOY z=*1VcJpmh?rtRotmQA@RTxoKP$26t{VfgQ{KgK^naPUMt^V|+IzO_w{qg$*I#MfQq zUg|eeB_~yPUB3g)hJx)oOmd!98V(58@aOsT>1>;RSV(S`)#cXnJD!3%6xsWHtxmSH zFO_{`jV*12bd5u8H}V*QKcmPYdsmKHO2~W$&?%a6ZOtr>IkeqX=@w7SoPTv61*E0c zSLGJZcNd|(W8o3?H*TT&FX`b^4}t&B;%|Qs9of(nIC0nJxd=EJwd(KMj#5%WdoUt_uow@XV-f626w}mnirdcP6tmBOmD6!Qb) zf4ZwAZ0`kd04Pzf@x%sUW4CF%4b{y1;+;JVwC{t9wfG$t0#>D2OEqi`@!o3PPTVL{ z_(n)BEZ$tZDY(OCpF`MNSkP8Lh|Gr7x-{NBto(F_5*$EDkM!_9H>03UooSq~@D&X& z0X3)-x|87`fWzu?a6;k&>1`f9Zp+o{~*?K)w3xu|;( zxsOFg3?hZxz^GrMo~@VFo<`LDuu|J3HEI-9s8V(l`Cn*KcXt|KBkKzdM~n*F6hoHF z&FKcXVq&dXb~;y`D{a;dhwp8aO0CMswc2VOqF18K@pan&DvwmutJAEcK=-`?8EYW@ z7F=HS@$%PS8P8mAMP4rYpk4SI{FZ{RDNjfrn)&yY5pDwiMT6GBu*2WW0CIu-Ju+Uq z9{L%;hOblVFqDi|O`JJQgbTJScM4wprANJ3tpO;TpaEpBm0pVTJK@BP)@dAFS!QUk zTB(2Nf+wdD1<9T@a@^K*MdSz|#`S-nF+t3G{|8Qd+H3t*@kCR4yZ1cR{IKD9@jiQw zlL*Q-QHt>kJ2;&I&i_@2$MLW15#T8VE1E5ovf}e2_d4()w{vE`i+@Xk0|J74fqfpv z5}({JT@|ZS2$@@aLlpt_^@xhNi-;Nw7G6^fc2;Qw&yV%uLLx4C@0x#ATY4jx0Sp0Qi>^nEIi3P6^Nc=&U;|IE$@9CTVd*aZpF3bDgkw!u>&-#FUXgEIE zdk;Qeksy`#dfQny!i{c|*3bvVCMZ4{+-xLlWIqoN*5t^s4@RkvH;iC|+jTP1qhq0B z+B(EB9OY8#;?*eclf&W_^nIIziC)a_`vv%(>v<9)w(T?63l#9wd?LeivpT&!vbhkC z>sjL>8SlXE#N5t zHYdpVM;h;lnEYrGEHJ#^s$W6YQ$Ch6*Tb1Y#e^B(!e)ta_-+fm^Eh&BPItW*69z4>ga?fd>RghET zFF3D=YkYcDxJ2q}8rsujh-nC5p#X~g9`_b@c6xh~071{|N@=tlkMtuGdwpf4pZC}x ztk*H!HN3VRWo4DA*uS9gh?dgL{%!cP zCb2WAEE3f{cY5CuO*l~gW2)8shy_sUYv9jyGWTYdC6X+ulQn>x%Ge*sExLrv$6tTG z)n#2mBc=ms?Fd)`mF(?MH z{#;q>!wryHQ$fC=18QG(1)!N&0NV=a+-wTp+5vfdX?h!Bn_n$ zcH=oH3=C5HaK+=!@eW5*DIfERc`eGk%jSs%aOL$oh8L09X+eesutXUp;^MGT9`6?Mo1+?|pYp0w{c0O(dGWnDuTi zZI4~V56#5Chn;Xkaj~$F#Yv+(DUNw2?~`7jZkA^@%b1Vx#8;%9JE?j~;-p~3gTzQ{ zWmNS_;(ZH^3_qp7a6xv>`^tLze;TF!#tnh)(d~*^?>*!?75uLS^4sNq|JK#mBZ^bu zd`kysT@xPWkaPf^RDCdj&>Z|TRSf`<_JV$uuyfeK0XmU~vs9P9J9V4mfI3T=SEb@1 z2m*2RSCNe7kR;U#R4s~I0%L?{X_;0d0Ni(_Wr{*PbXx<6CgpXRS#$F)3#Kb75o8~l zNvi-4+%<#FZMnaQN>GXF1@g;kG9p!v_Rmy0unXi9&$qh4^niw+m{f?tA_zTI{hIlG zx{Ead80$>nFiX;o2$_cq)NL&rW%IIio|WN#m{B*FBrbC-p;Yg#Em;?*9pi^-CJC{T)gDLTXx@Wz>*&R-o$@duPe)W48T0L0!khNnL z#8Z)d3UFngqKTELpRRx`sIIaNqx< zV`|2xokqJ;#=~kC!m2YtfwCdqw3@Wj9|$DQ=n(C=FiPo8Hq$62H!=b$V?Dtv4kFH>fu zR){$SIjM~TmuDBKEB+a@^e6ouK8mBXSMVQAChfVqbqq*d3r=a1UzcXlwJO_!|F0&? zZNOkcAm055AtO(+%Lx0~$a9{3Ve%wC>zruRn@dG>L_lUHf0*;bRclm-NALX9Jyfl3 z3qL}#sg?gXPm5Hkrx$a?NPSLgW7f`^wv^h6%DtL6>~+~xG)N9dX4uBJ<*#F{1*k^u zg$`EU(0kbq`|rq!UvIw!c7~6vJ~?CBfs=-Nj7f?;)hqe*o60_}V%*#!H=(G)LoXm{ zW^Pj3lIc#+$t&hy6K;<~b1Oz$1{hFvQJClHVF@Ty2xY3=tCn$+ zj*bhfhSqs$!Bd5sYj7dCH-#<&r?4O9I)BIP@qH?M@c zFp~7(tvF*MzIM-2X5JPCF>+^?tI`BjSGfEgmo@vV)<_{jW>%NG| zGxT|fr5U0z8}GMNWeQVU{=3z9h)|e4nA@iu|m35zH%9}M%Heh`-fB;>9Ase3}(||)4oNGmnMUmbSdUpWj#iKOkRw ze0Yh4a~RU7oFFVRe+Z<>_IOFGtB(Na|MJDu{y!4n3xE#+6EL_BK@1f$aCi?w7$IG- z_SxZ)>8^FR6oCT;sn}wATx98n^1oq zyIsAIq`Usr>eN2|^^U5rH0o|4-~whb?~(~~Ot(OLg?tJ9CoVG?G73A$eLdqWP$vAR z-{$hlqrPGFDJ^zz<&7+tuH!B`KWl+REfxnBag)0IZJ};}MhyIMd6SuK}V9QxY=4C9BfvWvoIn{ZqMuXW_M=^FR;mW^Co+uiaVhe+7b z1tz_NP^VJQGt9f#j^E{-DzAy&@M5f}4jWU>N(!Nwt$0n|h9w`{{ zJ17%UX9l+%NXmE;E3-X(t>%j#A>MCu0oOCDVXT`dnWN4e*lWhF8D)iRbcEPjp#)5b zRo3)%t*aX%VuTz_3bvu8sYfdh-+?WW1~~%3dVTJ4w;o_-VlQ#WU5_leT2479L2?W%R3_K_GWrIKQy^t|`tbQ2o|@yT1y!vHc#$i({7@D~x!4=P2Fa-4I@nF3Hl>o5(%Ue6r9I?UnZxlo1XsiW z|1Ekxt~FunIXUjmS>o_A5;&PbAG1?s##rjo&~leKWw_>KQH+7NghC=j=J`ZsQl)$M9H`r zlBz(bUd(Q(iZ6_)nq2+al|;oiZY-`OXFj3N?{j5=*62GHB2ZJZrLV-QH3?N35b(;` zT$zrRRNA?I9B)BK%rZ9w^MIT&mq%QQi@2&87#4W4fi#|;#RR5!#!c6>&7w2Gl^_!B zxObIO9ORW>0UIUYs-tCbbLj|fAIEMb%YINQ2ah7vwx^2UK`ot7Ax_zQa$QWsM@#OS z%fK{8tJy|~*_wh{F!3Hym~V}0QF-qxUNyFJ)xZS%-*tly@@zR$Q4?$ASBNENL35I* z%Tb-3r>~|CB+k7rar>HeQT~5?KaaS6HqjTk0z@DEy>q%|EM-}l4wZ4TMR9FTI;|p6 z2!;Qq>i0K)A506x+t~^mJ%AJELi*6Fjr|I20~74fZ0pK^IW51qBw!B~mfQ|DOON1Ks>V3pgNi z&;ik%)k)MRqvkmUAzhC_PkHcPa$Ay<(tPyDr)fVmw?gHHQ&dJNUSifEYQ2J=Ei~_P z{r*kpazu~glGv~ceYcx%QrBTKB83~5p*h*|^IHTRel+r4V>wV-H-946`MHk|{7e*y zW&R&Fi8?iH5H#%xXgl+w|IU1re=lH_Nis52sR934i3)!4&o8BzODxL5gOUj{GD&(wKliEo1WgZ)#N~~;=zLW+9|&VNFLE#=!UWlf8_uT`yUA*6@H%_F=IkKCbnV@2LiH$3Gv zeU?b@C*`sR+3;=b0$0l#{V5F$HvC=wu!^p=+ND=8sjih|I+4wVcQxJxlz)LwtJwo_ z%Krdlo9jNpVY-zLc90Z@_z-vHXVr)9=d?gSjfGrM65&^0Ns1l$`g2E7a z0v!3YHhJ_zOFhmQV|H~fvLxi8p+2^Ex3S@UI15NZD&5VN#sQCmd9g*y{W@d+P8&)o zbzfpdOU!mqTZ1IlT5GLK2cr^bV~i>D!EnQt%ppj&n>B0=Tf^3{B`kob5 0) { + for (var i in scripts) { + if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) { + _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1'); + break; + } + } + } + } + return _path; + }; +}(); + // arguably depth first search is a stupid algorithm to modularize - // there are many, many interesting moments to insert a behavior // and those end up being almost bigger than the function itself @@ -700,7 +721,7 @@ function bezier_point(points, t_) { * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}, * but it does not physically derive from it since so much is different about network * visualization versus conventional charts. - * @name diagram + * @class diagram * @memberof dc_graph * @param {String|node} parent - Any valid * {@link https://github.com/mbostock/d3/wiki/Selections#selecting-elements d3 single selector} @@ -1679,7 +1700,7 @@ dc_graph.diagram = function (parent, chartGroup) { function initLayout() { if(!_worker) - _worker = new Worker('js/dc.graph.' + _chart.layoutAlgorithm() + '.worker.js'); + _worker = new Worker(script_path() + 'dc.graph.' + _chart.layoutAlgorithm() + '.worker.js'); var args = { width: _chart.width(), height: _chart.height() @@ -3118,7 +3139,7 @@ dc_graph.legend = function() { * gain more control. * * Then we'll build back up from the ground up and show how inference works. - * @name constraint_pattern + * @class constraint_pattern * @memberof dc_graph * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine * the keys of nodes and edge sources and targets @@ -3432,7 +3453,7 @@ dc_graph.behavior = function(event_namespace, handlers) { * Optional - requires separately loading the d3.tip script and CSS (which are included in * dc.graph.js in `web/js/d3-tip/index.js` and `web/css/d3-tip/example-styles.css`) * - * @name tip + * @class tip * @memberof dc_graph * @return {Object} **/ @@ -4231,10 +4252,38 @@ dc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) { }; } -/* for the special case where there will be exactly one or zero items in a group, - a reasonable reduction is just to use the row or null. - this could be useful outside dc.graph (esp e.g bubble charts, scatter plots where each - observation is either shown or not) but it would have to be cleaned up a bit */ +/** + * `dc_graph.flat_group` implements a special ["fake group"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups) + * for the special case where you want a group that represents the filtered rows of the crossfilter. + * + * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of + * the corresponding data arrays, and each array has a column which contains the unique identifier + * for the node or edge. In this setup, there are other dimensions and groups which are aggregated + * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from + * the rows. + * + * This simple class supports that use case in three steps: + * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`) + * 2. It creates a group from the dimension with a reduction function that returns the row when the + * row is filtered in, and `null` when the row is filtered out. + * 3. It wraps the group in a fake group which filters out the resulting nulls. + * + * The result is a fake group whose `.all()` method returns an array of the currently filtered-in + * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw + * row object from the data. + * + * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and + * scatter plots often use similar functionality because each observation is either shown or not, + * and it is helpful to have the entire row available as reduced data. + * + * But it would need to be generalized and cleaned up. (For example, the way it has to create the + * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility + * library to put it in. + * + * @namespace flat_group + * @memberof dc_graph + * @type {{}} +**/ dc_graph.flat_group = (function() { var reduce_01 = { @@ -4265,11 +4314,34 @@ dc_graph.flat_group = (function() { } return { + /** + * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}. + * Returns an object containing all three. + + * @method make + * @memberof dc_graph.flat_group + * @param {Array} vec - the data array for crossfilter + * @param {Function} id_accessor - accessor function taking a row object and returning its + * unique identifier + * @return {Object} `{crossfilter, dimension, group}` + **/ make: function(vec, id_accessor) { var ndx = crossfilter(vec); return dim_group(ndx, id_accessor); }, - another: function(ndx, id_accessor) { // wretched name + /** + * Create a flat dimension and group from an existing crossfilter. + * + * This is a wretched name for this function. + + * @method another + * @memberof dc_graph.flat_group + * @param {Object} ndx - crossfilter instance + * @param {Function} id_accessor - accessor function taking a row object and returning its + * unique identifier + * @return {Object} `{crossfilter, dimension, group}` + **/ + another: function(ndx, id_accessor) { return dim_group(ndx, id_accessor); } }; diff --git a/web/js/dc.graph.js.map b/web/js/dc.graph.js.map index 0f98e489..6d63f026 100644 --- a/web/js/dc.graph.js.map +++ b/web/js/dc.graph.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/banner.js","src/core.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/legend.js","src/constraint_pattern.js","src/tree_constraints.js","src/tree_positions.js","src/behavior.js","src/tip.js","src/select_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.3.16\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.3.16',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\n// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nvar identity = function(x) { return x; };\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish}\n return function(diagram, nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e.orig); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = diagram.edgeSource.eval(e),\n head = diagram.edgeTarget.eval(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = diagram.nodeKey.eval(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n if(ei && callbacks.sib)\n callbacks.sib(false, outmap[key][ei-1].target, e.target);\n callbacks.push && callbacks.push();\n place_tree(e.target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n.orig); });\n else {\n roots = nodes.filter(function(n) { return !indegree[diagram.nodeKey.eval(n)]; });\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row ? callbacks.row(n.orig) : 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Currently, you can specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it\n * will replace the back-end. In the future, there will be subclasses like colaDiagram and\n * dagreDiagram with appropriate interfaces for each, but it is not yet clear which features are\n * common between them.\n * @name layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = property('cola');\n\n _chart.tickSize = property(1);\n\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.edgeId(d);\n };\n\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components. Default: true\n * @name handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = property(true);\n\n function initLayout() {\n if(!_worker)\n _worker = new Worker('js/dc.graph.' + _chart.layoutAlgorithm() + '.worker.js');\n var args = {\n width: _chart.width(),\n height: _chart.height()\n };\n // generalize this? class hierarchy, what?\n switch(_chart.layoutAlgorithm()) {\n case 'cola':\n Object.assign(args, {\n handleDisconnected: _chart.handleDisconnected(),\n lengthStrategy: _chart.lengthStrategy(),\n baseLength: _chart.baseLength(),\n flowLayout: _chart.flowLayout(),\n tickSize: _chart.tickSize()\n });\n break;\n case 'dagre':\n Object.assign(args, {\n rankdir: _chart.rankdir()\n });\n }\n _worker.postMessage({\n command: 'init',\n args: args\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n if(_worker)\n _worker.postMessage({command: 'stop'});\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _worker.onmessage = function(e) {\n var args = e.data.args;\n switch(e.data.response) {\n case 'tick':\n var elapsed = Date.now() - startTime;\n populate_cola(args.nodes, args.edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _worker.postMessage({\n command: 'stop'\n });\n }\n break;\n case 'end':\n if(!_chart.showLayoutSteps()) {\n populate_cola(args.nodes, args.edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n break;\n case 'start':\n console.log('algo ' + _chart.layoutAlgorithm() + ' started.');\n _dispatch.start();\n }\n };\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _worker.postMessage({\n command: 'data',\n args: {\n nodes: wnodes.map(function(v) { return v.cola; }),\n edges: layout_edges.map(function(v) { return v.cola; }),\n constraints: constraints,\n opts: {groupConnected: _chart.groupConnected()}\n }\n });\n _worker.postMessage({\n command: 'start',\n args: {\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20,\n initialOnly: _chart.initialOnly(),\n showLayoutSteps: _chart.showLayoutSteps()\n }\n });\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @name render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g');\n _edgeLayer = _g.append('g');\n _nodeLayer = _g.append('g');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @name on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @name getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @name selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top svg element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @name svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @name resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @name redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @name renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @name defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _xScale.domain(), yDomain = _yScale.domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n if(_chart.mouseZoomable()) {\n // start out with 1:1 zoom\n _xScale = d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]);\n _yScale = d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]);\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_xScale).y(_yScale);\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _xScale.invert(clientCoord[0]),\n _yScale.invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","/**\n## Legend\n\nThe dc_graph.legend will show labeled examples of nodes (and someday edges), within the frame of a dc_graph.diagram.\n**/\ndc_graph.legend = function() {\n var _legend = {}, _items;\n\n /**\n #### .x([value])\n Set or get x coordinate for legend widget. Default: 0.\n **/\n _legend.x = property(0);\n\n /**\n #### .y([value])\n Set or get y coordinate for legend widget. Default: 0.\n **/\n _legend.y = property(0);\n\n /**\n #### .gap([value])\n Set or get gap between legend items. Default: 5.\n **/\n _legend.gap = property(5);\n\n /**\n #### .nodeWidth([value])\n Set or get legend node width. Default: 30.\n **/\n _legend.nodeWidth = property(40);\n\n /**\n #### .nodeHeight([value])\n Set or get legend node height. Default: 30.\n **/\n _legend.nodeHeight = property(40);\n\n\n /**\n #### .exemplars([object])\n Specifies an object where the keys are the names of items to add to the legend, and the values are\n objects which will be passed to the accessors of the attached diagram in order to determine the\n drawing attributes. Alternately, if the key needs to be specified separately from the name, the\n function can take an array of {name, key, value} objects.\n **/\n _legend.exemplars = property({});\n\n _legend.parent = property(null);\n\n _legend.redraw = function() {\n var legend = _legend.parent().svg()\n .selectAll('g.dc-graph-legend')\n .data([0]);\n legend.enter().append('g')\n .attr('class', 'dc-graph-legend')\n .attr('transform', 'translate(' + _legend.x() + ',' + _legend.y() + ')');\n\n var node = legend.selectAll('.node')\n .data(_items, function(d) { return d.name; });\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node');\n nodeEnter.append('text')\n .attr('dy', '0.3em')\n .attr('class', 'legend-label');\n node\n .attr('transform', function(d, i) {\n return 'translate(' + _legend.nodeWidth()/2 + ',' + (_legend.nodeHeight() + _legend.gap())*(i+0.5) + ')';\n });\n node.select('text.legend-label')\n .attr('transform', 'translate(' + (_legend.nodeWidth()/2+_legend.gap()) + ',0)')\n .text(function(d) {\n return d.name;\n });\n _legend.parent()\n ._enterNode(nodeEnter)\n ._updateNode(node);\n };\n\n _legend.render = function() {\n var exemplars = _legend.exemplars();\n if(exemplars instanceof Array) {\n _items = exemplars.map(function(v) { return {name: v.name, orig: {key: v.key, value: v.value}, cola: {}}; });\n }\n else {\n _items = [];\n for(var item in exemplars)\n _items.push({name: item, orig: {key: item, value: exemplars[item]}, cola: {}});\n }\n _legend.redraw();\n };\n\n return _legend;\n};\n","/**\n * In cola.js there are three factors which influence the positions of nodes:\n * * *edge length* suggestions, controlled by the\n * {@link #dc_graph.diagram+lengthStrategy lengthStrategy},\n * {@link #dc_graph.diagram+baseLength baseLength}, and\n * {@link #dc_graph.diagram+edgeLength edgeLength} parameters in dc.graph.js\n * * *automatic constraints* based on the global edge flow direction (`cola.flowLayout`) and overlap\n * avoidance parameters (`cola.avoidOverlaps`)\n * * *manual constraints* such as alignment, inequality and equality constraints in a dimension/axis.\n *\n * Generally when the\n * {@link https://github.com/tgdwyer/WebCola/wiki/Constraints cola.js documentation mentions constraints},\n * it means the manual constraints.\n *\n * dc.graph.js allows generation of manual constraints using\n * {@link #dc_graph.diagram+constrain diagram.constrain} but it can be tedious to write these\n * functions because it usually means looping over the nodes and edges multiple times to\n * determine what classes or types of nodes to apply constraints to, and which edges should\n * take additional constraints.\n *\n * This utility creates a constraint generator function from a *pattern*, a graph where:\n * 1. Nodes represent *types* or classes of layout nodes, annotated with a specification\n * of how to match the nodes belonging each type.\n * 2. Edges represent *rules* to generate constraints. There are two kinds of rules:\n *