From 0baea652cc0ebb2b1625360ff7a3541b747f2350 Mon Sep 17 00:00:00 2001 From: James Saunders Date: Fri, 22 Dec 2017 21:45:25 +0000 Subject: [PATCH] Add missing scatter plot. --- Makefile | 1 + build/d3-ez.js | 87 +++++++++++++++++++++++++++++++++++++++++++++ build/d3-ez.min.js | 2 +- build/d3-ez.zip | Bin 34601 -> 34819 bytes 4 files changed, 89 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 782c8749..c978f8fa 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ JS_FILES := src/header.js \ src/component/donut.js \ src/component/creditTag.js \ src/component/labeledNode.js \ + src/component/scatterPlot.js \ src/component/legend.js \ src/component/lineChart.js \ src/component/heatMap.js \ diff --git a/build/d3-ez.js b/build/d3-ez.js index b1040187..2e6e8441 100644 --- a/build/d3-ez.js +++ b/build/d3-ez.js @@ -1128,6 +1128,93 @@ d3.ez.component.labeledNode = function module() { return my; }; +/** + * Reusable Scatter Plot + * + * @example + * var myBars = d3.ez.component.scatterPlot() + * .colorScale(**D3 Scale Object**); + * d3.select("svg").call(myBars); + */ +d3.ez.component.scatterPlot = function module() { + // Default Options (Configurable via setters) + var height = 100; + var width = 300; + var colorScale = undefined; + var xScale = undefined; + var yScale = undefined; + var transition = { + ease: d3.easeBounce, + duration: 500 + }; + var dispatch = d3.dispatch("customMouseOver", "customMouseOut", "customClick"); + function my(selection) { + selection.each(function(data) { + // Create chart group + selection.selectAll(".dotSeries").data(function(d) { + return [ d ]; + }).enter().append("g").classed("dotSeries", true).attr("fill", function(d) { + return colorScale(d.key); + }).attr("width", width).attr("height", height).on("click", function(d) { + dispatch.call("customClick", this, d); + }); + var dotSeries = selection.selectAll(".dotSeries"); + // Add Dots to Group + var dots = dotSeries.selectAll(".dot").data(function(d) { + return d.values; + }); + dots.enter().append("circle").attr("class", function(d) { + return d.key + " dot"; + }).attr("r", 3).attr("cx", function(d, i) { + return xScale(d.key); + }).attr("cy", height).on("mouseover", function(d) { + dispatch.call("customMouseOver", this, d); + }).merge(dots).transition().ease(transition.ease).duration(transition.duration).attr("cx", function(d, i) { + return xScale(d.key); + }).attr("cy", function(d, i) { + return yScale(d.value); + }); + dots.exit().transition().style("opacity", 0).remove(); + }); + } + // Configuration Getters & Setters + my.height = function(_) { + if (!arguments.length) return height; + height = _; + return this; + }; + my.width = function(_) { + if (!arguments.length) return width; + width = _; + return this; + }; + my.colorScale = function(_) { + if (!arguments.length) return colorScale; + colorScale = _; + return my; + }; + my.xScale = function(_) { + if (!arguments.length) return xScale; + xScale = _; + return my; + }; + my.yScale = function(_) { + if (!arguments.length) return yScale; + yScale = _; + return my; + }; + my.dispatch = function(_) { + if (!arguments.length) return dispatch(); + dispatch = _; + return this; + }; + my.on = function() { + var value = dispatch.on.apply(dispatch, arguments); + return value === dispatch ? my : value; + }; + return my; +}; + /** * Legend * diff --git a/build/d3-ez.min.js b/build/d3-ez.min.js index 1d708de9..41076113 100644 --- a/build/d3-ez.min.js +++ b/build/d3-ez.min.js @@ -1 +1 @@ -d3.ez={version:"2.1.7",author:"James Saunders",copyright:"Copyright (C) 2017 James Saunders",license:"GPL-3.0"};d3.ez.component={description:"Reusable Components"};d3.ez.dataParse=function module(data){var levels=function(){if(data["key"]!=undefined){return 1}else{return 2}}();var groupName=function(){if(1==levels){var ret=d3.values(data)[0]}else{var ret=undefined}return ret}();var groupNames=function(){if(1==levels){ret=undefined}else{var ret=data.map(function(d){return d.key})}return ret}();var groupTotals=function(){if(1==levels){var ret=undefined}else{var ret={};d3.map(data).values().forEach(function(d,i){var groupName=d.key;d.values.forEach(function(d,i){var categoryValue=+d.value;ret[groupName]=typeof ret[groupName]==="undefined"?0:ret[groupName];ret[groupName]+=categoryValue})})}return ret}();var groupTotalsMax=function(){if(1==levels){var ret=undefined}else{var ret=d3.max(d3.values(groupTotals))}return ret}();var union=function(){var arrs=[].slice.call(arguments);var ret=[];for(var i=0,l=arrs.length;i-1){ret.splice(ret.indexOf(arrs[i][j-1])+1,0,currEl)}else{ret.push(currEl)}}}}return ret};var categoryNames=function(){if(1==levels){var ret=d3.values(data)[1].map(function(d){return d.key})}else{var ret=[];d3.map(data).values().forEach(function(d,i){var groupName=d.key;d.values.forEach(function(d,i){categoryName=d.key;ret[i]=categoryName});ret=union(ret)})}return ret}();var categoryTotal=function(){if(1==levels){var ret=d3.sum(data.values,function(d){return d.value})}else{var ret=undefined}return ret}();var categoryTotals=function(){if(1==levels){var ret=undefined}else{var ret={};d3.map(data).values().forEach(function(d,i){var groupName=d.key;d.values.forEach(function(d,i){var categoryName=d.key;var categoryValue=+d.value;ret[categoryName]=typeof ret[categoryName]==="undefined"?0:ret[categoryName];ret[categoryName]+=categoryValue})})}return ret}();var categoryTotalsMax=function(){if(1==levels){var ret=undefined}else{var ret=d3.max(d3.values(categoryTotals))}return ret}();var minValue=function(){if(1==levels){var ret=d3.min(data.values,function(d){return d.value})}else{var ret=undefined;d3.map(data).values().forEach(function(d,i){d.values.forEach(function(d,i){ret=typeof ret==="undefined"?d.value:d3.min([ret,d.value])})})}return+ret}();var maxValue=function(){if(1==levels){var ret=d3.max(data.values,function(d){return d.value})}else{var ret=undefined;d3.map(data).values().forEach(function(d,i){d.values.forEach(function(d,i){ret=typeof ret==="undefined"?d.value:d3.max([ret,d.value])})})}return+ret}();var decimalPlaces=function(num){var match=(""+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);if(!match){return 0}ret=Math.max(0,(match[1]?match[1].length:0)-(match[2]?+match[2]:0));return ret};var maxDecimalPlace=function(){if(1==levels){var ret=undefined}else{var ret=0;d3.map(data).values().forEach(function(d){d.values.forEach(function(d){ret=d3.max([ret,decimalPlaces(d.value)])})})}return ret}();var thresholds=function(){var distance=maxValue-minValue;var ret=[(minValue+.15*distance).toFixed(maxDecimalPlace),(minValue+.4*distance).toFixed(maxDecimalPlace),(minValue+.55*distance).toFixed(maxDecimalPlace),(minValue+.9*distance).toFixed(maxDecimalPlace)];return ret}();var my={levels:levels,groupName:groupName,groupNames:groupNames,groupTotals:groupTotals,groupTotalsMax:groupTotalsMax,categoryNames:categoryNames,categoryTotal:categoryTotal,categoryTotals:categoryTotals,categoryTotalsMax:categoryTotalsMax,minValue:minValue,maxValue:maxValue,maxDecimalPlace:maxDecimalPlace,thresholds:thresholds};return my};d3.ez.chart=function module(){var svg;var canvas;var width=600;var height=400;var margin={top:15,right:15,bottom:15,left:15};var canvasW=580;var canvasH=380;var chartTop=0;var classed="d3ez";var chart=undefined;var legend=undefined;var title=undefined;var creditTag=d3.ez.component.creditTag();var description="";var yAxisLabel="";var colorScale=undefined;var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function init(data){canvasW=width-(margin.left+margin.right);canvasH=height-(margin.top+margin.bottom);chart.dispatch(dispatch).width(canvasW).height(canvasH);if(legend){legend.width(150).height(200);chart.width(chart.width()-legend.width())}if(title){chartTop=title.height();chart.height(chart.height()-title.height())}creditTag.text("d3-ez.net").href("http://d3-ez.net")}function my(selection){selection.each(function(data){init(data);if(!svg){svg=d3.select(this).append("svg").classed(classed,true).attr("width",width).attr("height",height);canvas=svg.append("g").classed("canvas",true);canvas.append("g").classed("chartbox",true);canvas.append("g").classed("legendbox",true);canvas.append("g").classed("titlebox",true);canvas.append("g").classed("creditbox",true)}else{canvas=svg.select(".canvas")}canvas.attr("transform","translate("+margin.left+","+margin.top+")").attr("width",canvasW).attr("height",canvasH);canvas.select(".chartbox").datum(data).attr("transform","translate("+0+","+chartTop+")").call(chart);if(legend&&(typeof chart.colorScale==="function"||typeof chart.sizeScale==="function")){if(typeof chart.colorScale==="function"){legend.colorScale(chart.colorScale())}if(typeof chart.sizeScale==="function"){legend.sizeScale(chart.sizeScale())}canvas.select(".legendbox").attr("transform","translate("+(canvasW-legend.width())+","+title.height()+")").call(legend)}if(title){canvas.select(".titlebox").attr("transform","translate("+width/2+","+0+")").call(title)}canvas.select(".creditbox").attr("transform","translate("+(width-20)+","+(height-20)+")").call(creditTag)})}my.width=function(_){if(!arguments.length)return width;width=_;return this};my.height=function(_){if(!arguments.length)return height;height=_;return this};my.chart=function(_){if(!arguments.length)return chart;chart=_;return this};my.legend=function(_){if(!arguments.length)return legend;legend=_;return this};my.title=function(_){if(!arguments.length)return title;if(typeof _==="string"){title=d3.ez.title().mainText(_).subText("")}else{title=_}return this};my.yAxisLabel=function(_){if(!arguments.length)return yAxisLabel;yAxisLabel=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.vega=function module(){var svg;var canvas;var width=1e3;var height=600;var margin={top:30,right:30,bottom:30,left:30};var padding=20;var canvasW=580;var canvasH=380;var chartTop=0;var classed="d3ez";var chart=undefined;var yScale=undefined;var yAxis=undefined;var xScale=undefined;var xAxis=undefined;var legend=undefined;var title=undefined;var creditTag=d3.ez.component.creditTag();var yAxisLabel="";var colorScale=undefined;var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function init(data){canvasW=width-(margin.left+margin.right);canvasH=height-(margin.top+margin.bottom);chart.colorScale(colorScale).xScale(xScale).yScale(yScale).width(canvasW).height(canvasH).dispatch(dispatch);if(legend){legend.width(120).height(200);chart.width(chart.width()-legend.width()-padding)}if(title){chartTop=title.height()+padding;chart.height(chart.height()-title.height()-padding)}xScale.range([chart.width(),0]);yScale.range([chart.height(),0]);xAxis=d3.axisBottom(xScale);yAxis=d3.axisLeft(yScale);creditTag.text("d3-ez.net").href("http://d3-ez.net")}function my(selection){selection.each(function(data){init(data);if(!svg){svg=d3.select(this).append("svg").classed(classed,true).attr("width",width).attr("height",height);canvas=svg.append("g").classed("canvas",true);canvas.append("g").classed("chartbox",true);canvas.select(".chartbox").append("g").classed("x-axis axis",true);canvas.select(".chartbox").append("g").classed("y-axis axis",true);canvas.append("g").classed("legendbox",true);canvas.append("g").classed("titlebox",true);svg.append("g").classed("creditbox",true)}else{canvas=svg.select(".canvas")}canvas.attr("transform","translate("+margin.left+","+margin.top+")").attr("width",canvasW).attr("height",canvasH);canvas.select(".chartbox").attr("transform","translate(0,"+chartTop+")").datum(data).call(chart);canvas.select(".y-axis").call(yAxis);canvas.select(".x-axis").attr("transform","translate(0,"+chart.height()+")").call(xAxis);if(title){canvas.select(".titlebox").attr("transform","translate("+width/2+","+0+")").call(title)}if(legend&&(typeof chart.colorScale==="function"||typeof chart.sizeScale==="function")){if(typeof chart.colorScale==="function"){legend.colorScale(chart.colorScale())}if(typeof chart.sizeScale==="function"){legend.sizeScale(chart.sizeScale())}canvas.select(".legendbox").attr("transform","translate("+(canvasW-legend.width())+","+chartTop+")").call(legend)}if(creditTag){svg.select(".creditbox").attr("transform","translate("+(width-10)+","+(height-5)+")").call(creditTag)}})}my.width=function(_){if(!arguments.length)return width;width=_;return this};my.height=function(_){if(!arguments.length)return height;height=_;return this};my.chart=function(_){if(!arguments.length)return chart;chart=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return this};my.xScale=function(_){if(!arguments.length)return xScale;xScale=_;return this};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return this};my.legend=function(_){if(!arguments.length)return legend;legend=_;return this};my.title=function(_){if(!arguments.length)return title;if(typeof _==="string"){title=d3.ez.title().mainText(_).subText("")}else{title=_}return this};my.yAxisLabel=function(_){if(!arguments.length)return yAxisLabel;yAxisLabel=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.colors={categorical:function(scheme){switch(scheme){case 1:return["#5da5da","#faa43a","#60bd68","#f17cb0","#b2912f","#b276b2","#decf3f","#f15854","#4d4d4d"];case 2:return["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"];case 3:return["#3f51b5","#ff9800","#8bc34a","#9c27b0","#ffeb3b","#03a9f4","#f44336","#009688","#795548"];case 4:return d3.ez.colors.lumShift(d3.ez.colors.lumShift(d3.ez.colors.categorical(3),-.8),5.5)}},diverging:function(scheme){switch(scheme){case 1:return["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"];case 2:return["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"];case 3:return["#0000ff","#8052fe","#b58bfb","#ddc5f7","#fffff0","#ffcfb4","#ff9e7a","#ff6842","#ff0000"]}},sequential:function(origHex,count){var lumStep=.1;var lumMax=lumStep*count/2;var lumMin=0-lumMax;var lumScale=d3.scale.linear().domain([1,count]).range([lumMin,lumMax]);var result=[];for(var i=1;i<=count;i++){lum=lumScale(i);origHex=String(origHex).replace(/[^0-9a-f]/gi,"");if(origHex.length<6){origHex=origHex[0]+origHex[0]+origHex[1]+origHex[1]+origHex[2]+origHex[2]}var newHex="#";var c;for(var j=0;j<3;j++){c=parseInt(origHex.substr(j*2,2),16);c=Math.round(Math.min(Math.max(0,c+c*lum),255)).toString(16);newHex+=("00"+c).substr(c.length)}result.push(newHex)}return result},lumShift:function(colors,lum){var result=[];colors.forEach(function addNumber(origHex,index){origHex=String(origHex).replace(/[^0-9a-f]/gi,"");if(origHex.length<6){origHex=origHex[0]+origHex[0]+origHex[1]+origHex[1]+origHex[2]+origHex[2]}lum=lum||0;var newHex="#",c,i;for(i=0;i<3;i++){c=parseInt(origHex.substr(i*2,2),16);c=Math.round(Math.min(Math.max(0,c+c*lum),255)).toString(16);newHex+=("00"+c).substr(c.length)}result[index]=newHex});return result}};d3.ez.component.barGrouped=function module(){var height=100;var width=300;var colorScale=undefined;var xScale=undefined;var yScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function my(selection){selection.each(function(data){var barW=xScale.bandwidth();selection.selectAll(".barGrouped").data(function(d){return[d]}).enter().append("g").classed("barGrouped",true).attr("width",width).attr("height",height).on("click",function(d){dispatch.call("customClick",this,d)});var barGroup=selection.selectAll(".barGrouped");var bars=barGroup.selectAll(".bar").data(function(d){return d.values});bars.enter().append("rect").classed("bar",true).attr("fill",function(d){return colorScale(d.key)}).attr("width",barW).attr("x",function(d,i){return xScale(d.key)}).attr("y",height).attr("rx",0).attr("ry",0).attr("height",0).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(bars).transition().ease(transition.ease).duration(transition.duration).attr("x",function(d,i){return xScale(d.key)}).attr("y",function(d,i){return yScale(d.value)}).attr("height",function(d,i){return height-yScale(d.value)});bars.exit().transition().style("opacity",0).remove()})}my.height=function(_){if(!arguments.length)return height;height=_;return this};my.width=function(_){if(!arguments.length)return width;width=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return my};my.xScale=function(_){if(!arguments.length)return xScale;xScale=_;return my};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return my};my.dispatch=function(_){if(!arguments.length)return dispatch();dispatch=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.component.barStacked=function module(){var height=100;var width=50;var colorScale=undefined;var xScale=undefined;var yScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function my(selection){selection.each(function(data){selection.selectAll(".barStacked").data(function(d){series=[];var y0=0;d3.map(d.values).values().forEach(function(d,i){series[i]={name:d.key,value:d.value,y0:y0,y1:y0+d.value};y0+=d.value});data={key:data.key,values:series};return[data]}).enter().append("g").classed("barStacked",true).attr("width",width).attr("height",height).on("click",function(d){dispatch.call("customClick",this,d)});var barGroup=selection.selectAll(".barStacked");var bars=barGroup.selectAll(".bar").data(function(d){return d.values});bars.enter().append("rect").classed("bar",true).attr("width",width).attr("x",0).attr("y",height).attr("rx",0).attr("ry",0).attr("height",0).attr("fill",function(d){return colorScale(d.name)}).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(bars).transition().ease(transition.ease).duration(transition.duration).attr("width",width).attr("x",0).attr("y",function(d){return yScale(d.y1)}).attr("height",function(d){return yScale(d.y0)-yScale(d.y1)});bars.exit().transition().style("opacity",0).remove()})}my.height=function(_){if(!arguments.length)return height;height=_;return this};my.width=function(_){if(!arguments.length)return width;width=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return my};my.xScale=function(_){if(!arguments.length)return xScale;xScale=_;return my};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return my};my.dispatch=function(_){if(!arguments.length)return dispatch();dispatch=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.component.barRadial=function module(){var width=400;var height=300;var colorScale=undefined;var yScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");var radius=undefined;var capitalizeLabels=false;var colorLabels=false;function my(selection){selection.each(function(data){var defaultRadius=Math.min(width,height)/2;radius=typeof radius==="undefined"?defaultRadius:radius;var yDomain=yScale.domain();yDomain[1]=yDomain[1]*1.05;var barScale=d3.scaleLinear().domain(yDomain).range([0,radius]);var axisScale=d3.scaleLinear().domain(yDomain).range([0,-radius]);var arc=d3.arc().innerRadius(0).outerRadius(function(d,i){return barScale(d.value)}).startAngle(function(d,i,j){numBars=j.length;return i*2*Math.PI/numBars}).endAngle(function(d,i,j){numBars=j.length;return(i+1)*2*Math.PI/numBars});var barRadial=selection.selectAll(".barRadial").data(function(d){return[d]}).enter().append("g").classed("barRadial",true).on("click",function(d){dispatch.call("customClick",this,d)});var barRadial=selection.selectAll(".barRadial").merge(barRadial);var segments=barRadial.selectAll("path").data(function(d){return d.values});segments.enter().append("path").style("fill",function(d,i){return colorScale(d.key)}).classed("segment",true).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(segments).transition().ease(transition.ease).duration(transition.duration).attr("d",arc);segments.exit().remove()})}my.height=function(_){if(!arguments.length)return height;height=_;return this};my.width=function(_){if(!arguments.length)return width;width=_;return this};my.radius=function(_){if(!arguments.length)return radius;radius=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return my};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return my};my.dispatch=function(_){if(!arguments.length)return dispatch();dispatch=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.component.donut=function module(){var height=100;var width=300;var colorScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");var radius=undefined;var innerRadius=undefined;function my(selection){selection.each(function(data){var defaultRadius=Math.min(width,height)/2;radius=typeof radius==="undefined"?defaultRadius:radius;innerRadius=typeof innerRadius==="undefined"?defaultRadius/2:innerRadius;var pie=d3.pie().value(function(d){return d.value}).sort(null);var arc=d3.arc().innerRadius(innerRadius).outerRadius(radius).cornerRadius(3).padAngle(.015);var outerArc=d3.arc().innerRadius(radius*.9).outerRadius(radius*.9);function arcTween(d){var i=d3.interpolate(this._current,d);this._current=i(0);return function(t){return arc(i(t))}}function midAngle(d){return d.startAngle+(d.endAngle-d.startAngle)/2}var chartDonut=selection.selectAll(".donut").data(function(d){return[d]}).enter().append("g").classed("donut",true).on("click",function(d){dispatch.call("customClick",this,d)});chartDonut.append("g").attr("class","slices");chartDonut.append("g").attr("class","labels");chartDonut.append("g").attr("class","lines");var chartDonut=selection.selectAll(".donut");var slices=chartDonut.select(".slices").selectAll("path.slice").data(function(d){return pie(d.values)});slices.enter().append("path").attr("class","slice").attr("fill",function(d){return colorScale(d.data.key)}).attr("d",arc).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(slices).transition().duration(transition.duration).ease(transition.ease).attrTween("d",arcTween);slices.exit().remove();var labels=chartDonut.select(".labels").selectAll("text.label").data(function(d){return pie(d.values)});labels.enter().append("text").attr("class","label").attr("dy",".35em").merge(labels).transition().duration(transition.duration).text(function(d,i){return d.data.key}).attrTween("transform",function(d){this._current=this._current||d;var interpolate=d3.interpolate(this._current,d);this._current=interpolate(0);return function(t){var d2=interpolate(t);var pos=outerArc.centroid(d2);pos[0]=radius*(midAngle(d2) "+min:min+" - "+max;return rangeStr;break}var rangeIncrement=domainSize/rangeLength;var ranges=[];var range=[];var rangeStart=domainMin;var rangeEnd=domainMin+rangeIncrement;for(i=0;i-1){ret.splice(ret.indexOf(arrs[i][j-1])+1,0,currEl)}else{ret.push(currEl)}}}}return ret};var categoryNames=function(){if(1==levels){var ret=d3.values(data)[1].map(function(d){return d.key})}else{var ret=[];d3.map(data).values().forEach(function(d,i){var groupName=d.key;d.values.forEach(function(d,i){categoryName=d.key;ret[i]=categoryName});ret=union(ret)})}return ret}();var categoryTotal=function(){if(1==levels){var ret=d3.sum(data.values,function(d){return d.value})}else{var ret=undefined}return ret}();var categoryTotals=function(){if(1==levels){var ret=undefined}else{var ret={};d3.map(data).values().forEach(function(d,i){var groupName=d.key;d.values.forEach(function(d,i){var categoryName=d.key;var categoryValue=+d.value;ret[categoryName]=typeof ret[categoryName]==="undefined"?0:ret[categoryName];ret[categoryName]+=categoryValue})})}return ret}();var categoryTotalsMax=function(){if(1==levels){var ret=undefined}else{var ret=d3.max(d3.values(categoryTotals))}return ret}();var minValue=function(){if(1==levels){var ret=d3.min(data.values,function(d){return d.value})}else{var ret=undefined;d3.map(data).values().forEach(function(d,i){d.values.forEach(function(d,i){ret=typeof ret==="undefined"?d.value:d3.min([ret,d.value])})})}return+ret}();var maxValue=function(){if(1==levels){var ret=d3.max(data.values,function(d){return d.value})}else{var ret=undefined;d3.map(data).values().forEach(function(d,i){d.values.forEach(function(d,i){ret=typeof ret==="undefined"?d.value:d3.max([ret,d.value])})})}return+ret}();var decimalPlaces=function(num){var match=(""+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);if(!match){return 0}ret=Math.max(0,(match[1]?match[1].length:0)-(match[2]?+match[2]:0));return ret};var maxDecimalPlace=function(){if(1==levels){var ret=undefined}else{var ret=0;d3.map(data).values().forEach(function(d){d.values.forEach(function(d){ret=d3.max([ret,decimalPlaces(d.value)])})})}return ret}();var thresholds=function(){var distance=maxValue-minValue;var ret=[(minValue+.15*distance).toFixed(maxDecimalPlace),(minValue+.4*distance).toFixed(maxDecimalPlace),(minValue+.55*distance).toFixed(maxDecimalPlace),(minValue+.9*distance).toFixed(maxDecimalPlace)];return ret}();var my={levels:levels,groupName:groupName,groupNames:groupNames,groupTotals:groupTotals,groupTotalsMax:groupTotalsMax,categoryNames:categoryNames,categoryTotal:categoryTotal,categoryTotals:categoryTotals,categoryTotalsMax:categoryTotalsMax,minValue:minValue,maxValue:maxValue,maxDecimalPlace:maxDecimalPlace,thresholds:thresholds};return my};d3.ez.chart=function module(){var svg;var canvas;var width=600;var height=400;var margin={top:15,right:15,bottom:15,left:15};var canvasW=580;var canvasH=380;var chartTop=0;var classed="d3ez";var chart=undefined;var legend=undefined;var title=undefined;var creditTag=d3.ez.component.creditTag();var description="";var yAxisLabel="";var colorScale=undefined;var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function init(data){canvasW=width-(margin.left+margin.right);canvasH=height-(margin.top+margin.bottom);chart.dispatch(dispatch).width(canvasW).height(canvasH);if(legend){legend.width(150).height(200);chart.width(chart.width()-legend.width())}if(title){chartTop=title.height();chart.height(chart.height()-title.height())}creditTag.text("d3-ez.net").href("http://d3-ez.net")}function my(selection){selection.each(function(data){init(data);if(!svg){svg=d3.select(this).append("svg").classed(classed,true).attr("width",width).attr("height",height);canvas=svg.append("g").classed("canvas",true);canvas.append("g").classed("chartbox",true);canvas.append("g").classed("legendbox",true);canvas.append("g").classed("titlebox",true);canvas.append("g").classed("creditbox",true)}else{canvas=svg.select(".canvas")}canvas.attr("transform","translate("+margin.left+","+margin.top+")").attr("width",canvasW).attr("height",canvasH);canvas.select(".chartbox").datum(data).attr("transform","translate("+0+","+chartTop+")").call(chart);if(legend&&(typeof chart.colorScale==="function"||typeof chart.sizeScale==="function")){if(typeof chart.colorScale==="function"){legend.colorScale(chart.colorScale())}if(typeof chart.sizeScale==="function"){legend.sizeScale(chart.sizeScale())}canvas.select(".legendbox").attr("transform","translate("+(canvasW-legend.width())+","+title.height()+")").call(legend)}if(title){canvas.select(".titlebox").attr("transform","translate("+width/2+","+0+")").call(title)}canvas.select(".creditbox").attr("transform","translate("+(width-20)+","+(height-20)+")").call(creditTag)})}my.width=function(_){if(!arguments.length)return width;width=_;return this};my.height=function(_){if(!arguments.length)return height;height=_;return this};my.chart=function(_){if(!arguments.length)return chart;chart=_;return this};my.legend=function(_){if(!arguments.length)return legend;legend=_;return this};my.title=function(_){if(!arguments.length)return title;if(typeof _==="string"){title=d3.ez.title().mainText(_).subText("")}else{title=_}return this};my.yAxisLabel=function(_){if(!arguments.length)return yAxisLabel;yAxisLabel=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.vega=function module(){var svg;var canvas;var width=1e3;var height=600;var margin={top:30,right:30,bottom:30,left:30};var padding=20;var canvasW=580;var canvasH=380;var chartTop=0;var classed="d3ez";var chart=undefined;var yScale=undefined;var yAxis=undefined;var xScale=undefined;var xAxis=undefined;var legend=undefined;var title=undefined;var creditTag=d3.ez.component.creditTag();var yAxisLabel="";var colorScale=undefined;var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function init(data){canvasW=width-(margin.left+margin.right);canvasH=height-(margin.top+margin.bottom);chart.colorScale(colorScale).xScale(xScale).yScale(yScale).width(canvasW).height(canvasH).dispatch(dispatch);if(legend){legend.width(120).height(200);chart.width(chart.width()-legend.width()-padding)}if(title){chartTop=title.height()+padding;chart.height(chart.height()-title.height()-padding)}xScale.range([chart.width(),0]);yScale.range([chart.height(),0]);xAxis=d3.axisBottom(xScale);yAxis=d3.axisLeft(yScale);creditTag.text("d3-ez.net").href("http://d3-ez.net")}function my(selection){selection.each(function(data){init(data);if(!svg){svg=d3.select(this).append("svg").classed(classed,true).attr("width",width).attr("height",height);canvas=svg.append("g").classed("canvas",true);canvas.append("g").classed("chartbox",true);canvas.select(".chartbox").append("g").classed("x-axis axis",true);canvas.select(".chartbox").append("g").classed("y-axis axis",true);canvas.append("g").classed("legendbox",true);canvas.append("g").classed("titlebox",true);svg.append("g").classed("creditbox",true)}else{canvas=svg.select(".canvas")}canvas.attr("transform","translate("+margin.left+","+margin.top+")").attr("width",canvasW).attr("height",canvasH);canvas.select(".chartbox").attr("transform","translate(0,"+chartTop+")").datum(data).call(chart);canvas.select(".y-axis").call(yAxis);canvas.select(".x-axis").attr("transform","translate(0,"+chart.height()+")").call(xAxis);if(title){canvas.select(".titlebox").attr("transform","translate("+width/2+","+0+")").call(title)}if(legend&&(typeof chart.colorScale==="function"||typeof chart.sizeScale==="function")){if(typeof chart.colorScale==="function"){legend.colorScale(chart.colorScale())}if(typeof chart.sizeScale==="function"){legend.sizeScale(chart.sizeScale())}canvas.select(".legendbox").attr("transform","translate("+(canvasW-legend.width())+","+chartTop+")").call(legend)}if(creditTag){svg.select(".creditbox").attr("transform","translate("+(width-10)+","+(height-5)+")").call(creditTag)}})}my.width=function(_){if(!arguments.length)return width;width=_;return this};my.height=function(_){if(!arguments.length)return height;height=_;return this};my.chart=function(_){if(!arguments.length)return chart;chart=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return this};my.xScale=function(_){if(!arguments.length)return xScale;xScale=_;return this};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return this};my.legend=function(_){if(!arguments.length)return legend;legend=_;return this};my.title=function(_){if(!arguments.length)return title;if(typeof _==="string"){title=d3.ez.title().mainText(_).subText("")}else{title=_}return this};my.yAxisLabel=function(_){if(!arguments.length)return yAxisLabel;yAxisLabel=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.colors={categorical:function(scheme){switch(scheme){case 1:return["#5da5da","#faa43a","#60bd68","#f17cb0","#b2912f","#b276b2","#decf3f","#f15854","#4d4d4d"];case 2:return["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"];case 3:return["#3f51b5","#ff9800","#8bc34a","#9c27b0","#ffeb3b","#03a9f4","#f44336","#009688","#795548"];case 4:return d3.ez.colors.lumShift(d3.ez.colors.lumShift(d3.ez.colors.categorical(3),-.8),5.5)}},diverging:function(scheme){switch(scheme){case 1:return["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"];case 2:return["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"];case 3:return["#0000ff","#8052fe","#b58bfb","#ddc5f7","#fffff0","#ffcfb4","#ff9e7a","#ff6842","#ff0000"]}},sequential:function(origHex,count){var lumStep=.1;var lumMax=lumStep*count/2;var lumMin=0-lumMax;var lumScale=d3.scale.linear().domain([1,count]).range([lumMin,lumMax]);var result=[];for(var i=1;i<=count;i++){lum=lumScale(i);origHex=String(origHex).replace(/[^0-9a-f]/gi,"");if(origHex.length<6){origHex=origHex[0]+origHex[0]+origHex[1]+origHex[1]+origHex[2]+origHex[2]}var newHex="#";var c;for(var j=0;j<3;j++){c=parseInt(origHex.substr(j*2,2),16);c=Math.round(Math.min(Math.max(0,c+c*lum),255)).toString(16);newHex+=("00"+c).substr(c.length)}result.push(newHex)}return result},lumShift:function(colors,lum){var result=[];colors.forEach(function addNumber(origHex,index){origHex=String(origHex).replace(/[^0-9a-f]/gi,"");if(origHex.length<6){origHex=origHex[0]+origHex[0]+origHex[1]+origHex[1]+origHex[2]+origHex[2]}lum=lum||0;var newHex="#",c,i;for(i=0;i<3;i++){c=parseInt(origHex.substr(i*2,2),16);c=Math.round(Math.min(Math.max(0,c+c*lum),255)).toString(16);newHex+=("00"+c).substr(c.length)}result[index]=newHex});return result}};d3.ez.component.barGrouped=function module(){var height=100;var width=300;var colorScale=undefined;var xScale=undefined;var yScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function my(selection){selection.each(function(data){var barW=xScale.bandwidth();selection.selectAll(".barGrouped").data(function(d){return[d]}).enter().append("g").classed("barGrouped",true).attr("width",width).attr("height",height).on("click",function(d){dispatch.call("customClick",this,d)});var barGroup=selection.selectAll(".barGrouped");var bars=barGroup.selectAll(".bar").data(function(d){return d.values});bars.enter().append("rect").classed("bar",true).attr("fill",function(d){return colorScale(d.key)}).attr("width",barW).attr("x",function(d,i){return xScale(d.key)}).attr("y",height).attr("rx",0).attr("ry",0).attr("height",0).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(bars).transition().ease(transition.ease).duration(transition.duration).attr("x",function(d,i){return xScale(d.key)}).attr("y",function(d,i){return yScale(d.value)}).attr("height",function(d,i){return height-yScale(d.value)});bars.exit().transition().style("opacity",0).remove()})}my.height=function(_){if(!arguments.length)return height;height=_;return this};my.width=function(_){if(!arguments.length)return width;width=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return my};my.xScale=function(_){if(!arguments.length)return xScale;xScale=_;return my};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return my};my.dispatch=function(_){if(!arguments.length)return dispatch();dispatch=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.component.barStacked=function module(){var height=100;var width=50;var colorScale=undefined;var xScale=undefined;var yScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");function my(selection){selection.each(function(data){selection.selectAll(".barStacked").data(function(d){series=[];var y0=0;d3.map(d.values).values().forEach(function(d,i){series[i]={name:d.key,value:d.value,y0:y0,y1:y0+d.value};y0+=d.value});data={key:data.key,values:series};return[data]}).enter().append("g").classed("barStacked",true).attr("width",width).attr("height",height).on("click",function(d){dispatch.call("customClick",this,d)});var barGroup=selection.selectAll(".barStacked");var bars=barGroup.selectAll(".bar").data(function(d){return d.values});bars.enter().append("rect").classed("bar",true).attr("width",width).attr("x",0).attr("y",height).attr("rx",0).attr("ry",0).attr("height",0).attr("fill",function(d){return colorScale(d.name)}).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(bars).transition().ease(transition.ease).duration(transition.duration).attr("width",width).attr("x",0).attr("y",function(d){return yScale(d.y1)}).attr("height",function(d){return yScale(d.y0)-yScale(d.y1)});bars.exit().transition().style("opacity",0).remove()})}my.height=function(_){if(!arguments.length)return height;height=_;return this};my.width=function(_){if(!arguments.length)return width;width=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return my};my.xScale=function(_){if(!arguments.length)return xScale;xScale=_;return my};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return my};my.dispatch=function(_){if(!arguments.length)return dispatch();dispatch=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.component.barRadial=function module(){var width=400;var height=300;var colorScale=undefined;var yScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");var radius=undefined;var capitalizeLabels=false;var colorLabels=false;function my(selection){selection.each(function(data){var defaultRadius=Math.min(width,height)/2;radius=typeof radius==="undefined"?defaultRadius:radius;var yDomain=yScale.domain();yDomain[1]=yDomain[1]*1.05;var barScale=d3.scaleLinear().domain(yDomain).range([0,radius]);var axisScale=d3.scaleLinear().domain(yDomain).range([0,-radius]);var arc=d3.arc().innerRadius(0).outerRadius(function(d,i){return barScale(d.value)}).startAngle(function(d,i,j){numBars=j.length;return i*2*Math.PI/numBars}).endAngle(function(d,i,j){numBars=j.length;return(i+1)*2*Math.PI/numBars});var barRadial=selection.selectAll(".barRadial").data(function(d){return[d]}).enter().append("g").classed("barRadial",true).on("click",function(d){dispatch.call("customClick",this,d)});var barRadial=selection.selectAll(".barRadial").merge(barRadial);var segments=barRadial.selectAll("path").data(function(d){return d.values});segments.enter().append("path").style("fill",function(d,i){return colorScale(d.key)}).classed("segment",true).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(segments).transition().ease(transition.ease).duration(transition.duration).attr("d",arc);segments.exit().remove()})}my.height=function(_){if(!arguments.length)return height;height=_;return this};my.width=function(_){if(!arguments.length)return width;width=_;return this};my.radius=function(_){if(!arguments.length)return radius;radius=_;return this};my.colorScale=function(_){if(!arguments.length)return colorScale;colorScale=_;return my};my.yScale=function(_){if(!arguments.length)return yScale;yScale=_;return my};my.dispatch=function(_){if(!arguments.length)return dispatch();dispatch=_;return this};my.on=function(){var value=dispatch.on.apply(dispatch,arguments);return value===dispatch?my:value};return my};d3.ez.component.donut=function module(){var height=100;var width=300;var colorScale=undefined;var transition={ease:d3.easeBounce,duration:500};var dispatch=d3.dispatch("customMouseOver","customMouseOut","customClick");var radius=undefined;var innerRadius=undefined;function my(selection){selection.each(function(data){var defaultRadius=Math.min(width,height)/2;radius=typeof radius==="undefined"?defaultRadius:radius;innerRadius=typeof innerRadius==="undefined"?defaultRadius/2:innerRadius;var pie=d3.pie().value(function(d){return d.value}).sort(null);var arc=d3.arc().innerRadius(innerRadius).outerRadius(radius).cornerRadius(3).padAngle(.015);var outerArc=d3.arc().innerRadius(radius*.9).outerRadius(radius*.9);function arcTween(d){var i=d3.interpolate(this._current,d);this._current=i(0);return function(t){return arc(i(t))}}function midAngle(d){return d.startAngle+(d.endAngle-d.startAngle)/2}var chartDonut=selection.selectAll(".donut").data(function(d){return[d]}).enter().append("g").classed("donut",true).on("click",function(d){dispatch.call("customClick",this,d)});chartDonut.append("g").attr("class","slices");chartDonut.append("g").attr("class","labels");chartDonut.append("g").attr("class","lines");var chartDonut=selection.selectAll(".donut");var slices=chartDonut.select(".slices").selectAll("path.slice").data(function(d){return pie(d.values)});slices.enter().append("path").attr("class","slice").attr("fill",function(d){return colorScale(d.data.key)}).attr("d",arc).on("mouseover",function(d){dispatch.call("customMouseOver",this,d)}).merge(slices).transition().duration(transition.duration).ease(transition.ease).attrTween("d",arcTween);slices.exit().remove();var labels=chartDonut.select(".labels").selectAll("text.label").data(function(d){return pie(d.values)});labels.enter().append("text").attr("class","label").attr("dy",".35em").merge(labels).transition().duration(transition.duration).text(function(d,i){return d.data.key}).attrTween("transform",function(d){this._current=this._current||d;var interpolate=d3.interpolate(this._current,d);this._current=interpolate(0);return function(t){var d2=interpolate(t);var pos=outerArc.centroid(d2);pos[0]=radius*(midAngle(d2) "+min:min+" - "+max;return rangeStr;break}var rangeIncrement=domainSize/rangeLength;var ranges=[];var range=[];var rangeStart=domainMin;var rangeEnd=domainMin+rangeIncrement;for(i=0;i`Y8Z;2-o-e=7 zUOmSZmW6*5v?{e~Vz{C+m+D=JzqYPXV&Ugk2*&Hb|$ zB*qarIRaZ2AbF1`lhyi`?=oX{t;`=`%q)p{*wkb{8I&Gc)YtyswV zlN;R$V7p0zK;76yE{KVYj~FmM`)EagNe`bJAHm&TkLn2tV`}%VEhwmg!sz{?0(cMH z9>W8t(BVo0{k}@x*D6OuH&6^PYV^;ZPiS@JXs<2qkw<(K9g#y(ODZ9}&&AEFNI)@A`k-Wy>T=St(<FSUEwsy=~9B?Zpbt5J8Fl!kIS|zG~hHgc;DNHTyAbSR-xeK^Mndqr|ljpd_ z+3Bm7B?SZ=BFDGK_5Lgu1PeaJ*AdYI%2k4F7Qbhd7|Mdgw$fIKDXX-xaMwivVd-w~ zh^l6ut~K-yl);ww2MAt<8ZHMAvaA%Ng8}6SF&Mogy&U|H^wtR2q!&{;Sox$uM~_#t z-VI)(3Ti)f*YxLxfC{S_61dVJ%H^=mgMW^XTbNp>eek?`XE4&O0Eq^5ZA3eeEi6a`eplVjKE{A9>C71u+P+v~)gI*?H7nLB#_^hnji_7S&YdhdZZK zVH(wGdx`PwI~n+7gZC39=YK1$dE~u1vRSe%-rz>fA7b;9a15O924gk=Zji^{-w|9@ zq66q3L7;v5pO_QKL7t;#&f1Ah`}Z<~9UG!w0sJXvOC{8R#(R4FlQIWp-V_I^J&jpL z*1U^N*7}R=Q@llGypLG%A_kMw`@*3QmJg~0DCW@)<=rMauMetxGY2;*jf3})*Kl9_ zn*>V>E<-0BwpHfglH3vi0Jl2HxY1P%Yw*2JR?v-!C)sd<H;DeS} z;B^r$#v-!R<&XiK>|(JLX>maYLopUD*uUcOnOADaqpaqX4wa#oS6?jf(8&~OoFDI244F$8CjwH&Bn7X%< z7KK5oc1?gRBpa#9tOab_gM6>o1G^1Ohu%_Zu{IH;)Oi73`9UYmT=iD3x|M+puKKdD zHepMC*7a!=bAhbH;iH-H=S(G0(EKEjsz3rs) zj!V`_Hc~U5x+2)WP`#;$dG+a|OJ*d~2h6<5`x{*25T*4|QGa-RN0KdE1Og!# zupXV1W_WPt=WkcN2D&HI_FMcN`~~$DykOwp3;;*ne1uFRmj33`;`3NiRSjwF zlwGCd){wTAMLnu?WdqxuBcUWs{*4?)Wo3nDZtMt=ST0pvGMN^x^*bZje{LUQ>&*tT zIvx2D>t?Z&my7$d1~3%ER;8#z$$F)6N@`|JsLrJCZ0X!?zymnllKlk(h6 zl$3x?*(Slv9NtWAE#dDg)#Fmq}sU4s1f= zMsAI29B$nnH1cp=IIsD65CrvbZ%vGPZ8)3c5Zr4GkWQEj8!B2$7nyggfdDqVY@eBl ztF3XZj*=qm)r15Ba26z|20f@s<|!{h!Zm8L4Y42qmWNvcs&63q$$Va$1~_^-KnuUU zB~I`2-Na12upawzgO_P*gP)}|YvZ(Y8~*3%dHL2r?;D1FAB2m>C)b}1T&8!Tbj?vx zr|HsOON(gEAQGRzG9He=Eb`Ipp@5|4X1#k`niSfOBnXBT+pl+mUqVY|UG3TVzjYDv`&=)vWmmbiqglOC=`+;> zOKBO-d~U*(85=%a%o@Kmd7drLqFP|{gV~S7ZYqJ6ksw`_I|U?jQlOdPtUBnZ3U|#Xn99Ek@$SN9J^pIdCY$fsDuWVV@um)52Q3ye zrh8Zql^hgeF-Q^Kf60-LrEB>w1K?ji4oEKFCz!Pj7C#z{vfQ~)SGk%W2VP!{*YEf$ zeI0fSG`X4yY0}7aZg3>$C#80w(5u>h^|R6n))`qLMm9=QR$%3 zzOG)P61HMt6u)?(fdqS9y8=(Cq3s6wU!9Q)b2C6aN!H8SRZRBy>g&pEp~zoZuv#Lz zp{8@56{k-5VQURW?v9-vNVaSqw)wrtJfN48fO-TDjhjZq%4NQI4Naul1Zlq5UT zm#CQ{hbq~XCU>(>K1uYq4m-^D%if|Now*>Vzs-b|3Yo-`Y3vCCa?mKyDSx;d+PB;3 z;4_J50QBHGKEp{R5PUopPa@LXQOg9P-+K+$%bg^c*L3n-fUC+y8!(3~Zl@k|Isub$ z6_fp@RnSgp2c(m8$zcGACwc2f%BHU{g#Ej7nIbJw&#cHwT^ab_}zVJRqOKq8~9hWf`jUuc~h9PiyG(J={0}oQ~qT9il$Td6Zk2EWx z&6mcUnmFUtB}LFw1&I2wn$s5#FTc4g-@JL+iqCDIN{>iE-Eg1>om%NaaA+moK|6ah zRjgBA-JYdGxvT8tu;?R=vwz62wK}C4JZ_kC;-tVAv(pj14(3o3uo68F_SlNm$@Q>o z#MNn=Ttc>&?Fq4HY1o5zCQfe|NzXGDGn7Mcus0L|{`Ys28BmgxNB-CMSce&{m&Lt> zt%bU&@rlrm@8mS00Fz~S^~Non5&U}8{>DIBES(g|s|ZuG)<8m&h%bckQK{)pOl5+? z)K`*N)cZ(oa9GVJ9a>TF?J zBpxYt;|1=lI2OW^$EV_$`@`9bjvTpTNR~-hHuBq$?9&K4@$r1G*eaQuDI7GO1F4X@ zS_alB8SvUQ$qaIq%)uDHnAK>G&v{#+S8UT<#RKg?SO801hs&#b{RDq8n4oz@>-4k$ zzVHEN>6##CsBwHO7V(}BSUWZ7kpD&x9)kD!T1?Cua{C^0ZOp1qiwF>-wn@CxI$u)e zQ4z)Fjf6Iv+5L@38R&T)s=t=&<$-8 zTwFAJA=7x0a&ak?8mA0~A<9^)<+m^J8KdcGc6c#$wfZp$^8kw@8|w&`;QRyE!R z89=w-q!M|jx(b<>HHl&Q1wn{DkvgqG11f*Hdf#M#3UFaMsv7 z0hn`k3glN+$_S4H^s+o9aCeHo2|U}oZKjfE_y0@bX3?6 zVU^hTd=eaAByqN>sn-F95 zuw9L0guU>;wCR+^@L%B|zmdXcZK)moKSt#Aep{lD(a@xaUM*5`c`lWwn;_+9h2yE? znKX)Z04t6X=hqm71}KpoMXs-F-tFbKWAn8ZT6nd61qtA|ucK2%ZercNxg2XuG(f8U zzWQ*14$gS8#F{skkz>-CrG&gcg?#3qN(AT~W=_0TPO8I((1~?fF`+YD&wGXdDF(yu zs68mIUlR=2Ef=Ze5#{8O%X|tq=&X3kwL=+oG8jSo03wR6#7BQm)b_^ zGan&aDY2#8DDV#*85sRf7cmu?8o(JhuzcwGC4_l%tZBn6`div(9+bgI1-ot@jUC9sx>p6@4gN~+(A8$PJl9l#CLs>VE1 zSDGv_-UV*%is1yC*x(KRR;2gMFaxb3B*5OwPO+Yj-hcM++i>_`xMias%n)UJOz_DH zRZT-#DO|qhYS{S9bF{8A+||u(GkZWxBscBRDj8;Mzlz|ky#K`H(o?}uxm3GqViP~_ zwY~`Ju)_FBlm<-(YSjB316ZW5f~RIav1G)yg+^6;K!$;==HINJrh1vPAV2C~NJ!?LGK&3Ba643}Q@j=KUUv zu=GoU8Uy?c+Spp&!%so2cFz6SH^LNb^yX3&b`rCb+4a^r%r}AkQIys&2Ew31wj8eZ zAo{CVE`YZ+?ATs1@hMxQQ}NKBx3`!{*a zX-LZs*ksBuhoVZ^2fnmK%htsO?|JI5)mbi?hK>_dlesC2yK;51#FW7{dvB@8Lnk03E#xqXH}OFNZmZu}obD=a=m94Kv4P~S@-{@S(z ztjbedpq}^LnL`4CINW0B%zwusTl8>SP+D^3BnYo|*3`;VjeSGXJMXs^%+Z^s4GIB{ zEGb+Ht@7i8BEjfgviiRfc0_a;f02k|CQJ4TLoME;(}5!mCbSh%e8ZXTR?i*%dh)^2K)J6SR%*jGuwYqdTd zu%ByqW;6+;tDs)zLlnj9dPJ1+5f@nR1RL&<$&gQBc%`cW{eB{a17#Xz3Kc;a4sDx8 zl%DZ|MNWbW>8=8<{=|0}5k|3~D_sB84Fu$qfp2wV5$g^^iYmNUJ1NkX>z(Bvv17h|HQu^AvN#Wh zB-Pc5|M&Vh+z}s47g+;zO&sVd*$=d?GCV-V{@vgPYi35Ygi||i!>IV_zEw!pM6L5Q z;t9EMGbv3tiu(bw(E>*!$$tkunU|3WP!UxiBi^a9KhZ`{$;0@x>km>^TSBCb$Eog3 zhGz3IBa`C~yF-GE9~9;(^7r+??`xZ4kQZ4-O#-;Zr~@cNbLviEI`?3Zw3eBGa;b4W ziyES8M>nwVQ59}2Em(t7Hb%)oa@+@fdlHf7hY_&4GUHz9$5wkSGL~b|=|}ppcWk%pTZw@Yb<9QymFTdor6!LsfQDyqEsRQ=gc#r{7DTSPbW2 zaEFJFiQ0$#n^Es@iw?h?o_9m==fB?h^ENe$H@AiBv>x2AhK*i{Q^Cj!pOW!!6S>5; z?xcc@n*Br0>b`hZhR>^C?F&GHE4F%Nbq$_MKb0&)Z$h3!UrRzn2uVL-yfZ<`fZZ9)n|ZA<2G&xDbt;xw^9$FAYp{x==5#~ zKqu&;yBoY<59o0P>P9(=b@;K75x=YQ%EJmPw_7YSk1z#vO)aF|Op@f1{T0~8B$(3d zzAO1*;)NK(an>q%0##?PBGE872z{^KfFEzx6pgbQ#8_PxzU?Ip&)LIPqi z<)9UDwX8KU^q}$@T$~1|yVbN57?Omrjo+qjSAicx0-*`u3Dt3EZBb%PqFq)Z3E9li zXDzQpY!njPuxp7~-3NN0$BntUI>E17Wwdh<;vGjZ*f*t_caR;XqYK;H8z(5!W z)G=LZdu1#=_jP}ni0U_*cYglOGyk}1)jXTew|~~nbuB!+fZo|t)?DOOP4Tz{M&Y&x zF+uE}it}>~7C>?%!~33TLg&9t2ax@7Wh^9+_11T!UVn~F-mfa$7a;iIX(=J%C1EHh}l_q=HUh7OgtG3W=9;&xb|Hq zg!e5!@$AO$P`e#is-mj%-V5YJ+?J`txzaqf{n!5&NA3Wih=3}$!Kq4{QuH!BVpE(> zKOtOL=Oa=_du)Q+)Yy^QSZ(TGa$ckEdhaS!;cefdMv4{`w_$f~bQcIKvEC`nN0=r8 zX`ytHlj?#L#7ZbKM>?C3n?c583BsZLN?H6b1Zr&1i=4m%FsGOq^fbwJJ!I(rPGIrRX& z?M_1|dX@IFYA5-@%6U@)4gY8v-~-{Q=xS`Io1^o_<()IRCBXpLc(evCOl{4-rEGi# zKsSV!BE3Qf-M9T*xA!=7V>!KvOOAmVdmIv01n~jNIySB}@=Ghz|E`dPZEW0~h>RDa zhT}K<^eUZ-{p`B2M;;OHw&ET=$Gyf$Li3P_W!PYCRF>wQ<>I0_!#q0Ntq{7=`>#Tk z`MZtD%D!K#f)39P`SSKVsgrp!Lb&2rC5(~mLO*}q`VoqSN8+X!GjiTgeSJc##oLFO zzf1syChSz@)aAnc-N4}L?;8U#G0UM#iXOIx8UiqTmZk<0>|(g~tc2>~2HGzp;n z)=rSBKHY!0d~Q*zkvs9bk&kP3dx78aF*F~L!Dhrywg%cZ41R&08>POAYf z2nAoi|67b&)?IMoQUC$HpaKJ-{2wuzEYAT8_#Z9$pBi=df&~HwdjjpH#B7_l$pzz-sfc7-~u4uk!L%h{PvH$g{3+{`_2+cV4!QY{b_KQfA4YG*V}u z^y^PGP|2Tg-+pVhj1BB(;CCkgW!j*Id%w}hv0}tvEJE$aQ#5)pTTtxO-|U2+&u4U7 z9?Ah{tmv~GwARLW+L^=kz&Kd}ip?fWE*Z?XuI{{d#t(C;$$fU| zzc`s-M!=vO1Z7k9o1ZX@J?|2bs!$s{eIK|%2itaWi_EPcEqt5J;)piqJdffYq@VhO zg0Uez43e)^P4=`KxLd7bGGE|XfRpCJS;;0LZv}`ze@pv!vd}dEg3PlBy{^-{tys1l z^FAx8X_M{wgF#jCNJSl69HTh1b@k1>rcZRz1kG;wq7He4yxFvyW@Z_Z>#AKuY>jqc}ndXBIskqGJ&4T zG5}B4Dz)ceE=qyHgYXOQgwxln#{S{6V29CMIHRk_wt0AZX0L%KcD*TCdZ-8m(hVlN=%2btM335Ic8WP?qjQcre;gNJ{J{xEH3eiVZL-6OQ%-x? zrE7ua5km*#&y!SHX>|GdJNk#@JL>1f+wX)Q^|PrHu1^|Qf9(`uzwZ!;9? zIr=~c#iIeB61XRyae@ns53T$1qqA0h{>gMWj3}M63szP$S?hommfs)QmJ{%pEf?JB z%W?aMKYKup3eM77Alt}#NRUb}=rMmy)oap1B51%>w_ZXq5(BZ2^T;r)EgGHwti%8|xCZ^tKV zC<>=^4SD1@gHGi}I$4TL&r&cx+bBNr176>2oNj~BUf~5i^Ts>)fF7M>ofI9RtCHXf z-b}u*D@@WVmigHCKyDpr41FMVyA-l7UR5(ZyooB4_z+Td!E#=|XJ)w|N#?25g zZwEec@?jecRQkI8y+eA7WvvO>a+CDk`pf6MrL?m@>(APqRH$LCVg6Q zX&6qxgcmL6vbpon$4@zNX2aK>A6nIMobhxuO&+BTWcvXMkn!nKxe2JYcZC7iEs-h3 zGEi0u3=d^1oc{5^zqxevsjB?UDPtF~Ttye4L<^aPCckm@(0|}QHO2!q4T}53)}K?) z#U0~T`lq`B%wP*77_9n9`D)~DTN0HfipH6Kki=zPGj!}g*g8VHbMxXsaQ4y?8p7cO z&;@Zrob(J0087aUlZd?i#4Q>mr8dQOy`p4LQ(p;s z@8_R|uD)kAU#HuX{UH1Ep$*&6Mh%XFY*N33LV|Qk>^pG%_^cH`0xu&(urFL6UfQEt zQ3vA07S1pmpd8HJVhVzDhr_tofJoDKQG_K!L#;9}8>)~Lz`rg=~ z*t`!PA(sJS#Y}wX4-5ZzV-#n-b3HNO_37YwF%2xmN*Wi9A!V7PCAN|K zpJ)D1YVkzg&tkoG6)OPd=dHN-ps^+AVog?tRnY2YVo0&--$?k5$=@)=wM@F- ze6b!oxDc>waoz6}J(lQsF5-N4>Lj5UX7mL<9*vjy_gy<9cr4k9=Of@dMd{kN?@YvU z^K;xfyIfbhx%f}nxH`|C6=uvODgEB7v`hn84de`V$@Yjj%a;Ld<{tE&*EzZ#v*&?H z&4*wjOm~JguNH^iOOJX2{rhKImrgpvq#3lz*D1M@IS0iAKh7KZ^$GV2?YP5<;Ux~Y z2Uj_)OV0|5f2zV_@3mL2bC9bQ4pBv5__&`Vyr=jHWlrF^E8c=)%Nh7$85N`l6od!7 zbQ!z2Zrj=I-1Y&xR$_;j?h<6&-H-bb#ZialoIJ_+v0$Rb^LJuQdAW&7@d~qwJZd5_ zBS2$0^}qUkMY2!FAaLzJiS*Z2Eg2^yuqbQkjoy1+J#9l~h{~Tapah;v)n+(t_Cbm6 ze=V8S_LbMLMDCfuhtX%1+%q)^o;m8w0wlcb23Qi>E!P1ideVZAUq{}3n<^{VY*1zZ z3zK&fmVVnBf#a)=h(r#2E>S|H=QfhH=UXsz-O0iq_Z;9=+RPsX*&+mnMWPy$#rAgcD>y#nx5GN zzf>Sdy)?iYN=T8Okl03iHh?H?`}~>CSB#!2FxDEcx{pl=PbZQ5UQ*?{Hu5M1R&s9R z(66hx<#>SsEJA~GCjlBJ$R7P;x_vmdjew zW8ggl2oZJ9xFI`yoN#K8R$*RP=+2h@G^Ej)G#;>l9d^FU92hXH>%kEUc@Y^a>*CmX zU~{>ndyQdy4MFO;fclg05f>;kghurBgK&n%%xmzMc=rCL-GuRJZqw)UYR2eSsD2lu z9+4fctRBkrtB5?cCp2PU?o8I$MJpNB2OV)G4Rp(>oX)ltm5uGw;U)kR;%L8-p(KEs zF%~c?Kz^}ycCe1*lPHmv3;C+3JYX4ERUP!-Txv>UvOrg?UN{l$PAx*Ebc6~!KDL98 zlOFGcI-RMJ1vv3vgU!EUq)c0JCl&EJ8Yp>m>L$ zk1Wiyw0l6LOgRvX$tXq2>_E`ihh2w2N4LVa5V(A&VvQI2NgM*NnC@GIO3^%3-DEm- zdu%?bij=0kdS(XCw*5yMUss!Qbz{ScjB}00w6d7^Dn;0wn$X=wDA2t6_8kCG z+Ua_s>m-{QIGePsy)M_Okohc+{@0@1O7HUm2=r~irG9xT)lO!97eW)`=sON3Gsjhg z#oU^B@4xJ)?n`sAmxFS*0yQ8qa9OpZHZ{0PYc4?IH>MaR(}w2nw< z!Nk@uh{BC55>y+7rVr5W1j~ zYX=3)!+U-YecE(-Uz&>|Z5<&`dP@Qr-m5l)_=HD`U5Cp+Bz{+hi#vd+d%uv?*9oYp zuf!7=IunJJ(FtoFQt0KBcl2#HP$XpaO*%~w*cMv57@E6_I6j^($m)uYtc(1Rn;Qv+ zf-J0E@)O_22Ru?t^MurI9%Hvp^i=vWr8jcOJ`#Z#^O}mH*{Bzw4&(h&ou!!gDWmf! zworJDwSFL5C2k8tpd27{DMr3Hey{P3)lol~-QWE8<#4WKKca=3ja`i8WivIA*J=19 z)CnKqV&_g;Ehl^1L9Y8UnDp;3RoFNq3{7e-o=i!>T~(a4ikusTu>#NbTCjA8Rj_nK zr2&V!eOC}o*`_J#F)nIDcf>I2x$XCQQ2!;$bJLQ7pTGIEdI#X+O*xCV?Y51uzE-c6lx!N>hF#Zy zjlX05aZovjdKREhqcT5wIne%92QO=B))KmB`sTjTl`zqh!3Tc$ho;J?!S;SL08q#9 z_Ou#@=YHEpt+1`QviTe6e4fvkLN~*{5}sUM2YSthZ7*JChh|4WwTY3JI;*(i6JS{R zsdCt_Q{|Z^9ZQ}eUdg_IXnl|n{pf_=8>s94rKDJFBn;@eJWPSZ6}-fEyu1-*iM1rm z!8T&$&RHwd?Ey(WXo)^_JRVo;A}Y_EF^RdV(f--?Y%HNxko*|lyXB?|!f%259BYQF zVdsj*Ieh}Ho7G*y0}^iG&=3H+dc;5%;|+<;mcsZ20b3(+@V(wA1|1m@P0&x`ypLcg zsM>{dy8!UM1QB_wG+g3rJ`PyJGpU@U7q7Dca=&IkX6dDCe2@)r_S%aa zNu7d-M<5y{{-tq!#16)hZ$=RjCB2mlG0H4h>BW(5T+A0!l|v4O zMu%5zJkfSGKFMc!Ijq7>zxu|tc&n>Vo)K0hx@bNTsEqy9WtEj7^554BD}?yQxoN`f=~Loga9*!BrG zm;jI@D5Uk^%p!DFexy$%M_Inx=2<;O@*1H`20mB_I+iBk+^odXi=#p3gI6@bY+QNc z9jpqbMBFR?h0jp(p)=`XwW!fjfqQ=A5Jv^ph0{&9E>pk|-M!RYdmVet7c zc7giGM^4A)LKj|s>u}~Qgk^V0tvIbD0QoYYQqrCal`f<5oW7&TE0c34Zp)+C;4s9Y z_5Q@0nbnWCkoCL1=D#{(9Nh>$n{-)cIXw*Lm9wp>GHLxN(Ln%%2SxlSyQq?G9w?GF zdgSVkUPZA=_6PO$toV(s9`*?K5c5z)ZB{i!;Eg6nljfWa(_ zj8%nj6oI}kk}F$SqjMFA&rb{NLoHJtEkZS|@^8fx+Db<@nd-ZU130Nm3EgCVi0pgO zepaV53(kIa&^>wo-cW;g0Q)E<$q5+M6x1pBmZ}()cN0r66~~{QM^?TxNhItWo(GXl z+$N;$jt$D+5FiKUcjGClN=s8M01I^#@=!e4{R2M=CI6+C?TzUppka9sYo)(C{NRZ; z?`&`}?Co3cHe_{AOx#g-8=YxxC({8y`(Pd8jIv6ti~Vdep)Ra06sr>az~VH+erg$< zc92peu1mg$f7jXjkPR{1>c+BEJ5%-K1ykx?RK`=Q!|w+&zD{1-9Fqy>+=>~$NNycZl9_Zr02>KSw~`ivpVh-gFmHOHGb|%J&Ig4xYb?H5UGRhxX<)t6z^T!m&p zR5jO-_>b|X4pk-qXfhBQ$%zv1jYNT%ucMgyA-(GlH4z9V^Zvb3ambq!K)uB77W^$1 z|H#|Vj_}$S&lnkJ3t_U;Zv79rSLiGQ+dC-T=Rh)X@M)5kW2=(G2NRON*NSsZqy9)R zzMJ5!zAVW)1I57PO+OY$rRd}}(~>67W(Getu`D)Eu488aD*j1ynscH%vu&8Zcx(J; zO?yygct+=4ebif>YyGT{`{XQjdf?-Z3eP#5?SG?2eH7*v6%PN)>8^E`vGI>97vM-^ zZyqZ!B6gGn$-lF84E{Z_gZ9BZa80 zV?CHD&Iqts_zl@ZU&@u!yObBXFa7PX>=F@}wrfeJ-Fh!!I{b{{2b+bl#CPV(rci8O zI%2xrklHa@N8Kut(35m2)64=N#oIn2LEt{E_{pF7kCOE{JmVjx@8)~K==JXviR$2LQIELF77i^SHyC^{Y=h*~a_#EQEi$0z;{YHu}{xe~B ze1urgIYjGbOcm4qJ7ULKxOMyV!v;PFVvgqdna<-bH}(=D{Hyhl30it`)A^=XNL3(< z@xAT3pw~{*wW8Nb#ui26(FCtlaA0ERzyU4#C%KChep(pe)EacxIRrs^YIc(y>~!Ek zB@eLh2P!mVwxGGq$iST*P1-fop=hjB{f)PAS$X z3ZcXm2yHvhw+y4%P5!_Kpg-o3jrcECeghyuJCCTDrmOtYQqwDx&4qudEgd`VYKvN& znv^x(rw8=>rqNjuW06?}SBTPcw#fgmS9^`$KH|gcH-yTqP%!XiuOcqczQ|yB{&zl} zdMWAb(w=SO0ssKcdtIzA7A#{G2={k%8vQKjl-OL@$n!{k*_2n=@{U++N+eUMtOh*o zN`v_6$bkYT##r1~wPQ|{K2`A!Ya0=D^@@INZ*Bf8jV0c_exk1nhzEg5z+qFYTNf@n zG^BsmmBn(n{vkx->1WG49_WM0Fl)Q|dTrD<@BCW1wg>>SrdA1aNblV6NYAHPh4uCe zEuxU)O*C^jd~L0t*<927`|Ba{hY@gRuJJe}!F07+b**bKR0K@|fFweZy2W zVMbIZzsYE4cb(xNy6y35w?bv;%w8CD!3Ft*)yeVHi-A*t?PMj+`N&gLED3{a`0Cn$z_8nUMK?*2dTHkgB`O|gkWzqI9%{2)%HDSSdcy82ThmhHZgsr^B zIg{)WQI*xdttVU@4s)u;RW`sq8tN(+u7G+l29mxlHbiZFhppCeMR9u@ra0!VH)e^3 z(5zc+vL!S)2F6)bC!EQ}A_FKPef$zfuL}SB5l;MZ+=|FI7I;?|^srqeMK3HC$DAaF z#6y>G8clF?7`*ks&5Si79kr*KDA7Q-`KO)2H^M&w{-L4Q@2w7tc_{|{_xq9GMt`9b7eBC}vxt!Nj(dnT z$0L<25?RGgBhx%iYPMq>M?o_4c6{$ZH=o20YlU$y7QMMXn&@|fCm44!&e|)5f>68} z*B_ZwcS4(F_~cx=vj9jAMT(lL^Cz`_F)Gm%Idw=mx48p>!yUx6K%ocidJcjNLvCQ& z6lig>gYGU7I_j=e6L`;J<+`(qs{;dZq+f;fGtSz7*ntUg-I*UVX}6(l$Po{W%T?th z$(&8AbB@jL=5qY+>8il^wi}{xzj&U1nTdphUz?`%t3|VvWf~yhsCzI*NEq-gt6qq0 zoAMA^?*if-ay@qi(=EAjI<$qg*RYe~@~!M+rpMRN(}zetABVPdJBpujR66YBzzX`C zAomt-wnwkMo%xn zD^?^R?}Dd%#R#|wzcS|Gy9l-P&OJF;d)W~5xT(9u@mqFLM>TNgB3$G4^ zZYR-$<_~}f3hGhSb4vfL(T?n-CD>C?3#&Q%sb+93qB07#-^aK;Hu$T%-)h4Fdv+h}f*6^QI+hA~zK7=L` zRGBFf)fRX#;8*i%CBhn{&@Cmurg>9Rr@UpCsb*yH29x6i^IF4{!G*g)FszYWcj2pc z{0uPoZ~#X?S0cXx!q3>DLiIq%f@eP^khg(Nw|Ci3Z;^@V`R!Px>8aX&n4$8O8SNa=f*f4J*9787O~x!(Tn%)`C^VF*)I1r1;a2^vc6FxtnUGkB|5E0pBqgGWt1`)A}x)1kE&mQ6iW;|)o z6r_|KJ3lG%O_iZ|ik>H|;YkZJmD7BT3VwjPGkv?~8@7D!=MtGxp|4h4AI=|5jVJ5% zd>P_2+qFI(uFhL0* zrPPkVnenEGu`|jhy6+;f%oj2XDNeC1+QLxf>XFAl%dmMql!{I(K zv43B;2PKS|7Axizh@i>E+>0YC!c$K5-Kcoov~6-8BNXD37+Nd17K?oo_e$+d!r^%| zExmFWeEQYfO52g5ONnQEm;kLsqjM28e28TPe+nkuTE#fj^x(?)uZ(5iec0Gx)poem zIj}7zgy`RArSD>8U+@D&oT1NP8WX0&=r~N)lK{~`pymutbg0oXF3ni4N{>NDk!Yjn zEn1ts%Q4ZJ+d}i{ux^v9{I%~3`Ia`z*zwrB&1XpIP^0ZsJzJ1hB7h3#S4-?u4gXEc z{v%s(mag~_QPG}G&+5d0sw*iH1|{I0f&F>3RAlSk8tkj=iK?Y)KEGjsA3^UmpdgU&Pz^Cs zjU-EghV{;CQ2q@WXZThnWt18XON}xmQc!xQkYzCd3ODa6c+IJ7>>@Ta%A6?}JPUNL z14y>9Uj~T^RMJO zu!g_n+UZ#Ngs;P%`=+G-3JCvdHvKXD`kPO^TNW6Ljdkt z-e&^F-vIRo6;QGL?B!l^X*Y72>%pxnxssde1BI(lEIy=Wk$#TUrt@h#3h+o=IBh$bbjoD#SE!oM(NYpzbW;5ni8!S zDTM4`IzDTj!?aZ{-3k{@ajModO}HAn@K@}j@6A^H7JF>&-?uWd)3X3pjn`c!KUbS& z^L@d|K9|YqT)y*iPuOQK&M4GBB+(S`{>7h7T>P9OGRt{CMBP;Aa8lo}^}u7b^GZ?g zB3(4wH^jd=$J4*+^v(LWRqsMXCGP1P?Abh_qv$#R^eX0?($m!*Eqmf=_GsCuz5Y^X z!!7Mno*!z}d7~)ylsj~Z!iLwoyM#3!dWy`Pa&)rTSsmS2Bf%{be@T7{@+@DL^jvA_ zZ4Y*h%M)Kk2OIKnY<-<;F11yA(v*PRvHa`Sxpg1Sk-NK5#Y6Pz#??$WbLy+M$E!WP zUVixF)N71!Wo8ffMa-Dmw>GSoGuqfMcq}yLEo0M(uSxMc6K-tO4CPSX&%b>~=%t-1 z8HT#A(;i6#nJ&IBvtdQf^r>$@Wiw4%6xG$wpc}n8=99#Xiy1~wLPHX~`9d0ZN%|M+ zZeM!Q=O0_y&M&e$`jSl#goNs@3UQRyi}Om{sIZ>N%P#z4UibUI8_UAn&aRa*z1jYm z&35fmLlV^r)lc6G;fN1vALtvG%!Q$G8@&ZK?jjIx@%SMIM^{cYYX_grxw z)1p&9h4`gea{s1iOp`UAWpYOPX2QRT@$asCO3t|u{N>Eb;~I_^1C$o+U+4I(`A75e zvY2{FO57*p+i;u~@HL|LS7e z>N6|rbT`P{-sw3lYOl<0rm|w-;^h0?`IDHZ&b`r>Yg)hNgxH@Zmwh?f-u_FKa@|~+ zKF(WyoulH_d13wH=exGI?R5e){9tfxRrLnyT(?vsNu%JN=wH-y)5=N%J*=r-c4u zm*9?QR(;GMcf}{%^V-)>`}_8P02ksIkID8i z>a5`9Xq&TRbXl31Yiu{qP7L7$Gd^YYO7Wqd^f9@&Rh{v{WZpJ8MUVvQN;e7M(I5;A zz}0LFOB$D(F-&$a6J=oq9s&YV&bVl@PMfSGUn~R4IU&i#z=J|yY9=?d$uT)4O=5Ed_7tMli@ZOu}#$&W_^kYQz=u4$dIzAB=+v55+xgNot?NWZT7ZQ zuGEkm%d|-jiyX${-uk;Ay76kfhBHG_B<0aQEX@pn2G9Vyf9S`Zt91fVoR(_ao8-yL z;-4k?6&JY_zgKBml-4cj>JDE87;g}hh#5B1=;@N?Q@&g9leB;P} z4|%eMY`oEB#}9c44PjcwUP0wa5iEZBUjFigBZ`It9yxX;0sPNhlvLkHIkG>?hqiZV8AsnD5|F(0W&g-WUP;Gj$r6+tx~~O0y1mey z52#o)5D3jea_R9xA=oN-%`}9z#~_^fF%%vbWz3r4^+vW1G& z9)aD62nlPpBa_p0IpyBADX&8|E3+^*a)1mk>GB_@$nNG`Tii|t&*H^@9q_)as%Xw43?{K8 z)rPy`sc-$<7g*=O4Le-u3Tt_mjAzMQi@;e5>6`|bxE&{gjp)J<7Ptk1DL9+M4*LY& z6^|TqbdhfXzVKvQ;QOV2nFj!G)^W^vAb4q!F0QfQPr6ad>G4=!ids-ok+FuW)*_Gt zU1duX8IV|>^BB`bPyGHoiQl_f5*o-%RmRA}!&L^UOf{Q~lDpxR8YaE+&7tB_t#3U` zezle~mu&M2z-sl0qE{KfGJG#&wVZ(A(tjh?14KN*|Nn~p-Qv%GXl4VfLjrcZDsQ*t zpL%(#f&BY)Fy}d>|4L`$YdXwN-C}kSu#mv5o?m4=Nug(A)i*zLOh<9(R~CsBl`|ud zQ(}Fw$Q5aXm{Z-TZ(0^S@V!qmH##IM@qEJjL%t4o$TKsXFE}ll>zLxw&eFe)?vi1X zr|lGs;e6PoA3At{pUE#}F?EU@Rl!+Rd4f`sDvKCZP;{y)30CqwT4fOu4#T>{0NW~4 zVGV^*X%Q;6m|D`4kTKZoeHnMTE#Hf2m(}bVKTxndt>y*_rgvCy_pYF-sjb7=N1r^P zdxUXEk>_rCTo$NSe(#8FFz>t*@Ea4;2Fv-M38bFGUoPW+`EWFi$0zN(Vs_5?p~Y9l zDk&B3TlO}djwZab2$4EH1s5i?bEdn4Z}?;Z$6Of|Se|4H6Wgi;RUM}P>*Q4IOa4pu zl!yHk`Dq|>%NE=sah|YV^caGCE2i0U5r;`<2!-b&jHGwuLbn#kHdh$7baRhI^KW!^ zE9Qu15aC6CRJ!e+gQsjYv4O-jrzx?<2WqPt;}45cs2ID5gF$VsT}N=N;#pbg@+~XJitS#u6b;pqrC`LP4QP)enT*Hka%Z(BIh8CRZJ^dAvkG|C zC(xfAheJqs0E7L6nS<7Y5*F{iXJDCZj_aDeHwwUiiyZ`u!}dZ!%XgQANQW+m+8-N% z%pW_Fpy<1K6Q)?uxe(LbY|gr#S3RTm9e)7FJ0v}JlgF0iSzekgqFsqe&-1nApU6W2 zVWNiPdtW{xPc5^GpITLf+(Zh+A zr=mlD{KQ_KQj>`^i^uFthHK*_8<@r_Dq_>{C!X$y^9eNY5|SzNrp#juV}Sh{Pw-|| z7jEn4=J(U(ga`kH@AXIC%ku%F_%@xdJk=YooEENhuwmmvZz~TfuHgB)xPl^7ueM$j z6t`$GVa6sV>Z#3Il|!Nzm7Hmxzp_YX8(bTI(ri02WtCv-`3*IBONeVb&4r?{=e6bw zYc6@!qs{q3tmjmp6FWWBh%>cC;`@n{4G*@EN~cehUF)@^rTxVEBg2swbq_en4cJ$- zFs{Vs-k^Wg=0s>kTtYoBH|5ZtoNO=A{xI|&;`zW}eNGsE zLbnHj$SH64AJM_nL1~ ze~m^@oiANu&ozKZ{&kd!Q@9hoeD6W?U0&ju5ke6O7a$|GJ6)$7H(rAfXT$>*1}%3pq>`km5m$%G!L$= zTDsDk=Q|#d?K6}2AwPeYbaIT~C50#H^P;m<0v4+Qu{!2f9dql`#mK5cV>8yZw_v!n zdt^*Cb;x(SYy9c!tKWmT`W0%zOW>&JRr z-@+4vn2PwiXM4MoMiSUW1Qlj7`hJyrjIgAv$1Qs`OUtD>D0qKQ&6{>+)b>)A=mDjL zI4~ETYR%+)UW?po56p}0qFSO3n=-s<;7~MdZ|08=v#`oKQh471PGc@!l%nxUyeaC)|> zGd3NiaYdDjlYka^uhXy8yIdK$fJ!(he;>Y?KIl(Gg|z*Sy4A*3%|h*0+F?LdGn7Fq zLhocW91^8>SnGndE?Db= z4?!2isHj2xPljQ&l``Db)~0m<=lE+(?edHrf@$>6bPjP5nm2jWGg>a*tXbjACRzHWid zuuUkT5*v{;uJ0U7yxBj=3I)2S3U954vc^Cs3ANaipw$dqeFKmZRK*0g_2%6YqMv+q!XRfPU-k84Y$&x(e% zHCkOzl|Jqmm6jFB$j(ybfRe>^k4S|D(;}$-tCC#8OPeEFD%;Q}CzBTSi~8Yiv?z7K?c0x%mIRi&t zQ8G;&@kTPahnFmakiupduJN~-ze~h`at7m?&7eexoWUT|8ypOS1;Tw6_a^Z5!in!o z>Ie^rw?AUSNd*=pS8^C7mc3?)83eD(`Hg=J?u;$x`{1z3WkE-jCiuRy0wz1-X5{5w zov{IEajsi?9dH`G^NrASIT2_4JFinF8O6pt&7_zL9(0c{I^3xZEAUIG=Nf@nxh?HYB+m1)AH=g!7LR32Wu$*I z9xsvyEvuqG8gy6DA*%Z_>b5&Q_hV-+^CcqXgtlAD0JAl(gWD#=n*tqw>Q&`!HitJChRcS8$znL46v z$(PW~Ru;S=F67eI_}nv$=!?n0t?hqHC?J(|JEm09vxJl{Tq}m+SEkOE#x{j^mi~i{ z$NZ9M@lD8aS-aC6zZ7&Bx48!;5nYWy;EA4Hzjz*9gYXc(%tO(_6G^M*UUvXtH{wD$w#2()zPVu23a?X!>m;B zihYDxB9l4H*oSzvXtN)^26TU)G1mDco)x$t1FI`{Ul*&~GfMDNrh41l?BfX}eqoCJ z&!#Z!u@NH#+>9VMWq{a^+n2*3FB_YY5j!FmJm!`0TF+Jp;3Z4!5iXlYGLu}?WZT^+ zi-sv1*J+wX$=zs?Me&#w9IniG9=I`zRp&d+#VgK@VoQNjfJipDz-WKe*2l@e74R#c zihuJAXDwMEltWHXM5Vhg8zK0~3?{;rvl#XUS&QlgJokaHZ_+gLeGkul-}lqu%J)4y z_rQPKrw#xJ68-pNi0RHlmi{wx=$e`1GIo)N3YDZS7`?CyH zvRfrZf|n-pg{tmB*acFx;yF9fgIWc=3@8=wO6wFprNYr4n1GU%Q6Hd*9PL36w@!J$ z&r0bIK<8Ff2Oyzw0FwKb#7!zU;^;nFj;qUze6)SL6MvHA#b>fVCa?{ zkMfUrd|$?aAasASORI?FZWd4NQ(3V9e;YXQ*&+j0Y%>m;y_~1B_?A0iSe4D)5ISz9Zm>UCNlPF1(7|HD$T*%Y5|gLg>iM<+Dtc&gWpbv<6YL+F zb!pr^qk}AhkoOY~fBQ~%HEwwsw(Uv-Rk)K;fFnQp`BQ&R$QC#>XW9itWmkArF{qYC z@}v=V9uC->B>It2lb=ab=CBmv0Q?2#BNk_+n>LVn-s$K^9D{E@rq76l%l~oPz(yaf z0>L}Z$PxL`GPztdWzN7$5oNpEY04ylC$8{=#FmkMu&<{0WA`^-`nmf37fcM#2aRdS z8PjoqKMQ{eL5n|c2?_~SY$6bqxZa*HW*eDSn{2T^iOxD2K$t^8^HD#|*a>7l8z*nr zSLco`=hlrwIY$sl8UB=U+DB|co98F`>s!p0wHa!RGxASeje7RXd{)(d_D;2(j+G>nB_qL)Y=gl_o6{dy9zmR_!DHtuMLGZUO2jG?}#u?Uh(kPj? zplr?pZXr@OuK-_^cfX5sf)tQX&2NoK_GLvdy8OTFxcnElTGyb9;##@K{s=;=%E@XF zD)!u0Y`qS7wpKB3uTR>ucnAnnv)%2HVOZI>?%>y4P&Q#4-o^n#o9 z%RYaIWdg|n*l$1LbPH=kN{sp0bH-Z2#FKo40)k##zAFHZnUV$gHs<=5(7d8PB*&eh zt0evt-;(KQQ81pCkhE zpZ~Dh+F5)HGs5*Qw0~Q#0;u*k(8yeg~~Rwu=2ZM0L?rszMtyVSRBTo z%BkJpibpxuc71q*4v2ysjFMNo)*V(>m@~`5$i4MlN6#OGO=+F0z$rucyV3rpn@rRv z(t+Xg4*mpf=oneb{*e=Hxi)MiY&)5ZKG?mnsZcA!_y{j|=^6MRS@;N&h;xOVq}Jd* zp-|ydt5auHK}fE^GVV|}~c&KzW@=r3O5uUo)h6{t}y6eASY?WoF%wQZmamE4L|1(w_{ zD=kI`g)*v;p~~ylXqCqW0@r|i4TKi}!bKMJYB)Gg8;vmdHqmH!!;aJ8C|!FJy-Xkk z-({M!1YTM#80 zW_YLOPVwQ1*BFlz>e+0~6a!Z8tw7-UDF$rIL93f3Mku$VWW9>+VKeJS{ZzDdRy)dNO9qi70xY z_@q>w*ho(BuHTl(Q3f|Jcur1>3E+%>%viU3MMDpzr@O~q52dGj51;vo1DXc|E_*PT zDx+dmL-l2+ff6&d8Bw|hYpzO?Qlrm=7C-u|#Dix{g{}a9K+CfkiXR#VO=+uP=tF^_ zb>J!-s!K9SB=)U39&VtO`E9>>);&Ls&dz&q|9z?+_SoOuiwpPRci))LI!p$?=)wO^ zB7*GZ;oPGs3t#FFgR=`ADLKV~?`v6=*5L_FCK`UYxHretYUH~{ zzVT-hFW-TZ`0-*5W z0D`r_;vvCUrdVHv08)c)(X6&c)Q$~NtHB~diythyj{BQnMHw%?eW=KUeMmFMhx%N2 zQJ;$ve z1MqDpuIiqw%sO&`iW_+cVGO>_i+XT@K@V~w8u-w!5B-7=%yzx9&A)|z3;E`r+I|REdZ>rI=+PjIN{i7E4+hC%k2z5Ij~qg|^6^8(&D9xwMsMkQ zogIRkNb~W*n#W_zcDd}220m2to8Asxs&`>(RutGg^1z$NZlzTX_N()?)L>E#Ch;eK z#|b7KnyD2^QHNqzH3@x@*;3{2Y;LUYjk|2!)`d zHd{IxeBdRc?Cl_)4@;o~GbnY*N;wF@g%2UzIIs!PPwyfHhWfeP)e$rv+ zBo+Q>bg+cg$JWaFp49Y&2egBz6Y(7m*G>2JO@rHPHD2e1l$Hm)__{$_|9C=wX{pVr zG*MeOr?Nu?sj1b$frLpb7C&kCajn9Q_Nnz|7|-9sb34x872_p~6na90DA6paNl{0~ zDLF1)8`|mCp*i$c1hW@L_4JmJoc72w8HGWx74HAj1v`ue z89OpRV{+mT@aYMr73CJk@Qa0iiq)W?rl1A|4+a!eRBB$9Clrt>iw?luW<<#HbQtcc zAl#b(%oes>xM3=}S7}_8H+9W&*tP@pRH4MIM7QfyUgO+b!nt28$JvN~ZK8PYfx1`0 zCT;?C@G78&!q#!S1E(#DJ}HR0pzT``hK8TA0K=f zb(6=oF71(}MU@&vh5@~Q%NPT4l(-{XDgqHh%l;+`W5d@>n{OHc&ouxn6PGA*^I+iO z>9ZAourX_QdNwRtHeq!;V@vIC{PK%^kg*PlzZzc*TVM2BU#uDwMY{L2)`Z7v&)XUo zt#Q#hsr8<5*%zj0{s6pxH_2@6!E^H_TrddWyNy=+TVxP}X}Uda^32P47rm3Mpu1x> zc_CX`^=@wt#KSc6g&Sl?CMaAl$Lan^J0y%*@Y(^-4U@k%9R&h> zJz4^j;WiY1{d3#4lK+a!-gL-_qDjf}hZsIjoAzFNm-gkF%=HI7U4|kdn~uJYq!Ou) z{`Xs80T3W5iE@;j)8{xNf#B`}*j?-{zy%d|9r9;z|DL2-GN1L0j^jBOh8-^R+j-hI z{v(`{?BsR0oW%fP*wK8kPLrG4yl=b^#S`;|b<%Nvy^E7F^dyPMEF*p6@2_6AyN+vY z{Ft`qMDyulJ|nX{xQ|H|rO6^^t^ZDzSvZ=IlNSOYlQ?mhhp)mkBf)q%izxibbRI7! z#H4qu`}bjbG9mBDB$EK9b)Ssc?Sb)*tc~F}0qxp2nUUDKPf5N^XD8kUP>8tdY&NFl zQ(8BF>3q5P4MtQV=LG>agG~Zn03CcEPL?FYt_<8E(iHb)qZ{4|d{vq$cUx&kr=gLi z4LZ|sVM^p;WU&K--dNijeKXI)3bSfPx25HKCK%c@8?@kn<&5X)PhoVc^vF(-TESA* zH9zJ^J5Zu9CpYtS{ofQYXmJc5IxvvbhC#l6UXc0tq*NOOhU~j>?e_KCB^s?jYYN!5 zhjG7#s|WLrF>YlRdZW;_>e^k-pcS<_S{bHk77T_?M(3Fmg_DUHrZ>weoi>O@+Zqgg zV6RCplfbnn0Y!5rWOkF^`pNT&pR`)my#TobkUNAKBtrpq_xx_+-%&UwlVzIzBw+@B zcS9cr4^24pv55c{2%zmT&fK-VZ|KE$->G1dK-(Kyf1{xEZnmJqF}DJ?JlnN- z3v%i@i)D5z+TFlEg@wMVM|)=4wi)dW_f0ZQzQFU(JU7(wa15%?$uLmwY%CwOkm5n9 zUa18J)4xW%$(B<#GTukKmM`!5JZfxz3blTGErvVLrW1wOJzp5I)E9J z)n6eqpxcd@5tAsHhLcy5Fj7tPY&k_XOv6074NSvm(JF^sny2P<|DTTe&$wlOS=Ue= zke`O;pw%8;W7WT%TGT6j!=NRfT-to_Ynb1%?zy(f?t^*176tC|`mWXHH#@`YmMB3r zGpU+y0a8CIV|ehiavO_jr;t!Yngmo1n;g~B1fovW{5B=o?R*kv<%lCrvOJu@5QPG_ z#k4NM4O3LL9Iy9GU|3E*|Mz5nMPjqWEz4FA&JKj{9ooQE1Nfm|W4+eFJxZ~UU$%4^ zeOW5%vZ9hhqGjwWWm}IW`}(D=1uT8-%GS(nU%S%pW%|t$CTq4*V+(HeMZp%*?u&w5 z;#t3RZ5JxkFNzz%*y&m>1aHGMuPo?L*|PUH+;7d^hZ!q=NaFl9ICoutc6CeW@-sN& zms1FSlUZ<|&li2KXX7#z3Zr?R&!@CBA!AyzQON!g^e$cH`sbi4u4&ia%ohQ_oP=3M z;=qWzd|DKySz_E>-49J|U&LC?#={zX@-G(vsMbccgukE9Ahyme=2}lI&$T zA`?*)%_sBpHLL;3?SQ_2FPH&^W<=REqGbj=`E|a`$Uk81Z`fMRGM5!EAQ*pVSiTfd zGD~v4;uaiaQlZw8^53CMZt*gcf#nOK?nmRncQHULKE1vASY;liLR&@R$B+PHd3fg zPFA@ITGR%i&q!`S|57qGjoUn5^iNNf8=GQYtj&x}2)nTEWziwJGX4W)X>KuVvEoCMcmQiB3)OMZaQt5e%MOOspEV^07muS|W9=WU^LdCHcY%76P zDKqQ4?@S){p{gqu2Vy{>gvQ5@8dR42Nvc2=i;S9(lk>TMxNnvb#B6QQuAnAwnBS(X?j;imzZ-$6MXlWb2baIDY`3MtZWA;ef4d zb8>2k5=f-$>AH_=;%dQ;4ts~W)15Y+y~BUsg2$)e>T$ITVLL`j)zez`lwt%-`ahrOK# zhP`dBp$)>{76&~b3@)f62OMxPH^dxhJ+j@Q<*#e*3n~l%)f6-$gzq01?*&`Y+K78E zL70Mn!~Rng{)tg|U94G)ziLzFpU{tol2~sgas0Kwc8-1J3xQp|a4Uhox@=Gv0p$iz zG$QO{^Q{WB5kzNB4(V-KhWtyd zLlo_5Oi-fu3U-zB>M*hh?yt6yTOURa!Ff=B@U#H?>K9;4)v`b&F(e??zU)C3-I6KT z`s_nOgI#eMg&8^V`bcYFeA|md_zyPV+i@74by?}$9mVIDtj@cLMlLOlI#*t2jHQe7 zQHPdd5{c@rhmrJXAO0VhQ_1OSx6XxZWNO)EkzL-MLkYxL>PfFiLb(c zb5??XQAA6m7hjHIRu{)1VRhpU{Sys!i-x-6o;T_tfvZcG_5N}cbUUix?R?|>t3B-G9Fx9^?GNQqM@_Ccvh^4z?m$kuWu8GkQ>x0(lWc2 z-F7Z5yXW-4$l7rNOE8FEZVndXWz_S3TsFYb_|oezUd3Y=D{}3eTtBBq z@I1acM-4j%4P&@ocy-xxYsBcnzwsFR*XxW?b9$GfF(VbnQEz-98X9wfM&r?c85cac zK&2j^U!HZaL@63WU~@+PcL|d&QKt(CX}!KlA+L zdBAWn>kJSA(Vm%DJ|9f*nwd|3F*az1Ea+oJ^K|e(Zu=^1kB6r>i48WB+FcICjot2xI-vf8pswsN4#g1Cs&~DGj2TIKNmhV&eO0JxL_q>aVaZ#|K$*I50a@irU?cfK@ zyJsD{W7*z0gvgkCkOBu{6VniYpGrPL)QX+~LoB<~>sj;>HRl9H#(uPa0@DC>XhoKw z9|^O+L6&1K96~FP_vx*TEv9y%KsdYU4UwQAYZy z__%(3{D>Q9g(U6BPM91MkYNHcOm@pK`NA?BFpdrbgx@GRCrpf$JZfhYrhlgi1SHQ+YAkEF6BIIs zZtg%72JB&@)>6P^l*ZOR8h30O;@PnDLW?XK5B3jHz-NJ|ErV`vPCrmTDAqA0eMjWdPViI|jCU@hb{0*2A~V-_{+8raUKl6ptfJ$UT3&}#vW31gcw z18R}@ioAl$bzzl%@=lpvZC(6k*-8ZA~&-9$|y$jn%<%ij}3yg7DPP~c2MUsb;NcsT!Py%h8LK?A5k~9LG zWHuuy4$h>Dzhy2jYnMWz`|1iR%fmGPes%-3Dvo`BXWh@1(;ujhz7xl8Iho{H=NXgA zt6xqz3=2%+gUFak%d_ez2~P7_wl$i-`=7e~!Kv^7;TSdC6IMx@8LY@MLoqP9}T&x>D9Xe9G&hd0IesEoTvOKkT?(4~a9h@3*ypgq}H9 zb@XX-71T8J_O(ODWt2aO~HZmjqM>h59Ju;h?pAy1)bNH4q7>Zh4rA&=AKF8ljJ%udqTrGq%l2AHE17xOHC5Ek8ufLc0FVl(boKHM3&!+=|EvoM_<>p5R$ zU3*Ta--Zv-sFuwN1ZdvsX2aJ9f8{ZKHcgSm=w2N9DmaXQ;LG1W;T!M%I=2bKm0IXnf!F5 zUvz%YK@r+u%dk&e%V1W6iKuZ-KLGm-qvikz6>DST1HeARC=uGBY|KTH_%~p{7IkBD zj~+50WHJKXMSbIs=mO08&A_Iu{`X$vbO44YeuOr&>(IYR& z2g8P)%6(NFlwm8wF5PSMhpfu*OS`g+t)&jB^MP?jM$ao~zSU8K>9ln&DQY1ckAjNk zfTwNBHJCb_y)9$0sze`uv?thsjj-2;nQFAsb+(l2N>gea-WPbE-StflI_bioF}AFs zB~`d7If39y%qme-BZVaHlD$PG+DTr~Kx(0kmZG%2Iy;f3uTEv8ulGhyOKl>)l`(K- zqfQ0F@Yf=M0la~5OO^wru!q-=OF4Y8IIo81JxZT^}!j$haK)n_5NmWW~TV3B=Z zvriQYjgqCjW&yn27Vj_bAL9KLBwv=xxjW6XmKxY)zWD>6qNdIOYpv+kTXggdlYO<* z#R%)2f6qSgdX}MoktrK=)e?W;V>CwdNi2gOb}|?rUQ^#!9PpE>{*AU{ZQW0knRt1r zgyGMXEz6&VEAdjsn!9l_9@Dof(ibYigeQxD)|{Sk{|rzxdyW<8`inw|V<;JT{Oozp z&*%{bgvjU$jTPG7utmvj%5AbwaCXb-PZNSqKr7u650D9eLi~&xFV5Va^{i6`-KXgP zN!AY&Sck@G#YrK0`hlLzpx@8cMpz9UC~s|B-_AcZVXlY45VQCM8xJk*{s8>^F z3d#yqJWYa8waUGyN3bDm(vQ-T)ly#I-xO7R|#dfC7~T# zK{$m@C9hFqE514;$$kreGiyX4I%nP2sg!)}rqC;XyqGQfwi4S^7`R9KC_kI3U-6Jh z?<>_wy780n=ahJ2l-A;TQJfxqwq3=#OV2Edr;~ht$xknpNhgNI-=K+DV1UIjt>#!P z{F4OQvIB)-e#vIUcI!DxN%)Q(6Ezrjn~bDJLQRIU2d(i~sxzTxFolNEH^tT}l@RKX zdB0r{EsuM**LfPC$^(jZZTt=5V<1nPXc;GMdKIqZaX5~F-P*`u{4$GDrh`E-@Ka@g z#eijhQo8i9^5QjJv;{Rx`U#?7S>4hbR1OuY?IqGT2ZMsREy(e)XLxjzyJn>m0?wE1 z7dJ~C*eLx^5iBd@0I`F7?=gLa24iRi$WwvJyrxUhBHC}dq>>nZfm_};EY=E#P{kJ< z6u4!opKY5{S*{#J7(1+BmkB@Q{S*AP5hY50$Jr|9#E!60PATnLVL}Y@V#gbyAIlk5 z?@=7Y5zowM+w>cZbhJ$06Z+N$R(KJnaWV^G8Mdl>G*&(fxUK`L9^+%rhrrpe=UPEc zpGuFcSlaD>EyG!!u(zLxmk7AFCtn}{U|8^M_RJVnspVO_vRBxc88~|cZ@RYrB#Wkh zwaDIXNvWVTUbBNgdoogdmO;@d6+)v~7dU!OuN*cWbk>zGU}kgW*(B}BLmy4Xwe3q8 ztItm#{S&ySBOiZ($8EPH%zq6RkK7A98Yd8u$%HS&*VXqK2ngI#Zv4W7n9xprN|qjB zxpv1%^QXkNWyKMhBO8Ik%K}=VLD1@dW=Z^vz_tU94?J049ApI4u6nAmTlO5hqx!oa zh3G18f0Ri>KKoqltg@QwA(rkAI{G@k_t#%3qkQ{3L1t>lC&0p#>h*%7UVQR_sve zzx1dO&~8u~uf@?X?T(=HxDP~}RSrb(<5prv9-C;Z#~DrwzU@8(QS0CofR@(Qv)G~U zx7su~5V@U(i9}l7jx&-48T}ZekmI&Pkpi#g1Z07Va}s9rauTLL!_3|iZWNRLlcFPq z%ux<9C>`H%+<>x}olR&6&XnbUr8v>>5DxK}LBT4uE|YwD-&9gJyP~#z9A+nTypOvu8( zaXslGgi-`sM5*bG@``q>;X+ZNR0)8gJ5cV3QOnmPu8-HbZns&N+7zXKZL|{gAc~HK znQp560&C)QtY?}T6FL4QFs0^VJzVOpM@!+rRow&wkJAe2S zImV#E{Z+Xlp4=&yuT<8kDV?<}`gR+Sw#MIILFE0EqW#wl#uw1;E#2`x>aNkYw6>?+ zq{DWTq;wt%(yDN-oDjuhI+c2nDpmhN3L$6UVEy)1r0s9jMl8jTPQ(L)b=nwK zUfcQjHo1_gpJAIzNUOZj#p|E8x*Gei&y$4kw1M{JeD;jJMf}NsX+Kh@&5q)}`V`Nt z|D4$WwRg3>ZQMxs`~3=c4*|4^WXQ7Rq+SR`o7|-zdT7wNcOL}dAbDk17g;i-RbpML z|6YE=q;DlVqg?vHbP^;O0%*PEhj7)GNl0cV- zqy<@)?VVf`K14sr26@?EZ*S*AhMKYZt~-(*D?rKK6pg$<$lkJryhw&Ie+>Au*Z8R? z^qw7sPxyg_HdjP{5OK2kPS~Dk>yFq$nMcz4-AJmbTD7l5`ud z8Clt`l_9d^!Hy`UyoPtf26e5JkHXqo(-smR8{_EFI!KdTiL5m$N>$|%GVd@$6A@?p z@_4r>QNo@DH1py_^M~oDp?&ULd>qY_XQ(7BqQv!o3v>)ll!P^3k^G{MGxe6POd6eM zhIJcBa~ytP~(^o40QutzHpF7=K^#;;{7kg30ObnJ{A+rey_z{WLtd4AcHIkrK=-gynC z;-k@j9n~-jY|Z2vvL*jCJFxTcvIoj2ROd4JUtnIy*z7bG1?{)^+k~3h+=@Cmj8eTm^PnA7LL!aeqo!pPF`vb2TCE@q}feD5{a`4=HNE8rz$r~xEr(eKDIF*EG zaX*1O7!6+a;m&BnkPe7*#e|4s35Aw zysMun<9wph0|gXgg{3vLk0jkrnZWt@{W6;SBKybemP>kblHi-4u=7y|4#ThTzgM6w z#-*egNG|BpE4b3P$D{1eSlss?sp-!btwqDfhyElcqXQSjm&_*eGoL{=iVq)uX48lM z9h?p7!qvDVCBIaR^qLLUDtzTpopE32h~Ruh}E#ieQvR zE}0$WCoXGMW)$Ojm?7miwz6WLGX=({C&~`Rqsd+ElouUZn*G^D4jG+fPo-Sx!U)!z zy)c56!b1Vs|38U=L+dH)n%?_`O$3^e0qE|VevkPD|NN6(OZs=5O}=xn-t`Wk z`ZDCceuCU*1kq|$v!r+!u^Vo{P}n;TK86nO$nSioLg9o2b+&tK@HrMmGYhm{rdq=Y zXl9h99vBE$(3{EEJ1xu27xx_rQ<=bSy&|7JKNhwe%f;uC@+ud9OJBa7ViVp!Co5%> zJrd~QaRU21!ts*T-%|D`+AN{X60%hLno`TdJCDJ=sgHD)R0(>0CaMG(`G;f@Wsk{_SA3Di)+MG+Hx7yNydVbs86*R9R0I}25yMzI zGt}ff!wlDOf{D$4izLtt(PAY986H$fiKllo`G=fXHvWryMBHLZC5IbO{wlUhA^<66 z_?t&awGCUM>Y8AyqFrl}h)}1yJ{ZR`u^R8-6F6K9OhA;%|1MtonrUVorur~2Ih-+V zY#qc57h7Aw(c6N{WM^zpv}}Q8yJ)w^Fk7!rjuVsq%_n}$YQFH5#^RA&hHGd7=`aq9|MgJ)lTrK;#P2nT zcL!Az!Hnl^CuYn5hXMg=F>fjmDWBp@HR8S64WES;!4|nw)WFw~g`7V^%bE>)#n_+N z{pw9Nzh{kq$&H>{;Yv~=SWio?HG#VqsT+RVMtavSciV7znu%7OJaQ0Ga4p+w1?hZ? z(c$!AR4+3klAw&)Dnt#$XxN<0S4p;W<$b@nW zz&$S1F`vz)CFYIcLKpc8Gz!2GSR=7(ZlPk^q>=J!LCQK2`hK3X_}g zK;H|cWRsd%3N{zz-6D)qJ$Z(x>~l0tMClKIU3D`u8}EnqCOu^ZKW_>D0oCrhyt>le zpw>FOsJAZK^=4R?SK96R+2y5m<@?w4LbF-FY_or1&#wx)6U2)l7)_{JW@%|gDq&RQ zNN)Gm1)AnWhTT*%mA>6y zE$&+0)yRr;YpQlfC2sRd+*+PmhJdM3C(1rv!LS`s5XxVHV@*#WOI4yp5NPFu5b6k*HqrZDod@h+p6}<5j1LP=CjG&hX!6oTla~%O*_LSXLZQiviu|)GMTfJi zi70peaIH6xopEU*Zc2`1Bk5GRk3qfhCc}s9Qn--$J;Vz6Lggt4?E1Fi1WI@k6->(F zNQ-8cmM)nH+DQEjd0V-}I(T34#7ntLn5Vq-_)otCLTcVyWD=x==&#%vG z`~0&cY)7)EfaWRZaMnjJQ#MAcJ>A}Y@P*rJhV{2ae=z^-Jy56nV0OFDo1~VHhU?1s z9iLQfTpweQb90JT%f#F5(RZ|7#yr|OV_K=Pr(}@n;`4kFGP%>;Z$I76qEoq5WIjWb zS=!Dgh6aZpRvcKp;=r^wE162|XFZ6@^ISahPd)FOqL;V**GV=#5E81p%EVDB&MR@F z!hRm#ujCi=y5Ha3SSHsyOWHJR6aRDBs;JZH0`1xRo_*N1)1xk+B>b-0_G!jaAN%fZ zmb>&lUGEEjsm6h+mo|x57%`bf2{Et7pAC?0+B8|LzpT zcKo}DZSkvmL$81gJy+Lgm@cmIF= z5qD)K&;B`k9^byw@W19HcjqUWn|~~WoFBdaJY$1CtH{D-Z`iWVA#v~2|5Y9LdPWkam5|!6>mP)ohlGEyQ2NftBZjt z=fC#a`tJU$U%dF1r2ACU;`bI;7WWh$2~2+#bitz5St#X@%bcwzRj>QRZ96Pe{pUg_w3avsaFi`7X4U0>!Q@+ zw6ZhrHlKIT`@MeJ-?#cmtHvfv#;QXWifwj{)n#RFva;D+niRqbW}M0HmEuD^17mV} zn>r)Yhn-oN)IY?#6hA&pHSr`~>1Q{6k wQB<15FrXZ&kz5QsRf83Hss_lG$x-ccOc{xjtJ-~;_GL{z*>1vC+zPS<0C^~J=Kufz