diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.suo b/Cyberpipe.suo index c1d31ce..6c59fcf 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.suo b/Cyberpipe.suo index c1d31ce..6c59fcf 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 8586041..81346fe 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -13,10 +14,10 @@ GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - TreeNode terrainManagerNode = null; - TreeNode layerManagerNode = null; - TreeNode terrainManagerNode1 = null; - TreeNode layerManagerNode1 = null; +// TreeNode terrainManagerNode = null; +// TreeNode layerManagerNode = null; +// TreeNode terrainManagerNode1 = null; +// TreeNode layerManagerNode1 = null; public FrmLayerControl(GSOGlobeControl ctl1,GSOGlobeControl ctl2) { @@ -25,14 +26,14 @@ globeControl2 = ctl2; } - private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) - { - treeNode=new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - } +// private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) +// { +// treeNode=new TreeNode(); +// treeNode.ImageIndex = 0; +// treeNode.SelectedImageIndex = 0; +// treeNode.Checked = false; +// treeNode.Text = strTreeNodeText; +// } // private void initTreeView() // { @@ -51,234 +52,258 @@ // layerTree2.Nodes.Add(terrainManagerNode); // } - #region wxl重构树形结构代码 + + - private TreeNode treeNode(string strTreeNodeText) - { - TreeNode treeNode = new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - return treeNode; - } -// private void appendToParent(TreeNodeCollection treeNodeCollection, ) - #endregion - private void initTreeView() +// private void initNode(string nodeName) +// { +// TreeNode nodeGroupElse1 = new TreeNode(); +// nodeGroupElse1.Text = nodeName; +// layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); +// +// TreeNode nodeGroupElse = new TreeNode(); +// nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; +// layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); +// } + +// private void initTreeNode(XmlNodeList Params) +// { +// foreach (XmlNode paramsNode in Params) //layers +// { +// foreach (XmlNode layerNode in paramsNode) //layer +// { +// initNode(layerNode.Attributes["label"].Value); +// } +// } +// +// initNode("基础图层"); +// initNode("其他"); +// } + +// private void FrmLayerControl_Load(object sender, EventArgs e) +// { +// +// initTreeView(); +// try +// { +// XmlDocument doc = new XmlDocument(); +// doc.Load(Application.StartupPath + "\\双屏设置.xml"); +// XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// +// initTreeNode(Params); +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// +// RefreshLayerAndTerrainTree(); +// } + private void FrmLayerControl_Load(object sender, EventArgs e) { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - - //加载layertree2 - initLayerTree(out layerManagerNode1, "图层管理"); - layerTree1.Nodes.Add(layerManagerNode1); - initLayerTree(out terrainManagerNode1, "地形管理"); - layerTree1.Nodes.Add(terrainManagerNode1); - - initLayerTree(out layerManagerNode, "图层管理"); - layerTree2.Nodes.Add(layerManagerNode); - initLayerTree(out terrainManagerNode, "地形管理"); - layerTree2.Nodes.Add(terrainManagerNode); + TreeUtils.initTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.initTree(globeControl2, layerTree2, "施工数据"); } - private void initNode(string nodeName) - { - TreeNode nodeGroupElse1 = new TreeNode(); - nodeGroupElse1.Text = nodeName; - layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); + #region wxl重构树形结构代码 - TreeNode nodeGroupElse = new TreeNode(); - nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; - layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); - } + /// + /// 构造tree,最多解析三层,可放在工具类中 - private void initTreeNode(XmlNodeList Params) - { - foreach (XmlNode paramsNode in Params) //layers - { - foreach (XmlNode layerNode in paramsNode) //layer - { - initNode(layerNode.Attributes["label"].Value); - } - } + /// 所属地球 + /// 要加载的树 + /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 +// private void initTree(GSOGlobeControl gsoGlobeControl,TreeView treeView, string viewDatasrc) +// { +// treeView.Nodes.Clear(); +// LayerConfig layerConfig = Utility.layerConfig; +// List datasrcs = layerConfig.datasrcs; +// foreach (DataSrc datasrc in datasrcs) +// { +// if (viewDatasrc != null && !viewDatasrc.Trim().Equals("") && !datasrc.label.Equals(viewDatasrc)) continue; +// TreeNode rootNode = treeView.Nodes.Add(datasrc.label); +// List layerTypes = datasrc.layertypes; +// foreach (LayerType layerType in layerTypes) +// { +// TreeNode secNode = rootNode.Nodes.Add(layerType.label); +// List layers = layerType.layers; +// foreach (Layer layer in layers) +// { +// GSOLayer gsoLayer = gsoGlobeControl.Globe.Layers.GetLayerByCaption(layer.layer); +// if (gsoLayer == null) continue;//将不存在的去除 +// TreeNode node = new TreeNode(); +// node.Tag = gsoLayer; +// node.Text = layer.label; +// node.Checked = gsoLayer.Visible; +// if (gsoLayer.Visible) +// { +// secNode.Checked = true; +// rootNode.Checked = true; +// } +// secNode.Nodes.Add(node); +// } +// } +// } +// } - initNode("基础图层"); - initNode("其他"); - } + #endregion - private void FrmLayerControl_Load(object sender, EventArgs e) - { - initTreeView(); - try - { - XmlDocument doc = new XmlDocument(); - doc.Load(Application.StartupPath + "\\双屏设置.xml"); - XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, +// TreeView layerTree) +// { +// try +// { +// for (int i = 0; i < nLayerCount; i++) +// { +// GSOLayer layer = globcontrol.Globe.Layers[i]; +// if (layer == null) continue; +// string layerName = layer.Name; +// TreeNode node = new TreeNode(); +// node.Tag = layer; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = layer.Caption; +// node.Checked = layer.Visible; +// +// bool isContains = false; +// for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) +// { +// if (!layerName.Contains("fttp:")) +// { +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || +// layerName.Contains("施工") || +// layerName.Contains("规划")) continue; +// break; +// case "layerTree2": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[j].Nodes.Add(node); +// isContains = true; +// break; +// } +// else +// { +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); +// isContains = true; +// break; +// } +// } +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || +// layerName.Contains("标注") || +// isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || +// layerName.Contains("景观") || layerName.Contains("红线")) +// continue; +// break; +// case "layerTree2": +// if (isContains != false || layerName.Contains("tempLgdData2")) +// continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); +// } +// +// for (int i = 0; i < nTerrainCount; i++) +// { +// GSOTerrain terrain = globcontrol.Globe.Terrains[i]; +// if (terrain == null) continue; +// TreeNode node = new TreeNode(); +// node.Tag = terrain; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = terrain.Caption; +// node.Checked = terrain.Visible; +// switch (layerTree.Name) +// { +// case "layerTree1": +// terrainManagerNode1.Nodes.Add(node); +// break; +// case "layerTree2": +// terrainManagerNode.Nodes.Add(node); +// break; +// default: +// break; +// } +// } +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// } - initTreeNode(Params); - } - catch (Exception ex) - { - LogError.PublishError(ex); - } +// private void initTreeNodeCheckedStatus(TreeView layerTreeView) +// { +// //节点选中状态控制 +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// if (node.Checked != true) continue; +// layerTreeView.Nodes[0].Checked = true; +// break; +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOTerrain layer = childNode.Tag as GSOTerrain; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// } - RefreshLayerAndTerrainTree(); - } - - private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, - TreeView layerTree) - { - try - { - for (int i = 0; i < nLayerCount; i++) - { - GSOLayer layer = globcontrol.Globe.Layers[i]; - if (layer == null) continue; - string layerName = layer.Name; - TreeNode node = new TreeNode(); - node.Tag = layer; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = layer.Caption; - node.Checked = layer.Visible; - - bool isContains = false; - for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) - { - if (!layerName.Contains("fttp:")) - { - switch (layerTree.Name) - { - case "layerTree1": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || - layerName.Contains("施工") || - layerName.Contains("规划")) continue; - break; - case "layerTree2": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[j].Nodes.Add(node); - isContains = true; - break; - } - else - { - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); - isContains = true; - break; - } - } - switch (layerTree.Name) - { - case "layerTree1": - if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || - layerName.Contains("标注") || - isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || - layerName.Contains("景观") || layerName.Contains("红线")) - continue; - break; - case "layerTree2": - if (isContains != false || layerName.Contains("tempLgdData2")) - continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); - } - - for (int i = 0; i < nTerrainCount; i++) - { - GSOTerrain terrain = globcontrol.Globe.Terrains[i]; - if (terrain == null) continue; - TreeNode node = new TreeNode(); - node.Tag = terrain; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = terrain.Caption; - node.Checked = terrain.Visible; - switch (layerTree.Name) - { - case "layerTree1": - terrainManagerNode1.Nodes.Add(node); - break; - case "layerTree2": - terrainManagerNode.Nodes.Add(node); - break; - default: - break; - } - } - } - catch (Exception ex) - { - LogError.PublishError(ex); - } - } - - private void initTreeNodeCheckedStatus(TreeView layerTreeView) - { - //节点选中状态控制 - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - if (node.Checked != true) continue; - layerTreeView.Nodes[0].Checked = true; - break; - } - - foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOTerrain layer = childNode.Tag as GSOTerrain; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - } - - void exPandTreeNode() - { - layerManagerNode1.Expand(); - terrainManagerNode1.Expand(); - layerManagerNode.Expand(); - terrainManagerNode.Expand(); - } +// void exPandTreeNode() +// { +// layerManagerNode1.Expand(); +// terrainManagerNode1.Expand(); +// layerManagerNode.Expand(); +// terrainManagerNode.Expand(); +// } /// /// 刷新节点树 /// - private void RefreshLayerAndTerrainTree() - { - int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 - int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 - addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); - initTreeNodeCheckedStatus(layerTree1); - - int nLayerCount = globeControl2.Globe.Layers.Count; - int nTerrainCount = globeControl2.Globe.Terrains.Count; - addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); - initTreeNodeCheckedStatus(layerTree2); - - // 展开 - exPandTreeNode(); - } +// private void RefreshLayerAndTerrainTree() +// { +// int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 +// int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 +// addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); +// initTreeNodeCheckedStatus(layerTree1); +// +// int nLayerCount = globeControl2.Globe.Layers.Count; +// int nTerrainCount = globeControl2.Globe.Terrains.Count; +// addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); +// initTreeNodeCheckedStatus(layerTree2); +// +// // 展开 +// exPandTreeNode(); +// } /// /// 节点树复选框选中状态改变事件处理 @@ -289,144 +314,132 @@ { if (e.Action != TreeViewAction.Unknown) { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } + TreeUtils.treeNodeCheckedChange(globeControl2,e.Node); + } + } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree2(e.Node, e.Node.Checked); + private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); } } + + +// private void layerTree2_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree2(e.Node, e.Node.Checked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree1(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree1(childNode, isChecked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree2(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree2(childNode, isChecked); +// } +// } /// /// 节点树选中状态改变事件 /// /// /// - private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Action != TreeViewAction.Unknown) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } +// private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree1(e.Node, e.Node.Checked); +// } +// } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree1(e.Node, e.Node.Checked); - } - } - /// - /// 改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - /// - /// - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent != null) - { - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } - } } } diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.suo b/Cyberpipe.suo index c1d31ce..6c59fcf 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 8586041..81346fe 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -13,10 +14,10 @@ GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - TreeNode terrainManagerNode = null; - TreeNode layerManagerNode = null; - TreeNode terrainManagerNode1 = null; - TreeNode layerManagerNode1 = null; +// TreeNode terrainManagerNode = null; +// TreeNode layerManagerNode = null; +// TreeNode terrainManagerNode1 = null; +// TreeNode layerManagerNode1 = null; public FrmLayerControl(GSOGlobeControl ctl1,GSOGlobeControl ctl2) { @@ -25,14 +26,14 @@ globeControl2 = ctl2; } - private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) - { - treeNode=new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - } +// private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) +// { +// treeNode=new TreeNode(); +// treeNode.ImageIndex = 0; +// treeNode.SelectedImageIndex = 0; +// treeNode.Checked = false; +// treeNode.Text = strTreeNodeText; +// } // private void initTreeView() // { @@ -51,234 +52,258 @@ // layerTree2.Nodes.Add(terrainManagerNode); // } - #region wxl重构树形结构代码 + + - private TreeNode treeNode(string strTreeNodeText) - { - TreeNode treeNode = new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - return treeNode; - } -// private void appendToParent(TreeNodeCollection treeNodeCollection, ) - #endregion - private void initTreeView() +// private void initNode(string nodeName) +// { +// TreeNode nodeGroupElse1 = new TreeNode(); +// nodeGroupElse1.Text = nodeName; +// layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); +// +// TreeNode nodeGroupElse = new TreeNode(); +// nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; +// layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); +// } + +// private void initTreeNode(XmlNodeList Params) +// { +// foreach (XmlNode paramsNode in Params) //layers +// { +// foreach (XmlNode layerNode in paramsNode) //layer +// { +// initNode(layerNode.Attributes["label"].Value); +// } +// } +// +// initNode("基础图层"); +// initNode("其他"); +// } + +// private void FrmLayerControl_Load(object sender, EventArgs e) +// { +// +// initTreeView(); +// try +// { +// XmlDocument doc = new XmlDocument(); +// doc.Load(Application.StartupPath + "\\双屏设置.xml"); +// XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// +// initTreeNode(Params); +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// +// RefreshLayerAndTerrainTree(); +// } + private void FrmLayerControl_Load(object sender, EventArgs e) { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - - //加载layertree2 - initLayerTree(out layerManagerNode1, "图层管理"); - layerTree1.Nodes.Add(layerManagerNode1); - initLayerTree(out terrainManagerNode1, "地形管理"); - layerTree1.Nodes.Add(terrainManagerNode1); - - initLayerTree(out layerManagerNode, "图层管理"); - layerTree2.Nodes.Add(layerManagerNode); - initLayerTree(out terrainManagerNode, "地形管理"); - layerTree2.Nodes.Add(terrainManagerNode); + TreeUtils.initTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.initTree(globeControl2, layerTree2, "施工数据"); } - private void initNode(string nodeName) - { - TreeNode nodeGroupElse1 = new TreeNode(); - nodeGroupElse1.Text = nodeName; - layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); + #region wxl重构树形结构代码 - TreeNode nodeGroupElse = new TreeNode(); - nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; - layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); - } + /// + /// 构造tree,最多解析三层,可放在工具类中 - private void initTreeNode(XmlNodeList Params) - { - foreach (XmlNode paramsNode in Params) //layers - { - foreach (XmlNode layerNode in paramsNode) //layer - { - initNode(layerNode.Attributes["label"].Value); - } - } + /// 所属地球 + /// 要加载的树 + /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 +// private void initTree(GSOGlobeControl gsoGlobeControl,TreeView treeView, string viewDatasrc) +// { +// treeView.Nodes.Clear(); +// LayerConfig layerConfig = Utility.layerConfig; +// List datasrcs = layerConfig.datasrcs; +// foreach (DataSrc datasrc in datasrcs) +// { +// if (viewDatasrc != null && !viewDatasrc.Trim().Equals("") && !datasrc.label.Equals(viewDatasrc)) continue; +// TreeNode rootNode = treeView.Nodes.Add(datasrc.label); +// List layerTypes = datasrc.layertypes; +// foreach (LayerType layerType in layerTypes) +// { +// TreeNode secNode = rootNode.Nodes.Add(layerType.label); +// List layers = layerType.layers; +// foreach (Layer layer in layers) +// { +// GSOLayer gsoLayer = gsoGlobeControl.Globe.Layers.GetLayerByCaption(layer.layer); +// if (gsoLayer == null) continue;//将不存在的去除 +// TreeNode node = new TreeNode(); +// node.Tag = gsoLayer; +// node.Text = layer.label; +// node.Checked = gsoLayer.Visible; +// if (gsoLayer.Visible) +// { +// secNode.Checked = true; +// rootNode.Checked = true; +// } +// secNode.Nodes.Add(node); +// } +// } +// } +// } - initNode("基础图层"); - initNode("其他"); - } + #endregion - private void FrmLayerControl_Load(object sender, EventArgs e) - { - initTreeView(); - try - { - XmlDocument doc = new XmlDocument(); - doc.Load(Application.StartupPath + "\\双屏设置.xml"); - XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, +// TreeView layerTree) +// { +// try +// { +// for (int i = 0; i < nLayerCount; i++) +// { +// GSOLayer layer = globcontrol.Globe.Layers[i]; +// if (layer == null) continue; +// string layerName = layer.Name; +// TreeNode node = new TreeNode(); +// node.Tag = layer; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = layer.Caption; +// node.Checked = layer.Visible; +// +// bool isContains = false; +// for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) +// { +// if (!layerName.Contains("fttp:")) +// { +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || +// layerName.Contains("施工") || +// layerName.Contains("规划")) continue; +// break; +// case "layerTree2": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[j].Nodes.Add(node); +// isContains = true; +// break; +// } +// else +// { +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); +// isContains = true; +// break; +// } +// } +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || +// layerName.Contains("标注") || +// isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || +// layerName.Contains("景观") || layerName.Contains("红线")) +// continue; +// break; +// case "layerTree2": +// if (isContains != false || layerName.Contains("tempLgdData2")) +// continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); +// } +// +// for (int i = 0; i < nTerrainCount; i++) +// { +// GSOTerrain terrain = globcontrol.Globe.Terrains[i]; +// if (terrain == null) continue; +// TreeNode node = new TreeNode(); +// node.Tag = terrain; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = terrain.Caption; +// node.Checked = terrain.Visible; +// switch (layerTree.Name) +// { +// case "layerTree1": +// terrainManagerNode1.Nodes.Add(node); +// break; +// case "layerTree2": +// terrainManagerNode.Nodes.Add(node); +// break; +// default: +// break; +// } +// } +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// } - initTreeNode(Params); - } - catch (Exception ex) - { - LogError.PublishError(ex); - } +// private void initTreeNodeCheckedStatus(TreeView layerTreeView) +// { +// //节点选中状态控制 +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// if (node.Checked != true) continue; +// layerTreeView.Nodes[0].Checked = true; +// break; +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOTerrain layer = childNode.Tag as GSOTerrain; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// } - RefreshLayerAndTerrainTree(); - } - - private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, - TreeView layerTree) - { - try - { - for (int i = 0; i < nLayerCount; i++) - { - GSOLayer layer = globcontrol.Globe.Layers[i]; - if (layer == null) continue; - string layerName = layer.Name; - TreeNode node = new TreeNode(); - node.Tag = layer; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = layer.Caption; - node.Checked = layer.Visible; - - bool isContains = false; - for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) - { - if (!layerName.Contains("fttp:")) - { - switch (layerTree.Name) - { - case "layerTree1": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || - layerName.Contains("施工") || - layerName.Contains("规划")) continue; - break; - case "layerTree2": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[j].Nodes.Add(node); - isContains = true; - break; - } - else - { - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); - isContains = true; - break; - } - } - switch (layerTree.Name) - { - case "layerTree1": - if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || - layerName.Contains("标注") || - isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || - layerName.Contains("景观") || layerName.Contains("红线")) - continue; - break; - case "layerTree2": - if (isContains != false || layerName.Contains("tempLgdData2")) - continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); - } - - for (int i = 0; i < nTerrainCount; i++) - { - GSOTerrain terrain = globcontrol.Globe.Terrains[i]; - if (terrain == null) continue; - TreeNode node = new TreeNode(); - node.Tag = terrain; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = terrain.Caption; - node.Checked = terrain.Visible; - switch (layerTree.Name) - { - case "layerTree1": - terrainManagerNode1.Nodes.Add(node); - break; - case "layerTree2": - terrainManagerNode.Nodes.Add(node); - break; - default: - break; - } - } - } - catch (Exception ex) - { - LogError.PublishError(ex); - } - } - - private void initTreeNodeCheckedStatus(TreeView layerTreeView) - { - //节点选中状态控制 - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - if (node.Checked != true) continue; - layerTreeView.Nodes[0].Checked = true; - break; - } - - foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOTerrain layer = childNode.Tag as GSOTerrain; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - } - - void exPandTreeNode() - { - layerManagerNode1.Expand(); - terrainManagerNode1.Expand(); - layerManagerNode.Expand(); - terrainManagerNode.Expand(); - } +// void exPandTreeNode() +// { +// layerManagerNode1.Expand(); +// terrainManagerNode1.Expand(); +// layerManagerNode.Expand(); +// terrainManagerNode.Expand(); +// } /// /// 刷新节点树 /// - private void RefreshLayerAndTerrainTree() - { - int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 - int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 - addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); - initTreeNodeCheckedStatus(layerTree1); - - int nLayerCount = globeControl2.Globe.Layers.Count; - int nTerrainCount = globeControl2.Globe.Terrains.Count; - addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); - initTreeNodeCheckedStatus(layerTree2); - - // 展开 - exPandTreeNode(); - } +// private void RefreshLayerAndTerrainTree() +// { +// int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 +// int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 +// addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); +// initTreeNodeCheckedStatus(layerTree1); +// +// int nLayerCount = globeControl2.Globe.Layers.Count; +// int nTerrainCount = globeControl2.Globe.Terrains.Count; +// addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); +// initTreeNodeCheckedStatus(layerTree2); +// +// // 展开 +// exPandTreeNode(); +// } /// /// 节点树复选框选中状态改变事件处理 @@ -289,144 +314,132 @@ { if (e.Action != TreeViewAction.Unknown) { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } + TreeUtils.treeNodeCheckedChange(globeControl2,e.Node); + } + } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree2(e.Node, e.Node.Checked); + private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); } } + + +// private void layerTree2_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree2(e.Node, e.Node.Checked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree1(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree1(childNode, isChecked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree2(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree2(childNode, isChecked); +// } +// } /// /// 节点树选中状态改变事件 /// /// /// - private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Action != TreeViewAction.Unknown) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } +// private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree1(e.Node, e.Node.Checked); +// } +// } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree1(e.Node, e.Node.Checked); - } - } - /// - /// 改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - /// - /// - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent != null) - { - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } - } } } diff --git a/MainFrm.cs b/MainFrm.cs index d22b2c9..ba3bf31 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -28,10 +28,10 @@ { TreeNode layerManagerNode; bool m_bFullScreen; - + GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - private GSOHudButton legend;//定义图例 + private GSOHudButton legend; //定义图例 private GSOHudButton btnToolNone; private GSOHudButton btnToolSelect; ToolTip tooltip1; @@ -50,12 +50,12 @@ public bool boolfrmShResult; public bool boolfrmModify; - public static string m_CurrentQueryLayer;//定义当前查询的图层 + public static string m_CurrentQueryLayer; //定义当前查询的图层 //定位和闪烁初始化定义 private EnumDesignMode enumDesignMode; //模拟规划设计模式 - private string trackflag;//定义阀门查询个数 + private string trackflag; //定义阀门查询个数 //记录沿线飞行设置 //int m_nFlyMode = 2; @@ -67,7 +67,7 @@ Double m_dDigPitWidthAlongLine = 6; Boolean m_bDigPitByDepth = true; //选择管线 - int selectState;//wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 + int selectState; //wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 //private OracleConnection connBackup = null; //数据集合 @@ -89,8 +89,8 @@ //双屏对比 //bool zhanshi=false; Thread t = null; - private GSOHudButton legendSC;//定义图例 - private GSOHudButton legendSG;//定义图例 + private GSOHudButton legendSC; //定义图例 + private GSOHudButton legendSG; //定义图例 //管纵图 private GSOHudButton lendendGZ50; private GSOHudButton lendendGZ36; @@ -102,12 +102,13 @@ GSOGeoPoint3D bsqPT; - FrmYJSHTC frmSh;//一键审核窗口全局变量wxl - FrmWait frmWait;//一键审核等待窗口 + FrmYJSHTC frmSh; //一键审核窗口全局变量wxl + FrmWait frmWait; //一键审核等待窗口 //FrmWait frmWait2 = null;//文档操作等待窗口 float mouseDownX1, mouseDownY1; float mouseDownX2, mouseDownY2; + /// /// /// @@ -164,8 +165,9 @@ RigthMenuSet(); MenuSet(); - + } + /// /// 右屏中添加管纵图片 /// @@ -259,6 +261,7 @@ } #region 区域分析 + if (Utility.userRole.IndexOf("区域分析") < 0) { toolRightMenu.Items.Remove(区域分析ToolStripMenuItem); @@ -278,9 +281,11 @@ 区域分析ToolStripMenuItem.DropDownItems.Remove(无源淹没分析ToolStripMenuItem); } } + #endregion #region 视域分析 + if (Utility.userRole.IndexOf("视域分析") < 0) { toolRightMenu.Items.Remove(视域分析ToolStripMenuItem); @@ -300,9 +305,11 @@ 视域分析ToolStripMenuItem.DropDownItems.Remove(可视包络分析ToolStripMenuItem); } } + #endregion #region 开发分析 + if (Utility.userRole.IndexOf("开挖分析") < 0) { toolRightMenu.Items.Remove(开挖分析ToolStripMenuItem); @@ -334,9 +341,11 @@ 开挖分析ToolStripMenuItem.DropDownItems.Remove(删除隧道ToolStripMenuItem); } } + #endregion #region 拓扑分析 + if (Utility.userRole.IndexOf("拓扑分析") < 0) { toolRightMenu.Items.Remove(拓扑分析ToolStripMenuItem); @@ -372,9 +381,11 @@ 拓扑分析ToolStripMenuItem.DropDownItems.Remove(爆管分析ToolStripMenuItem); } } + #endregion #region 断面分析 + if (Utility.userRole.IndexOf("断面分析") < 0) { toolRightMenu.Items.Remove(断面分析ToolStripMenuItem); @@ -398,9 +409,11 @@ 断面分析ToolStripMenuItem.DropDownItems.Remove(基线剖面分析ToolStripMenuItem); } } + #endregion #region 绘制区域统计 + if (Utility.userRole.IndexOf("绘制区域统计") < 0) { toolRightMenu.Items.Remove(绘制区域统计ToolStripMenuItem); @@ -445,9 +458,11 @@ } } + #endregion #region 全区域统计 + if (Utility.userRole.IndexOf("全区域统计") < 0) { toolRightMenu.Items.Remove(全区域统计ToolStripMenuItem); @@ -492,9 +507,11 @@ } } + #endregion #region 查询 + if (Utility.userRole.IndexOf("查询") < 0) { toolRightMenu.Items.Remove(查询ToolStripMenuItem); @@ -542,9 +559,11 @@ 查询ToolStripMenuItem.DropDownItems.Remove(附属物查询ToolStripMenuItem); } } + #endregion #region 标注 + if (Utility.userRole.IndexOf("标注") < 0) { toolRightMenu.Items.Remove(标注ToolStripMenuItem); @@ -592,9 +611,11 @@ 标注ToolStripMenuItem.DropDownItems.Remove(标注管理ToolStripMenuItem); } } + #endregion #region 飞行 + if (Utility.userRole.IndexOf("飞行") < 0) { toolRightMenu.Items.Remove(飞行ToolStripMenuItem); @@ -618,9 +639,11 @@ 飞行ToolStripMenuItem.DropDownItems.Remove(绕眼睛飞行ToolStripMenuItem); } } + #endregion #region 编辑 + if (Utility.userRole.IndexOf("编辑") < 0) { toolRightMenu.Items.Remove(编辑ToolStripMenuItem); @@ -656,9 +679,11 @@ 编辑ToolStripMenuItem.DropDownItems.Remove(删除模型ToolStripMenuItem); } } + #endregion #region 量算 + if (Utility.userRole.IndexOf("量算") < 0) { toolRightMenu.Items.Remove(量算ToolStripMenuItem); @@ -694,6 +719,7 @@ 量算ToolStripMenuItem.DropDownItems.Remove(地表面积ToolStripMenuItem1); } } + #endregion } @@ -701,6 +727,7 @@ { #region 权限管理 + if (Utility.userRole.IndexOf("权限管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem2); @@ -734,9 +761,11 @@ } } + #endregion #region 基础工具 + if (Utility.userRole.IndexOf("基础工具") < 0) { ribbonControl1.Items.Remove(ribbonTabItem1); @@ -781,37 +810,47 @@ } } + #endregion #region 一键审核 + if (Utility.userRole.IndexOf("一键审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem11); } + #endregion #region 红线审核 + if (Utility.userRole.IndexOf("红线审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem6); } + #endregion #region 双屏对比 + if (Utility.userRole.IndexOf("双屏对比") < 0) { ribbonControl1.Items.Remove(ribbonTabItem9); } + #endregion #region 文档管理 + if (Utility.userRole.IndexOf("文档管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem4); } + #endregion #region 基础管理 + if (Utility.userRole.IndexOf("基础管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem14); @@ -841,6 +880,7 @@ } #region Fan Zhang 重构现有代码 + //初始化控件布局 private void initLayout() { @@ -848,37 +888,37 @@ double dsw = SW; if (SW > 1440) { - double myScreen = dsw / 1440; - buttonX1.Width = (int)(buttonX1.Width * myScreen); - buttonX2.Width = (int)(buttonX2.Width * myScreen); - buttonX4.Width = (int)(buttonX4.Width * myScreen); - buttonX5.Width = (int)(buttonX5.Width * myScreen); - buttonX6.Width = (int)(buttonX6.Width * myScreen); - buttonX7.Width = (int)(buttonX8.Width * myScreen); - buttonX8.Width = (int)(buttonX8.Width * myScreen); - buttonX9.Width = (int)(buttonX9.Width * myScreen); - buttonX12.Width = (int)(buttonX12.Width * myScreen); - buttonX14.Width = (int)(buttonX14.Width * myScreen); - buttonX15.Width = (int)(buttonX15.Width * myScreen); - buttonX16.Width = (int)(buttonX16.Width * myScreen); - buttonX17.Width = (int)(buttonX17.Width * myScreen); + double myScreen = dsw/1440; + buttonX1.Width = (int) (buttonX1.Width*myScreen); + buttonX2.Width = (int) (buttonX2.Width*myScreen); + buttonX4.Width = (int) (buttonX4.Width*myScreen); + buttonX5.Width = (int) (buttonX5.Width*myScreen); + buttonX6.Width = (int) (buttonX6.Width*myScreen); + buttonX7.Width = (int) (buttonX8.Width*myScreen); + buttonX8.Width = (int) (buttonX8.Width*myScreen); + buttonX9.Width = (int) (buttonX9.Width*myScreen); + buttonX12.Width = (int) (buttonX12.Width*myScreen); + buttonX14.Width = (int) (buttonX14.Width*myScreen); + buttonX15.Width = (int) (buttonX15.Width*myScreen); + buttonX16.Width = (int) (buttonX16.Width*myScreen); + buttonX17.Width = (int) (buttonX17.Width*myScreen); - labelX1.Width = (int)(labelX1.Width * myScreen); - labelX2.Width = (int)(labelX2.Width * myScreen); - labelX3.Width = (int)(labelX3.Width * myScreen); - labelX6.Width = (int)(labelX6.Width * myScreen); - labelX8.Width = (int)(labelX8.Width * myScreen); - labelX9.Width = (int)(labelX9.Width * myScreen); - labelX12.Width = (int)(labelX12.Width * myScreen); - labelX13.Width = (int)(labelX13.Width * myScreen); - labelX14.Width = (int)(labelX14.Width * myScreen); - labelX16.Width = (int)(labelX16.Width * myScreen); - labelX17.Width = (int)(labelX17.Width * myScreen); - labelX11.Width = (int)(labelX11.Width * myScreen); - labelX19.Width = (int)(labelX19.Width * myScreen); - labelX21.Width = (int)(labelX21.Width * myScreen); - labelX22.Width = (int)(labelX22.Width * myScreen); - labelX24.Width = (int)(labelX24.Width * myScreen); + labelX1.Width = (int) (labelX1.Width*myScreen); + labelX2.Width = (int) (labelX2.Width*myScreen); + labelX3.Width = (int) (labelX3.Width*myScreen); + labelX6.Width = (int) (labelX6.Width*myScreen); + labelX8.Width = (int) (labelX8.Width*myScreen); + labelX9.Width = (int) (labelX9.Width*myScreen); + labelX12.Width = (int) (labelX12.Width*myScreen); + labelX13.Width = (int) (labelX13.Width*myScreen); + labelX14.Width = (int) (labelX14.Width*myScreen); + labelX16.Width = (int) (labelX16.Width*myScreen); + labelX17.Width = (int) (labelX17.Width*myScreen); + labelX11.Width = (int) (labelX11.Width*myScreen); + labelX19.Width = (int) (labelX19.Width*myScreen); + labelX21.Width = (int) (labelX21.Width*myScreen); + labelX22.Width = (int) (labelX22.Width*myScreen); + labelX24.Width = (int) (labelX24.Width*myScreen); } sideBar1.Visible = false; sideBar1.ExpandedPanel = sideBarPanelItem3; @@ -899,7 +939,7 @@ splitContainer1.Panel2Collapsed = true; - buttonItem87.Checked = true;//默认地上模式 + buttonItem87.Checked = true; //默认地上模式 ribbonTabItem1.Select(); //初始化状态为浏览 sideBarPanelItem3.Visible = false; @@ -951,7 +991,7 @@ //图例 legend = new GSOHudButton(); - legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg");//图例P + legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg"); //图例P legend.SetOffset(0, 15); legend.MinOpaque = 1; legend.MaxOpaque = 1; @@ -1002,7 +1042,7 @@ globeControl1.Globe.UserBackgroundColor = Color.White; globeControl1.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl1.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed * 3; + globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed*3; globeControl1.Globe.EditSnapObject = true; globeControl1.Globe.IsReleaseMemOutOfView = true; globeControl1.Globe.ControlPanel.Visible = true; @@ -1021,18 +1061,22 @@ globeControl2.Globe.UserBackgroundColor = Color.White; globeControl2.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl2.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed * 3; + globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed*3; globeControl2.Globe.EditSnapObject = true; globeControl2.Globe.IsReleaseMemOutOfView = true; globeControl2.Globe.ControlPanel.Visible = false; - GSOSimplePolygonStyle3D trackingRectStyle = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackingRectStyle = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; trackingRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimplePolygonStyle3D trackRectStyle = globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackRectStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; trackRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimpleLineStyle3D trackRectLineStyle = globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle.LineType = EnumLineType.Solid; - GSOSimpleLineStyle3D trackRectLineStyle1 = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle1 = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle1.LineType = EnumLineType.Solid; trackRectLineStyle1.LineColor = Color.FromArgb(0, 174, 255); trackRectLineStyle1.LineWidth = 1; @@ -1119,21 +1163,28 @@ globeControl1.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 globeControl2.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 //初始化TreeView + + #region wxl + + initLayerTree(); + + #endregion + // 勾选实测图层 - foreach (TreeNode tn in layerTree.Nodes) - { - if (tn.Nodes.Count <= 0) continue; - if (tn.Text != "实测数据") continue; - tn.Checked = true; - foreach (TreeNode tnChild in tn.Nodes) - { - tnChild.Checked = true; - foreach (TreeNode tnGrandChild in tnChild.Nodes) - { - tnGrandChild.Checked = true; - } - } - } +// foreach (TreeNode tn in layerTree.Nodes) +// { +// if (tn.Nodes.Count <= 0) continue; +// if (tn.Text != "实测数据") continue; +// tn.Checked = true; +// foreach (TreeNode tnChild in tn.Nodes) +// { +// tnChild.Checked = true; +// foreach (TreeNode tnGrandChild in tnChild.Nodes) +// { +// tnGrandChild.Checked = true; +// } +// } +// } } private void doLoadDataForGlobalControl1() @@ -1142,7 +1193,10 @@ { globeControl1.Globe.Layers.MoveDown(10000); //加载实测管线数据 - Utility.dataSource = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, Utility.DBPassword); + Utility.dataSource = + globeControl1.Globe.DataManager.OpenOracleDataSource( + Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, + Utility.DBPassword); if (Utility.dataSource != null) { @@ -1160,7 +1214,9 @@ globeControl1.Globe.Layers.GetLayerByCaption("红线").Visible = false; //globleControl1中加载规划数据 - GSODataSource ghDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", Utility.ghdbuser, Utility.ghdbpwd); + GSODataSource ghDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", + Utility.ghdbuser, Utility.ghdbpwd); if (ghDS != null) { for (int j = 0; j < ghDS.DatasetCount; j++) @@ -1176,13 +1232,16 @@ } //globeControl1,globeControl2中加载施工数据 - GSODataSource sgDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", Utility.sgdbuser, Utility.sgdbpwd); + GSODataSource sgDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", + Utility.sgdbuser, Utility.sgdbpwd); if (sgDS != null) { for (int m = 0; m < sgDS.DatasetCount; m++) { GSODataset dataset = sgDS.GetDatasetAt(m); - if (dataset != null && !dataset.Caption.Contains("SH") && Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) + if (dataset != null && !dataset.Caption.Contains("SH") && + Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) { dataset.Caption = dataset.Name; globeControl1.Globe.Layers.Add(dataset); @@ -1196,12 +1255,12 @@ // LoadDataForGlobalControl ss = connectServer; // ss(); - + this.Invoke((EventHandler) delegate { connectServer(); }); - + } catch (Exception ex) @@ -1212,6 +1271,7 @@ private void initLayerTree() { + layerTree.Nodes.Clear(); //加载临时图层节点 layerManagerNode = new TreeNode(); layerManagerNode.ImageIndex = 0; @@ -1220,59 +1280,60 @@ layerManagerNode.Text = "临时图层"; layerTree.Nodes.Add(layerManagerNode); - XmlDocument doc = new XmlDocument(); - doc.Load(Utility.filename); - XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); - - foreach (XmlNode xmlLayerNode in xmlLayerNodes) - { - - //TODO LIST:创建一级TreeNode(实测、规划、施工) - TreeNode nodelayer = new TreeNode(); - string layerName = xmlLayerNode.Attributes["label"].Value; - nodelayer.Text = layerName; - nodelayer.Checked = false; - layerTree.Nodes.Add(nodelayer); - - XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; - foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) - { - //TODO LIST:创建二级TreeNode节点 - TreeNode secondLevelNode = new TreeNode(); - string layerType = xmlChildLayerNode.Attributes["label"].Value; - secondLevelNode.Text = layerType; - - if (xmlChildLayerNode.Attributes["type"] != null) - { //道路图层特殊处理 - string type = xmlChildLayerNode.Attributes["type"].Value; - secondLevelNode.Tag = type + "|" + layerType; - } - else - { - secondLevelNode.Tag = layerType; - } - secondLevelNode.Checked = false; - nodelayer.Nodes.Add(secondLevelNode); - - XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; - - foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) - { - //TODO LIST:创建三级图层节点 - TreeNode layerNode = new TreeNode(); - string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; - string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; - string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; - - layerNode.Text = actutallyLabelName; - layerNode.Tag = layerType + "|" + actutallyLabelName; - layerNode.Checked = false; - secondLevelNode.Nodes.Add(layerNode); - } - - } - - } + TreeUtils.initTree(globeControl1, layerTree, null); +// XmlDocument doc = new XmlDocument(); +// doc.Load(Utility.filename); +// XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); +// +// foreach (XmlNode xmlLayerNode in xmlLayerNodes) +// { +// +// //TODO LIST:创建一级TreeNode(实测、规划、施工) +// TreeNode nodelayer = new TreeNode(); +// string layerName = xmlLayerNode.Attributes["label"].Value; +// nodelayer.Text = layerName; +// nodelayer.Checked = false; +// layerTree.Nodes.Add(nodelayer); +// +// XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; +// foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) +// { +// //TODO LIST:创建二级TreeNode节点 +// TreeNode secondLevelNode = new TreeNode(); +// string layerType = xmlChildLayerNode.Attributes["label"].Value; +// secondLevelNode.Text = layerType; +// +// if (xmlChildLayerNode.Attributes["type"] != null) +// { //道路图层特殊处理 +// string type = xmlChildLayerNode.Attributes["type"].Value; +// secondLevelNode.Tag = type + "|" + layerType; +// } +// else +// { +// secondLevelNode.Tag = layerType; +// } +// secondLevelNode.Checked = false; +// nodelayer.Nodes.Add(secondLevelNode); +// +// XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; +// +// foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) +// { +// //TODO LIST:创建三级图层节点 +// TreeNode layerNode = new TreeNode(); +// string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; +// string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; +// string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; +// +// layerNode.Text = actutallyLabelName; +// layerNode.Tag = layerType + "|" + actutallyLabelName; +// layerNode.Checked = false; +// secondLevelNode.Nodes.Add(layerNode); +// } +// +// } +// +// } } @@ -1298,7 +1359,8 @@ for (int i = 0; i < markerStrs.Length; i++) { if (!File.Exists(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd")) continue; - GSOLayer markerLayer = globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); + GSOLayer markerLayer = + globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); if (markerLayer == null) continue; TreeNode node1 = new TreeNode(); node1.Text = markerLayer.Caption; @@ -1314,7 +1376,7 @@ { initGlobalControl(); //initGlobalMap(); - initLayerTree(); +// initLayerTree(); initMarkerTree(); initLayout(); loadData(); @@ -1383,7 +1445,7 @@ tempnode.Checked = node.Checked ? feature.Visible : false; tempnode.Tag = feature; node.Nodes.Add(tempnode); - GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature; + GSOFeatureFolder featureFolder = (GSOFeatureFolder) feature; VisitFeature3Ds(featureFolder.Features, tempnode); } else @@ -1444,7 +1506,7 @@ /// Boolean CheckDatasetGeoReference(GSODataset dataset, string strDataPath) { - + if (dataset.GeoReferenceType != EnumGeoReferenceType.Flat) return true; Boolean bSuccess = false; if (MessageBox.Show("数据没有空间参考信息,请设置空间参考信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) != @@ -1498,7 +1560,7 @@ dlg.Filter = "输出JPEG(*.jpg)|*.jpg|输出PNG(*.png)|*.png|输出BMP(*.bmp)|*.bmp|输出BMP(*.gif)|*.gif"; if (dlg.ShowDialog() == DialogResult.OK) { - string extension = Path.GetExtension(dlg.FileName);//扩展名 + string extension = Path.GetExtension(dlg.FileName); //扩展名 switch (extension) { case ".jpg": @@ -1520,6 +1582,7 @@ globeControl1.Globe.Action = EnumAction3D.ActionNull; globeControl1.Globe.MouseRoamingEnable = true; } + /// /// 定位正北正90度俯视 /// @@ -1573,100 +1636,112 @@ break; } } + + #region wxl 重构树形结构代码 + + private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); + } + } + + #endregion /// - /// layerTree选中后事件处理 + /// layerTree选中后事件处理 /// /// /// - private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag.ToString().Contains("|")) - { - string nodeTag = e.Node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - if (e.Node.Tag is GSOFeature) - { - if (e.Node.Nodes.Count == 0) - { - GSOFeature feat = e.Node.Tag as GSOFeature; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - } - CheckControl(e); - } +// private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag.ToString().Contains("|")) +// { +// string nodeTag = e.Node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// if (e.Node.Tag is GSOFeature) +// { +// if (e.Node.Nodes.Count == 0) +// { +// GSOFeature feat = e.Node.Tag as GSOFeature; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// } +// CheckControl(e); +// } /// /// 树节点选中方法 /// /// - private void CheckControl(TreeViewEventArgs e) - { - if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - { - CheckAllChildNodes(e.Node, e.Node.Checked); - } - } +// private void CheckControl(TreeViewEventArgs e) +// { +// if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// { +// CheckAllChildNodes(e.Node, e.Node.Checked); +// } +// } /// /// 改变所有子节点的状态 /// /// /// - private void CheckAllChildNodes(TreeNode pn, bool IsChecked) - { - foreach (TreeNode tn in pn.Nodes) - { - tn.Checked = IsChecked; - - if (tn.Nodes.Count > 0) - { - CheckAllChildNodes(tn, IsChecked); - } - } - } +// private void CheckAllChildNodes(TreeNode pn, bool IsChecked) +// { +// foreach (TreeNode tn in pn.Nodes) +// { +// tn.Checked = IsChecked; +// +// if (tn.Nodes.Count > 0) +// { +// CheckAllChildNodes(tn, IsChecked); +// } +// } +// } //改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent == null) return; - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } +// private void CheckParentNode(TreeNode curNode) +// { +// bool bChecked = false; +// +// if (curNode.Parent == null) return; +// foreach (TreeNode node in curNode.Parent.Nodes) +// { +// if (node.Checked) +// { +// bChecked = true; +// break; +// } +// } +// +// if (bChecked) +// { +// curNode.Parent.Checked = true; +// CheckParentNode(curNode.Parent); +// } +// else +// { +// curNode.Parent.Checked = false; +// CheckParentNode(curNode.Parent); +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.suo b/Cyberpipe.suo index c1d31ce..6c59fcf 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 8586041..81346fe 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -13,10 +14,10 @@ GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - TreeNode terrainManagerNode = null; - TreeNode layerManagerNode = null; - TreeNode terrainManagerNode1 = null; - TreeNode layerManagerNode1 = null; +// TreeNode terrainManagerNode = null; +// TreeNode layerManagerNode = null; +// TreeNode terrainManagerNode1 = null; +// TreeNode layerManagerNode1 = null; public FrmLayerControl(GSOGlobeControl ctl1,GSOGlobeControl ctl2) { @@ -25,14 +26,14 @@ globeControl2 = ctl2; } - private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) - { - treeNode=new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - } +// private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) +// { +// treeNode=new TreeNode(); +// treeNode.ImageIndex = 0; +// treeNode.SelectedImageIndex = 0; +// treeNode.Checked = false; +// treeNode.Text = strTreeNodeText; +// } // private void initTreeView() // { @@ -51,234 +52,258 @@ // layerTree2.Nodes.Add(terrainManagerNode); // } - #region wxl重构树形结构代码 + + - private TreeNode treeNode(string strTreeNodeText) - { - TreeNode treeNode = new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - return treeNode; - } -// private void appendToParent(TreeNodeCollection treeNodeCollection, ) - #endregion - private void initTreeView() +// private void initNode(string nodeName) +// { +// TreeNode nodeGroupElse1 = new TreeNode(); +// nodeGroupElse1.Text = nodeName; +// layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); +// +// TreeNode nodeGroupElse = new TreeNode(); +// nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; +// layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); +// } + +// private void initTreeNode(XmlNodeList Params) +// { +// foreach (XmlNode paramsNode in Params) //layers +// { +// foreach (XmlNode layerNode in paramsNode) //layer +// { +// initNode(layerNode.Attributes["label"].Value); +// } +// } +// +// initNode("基础图层"); +// initNode("其他"); +// } + +// private void FrmLayerControl_Load(object sender, EventArgs e) +// { +// +// initTreeView(); +// try +// { +// XmlDocument doc = new XmlDocument(); +// doc.Load(Application.StartupPath + "\\双屏设置.xml"); +// XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// +// initTreeNode(Params); +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// +// RefreshLayerAndTerrainTree(); +// } + private void FrmLayerControl_Load(object sender, EventArgs e) { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - - //加载layertree2 - initLayerTree(out layerManagerNode1, "图层管理"); - layerTree1.Nodes.Add(layerManagerNode1); - initLayerTree(out terrainManagerNode1, "地形管理"); - layerTree1.Nodes.Add(terrainManagerNode1); - - initLayerTree(out layerManagerNode, "图层管理"); - layerTree2.Nodes.Add(layerManagerNode); - initLayerTree(out terrainManagerNode, "地形管理"); - layerTree2.Nodes.Add(terrainManagerNode); + TreeUtils.initTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.initTree(globeControl2, layerTree2, "施工数据"); } - private void initNode(string nodeName) - { - TreeNode nodeGroupElse1 = new TreeNode(); - nodeGroupElse1.Text = nodeName; - layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); + #region wxl重构树形结构代码 - TreeNode nodeGroupElse = new TreeNode(); - nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; - layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); - } + /// + /// 构造tree,最多解析三层,可放在工具类中 - private void initTreeNode(XmlNodeList Params) - { - foreach (XmlNode paramsNode in Params) //layers - { - foreach (XmlNode layerNode in paramsNode) //layer - { - initNode(layerNode.Attributes["label"].Value); - } - } + /// 所属地球 + /// 要加载的树 + /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 +// private void initTree(GSOGlobeControl gsoGlobeControl,TreeView treeView, string viewDatasrc) +// { +// treeView.Nodes.Clear(); +// LayerConfig layerConfig = Utility.layerConfig; +// List datasrcs = layerConfig.datasrcs; +// foreach (DataSrc datasrc in datasrcs) +// { +// if (viewDatasrc != null && !viewDatasrc.Trim().Equals("") && !datasrc.label.Equals(viewDatasrc)) continue; +// TreeNode rootNode = treeView.Nodes.Add(datasrc.label); +// List layerTypes = datasrc.layertypes; +// foreach (LayerType layerType in layerTypes) +// { +// TreeNode secNode = rootNode.Nodes.Add(layerType.label); +// List layers = layerType.layers; +// foreach (Layer layer in layers) +// { +// GSOLayer gsoLayer = gsoGlobeControl.Globe.Layers.GetLayerByCaption(layer.layer); +// if (gsoLayer == null) continue;//将不存在的去除 +// TreeNode node = new TreeNode(); +// node.Tag = gsoLayer; +// node.Text = layer.label; +// node.Checked = gsoLayer.Visible; +// if (gsoLayer.Visible) +// { +// secNode.Checked = true; +// rootNode.Checked = true; +// } +// secNode.Nodes.Add(node); +// } +// } +// } +// } - initNode("基础图层"); - initNode("其他"); - } + #endregion - private void FrmLayerControl_Load(object sender, EventArgs e) - { - initTreeView(); - try - { - XmlDocument doc = new XmlDocument(); - doc.Load(Application.StartupPath + "\\双屏设置.xml"); - XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, +// TreeView layerTree) +// { +// try +// { +// for (int i = 0; i < nLayerCount; i++) +// { +// GSOLayer layer = globcontrol.Globe.Layers[i]; +// if (layer == null) continue; +// string layerName = layer.Name; +// TreeNode node = new TreeNode(); +// node.Tag = layer; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = layer.Caption; +// node.Checked = layer.Visible; +// +// bool isContains = false; +// for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) +// { +// if (!layerName.Contains("fttp:")) +// { +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || +// layerName.Contains("施工") || +// layerName.Contains("规划")) continue; +// break; +// case "layerTree2": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[j].Nodes.Add(node); +// isContains = true; +// break; +// } +// else +// { +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); +// isContains = true; +// break; +// } +// } +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || +// layerName.Contains("标注") || +// isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || +// layerName.Contains("景观") || layerName.Contains("红线")) +// continue; +// break; +// case "layerTree2": +// if (isContains != false || layerName.Contains("tempLgdData2")) +// continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); +// } +// +// for (int i = 0; i < nTerrainCount; i++) +// { +// GSOTerrain terrain = globcontrol.Globe.Terrains[i]; +// if (terrain == null) continue; +// TreeNode node = new TreeNode(); +// node.Tag = terrain; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = terrain.Caption; +// node.Checked = terrain.Visible; +// switch (layerTree.Name) +// { +// case "layerTree1": +// terrainManagerNode1.Nodes.Add(node); +// break; +// case "layerTree2": +// terrainManagerNode.Nodes.Add(node); +// break; +// default: +// break; +// } +// } +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// } - initTreeNode(Params); - } - catch (Exception ex) - { - LogError.PublishError(ex); - } +// private void initTreeNodeCheckedStatus(TreeView layerTreeView) +// { +// //节点选中状态控制 +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// if (node.Checked != true) continue; +// layerTreeView.Nodes[0].Checked = true; +// break; +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOTerrain layer = childNode.Tag as GSOTerrain; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// } - RefreshLayerAndTerrainTree(); - } - - private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, - TreeView layerTree) - { - try - { - for (int i = 0; i < nLayerCount; i++) - { - GSOLayer layer = globcontrol.Globe.Layers[i]; - if (layer == null) continue; - string layerName = layer.Name; - TreeNode node = new TreeNode(); - node.Tag = layer; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = layer.Caption; - node.Checked = layer.Visible; - - bool isContains = false; - for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) - { - if (!layerName.Contains("fttp:")) - { - switch (layerTree.Name) - { - case "layerTree1": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || - layerName.Contains("施工") || - layerName.Contains("规划")) continue; - break; - case "layerTree2": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[j].Nodes.Add(node); - isContains = true; - break; - } - else - { - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); - isContains = true; - break; - } - } - switch (layerTree.Name) - { - case "layerTree1": - if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || - layerName.Contains("标注") || - isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || - layerName.Contains("景观") || layerName.Contains("红线")) - continue; - break; - case "layerTree2": - if (isContains != false || layerName.Contains("tempLgdData2")) - continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); - } - - for (int i = 0; i < nTerrainCount; i++) - { - GSOTerrain terrain = globcontrol.Globe.Terrains[i]; - if (terrain == null) continue; - TreeNode node = new TreeNode(); - node.Tag = terrain; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = terrain.Caption; - node.Checked = terrain.Visible; - switch (layerTree.Name) - { - case "layerTree1": - terrainManagerNode1.Nodes.Add(node); - break; - case "layerTree2": - terrainManagerNode.Nodes.Add(node); - break; - default: - break; - } - } - } - catch (Exception ex) - { - LogError.PublishError(ex); - } - } - - private void initTreeNodeCheckedStatus(TreeView layerTreeView) - { - //节点选中状态控制 - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - if (node.Checked != true) continue; - layerTreeView.Nodes[0].Checked = true; - break; - } - - foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOTerrain layer = childNode.Tag as GSOTerrain; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - } - - void exPandTreeNode() - { - layerManagerNode1.Expand(); - terrainManagerNode1.Expand(); - layerManagerNode.Expand(); - terrainManagerNode.Expand(); - } +// void exPandTreeNode() +// { +// layerManagerNode1.Expand(); +// terrainManagerNode1.Expand(); +// layerManagerNode.Expand(); +// terrainManagerNode.Expand(); +// } /// /// 刷新节点树 /// - private void RefreshLayerAndTerrainTree() - { - int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 - int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 - addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); - initTreeNodeCheckedStatus(layerTree1); - - int nLayerCount = globeControl2.Globe.Layers.Count; - int nTerrainCount = globeControl2.Globe.Terrains.Count; - addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); - initTreeNodeCheckedStatus(layerTree2); - - // 展开 - exPandTreeNode(); - } +// private void RefreshLayerAndTerrainTree() +// { +// int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 +// int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 +// addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); +// initTreeNodeCheckedStatus(layerTree1); +// +// int nLayerCount = globeControl2.Globe.Layers.Count; +// int nTerrainCount = globeControl2.Globe.Terrains.Count; +// addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); +// initTreeNodeCheckedStatus(layerTree2); +// +// // 展开 +// exPandTreeNode(); +// } /// /// 节点树复选框选中状态改变事件处理 @@ -289,144 +314,132 @@ { if (e.Action != TreeViewAction.Unknown) { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } + TreeUtils.treeNodeCheckedChange(globeControl2,e.Node); + } + } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree2(e.Node, e.Node.Checked); + private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); } } + + +// private void layerTree2_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree2(e.Node, e.Node.Checked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree1(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree1(childNode, isChecked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree2(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree2(childNode, isChecked); +// } +// } /// /// 节点树选中状态改变事件 /// /// /// - private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Action != TreeViewAction.Unknown) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } +// private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree1(e.Node, e.Node.Checked); +// } +// } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree1(e.Node, e.Node.Checked); - } - } - /// - /// 改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - /// - /// - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent != null) - { - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } - } } } diff --git a/MainFrm.cs b/MainFrm.cs index d22b2c9..ba3bf31 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -28,10 +28,10 @@ { TreeNode layerManagerNode; bool m_bFullScreen; - + GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - private GSOHudButton legend;//定义图例 + private GSOHudButton legend; //定义图例 private GSOHudButton btnToolNone; private GSOHudButton btnToolSelect; ToolTip tooltip1; @@ -50,12 +50,12 @@ public bool boolfrmShResult; public bool boolfrmModify; - public static string m_CurrentQueryLayer;//定义当前查询的图层 + public static string m_CurrentQueryLayer; //定义当前查询的图层 //定位和闪烁初始化定义 private EnumDesignMode enumDesignMode; //模拟规划设计模式 - private string trackflag;//定义阀门查询个数 + private string trackflag; //定义阀门查询个数 //记录沿线飞行设置 //int m_nFlyMode = 2; @@ -67,7 +67,7 @@ Double m_dDigPitWidthAlongLine = 6; Boolean m_bDigPitByDepth = true; //选择管线 - int selectState;//wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 + int selectState; //wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 //private OracleConnection connBackup = null; //数据集合 @@ -89,8 +89,8 @@ //双屏对比 //bool zhanshi=false; Thread t = null; - private GSOHudButton legendSC;//定义图例 - private GSOHudButton legendSG;//定义图例 + private GSOHudButton legendSC; //定义图例 + private GSOHudButton legendSG; //定义图例 //管纵图 private GSOHudButton lendendGZ50; private GSOHudButton lendendGZ36; @@ -102,12 +102,13 @@ GSOGeoPoint3D bsqPT; - FrmYJSHTC frmSh;//一键审核窗口全局变量wxl - FrmWait frmWait;//一键审核等待窗口 + FrmYJSHTC frmSh; //一键审核窗口全局变量wxl + FrmWait frmWait; //一键审核等待窗口 //FrmWait frmWait2 = null;//文档操作等待窗口 float mouseDownX1, mouseDownY1; float mouseDownX2, mouseDownY2; + /// /// /// @@ -164,8 +165,9 @@ RigthMenuSet(); MenuSet(); - + } + /// /// 右屏中添加管纵图片 /// @@ -259,6 +261,7 @@ } #region 区域分析 + if (Utility.userRole.IndexOf("区域分析") < 0) { toolRightMenu.Items.Remove(区域分析ToolStripMenuItem); @@ -278,9 +281,11 @@ 区域分析ToolStripMenuItem.DropDownItems.Remove(无源淹没分析ToolStripMenuItem); } } + #endregion #region 视域分析 + if (Utility.userRole.IndexOf("视域分析") < 0) { toolRightMenu.Items.Remove(视域分析ToolStripMenuItem); @@ -300,9 +305,11 @@ 视域分析ToolStripMenuItem.DropDownItems.Remove(可视包络分析ToolStripMenuItem); } } + #endregion #region 开发分析 + if (Utility.userRole.IndexOf("开挖分析") < 0) { toolRightMenu.Items.Remove(开挖分析ToolStripMenuItem); @@ -334,9 +341,11 @@ 开挖分析ToolStripMenuItem.DropDownItems.Remove(删除隧道ToolStripMenuItem); } } + #endregion #region 拓扑分析 + if (Utility.userRole.IndexOf("拓扑分析") < 0) { toolRightMenu.Items.Remove(拓扑分析ToolStripMenuItem); @@ -372,9 +381,11 @@ 拓扑分析ToolStripMenuItem.DropDownItems.Remove(爆管分析ToolStripMenuItem); } } + #endregion #region 断面分析 + if (Utility.userRole.IndexOf("断面分析") < 0) { toolRightMenu.Items.Remove(断面分析ToolStripMenuItem); @@ -398,9 +409,11 @@ 断面分析ToolStripMenuItem.DropDownItems.Remove(基线剖面分析ToolStripMenuItem); } } + #endregion #region 绘制区域统计 + if (Utility.userRole.IndexOf("绘制区域统计") < 0) { toolRightMenu.Items.Remove(绘制区域统计ToolStripMenuItem); @@ -445,9 +458,11 @@ } } + #endregion #region 全区域统计 + if (Utility.userRole.IndexOf("全区域统计") < 0) { toolRightMenu.Items.Remove(全区域统计ToolStripMenuItem); @@ -492,9 +507,11 @@ } } + #endregion #region 查询 + if (Utility.userRole.IndexOf("查询") < 0) { toolRightMenu.Items.Remove(查询ToolStripMenuItem); @@ -542,9 +559,11 @@ 查询ToolStripMenuItem.DropDownItems.Remove(附属物查询ToolStripMenuItem); } } + #endregion #region 标注 + if (Utility.userRole.IndexOf("标注") < 0) { toolRightMenu.Items.Remove(标注ToolStripMenuItem); @@ -592,9 +611,11 @@ 标注ToolStripMenuItem.DropDownItems.Remove(标注管理ToolStripMenuItem); } } + #endregion #region 飞行 + if (Utility.userRole.IndexOf("飞行") < 0) { toolRightMenu.Items.Remove(飞行ToolStripMenuItem); @@ -618,9 +639,11 @@ 飞行ToolStripMenuItem.DropDownItems.Remove(绕眼睛飞行ToolStripMenuItem); } } + #endregion #region 编辑 + if (Utility.userRole.IndexOf("编辑") < 0) { toolRightMenu.Items.Remove(编辑ToolStripMenuItem); @@ -656,9 +679,11 @@ 编辑ToolStripMenuItem.DropDownItems.Remove(删除模型ToolStripMenuItem); } } + #endregion #region 量算 + if (Utility.userRole.IndexOf("量算") < 0) { toolRightMenu.Items.Remove(量算ToolStripMenuItem); @@ -694,6 +719,7 @@ 量算ToolStripMenuItem.DropDownItems.Remove(地表面积ToolStripMenuItem1); } } + #endregion } @@ -701,6 +727,7 @@ { #region 权限管理 + if (Utility.userRole.IndexOf("权限管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem2); @@ -734,9 +761,11 @@ } } + #endregion #region 基础工具 + if (Utility.userRole.IndexOf("基础工具") < 0) { ribbonControl1.Items.Remove(ribbonTabItem1); @@ -781,37 +810,47 @@ } } + #endregion #region 一键审核 + if (Utility.userRole.IndexOf("一键审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem11); } + #endregion #region 红线审核 + if (Utility.userRole.IndexOf("红线审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem6); } + #endregion #region 双屏对比 + if (Utility.userRole.IndexOf("双屏对比") < 0) { ribbonControl1.Items.Remove(ribbonTabItem9); } + #endregion #region 文档管理 + if (Utility.userRole.IndexOf("文档管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem4); } + #endregion #region 基础管理 + if (Utility.userRole.IndexOf("基础管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem14); @@ -841,6 +880,7 @@ } #region Fan Zhang 重构现有代码 + //初始化控件布局 private void initLayout() { @@ -848,37 +888,37 @@ double dsw = SW; if (SW > 1440) { - double myScreen = dsw / 1440; - buttonX1.Width = (int)(buttonX1.Width * myScreen); - buttonX2.Width = (int)(buttonX2.Width * myScreen); - buttonX4.Width = (int)(buttonX4.Width * myScreen); - buttonX5.Width = (int)(buttonX5.Width * myScreen); - buttonX6.Width = (int)(buttonX6.Width * myScreen); - buttonX7.Width = (int)(buttonX8.Width * myScreen); - buttonX8.Width = (int)(buttonX8.Width * myScreen); - buttonX9.Width = (int)(buttonX9.Width * myScreen); - buttonX12.Width = (int)(buttonX12.Width * myScreen); - buttonX14.Width = (int)(buttonX14.Width * myScreen); - buttonX15.Width = (int)(buttonX15.Width * myScreen); - buttonX16.Width = (int)(buttonX16.Width * myScreen); - buttonX17.Width = (int)(buttonX17.Width * myScreen); + double myScreen = dsw/1440; + buttonX1.Width = (int) (buttonX1.Width*myScreen); + buttonX2.Width = (int) (buttonX2.Width*myScreen); + buttonX4.Width = (int) (buttonX4.Width*myScreen); + buttonX5.Width = (int) (buttonX5.Width*myScreen); + buttonX6.Width = (int) (buttonX6.Width*myScreen); + buttonX7.Width = (int) (buttonX8.Width*myScreen); + buttonX8.Width = (int) (buttonX8.Width*myScreen); + buttonX9.Width = (int) (buttonX9.Width*myScreen); + buttonX12.Width = (int) (buttonX12.Width*myScreen); + buttonX14.Width = (int) (buttonX14.Width*myScreen); + buttonX15.Width = (int) (buttonX15.Width*myScreen); + buttonX16.Width = (int) (buttonX16.Width*myScreen); + buttonX17.Width = (int) (buttonX17.Width*myScreen); - labelX1.Width = (int)(labelX1.Width * myScreen); - labelX2.Width = (int)(labelX2.Width * myScreen); - labelX3.Width = (int)(labelX3.Width * myScreen); - labelX6.Width = (int)(labelX6.Width * myScreen); - labelX8.Width = (int)(labelX8.Width * myScreen); - labelX9.Width = (int)(labelX9.Width * myScreen); - labelX12.Width = (int)(labelX12.Width * myScreen); - labelX13.Width = (int)(labelX13.Width * myScreen); - labelX14.Width = (int)(labelX14.Width * myScreen); - labelX16.Width = (int)(labelX16.Width * myScreen); - labelX17.Width = (int)(labelX17.Width * myScreen); - labelX11.Width = (int)(labelX11.Width * myScreen); - labelX19.Width = (int)(labelX19.Width * myScreen); - labelX21.Width = (int)(labelX21.Width * myScreen); - labelX22.Width = (int)(labelX22.Width * myScreen); - labelX24.Width = (int)(labelX24.Width * myScreen); + labelX1.Width = (int) (labelX1.Width*myScreen); + labelX2.Width = (int) (labelX2.Width*myScreen); + labelX3.Width = (int) (labelX3.Width*myScreen); + labelX6.Width = (int) (labelX6.Width*myScreen); + labelX8.Width = (int) (labelX8.Width*myScreen); + labelX9.Width = (int) (labelX9.Width*myScreen); + labelX12.Width = (int) (labelX12.Width*myScreen); + labelX13.Width = (int) (labelX13.Width*myScreen); + labelX14.Width = (int) (labelX14.Width*myScreen); + labelX16.Width = (int) (labelX16.Width*myScreen); + labelX17.Width = (int) (labelX17.Width*myScreen); + labelX11.Width = (int) (labelX11.Width*myScreen); + labelX19.Width = (int) (labelX19.Width*myScreen); + labelX21.Width = (int) (labelX21.Width*myScreen); + labelX22.Width = (int) (labelX22.Width*myScreen); + labelX24.Width = (int) (labelX24.Width*myScreen); } sideBar1.Visible = false; sideBar1.ExpandedPanel = sideBarPanelItem3; @@ -899,7 +939,7 @@ splitContainer1.Panel2Collapsed = true; - buttonItem87.Checked = true;//默认地上模式 + buttonItem87.Checked = true; //默认地上模式 ribbonTabItem1.Select(); //初始化状态为浏览 sideBarPanelItem3.Visible = false; @@ -951,7 +991,7 @@ //图例 legend = new GSOHudButton(); - legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg");//图例P + legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg"); //图例P legend.SetOffset(0, 15); legend.MinOpaque = 1; legend.MaxOpaque = 1; @@ -1002,7 +1042,7 @@ globeControl1.Globe.UserBackgroundColor = Color.White; globeControl1.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl1.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed * 3; + globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed*3; globeControl1.Globe.EditSnapObject = true; globeControl1.Globe.IsReleaseMemOutOfView = true; globeControl1.Globe.ControlPanel.Visible = true; @@ -1021,18 +1061,22 @@ globeControl2.Globe.UserBackgroundColor = Color.White; globeControl2.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl2.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed * 3; + globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed*3; globeControl2.Globe.EditSnapObject = true; globeControl2.Globe.IsReleaseMemOutOfView = true; globeControl2.Globe.ControlPanel.Visible = false; - GSOSimplePolygonStyle3D trackingRectStyle = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackingRectStyle = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; trackingRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimplePolygonStyle3D trackRectStyle = globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackRectStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; trackRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimpleLineStyle3D trackRectLineStyle = globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle.LineType = EnumLineType.Solid; - GSOSimpleLineStyle3D trackRectLineStyle1 = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle1 = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle1.LineType = EnumLineType.Solid; trackRectLineStyle1.LineColor = Color.FromArgb(0, 174, 255); trackRectLineStyle1.LineWidth = 1; @@ -1119,21 +1163,28 @@ globeControl1.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 globeControl2.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 //初始化TreeView + + #region wxl + + initLayerTree(); + + #endregion + // 勾选实测图层 - foreach (TreeNode tn in layerTree.Nodes) - { - if (tn.Nodes.Count <= 0) continue; - if (tn.Text != "实测数据") continue; - tn.Checked = true; - foreach (TreeNode tnChild in tn.Nodes) - { - tnChild.Checked = true; - foreach (TreeNode tnGrandChild in tnChild.Nodes) - { - tnGrandChild.Checked = true; - } - } - } +// foreach (TreeNode tn in layerTree.Nodes) +// { +// if (tn.Nodes.Count <= 0) continue; +// if (tn.Text != "实测数据") continue; +// tn.Checked = true; +// foreach (TreeNode tnChild in tn.Nodes) +// { +// tnChild.Checked = true; +// foreach (TreeNode tnGrandChild in tnChild.Nodes) +// { +// tnGrandChild.Checked = true; +// } +// } +// } } private void doLoadDataForGlobalControl1() @@ -1142,7 +1193,10 @@ { globeControl1.Globe.Layers.MoveDown(10000); //加载实测管线数据 - Utility.dataSource = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, Utility.DBPassword); + Utility.dataSource = + globeControl1.Globe.DataManager.OpenOracleDataSource( + Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, + Utility.DBPassword); if (Utility.dataSource != null) { @@ -1160,7 +1214,9 @@ globeControl1.Globe.Layers.GetLayerByCaption("红线").Visible = false; //globleControl1中加载规划数据 - GSODataSource ghDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", Utility.ghdbuser, Utility.ghdbpwd); + GSODataSource ghDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", + Utility.ghdbuser, Utility.ghdbpwd); if (ghDS != null) { for (int j = 0; j < ghDS.DatasetCount; j++) @@ -1176,13 +1232,16 @@ } //globeControl1,globeControl2中加载施工数据 - GSODataSource sgDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", Utility.sgdbuser, Utility.sgdbpwd); + GSODataSource sgDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", + Utility.sgdbuser, Utility.sgdbpwd); if (sgDS != null) { for (int m = 0; m < sgDS.DatasetCount; m++) { GSODataset dataset = sgDS.GetDatasetAt(m); - if (dataset != null && !dataset.Caption.Contains("SH") && Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) + if (dataset != null && !dataset.Caption.Contains("SH") && + Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) { dataset.Caption = dataset.Name; globeControl1.Globe.Layers.Add(dataset); @@ -1196,12 +1255,12 @@ // LoadDataForGlobalControl ss = connectServer; // ss(); - + this.Invoke((EventHandler) delegate { connectServer(); }); - + } catch (Exception ex) @@ -1212,6 +1271,7 @@ private void initLayerTree() { + layerTree.Nodes.Clear(); //加载临时图层节点 layerManagerNode = new TreeNode(); layerManagerNode.ImageIndex = 0; @@ -1220,59 +1280,60 @@ layerManagerNode.Text = "临时图层"; layerTree.Nodes.Add(layerManagerNode); - XmlDocument doc = new XmlDocument(); - doc.Load(Utility.filename); - XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); - - foreach (XmlNode xmlLayerNode in xmlLayerNodes) - { - - //TODO LIST:创建一级TreeNode(实测、规划、施工) - TreeNode nodelayer = new TreeNode(); - string layerName = xmlLayerNode.Attributes["label"].Value; - nodelayer.Text = layerName; - nodelayer.Checked = false; - layerTree.Nodes.Add(nodelayer); - - XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; - foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) - { - //TODO LIST:创建二级TreeNode节点 - TreeNode secondLevelNode = new TreeNode(); - string layerType = xmlChildLayerNode.Attributes["label"].Value; - secondLevelNode.Text = layerType; - - if (xmlChildLayerNode.Attributes["type"] != null) - { //道路图层特殊处理 - string type = xmlChildLayerNode.Attributes["type"].Value; - secondLevelNode.Tag = type + "|" + layerType; - } - else - { - secondLevelNode.Tag = layerType; - } - secondLevelNode.Checked = false; - nodelayer.Nodes.Add(secondLevelNode); - - XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; - - foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) - { - //TODO LIST:创建三级图层节点 - TreeNode layerNode = new TreeNode(); - string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; - string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; - string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; - - layerNode.Text = actutallyLabelName; - layerNode.Tag = layerType + "|" + actutallyLabelName; - layerNode.Checked = false; - secondLevelNode.Nodes.Add(layerNode); - } - - } - - } + TreeUtils.initTree(globeControl1, layerTree, null); +// XmlDocument doc = new XmlDocument(); +// doc.Load(Utility.filename); +// XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); +// +// foreach (XmlNode xmlLayerNode in xmlLayerNodes) +// { +// +// //TODO LIST:创建一级TreeNode(实测、规划、施工) +// TreeNode nodelayer = new TreeNode(); +// string layerName = xmlLayerNode.Attributes["label"].Value; +// nodelayer.Text = layerName; +// nodelayer.Checked = false; +// layerTree.Nodes.Add(nodelayer); +// +// XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; +// foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) +// { +// //TODO LIST:创建二级TreeNode节点 +// TreeNode secondLevelNode = new TreeNode(); +// string layerType = xmlChildLayerNode.Attributes["label"].Value; +// secondLevelNode.Text = layerType; +// +// if (xmlChildLayerNode.Attributes["type"] != null) +// { //道路图层特殊处理 +// string type = xmlChildLayerNode.Attributes["type"].Value; +// secondLevelNode.Tag = type + "|" + layerType; +// } +// else +// { +// secondLevelNode.Tag = layerType; +// } +// secondLevelNode.Checked = false; +// nodelayer.Nodes.Add(secondLevelNode); +// +// XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; +// +// foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) +// { +// //TODO LIST:创建三级图层节点 +// TreeNode layerNode = new TreeNode(); +// string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; +// string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; +// string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; +// +// layerNode.Text = actutallyLabelName; +// layerNode.Tag = layerType + "|" + actutallyLabelName; +// layerNode.Checked = false; +// secondLevelNode.Nodes.Add(layerNode); +// } +// +// } +// +// } } @@ -1298,7 +1359,8 @@ for (int i = 0; i < markerStrs.Length; i++) { if (!File.Exists(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd")) continue; - GSOLayer markerLayer = globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); + GSOLayer markerLayer = + globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); if (markerLayer == null) continue; TreeNode node1 = new TreeNode(); node1.Text = markerLayer.Caption; @@ -1314,7 +1376,7 @@ { initGlobalControl(); //initGlobalMap(); - initLayerTree(); +// initLayerTree(); initMarkerTree(); initLayout(); loadData(); @@ -1383,7 +1445,7 @@ tempnode.Checked = node.Checked ? feature.Visible : false; tempnode.Tag = feature; node.Nodes.Add(tempnode); - GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature; + GSOFeatureFolder featureFolder = (GSOFeatureFolder) feature; VisitFeature3Ds(featureFolder.Features, tempnode); } else @@ -1444,7 +1506,7 @@ /// Boolean CheckDatasetGeoReference(GSODataset dataset, string strDataPath) { - + if (dataset.GeoReferenceType != EnumGeoReferenceType.Flat) return true; Boolean bSuccess = false; if (MessageBox.Show("数据没有空间参考信息,请设置空间参考信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) != @@ -1498,7 +1560,7 @@ dlg.Filter = "输出JPEG(*.jpg)|*.jpg|输出PNG(*.png)|*.png|输出BMP(*.bmp)|*.bmp|输出BMP(*.gif)|*.gif"; if (dlg.ShowDialog() == DialogResult.OK) { - string extension = Path.GetExtension(dlg.FileName);//扩展名 + string extension = Path.GetExtension(dlg.FileName); //扩展名 switch (extension) { case ".jpg": @@ -1520,6 +1582,7 @@ globeControl1.Globe.Action = EnumAction3D.ActionNull; globeControl1.Globe.MouseRoamingEnable = true; } + /// /// 定位正北正90度俯视 /// @@ -1573,100 +1636,112 @@ break; } } + + #region wxl 重构树形结构代码 + + private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); + } + } + + #endregion /// - /// layerTree选中后事件处理 + /// layerTree选中后事件处理 /// /// /// - private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag.ToString().Contains("|")) - { - string nodeTag = e.Node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - if (e.Node.Tag is GSOFeature) - { - if (e.Node.Nodes.Count == 0) - { - GSOFeature feat = e.Node.Tag as GSOFeature; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - } - CheckControl(e); - } +// private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag.ToString().Contains("|")) +// { +// string nodeTag = e.Node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// if (e.Node.Tag is GSOFeature) +// { +// if (e.Node.Nodes.Count == 0) +// { +// GSOFeature feat = e.Node.Tag as GSOFeature; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// } +// CheckControl(e); +// } /// /// 树节点选中方法 /// /// - private void CheckControl(TreeViewEventArgs e) - { - if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - { - CheckAllChildNodes(e.Node, e.Node.Checked); - } - } +// private void CheckControl(TreeViewEventArgs e) +// { +// if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// { +// CheckAllChildNodes(e.Node, e.Node.Checked); +// } +// } /// /// 改变所有子节点的状态 /// /// /// - private void CheckAllChildNodes(TreeNode pn, bool IsChecked) - { - foreach (TreeNode tn in pn.Nodes) - { - tn.Checked = IsChecked; - - if (tn.Nodes.Count > 0) - { - CheckAllChildNodes(tn, IsChecked); - } - } - } +// private void CheckAllChildNodes(TreeNode pn, bool IsChecked) +// { +// foreach (TreeNode tn in pn.Nodes) +// { +// tn.Checked = IsChecked; +// +// if (tn.Nodes.Count > 0) +// { +// CheckAllChildNodes(tn, IsChecked); +// } +// } +// } //改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent == null) return; - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } +// private void CheckParentNode(TreeNode curNode) +// { +// bool bChecked = false; +// +// if (curNode.Parent == null) return; +// foreach (TreeNode node in curNode.Parent.Nodes) +// { +// if (node.Checked) +// { +// bChecked = true; +// break; +// } +// } +// +// if (bChecked) +// { +// curNode.Parent.Checked = true; +// CheckParentNode(curNode.Parent); +// } +// else +// { +// curNode.Parent.Checked = false; +// CheckParentNode(curNode.Parent); +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { diff --git a/MainFrm.designer.cs b/MainFrm.designer.cs index a9b8c6f..1f9c1f5 100644 --- a/MainFrm.designer.cs +++ b/MainFrm.designer.cs @@ -2283,12 +2283,12 @@ // this.ribbonControl1.BackgroundStyle.Class = ""; this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonControl1.Controls.Add(this.ribbonPanel15); this.ribbonControl1.Controls.Add(this.ribbonPanel6); this.ribbonControl1.Controls.Add(this.ribbonPanel4); this.ribbonControl1.Controls.Add(this.ribbonPanel12); this.ribbonControl1.Controls.Add(this.ribbonPanel5); this.ribbonControl1.Controls.Add(this.ribbonPanel2); - this.ribbonControl1.Controls.Add(this.ribbonPanel15); this.ribbonControl1.Controls.Add(this.ribbonPanel1); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.ImeMode = System.Windows.Forms.ImeMode.NoControl; @@ -2356,6 +2356,7 @@ this.ribbonPanel6.StyleMouseOver.Class = ""; this.ribbonPanel6.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel6.TabIndex = 38; + this.ribbonPanel6.Visible = false; // // ribbonBar6 // @@ -2945,7 +2946,6 @@ this.ribbonPanel15.StyleMouseOver.Class = ""; this.ribbonPanel15.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel15.TabIndex = 35; - this.ribbonPanel15.Visible = false; // // ribbonBar20 // @@ -4465,7 +4465,6 @@ // ribbonTabItem9 // this.ribbonTabItem9.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; - this.ribbonTabItem9.Checked = true; this.ribbonTabItem9.HoverImage = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem9.HoverImage"))); this.ribbonTabItem9.Image = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem9.Image"))); this.ribbonTabItem9.Name = "ribbonTabItem9"; @@ -4486,6 +4485,7 @@ // ribbonTabItem14 // this.ribbonTabItem14.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.ribbonTabItem14.Checked = true; this.ribbonTabItem14.HoverImage = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem14.HoverImage"))); this.ribbonTabItem14.Image = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem14.Image"))); this.ribbonTabItem14.Name = "ribbonTabItem14"; @@ -5480,7 +5480,7 @@ this.dataGridViewX2.ReadOnly = true; this.dataGridViewX2.RowHeadersVisible = false; this.dataGridViewX2.RowTemplate.Height = 23; - this.dataGridViewX2.Size = new System.Drawing.Size(23359, 92); + this.dataGridViewX2.Size = new System.Drawing.Size(23656, 92); this.dataGridViewX2.TabIndex = 11; // // dataGridViewTextBoxColumn10 @@ -5574,7 +5574,7 @@ this.dataGridViewX3.ReadOnly = true; this.dataGridViewX3.RowHeadersVisible = false; this.dataGridViewX3.RowTemplate.Height = 23; - this.dataGridViewX3.Size = new System.Drawing.Size(23358, 127); + this.dataGridViewX3.Size = new System.Drawing.Size(23655, 127); this.dataGridViewX3.TabIndex = 5; this.dataGridViewX3.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewX3_MouseDoubleClick); // @@ -5832,7 +5832,7 @@ this.dataGridViewX8.ReadOnly = true; this.dataGridViewX8.RowHeadersVisible = false; this.dataGridViewX8.RowTemplate.Height = 23; - this.dataGridViewX8.Size = new System.Drawing.Size(133, 92); + this.dataGridViewX8.Size = new System.Drawing.Size(116, 92); this.dataGridViewX8.TabIndex = 11; // // dataGridViewTextBoxColumn12 @@ -5927,7 +5927,7 @@ this.dataGridViewX9.ReadOnly = true; this.dataGridViewX9.RowHeadersVisible = false; this.dataGridViewX9.RowTemplate.Height = 23; - this.dataGridViewX9.Size = new System.Drawing.Size(132, 127); + this.dataGridViewX9.Size = new System.Drawing.Size(115, 127); this.dataGridViewX9.TabIndex = 5; this.dataGridViewX9.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewX9_MouseDoubleClick); // diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.suo b/Cyberpipe.suo index c1d31ce..6c59fcf 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 8586041..81346fe 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -13,10 +14,10 @@ GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - TreeNode terrainManagerNode = null; - TreeNode layerManagerNode = null; - TreeNode terrainManagerNode1 = null; - TreeNode layerManagerNode1 = null; +// TreeNode terrainManagerNode = null; +// TreeNode layerManagerNode = null; +// TreeNode terrainManagerNode1 = null; +// TreeNode layerManagerNode1 = null; public FrmLayerControl(GSOGlobeControl ctl1,GSOGlobeControl ctl2) { @@ -25,14 +26,14 @@ globeControl2 = ctl2; } - private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) - { - treeNode=new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - } +// private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) +// { +// treeNode=new TreeNode(); +// treeNode.ImageIndex = 0; +// treeNode.SelectedImageIndex = 0; +// treeNode.Checked = false; +// treeNode.Text = strTreeNodeText; +// } // private void initTreeView() // { @@ -51,234 +52,258 @@ // layerTree2.Nodes.Add(terrainManagerNode); // } - #region wxl重构树形结构代码 + + - private TreeNode treeNode(string strTreeNodeText) - { - TreeNode treeNode = new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - return treeNode; - } -// private void appendToParent(TreeNodeCollection treeNodeCollection, ) - #endregion - private void initTreeView() +// private void initNode(string nodeName) +// { +// TreeNode nodeGroupElse1 = new TreeNode(); +// nodeGroupElse1.Text = nodeName; +// layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); +// +// TreeNode nodeGroupElse = new TreeNode(); +// nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; +// layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); +// } + +// private void initTreeNode(XmlNodeList Params) +// { +// foreach (XmlNode paramsNode in Params) //layers +// { +// foreach (XmlNode layerNode in paramsNode) //layer +// { +// initNode(layerNode.Attributes["label"].Value); +// } +// } +// +// initNode("基础图层"); +// initNode("其他"); +// } + +// private void FrmLayerControl_Load(object sender, EventArgs e) +// { +// +// initTreeView(); +// try +// { +// XmlDocument doc = new XmlDocument(); +// doc.Load(Application.StartupPath + "\\双屏设置.xml"); +// XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// +// initTreeNode(Params); +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// +// RefreshLayerAndTerrainTree(); +// } + private void FrmLayerControl_Load(object sender, EventArgs e) { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - - //加载layertree2 - initLayerTree(out layerManagerNode1, "图层管理"); - layerTree1.Nodes.Add(layerManagerNode1); - initLayerTree(out terrainManagerNode1, "地形管理"); - layerTree1.Nodes.Add(terrainManagerNode1); - - initLayerTree(out layerManagerNode, "图层管理"); - layerTree2.Nodes.Add(layerManagerNode); - initLayerTree(out terrainManagerNode, "地形管理"); - layerTree2.Nodes.Add(terrainManagerNode); + TreeUtils.initTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.initTree(globeControl2, layerTree2, "施工数据"); } - private void initNode(string nodeName) - { - TreeNode nodeGroupElse1 = new TreeNode(); - nodeGroupElse1.Text = nodeName; - layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); + #region wxl重构树形结构代码 - TreeNode nodeGroupElse = new TreeNode(); - nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; - layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); - } + /// + /// 构造tree,最多解析三层,可放在工具类中 - private void initTreeNode(XmlNodeList Params) - { - foreach (XmlNode paramsNode in Params) //layers - { - foreach (XmlNode layerNode in paramsNode) //layer - { - initNode(layerNode.Attributes["label"].Value); - } - } + /// 所属地球 + /// 要加载的树 + /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 +// private void initTree(GSOGlobeControl gsoGlobeControl,TreeView treeView, string viewDatasrc) +// { +// treeView.Nodes.Clear(); +// LayerConfig layerConfig = Utility.layerConfig; +// List datasrcs = layerConfig.datasrcs; +// foreach (DataSrc datasrc in datasrcs) +// { +// if (viewDatasrc != null && !viewDatasrc.Trim().Equals("") && !datasrc.label.Equals(viewDatasrc)) continue; +// TreeNode rootNode = treeView.Nodes.Add(datasrc.label); +// List layerTypes = datasrc.layertypes; +// foreach (LayerType layerType in layerTypes) +// { +// TreeNode secNode = rootNode.Nodes.Add(layerType.label); +// List layers = layerType.layers; +// foreach (Layer layer in layers) +// { +// GSOLayer gsoLayer = gsoGlobeControl.Globe.Layers.GetLayerByCaption(layer.layer); +// if (gsoLayer == null) continue;//将不存在的去除 +// TreeNode node = new TreeNode(); +// node.Tag = gsoLayer; +// node.Text = layer.label; +// node.Checked = gsoLayer.Visible; +// if (gsoLayer.Visible) +// { +// secNode.Checked = true; +// rootNode.Checked = true; +// } +// secNode.Nodes.Add(node); +// } +// } +// } +// } - initNode("基础图层"); - initNode("其他"); - } + #endregion - private void FrmLayerControl_Load(object sender, EventArgs e) - { - initTreeView(); - try - { - XmlDocument doc = new XmlDocument(); - doc.Load(Application.StartupPath + "\\双屏设置.xml"); - XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, +// TreeView layerTree) +// { +// try +// { +// for (int i = 0; i < nLayerCount; i++) +// { +// GSOLayer layer = globcontrol.Globe.Layers[i]; +// if (layer == null) continue; +// string layerName = layer.Name; +// TreeNode node = new TreeNode(); +// node.Tag = layer; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = layer.Caption; +// node.Checked = layer.Visible; +// +// bool isContains = false; +// for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) +// { +// if (!layerName.Contains("fttp:")) +// { +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || +// layerName.Contains("施工") || +// layerName.Contains("规划")) continue; +// break; +// case "layerTree2": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[j].Nodes.Add(node); +// isContains = true; +// break; +// } +// else +// { +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); +// isContains = true; +// break; +// } +// } +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || +// layerName.Contains("标注") || +// isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || +// layerName.Contains("景观") || layerName.Contains("红线")) +// continue; +// break; +// case "layerTree2": +// if (isContains != false || layerName.Contains("tempLgdData2")) +// continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); +// } +// +// for (int i = 0; i < nTerrainCount; i++) +// { +// GSOTerrain terrain = globcontrol.Globe.Terrains[i]; +// if (terrain == null) continue; +// TreeNode node = new TreeNode(); +// node.Tag = terrain; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = terrain.Caption; +// node.Checked = terrain.Visible; +// switch (layerTree.Name) +// { +// case "layerTree1": +// terrainManagerNode1.Nodes.Add(node); +// break; +// case "layerTree2": +// terrainManagerNode.Nodes.Add(node); +// break; +// default: +// break; +// } +// } +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// } - initTreeNode(Params); - } - catch (Exception ex) - { - LogError.PublishError(ex); - } +// private void initTreeNodeCheckedStatus(TreeView layerTreeView) +// { +// //节点选中状态控制 +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// if (node.Checked != true) continue; +// layerTreeView.Nodes[0].Checked = true; +// break; +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOTerrain layer = childNode.Tag as GSOTerrain; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// } - RefreshLayerAndTerrainTree(); - } - - private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, - TreeView layerTree) - { - try - { - for (int i = 0; i < nLayerCount; i++) - { - GSOLayer layer = globcontrol.Globe.Layers[i]; - if (layer == null) continue; - string layerName = layer.Name; - TreeNode node = new TreeNode(); - node.Tag = layer; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = layer.Caption; - node.Checked = layer.Visible; - - bool isContains = false; - for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) - { - if (!layerName.Contains("fttp:")) - { - switch (layerTree.Name) - { - case "layerTree1": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || - layerName.Contains("施工") || - layerName.Contains("规划")) continue; - break; - case "layerTree2": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[j].Nodes.Add(node); - isContains = true; - break; - } - else - { - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); - isContains = true; - break; - } - } - switch (layerTree.Name) - { - case "layerTree1": - if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || - layerName.Contains("标注") || - isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || - layerName.Contains("景观") || layerName.Contains("红线")) - continue; - break; - case "layerTree2": - if (isContains != false || layerName.Contains("tempLgdData2")) - continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); - } - - for (int i = 0; i < nTerrainCount; i++) - { - GSOTerrain terrain = globcontrol.Globe.Terrains[i]; - if (terrain == null) continue; - TreeNode node = new TreeNode(); - node.Tag = terrain; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = terrain.Caption; - node.Checked = terrain.Visible; - switch (layerTree.Name) - { - case "layerTree1": - terrainManagerNode1.Nodes.Add(node); - break; - case "layerTree2": - terrainManagerNode.Nodes.Add(node); - break; - default: - break; - } - } - } - catch (Exception ex) - { - LogError.PublishError(ex); - } - } - - private void initTreeNodeCheckedStatus(TreeView layerTreeView) - { - //节点选中状态控制 - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - if (node.Checked != true) continue; - layerTreeView.Nodes[0].Checked = true; - break; - } - - foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOTerrain layer = childNode.Tag as GSOTerrain; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - } - - void exPandTreeNode() - { - layerManagerNode1.Expand(); - terrainManagerNode1.Expand(); - layerManagerNode.Expand(); - terrainManagerNode.Expand(); - } +// void exPandTreeNode() +// { +// layerManagerNode1.Expand(); +// terrainManagerNode1.Expand(); +// layerManagerNode.Expand(); +// terrainManagerNode.Expand(); +// } /// /// 刷新节点树 /// - private void RefreshLayerAndTerrainTree() - { - int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 - int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 - addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); - initTreeNodeCheckedStatus(layerTree1); - - int nLayerCount = globeControl2.Globe.Layers.Count; - int nTerrainCount = globeControl2.Globe.Terrains.Count; - addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); - initTreeNodeCheckedStatus(layerTree2); - - // 展开 - exPandTreeNode(); - } +// private void RefreshLayerAndTerrainTree() +// { +// int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 +// int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 +// addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); +// initTreeNodeCheckedStatus(layerTree1); +// +// int nLayerCount = globeControl2.Globe.Layers.Count; +// int nTerrainCount = globeControl2.Globe.Terrains.Count; +// addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); +// initTreeNodeCheckedStatus(layerTree2); +// +// // 展开 +// exPandTreeNode(); +// } /// /// 节点树复选框选中状态改变事件处理 @@ -289,144 +314,132 @@ { if (e.Action != TreeViewAction.Unknown) { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } + TreeUtils.treeNodeCheckedChange(globeControl2,e.Node); + } + } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree2(e.Node, e.Node.Checked); + private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); } } + + +// private void layerTree2_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree2(e.Node, e.Node.Checked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree1(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree1(childNode, isChecked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree2(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree2(childNode, isChecked); +// } +// } /// /// 节点树选中状态改变事件 /// /// /// - private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Action != TreeViewAction.Unknown) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } +// private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree1(e.Node, e.Node.Checked); +// } +// } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree1(e.Node, e.Node.Checked); - } - } - /// - /// 改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - /// - /// - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent != null) - { - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } - } } } diff --git a/MainFrm.cs b/MainFrm.cs index d22b2c9..ba3bf31 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -28,10 +28,10 @@ { TreeNode layerManagerNode; bool m_bFullScreen; - + GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - private GSOHudButton legend;//定义图例 + private GSOHudButton legend; //定义图例 private GSOHudButton btnToolNone; private GSOHudButton btnToolSelect; ToolTip tooltip1; @@ -50,12 +50,12 @@ public bool boolfrmShResult; public bool boolfrmModify; - public static string m_CurrentQueryLayer;//定义当前查询的图层 + public static string m_CurrentQueryLayer; //定义当前查询的图层 //定位和闪烁初始化定义 private EnumDesignMode enumDesignMode; //模拟规划设计模式 - private string trackflag;//定义阀门查询个数 + private string trackflag; //定义阀门查询个数 //记录沿线飞行设置 //int m_nFlyMode = 2; @@ -67,7 +67,7 @@ Double m_dDigPitWidthAlongLine = 6; Boolean m_bDigPitByDepth = true; //选择管线 - int selectState;//wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 + int selectState; //wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 //private OracleConnection connBackup = null; //数据集合 @@ -89,8 +89,8 @@ //双屏对比 //bool zhanshi=false; Thread t = null; - private GSOHudButton legendSC;//定义图例 - private GSOHudButton legendSG;//定义图例 + private GSOHudButton legendSC; //定义图例 + private GSOHudButton legendSG; //定义图例 //管纵图 private GSOHudButton lendendGZ50; private GSOHudButton lendendGZ36; @@ -102,12 +102,13 @@ GSOGeoPoint3D bsqPT; - FrmYJSHTC frmSh;//一键审核窗口全局变量wxl - FrmWait frmWait;//一键审核等待窗口 + FrmYJSHTC frmSh; //一键审核窗口全局变量wxl + FrmWait frmWait; //一键审核等待窗口 //FrmWait frmWait2 = null;//文档操作等待窗口 float mouseDownX1, mouseDownY1; float mouseDownX2, mouseDownY2; + /// /// /// @@ -164,8 +165,9 @@ RigthMenuSet(); MenuSet(); - + } + /// /// 右屏中添加管纵图片 /// @@ -259,6 +261,7 @@ } #region 区域分析 + if (Utility.userRole.IndexOf("区域分析") < 0) { toolRightMenu.Items.Remove(区域分析ToolStripMenuItem); @@ -278,9 +281,11 @@ 区域分析ToolStripMenuItem.DropDownItems.Remove(无源淹没分析ToolStripMenuItem); } } + #endregion #region 视域分析 + if (Utility.userRole.IndexOf("视域分析") < 0) { toolRightMenu.Items.Remove(视域分析ToolStripMenuItem); @@ -300,9 +305,11 @@ 视域分析ToolStripMenuItem.DropDownItems.Remove(可视包络分析ToolStripMenuItem); } } + #endregion #region 开发分析 + if (Utility.userRole.IndexOf("开挖分析") < 0) { toolRightMenu.Items.Remove(开挖分析ToolStripMenuItem); @@ -334,9 +341,11 @@ 开挖分析ToolStripMenuItem.DropDownItems.Remove(删除隧道ToolStripMenuItem); } } + #endregion #region 拓扑分析 + if (Utility.userRole.IndexOf("拓扑分析") < 0) { toolRightMenu.Items.Remove(拓扑分析ToolStripMenuItem); @@ -372,9 +381,11 @@ 拓扑分析ToolStripMenuItem.DropDownItems.Remove(爆管分析ToolStripMenuItem); } } + #endregion #region 断面分析 + if (Utility.userRole.IndexOf("断面分析") < 0) { toolRightMenu.Items.Remove(断面分析ToolStripMenuItem); @@ -398,9 +409,11 @@ 断面分析ToolStripMenuItem.DropDownItems.Remove(基线剖面分析ToolStripMenuItem); } } + #endregion #region 绘制区域统计 + if (Utility.userRole.IndexOf("绘制区域统计") < 0) { toolRightMenu.Items.Remove(绘制区域统计ToolStripMenuItem); @@ -445,9 +458,11 @@ } } + #endregion #region 全区域统计 + if (Utility.userRole.IndexOf("全区域统计") < 0) { toolRightMenu.Items.Remove(全区域统计ToolStripMenuItem); @@ -492,9 +507,11 @@ } } + #endregion #region 查询 + if (Utility.userRole.IndexOf("查询") < 0) { toolRightMenu.Items.Remove(查询ToolStripMenuItem); @@ -542,9 +559,11 @@ 查询ToolStripMenuItem.DropDownItems.Remove(附属物查询ToolStripMenuItem); } } + #endregion #region 标注 + if (Utility.userRole.IndexOf("标注") < 0) { toolRightMenu.Items.Remove(标注ToolStripMenuItem); @@ -592,9 +611,11 @@ 标注ToolStripMenuItem.DropDownItems.Remove(标注管理ToolStripMenuItem); } } + #endregion #region 飞行 + if (Utility.userRole.IndexOf("飞行") < 0) { toolRightMenu.Items.Remove(飞行ToolStripMenuItem); @@ -618,9 +639,11 @@ 飞行ToolStripMenuItem.DropDownItems.Remove(绕眼睛飞行ToolStripMenuItem); } } + #endregion #region 编辑 + if (Utility.userRole.IndexOf("编辑") < 0) { toolRightMenu.Items.Remove(编辑ToolStripMenuItem); @@ -656,9 +679,11 @@ 编辑ToolStripMenuItem.DropDownItems.Remove(删除模型ToolStripMenuItem); } } + #endregion #region 量算 + if (Utility.userRole.IndexOf("量算") < 0) { toolRightMenu.Items.Remove(量算ToolStripMenuItem); @@ -694,6 +719,7 @@ 量算ToolStripMenuItem.DropDownItems.Remove(地表面积ToolStripMenuItem1); } } + #endregion } @@ -701,6 +727,7 @@ { #region 权限管理 + if (Utility.userRole.IndexOf("权限管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem2); @@ -734,9 +761,11 @@ } } + #endregion #region 基础工具 + if (Utility.userRole.IndexOf("基础工具") < 0) { ribbonControl1.Items.Remove(ribbonTabItem1); @@ -781,37 +810,47 @@ } } + #endregion #region 一键审核 + if (Utility.userRole.IndexOf("一键审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem11); } + #endregion #region 红线审核 + if (Utility.userRole.IndexOf("红线审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem6); } + #endregion #region 双屏对比 + if (Utility.userRole.IndexOf("双屏对比") < 0) { ribbonControl1.Items.Remove(ribbonTabItem9); } + #endregion #region 文档管理 + if (Utility.userRole.IndexOf("文档管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem4); } + #endregion #region 基础管理 + if (Utility.userRole.IndexOf("基础管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem14); @@ -841,6 +880,7 @@ } #region Fan Zhang 重构现有代码 + //初始化控件布局 private void initLayout() { @@ -848,37 +888,37 @@ double dsw = SW; if (SW > 1440) { - double myScreen = dsw / 1440; - buttonX1.Width = (int)(buttonX1.Width * myScreen); - buttonX2.Width = (int)(buttonX2.Width * myScreen); - buttonX4.Width = (int)(buttonX4.Width * myScreen); - buttonX5.Width = (int)(buttonX5.Width * myScreen); - buttonX6.Width = (int)(buttonX6.Width * myScreen); - buttonX7.Width = (int)(buttonX8.Width * myScreen); - buttonX8.Width = (int)(buttonX8.Width * myScreen); - buttonX9.Width = (int)(buttonX9.Width * myScreen); - buttonX12.Width = (int)(buttonX12.Width * myScreen); - buttonX14.Width = (int)(buttonX14.Width * myScreen); - buttonX15.Width = (int)(buttonX15.Width * myScreen); - buttonX16.Width = (int)(buttonX16.Width * myScreen); - buttonX17.Width = (int)(buttonX17.Width * myScreen); + double myScreen = dsw/1440; + buttonX1.Width = (int) (buttonX1.Width*myScreen); + buttonX2.Width = (int) (buttonX2.Width*myScreen); + buttonX4.Width = (int) (buttonX4.Width*myScreen); + buttonX5.Width = (int) (buttonX5.Width*myScreen); + buttonX6.Width = (int) (buttonX6.Width*myScreen); + buttonX7.Width = (int) (buttonX8.Width*myScreen); + buttonX8.Width = (int) (buttonX8.Width*myScreen); + buttonX9.Width = (int) (buttonX9.Width*myScreen); + buttonX12.Width = (int) (buttonX12.Width*myScreen); + buttonX14.Width = (int) (buttonX14.Width*myScreen); + buttonX15.Width = (int) (buttonX15.Width*myScreen); + buttonX16.Width = (int) (buttonX16.Width*myScreen); + buttonX17.Width = (int) (buttonX17.Width*myScreen); - labelX1.Width = (int)(labelX1.Width * myScreen); - labelX2.Width = (int)(labelX2.Width * myScreen); - labelX3.Width = (int)(labelX3.Width * myScreen); - labelX6.Width = (int)(labelX6.Width * myScreen); - labelX8.Width = (int)(labelX8.Width * myScreen); - labelX9.Width = (int)(labelX9.Width * myScreen); - labelX12.Width = (int)(labelX12.Width * myScreen); - labelX13.Width = (int)(labelX13.Width * myScreen); - labelX14.Width = (int)(labelX14.Width * myScreen); - labelX16.Width = (int)(labelX16.Width * myScreen); - labelX17.Width = (int)(labelX17.Width * myScreen); - labelX11.Width = (int)(labelX11.Width * myScreen); - labelX19.Width = (int)(labelX19.Width * myScreen); - labelX21.Width = (int)(labelX21.Width * myScreen); - labelX22.Width = (int)(labelX22.Width * myScreen); - labelX24.Width = (int)(labelX24.Width * myScreen); + labelX1.Width = (int) (labelX1.Width*myScreen); + labelX2.Width = (int) (labelX2.Width*myScreen); + labelX3.Width = (int) (labelX3.Width*myScreen); + labelX6.Width = (int) (labelX6.Width*myScreen); + labelX8.Width = (int) (labelX8.Width*myScreen); + labelX9.Width = (int) (labelX9.Width*myScreen); + labelX12.Width = (int) (labelX12.Width*myScreen); + labelX13.Width = (int) (labelX13.Width*myScreen); + labelX14.Width = (int) (labelX14.Width*myScreen); + labelX16.Width = (int) (labelX16.Width*myScreen); + labelX17.Width = (int) (labelX17.Width*myScreen); + labelX11.Width = (int) (labelX11.Width*myScreen); + labelX19.Width = (int) (labelX19.Width*myScreen); + labelX21.Width = (int) (labelX21.Width*myScreen); + labelX22.Width = (int) (labelX22.Width*myScreen); + labelX24.Width = (int) (labelX24.Width*myScreen); } sideBar1.Visible = false; sideBar1.ExpandedPanel = sideBarPanelItem3; @@ -899,7 +939,7 @@ splitContainer1.Panel2Collapsed = true; - buttonItem87.Checked = true;//默认地上模式 + buttonItem87.Checked = true; //默认地上模式 ribbonTabItem1.Select(); //初始化状态为浏览 sideBarPanelItem3.Visible = false; @@ -951,7 +991,7 @@ //图例 legend = new GSOHudButton(); - legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg");//图例P + legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg"); //图例P legend.SetOffset(0, 15); legend.MinOpaque = 1; legend.MaxOpaque = 1; @@ -1002,7 +1042,7 @@ globeControl1.Globe.UserBackgroundColor = Color.White; globeControl1.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl1.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed * 3; + globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed*3; globeControl1.Globe.EditSnapObject = true; globeControl1.Globe.IsReleaseMemOutOfView = true; globeControl1.Globe.ControlPanel.Visible = true; @@ -1021,18 +1061,22 @@ globeControl2.Globe.UserBackgroundColor = Color.White; globeControl2.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl2.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed * 3; + globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed*3; globeControl2.Globe.EditSnapObject = true; globeControl2.Globe.IsReleaseMemOutOfView = true; globeControl2.Globe.ControlPanel.Visible = false; - GSOSimplePolygonStyle3D trackingRectStyle = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackingRectStyle = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; trackingRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimplePolygonStyle3D trackRectStyle = globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackRectStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; trackRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimpleLineStyle3D trackRectLineStyle = globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle.LineType = EnumLineType.Solid; - GSOSimpleLineStyle3D trackRectLineStyle1 = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle1 = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle1.LineType = EnumLineType.Solid; trackRectLineStyle1.LineColor = Color.FromArgb(0, 174, 255); trackRectLineStyle1.LineWidth = 1; @@ -1119,21 +1163,28 @@ globeControl1.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 globeControl2.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 //初始化TreeView + + #region wxl + + initLayerTree(); + + #endregion + // 勾选实测图层 - foreach (TreeNode tn in layerTree.Nodes) - { - if (tn.Nodes.Count <= 0) continue; - if (tn.Text != "实测数据") continue; - tn.Checked = true; - foreach (TreeNode tnChild in tn.Nodes) - { - tnChild.Checked = true; - foreach (TreeNode tnGrandChild in tnChild.Nodes) - { - tnGrandChild.Checked = true; - } - } - } +// foreach (TreeNode tn in layerTree.Nodes) +// { +// if (tn.Nodes.Count <= 0) continue; +// if (tn.Text != "实测数据") continue; +// tn.Checked = true; +// foreach (TreeNode tnChild in tn.Nodes) +// { +// tnChild.Checked = true; +// foreach (TreeNode tnGrandChild in tnChild.Nodes) +// { +// tnGrandChild.Checked = true; +// } +// } +// } } private void doLoadDataForGlobalControl1() @@ -1142,7 +1193,10 @@ { globeControl1.Globe.Layers.MoveDown(10000); //加载实测管线数据 - Utility.dataSource = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, Utility.DBPassword); + Utility.dataSource = + globeControl1.Globe.DataManager.OpenOracleDataSource( + Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, + Utility.DBPassword); if (Utility.dataSource != null) { @@ -1160,7 +1214,9 @@ globeControl1.Globe.Layers.GetLayerByCaption("红线").Visible = false; //globleControl1中加载规划数据 - GSODataSource ghDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", Utility.ghdbuser, Utility.ghdbpwd); + GSODataSource ghDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", + Utility.ghdbuser, Utility.ghdbpwd); if (ghDS != null) { for (int j = 0; j < ghDS.DatasetCount; j++) @@ -1176,13 +1232,16 @@ } //globeControl1,globeControl2中加载施工数据 - GSODataSource sgDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", Utility.sgdbuser, Utility.sgdbpwd); + GSODataSource sgDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", + Utility.sgdbuser, Utility.sgdbpwd); if (sgDS != null) { for (int m = 0; m < sgDS.DatasetCount; m++) { GSODataset dataset = sgDS.GetDatasetAt(m); - if (dataset != null && !dataset.Caption.Contains("SH") && Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) + if (dataset != null && !dataset.Caption.Contains("SH") && + Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) { dataset.Caption = dataset.Name; globeControl1.Globe.Layers.Add(dataset); @@ -1196,12 +1255,12 @@ // LoadDataForGlobalControl ss = connectServer; // ss(); - + this.Invoke((EventHandler) delegate { connectServer(); }); - + } catch (Exception ex) @@ -1212,6 +1271,7 @@ private void initLayerTree() { + layerTree.Nodes.Clear(); //加载临时图层节点 layerManagerNode = new TreeNode(); layerManagerNode.ImageIndex = 0; @@ -1220,59 +1280,60 @@ layerManagerNode.Text = "临时图层"; layerTree.Nodes.Add(layerManagerNode); - XmlDocument doc = new XmlDocument(); - doc.Load(Utility.filename); - XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); - - foreach (XmlNode xmlLayerNode in xmlLayerNodes) - { - - //TODO LIST:创建一级TreeNode(实测、规划、施工) - TreeNode nodelayer = new TreeNode(); - string layerName = xmlLayerNode.Attributes["label"].Value; - nodelayer.Text = layerName; - nodelayer.Checked = false; - layerTree.Nodes.Add(nodelayer); - - XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; - foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) - { - //TODO LIST:创建二级TreeNode节点 - TreeNode secondLevelNode = new TreeNode(); - string layerType = xmlChildLayerNode.Attributes["label"].Value; - secondLevelNode.Text = layerType; - - if (xmlChildLayerNode.Attributes["type"] != null) - { //道路图层特殊处理 - string type = xmlChildLayerNode.Attributes["type"].Value; - secondLevelNode.Tag = type + "|" + layerType; - } - else - { - secondLevelNode.Tag = layerType; - } - secondLevelNode.Checked = false; - nodelayer.Nodes.Add(secondLevelNode); - - XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; - - foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) - { - //TODO LIST:创建三级图层节点 - TreeNode layerNode = new TreeNode(); - string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; - string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; - string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; - - layerNode.Text = actutallyLabelName; - layerNode.Tag = layerType + "|" + actutallyLabelName; - layerNode.Checked = false; - secondLevelNode.Nodes.Add(layerNode); - } - - } - - } + TreeUtils.initTree(globeControl1, layerTree, null); +// XmlDocument doc = new XmlDocument(); +// doc.Load(Utility.filename); +// XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); +// +// foreach (XmlNode xmlLayerNode in xmlLayerNodes) +// { +// +// //TODO LIST:创建一级TreeNode(实测、规划、施工) +// TreeNode nodelayer = new TreeNode(); +// string layerName = xmlLayerNode.Attributes["label"].Value; +// nodelayer.Text = layerName; +// nodelayer.Checked = false; +// layerTree.Nodes.Add(nodelayer); +// +// XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; +// foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) +// { +// //TODO LIST:创建二级TreeNode节点 +// TreeNode secondLevelNode = new TreeNode(); +// string layerType = xmlChildLayerNode.Attributes["label"].Value; +// secondLevelNode.Text = layerType; +// +// if (xmlChildLayerNode.Attributes["type"] != null) +// { //道路图层特殊处理 +// string type = xmlChildLayerNode.Attributes["type"].Value; +// secondLevelNode.Tag = type + "|" + layerType; +// } +// else +// { +// secondLevelNode.Tag = layerType; +// } +// secondLevelNode.Checked = false; +// nodelayer.Nodes.Add(secondLevelNode); +// +// XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; +// +// foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) +// { +// //TODO LIST:创建三级图层节点 +// TreeNode layerNode = new TreeNode(); +// string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; +// string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; +// string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; +// +// layerNode.Text = actutallyLabelName; +// layerNode.Tag = layerType + "|" + actutallyLabelName; +// layerNode.Checked = false; +// secondLevelNode.Nodes.Add(layerNode); +// } +// +// } +// +// } } @@ -1298,7 +1359,8 @@ for (int i = 0; i < markerStrs.Length; i++) { if (!File.Exists(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd")) continue; - GSOLayer markerLayer = globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); + GSOLayer markerLayer = + globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); if (markerLayer == null) continue; TreeNode node1 = new TreeNode(); node1.Text = markerLayer.Caption; @@ -1314,7 +1376,7 @@ { initGlobalControl(); //initGlobalMap(); - initLayerTree(); +// initLayerTree(); initMarkerTree(); initLayout(); loadData(); @@ -1383,7 +1445,7 @@ tempnode.Checked = node.Checked ? feature.Visible : false; tempnode.Tag = feature; node.Nodes.Add(tempnode); - GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature; + GSOFeatureFolder featureFolder = (GSOFeatureFolder) feature; VisitFeature3Ds(featureFolder.Features, tempnode); } else @@ -1444,7 +1506,7 @@ /// Boolean CheckDatasetGeoReference(GSODataset dataset, string strDataPath) { - + if (dataset.GeoReferenceType != EnumGeoReferenceType.Flat) return true; Boolean bSuccess = false; if (MessageBox.Show("数据没有空间参考信息,请设置空间参考信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) != @@ -1498,7 +1560,7 @@ dlg.Filter = "输出JPEG(*.jpg)|*.jpg|输出PNG(*.png)|*.png|输出BMP(*.bmp)|*.bmp|输出BMP(*.gif)|*.gif"; if (dlg.ShowDialog() == DialogResult.OK) { - string extension = Path.GetExtension(dlg.FileName);//扩展名 + string extension = Path.GetExtension(dlg.FileName); //扩展名 switch (extension) { case ".jpg": @@ -1520,6 +1582,7 @@ globeControl1.Globe.Action = EnumAction3D.ActionNull; globeControl1.Globe.MouseRoamingEnable = true; } + /// /// 定位正北正90度俯视 /// @@ -1573,100 +1636,112 @@ break; } } + + #region wxl 重构树形结构代码 + + private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); + } + } + + #endregion /// - /// layerTree选中后事件处理 + /// layerTree选中后事件处理 /// /// /// - private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag.ToString().Contains("|")) - { - string nodeTag = e.Node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - if (e.Node.Tag is GSOFeature) - { - if (e.Node.Nodes.Count == 0) - { - GSOFeature feat = e.Node.Tag as GSOFeature; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - } - CheckControl(e); - } +// private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag.ToString().Contains("|")) +// { +// string nodeTag = e.Node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// if (e.Node.Tag is GSOFeature) +// { +// if (e.Node.Nodes.Count == 0) +// { +// GSOFeature feat = e.Node.Tag as GSOFeature; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// } +// CheckControl(e); +// } /// /// 树节点选中方法 /// /// - private void CheckControl(TreeViewEventArgs e) - { - if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - { - CheckAllChildNodes(e.Node, e.Node.Checked); - } - } +// private void CheckControl(TreeViewEventArgs e) +// { +// if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// { +// CheckAllChildNodes(e.Node, e.Node.Checked); +// } +// } /// /// 改变所有子节点的状态 /// /// /// - private void CheckAllChildNodes(TreeNode pn, bool IsChecked) - { - foreach (TreeNode tn in pn.Nodes) - { - tn.Checked = IsChecked; - - if (tn.Nodes.Count > 0) - { - CheckAllChildNodes(tn, IsChecked); - } - } - } +// private void CheckAllChildNodes(TreeNode pn, bool IsChecked) +// { +// foreach (TreeNode tn in pn.Nodes) +// { +// tn.Checked = IsChecked; +// +// if (tn.Nodes.Count > 0) +// { +// CheckAllChildNodes(tn, IsChecked); +// } +// } +// } //改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent == null) return; - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } +// private void CheckParentNode(TreeNode curNode) +// { +// bool bChecked = false; +// +// if (curNode.Parent == null) return; +// foreach (TreeNode node in curNode.Parent.Nodes) +// { +// if (node.Checked) +// { +// bChecked = true; +// break; +// } +// } +// +// if (bChecked) +// { +// curNode.Parent.Checked = true; +// CheckParentNode(curNode.Parent); +// } +// else +// { +// curNode.Parent.Checked = false; +// CheckParentNode(curNode.Parent); +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { diff --git a/MainFrm.designer.cs b/MainFrm.designer.cs index a9b8c6f..1f9c1f5 100644 --- a/MainFrm.designer.cs +++ b/MainFrm.designer.cs @@ -2283,12 +2283,12 @@ // this.ribbonControl1.BackgroundStyle.Class = ""; this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonControl1.Controls.Add(this.ribbonPanel15); this.ribbonControl1.Controls.Add(this.ribbonPanel6); this.ribbonControl1.Controls.Add(this.ribbonPanel4); this.ribbonControl1.Controls.Add(this.ribbonPanel12); this.ribbonControl1.Controls.Add(this.ribbonPanel5); this.ribbonControl1.Controls.Add(this.ribbonPanel2); - this.ribbonControl1.Controls.Add(this.ribbonPanel15); this.ribbonControl1.Controls.Add(this.ribbonPanel1); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.ImeMode = System.Windows.Forms.ImeMode.NoControl; @@ -2356,6 +2356,7 @@ this.ribbonPanel6.StyleMouseOver.Class = ""; this.ribbonPanel6.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel6.TabIndex = 38; + this.ribbonPanel6.Visible = false; // // ribbonBar6 // @@ -2945,7 +2946,6 @@ this.ribbonPanel15.StyleMouseOver.Class = ""; this.ribbonPanel15.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel15.TabIndex = 35; - this.ribbonPanel15.Visible = false; // // ribbonBar20 // @@ -4465,7 +4465,6 @@ // ribbonTabItem9 // this.ribbonTabItem9.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; - this.ribbonTabItem9.Checked = true; this.ribbonTabItem9.HoverImage = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem9.HoverImage"))); this.ribbonTabItem9.Image = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem9.Image"))); this.ribbonTabItem9.Name = "ribbonTabItem9"; @@ -4486,6 +4485,7 @@ // ribbonTabItem14 // this.ribbonTabItem14.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.ribbonTabItem14.Checked = true; this.ribbonTabItem14.HoverImage = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem14.HoverImage"))); this.ribbonTabItem14.Image = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem14.Image"))); this.ribbonTabItem14.Name = "ribbonTabItem14"; @@ -5480,7 +5480,7 @@ this.dataGridViewX2.ReadOnly = true; this.dataGridViewX2.RowHeadersVisible = false; this.dataGridViewX2.RowTemplate.Height = 23; - this.dataGridViewX2.Size = new System.Drawing.Size(23359, 92); + this.dataGridViewX2.Size = new System.Drawing.Size(23656, 92); this.dataGridViewX2.TabIndex = 11; // // dataGridViewTextBoxColumn10 @@ -5574,7 +5574,7 @@ this.dataGridViewX3.ReadOnly = true; this.dataGridViewX3.RowHeadersVisible = false; this.dataGridViewX3.RowTemplate.Height = 23; - this.dataGridViewX3.Size = new System.Drawing.Size(23358, 127); + this.dataGridViewX3.Size = new System.Drawing.Size(23655, 127); this.dataGridViewX3.TabIndex = 5; this.dataGridViewX3.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewX3_MouseDoubleClick); // @@ -5832,7 +5832,7 @@ this.dataGridViewX8.ReadOnly = true; this.dataGridViewX8.RowHeadersVisible = false; this.dataGridViewX8.RowTemplate.Height = 23; - this.dataGridViewX8.Size = new System.Drawing.Size(133, 92); + this.dataGridViewX8.Size = new System.Drawing.Size(116, 92); this.dataGridViewX8.TabIndex = 11; // // dataGridViewTextBoxColumn12 @@ -5927,7 +5927,7 @@ this.dataGridViewX9.ReadOnly = true; this.dataGridViewX9.RowHeadersVisible = false; this.dataGridViewX9.RowTemplate.Height = 23; - this.dataGridViewX9.Size = new System.Drawing.Size(132, 127); + this.dataGridViewX9.Size = new System.Drawing.Size(115, 127); this.dataGridViewX9.TabIndex = 5; this.dataGridViewX9.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewX9_MouseDoubleClick); // diff --git a/MainFrm.resx b/MainFrm.resx index b408d34..61fa81b 100644 --- a/MainFrm.resx +++ b/MainFrm.resx @@ -351,804 +351,6 @@ 766, 54 - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlDMzFEOUI4NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 - NEI4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlDMzFEOUI3NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 - NEI4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDk5Mzk2NTZBRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz73sIMwAAADIElEQVRIS7WVa0iTYRTH56Uiysvm3TkvpLl5DRIvQYWVWl+6 - iNEVg0yhQqloQZHkLT+Y0YdAs75IpEUhzERZoZhsRpZlS7soblotsRwoxhqWeTrnYZtv+u7NsB74cZ5z - zv89/z17HzYRAPxXeIv/EpFXcOyi4BvKhfehv4FvKBfeh+ayqIUDlIgBgT8whpRYoT2fhgvNVJKBQT9s - hB8/QZDPpnEIjEhg0J5Pw4Vm0mwygG9T06BSqQQhTUhUMoRGpyxYT7OZwfhXC6jVakFIYzNYqN5uMGKa - BI1GIwhpghXJaJJi13d0dEB2bj74hsWzSDlXbzfQG02g0+kEIU2wIomdovzKdVifngnFFytBeb4cLN+n - WaSc6hfKKqB/eHTWoHfwExgMBkFII5MnQUD4WlAWloO26wVs35MDmifPmQFFyqlO/aKKqlmDp31DYDKZ - BCGNTJ4IPqHx8LJvACbNUw7p6e2HuJQMNIhhBuaHj3vBYrEI0tb1BoIiE9kJ9h7Oh7EJM+g/jEJuwVlY - s24ri5RTnfo5BedAIoueIYPumvomuHzjzm9cq2uCq7UNUH2rEarr7kNd0yP26Y+eKoSWtk4wfpmAg7kn - ITY5DUorq1g8cOQEqze3aplOEhRtJoMcL1mMTixV9IgD5a/tSBVDYql8AKOBQLEJtTP08gY/jjFiktKg - 5FIV21Ok3NazvmR2AvrFkCAJyGYk1comZAuHDM/AyLvHThfBveZ26NOPwI59eey7LsbhFCmnOvVJ5+Ef - rrYZLEU8EZ85+HLwW7ZCLMVTFWdkHoLut+/hgbYHaE9XN31XNsupTrWV3jKVs+uS3cyAD0cLe331jW3Q - qRt0CPUlQVHDKI+fN9iGo4W90uNnyuA2vvRtWTlQgxeg/dk7FimnOvU9/CNqUe47b7ANRwt7AfjpKvAK - Gt18Qur35ymhRfsKKLr5hN7EyzDq7humWrrcfSfKxbz/QlwcLDck1snZJdUzYHUDmk57+K1qdXJyzsL6 - RmQD9ZmObygXB8sVIRO6fXQB4hC6eRQppzr1XXmHclnAckFomLc1Um5dItEvhZ97MQXP9N0AAAAASUVO - RK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjhDMTdBQjRENEFBRTExRTQ4QjQyODY0MDNBNTJE - NzNCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhDMTdBQjRDNEFBRTExRTQ4QjQyODY0MDNBNTJE - NzNCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUQyMjc4QTlBQjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4eHsDfAAAB00lEQVRIS7XVWytEURQH8HniTTNHLs0NCXNcXjTN5dH9g/gM - 3jx590QhFDJS0gyTGmpqaqJIMW4hzlAoOaWISS7LWifntI3ddnTGrl92e/57/We/DBsA/CvuYSHZSr0t - lvCGsriX/oI3lMW9lM/SwgF9SEHwizs08IX2vAyLZvZRgXJ+cQWv7yB0q96Ds86voT0vw6KZNJsK4Pnl - DWKxmBBlqhpDUN0UNp2n2VrB/WMOEomEEGX0ArN5o+BGfYB0Oi1EGa8cwpKw6bxRcH6lQiaTEaKMVw5q - rzCbNwr2z65BURQhynh8Qe0VZvNGwdZBFlRVFaKMxxfQXmE2rxc8rW3sQy6XE0puHoG7IaC9YnV9j5th - pbZPqOCDCrbH5uIwOD7/zWgkDkNTizAyuwQjkWWIxFNQWduqmVxI/MiPz6/A8HTUuDMTTYLkbrqhgt5S - T3PG4ZJ3HE7focElZx0u3yn+VQiG1ZLymmm7s74f88f42S6bl9zyJZ6d6Xckd+Mt5ieogH4xJORHHajt - SzvqZPSgECpHZSiA2DztuxBlad+NgnpBEbIjusiiYboKRF+kGFHegUR5ImkFv7G0eAPzWVq8gfksLd5/ - oULiHhYS97BwwPYJlSCUgVubViQAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJEMDQyOEZBNEFEMjExRTRBN0MxRDBCNzJGRUND - MDEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMDQyOEY5NEFEMjExRTRBN0MxRDBCNzJGRUND - MDEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkRDRkI1RDVEMTRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz59jfe3AAAEbUlEQVRIS8WTeUybZRzHF48/pnFOuQRajkFLgQFb5iRLNJr4 - l/EPgsniUI4xZDAY1zyxwApsMJyIME61rByl3DfoYGBrgbWUY06FcZSCha4rQ8jYxkqPr2/fvkv8o2Sg - S/wkT970eb6/T5/39z7Prv8dt/Oql4mR4HZJ3ccoXFxhVCzB9DT9JueJdSq6c1wzVZFupepVzxu34XVj - CaEDi1jX6hF8ZQoeokl4iBVwzV9YdU1XRlIl28eVo8phCdXwGltEeOUsro6psaHVwcSDh5volc4iOO8X - 7KuVwb1hEi7J8myq9PEQO//I85oafr0KtEpUpNSETm+AwWDAvfv3YTQaybnm/t/AyO6Ga+UonJOnIijF - 1hA9tWI2qle9RxcI+RIpmZpTIfBULhIyyqHVahHPKcN70TmYnFFCp9OhqXcc9KwW0DOHVl3YU1aUyjJu - F1SpfhO3EM6bMMsVt+D8Zhz2HIpC4oU6bG5uIu4cD3tfTwAjIBNypQYbGxsISquBU34PaDHiVEplGXee - SuIjVaBv3Lz7gJg8vHg4FlZvc+ATVoLipiHsD8qCXWAO7IPK8MG5FjLXKboOeoYADkldUkplGWb7vOb4 - 4BzxIXXQE/1m59WDXdgBvxPfwz6UC4eQUth/WIBDZ2qQXj+K7IYRImeE5s5fOFrcDPvPapcJzVNmmwVY - VxWG9U09uau1tTVymPpc0iYFLew7OEUJ4BwtALfvJpl5xMrKCu6s3cUrn5YbCM1us80CrJZZVWjXr7j3 - 4CE0y8v4IrcaH+cK4Bv+DRyPl8ApphYuia3wZ3eCUzOA1PIfcVuzjHnlIgK/vgy7mHzTG+w12yzA5E53 - edYPo1c2i/X1dQTEfwvbwDQ4hhXg8OcN4P48Df+UTrgkNIAeW4Hg3Hbo9Xq0iGSgs4ls5CUhoXnObLOA - S8pkhG/bdZzgDZJnffT3GXieLAA9XgB2/RjZjuQqMWhxfBw824H55XWyhcfy+HDNqoB1SH4Codn6G7iw - p3d78EaVPlXX0CaZgkqlgly1gpCiK0htHCH/IL6oFcEF3ZjT3CUvXqv0DzDSS0FPq1a/8EbYS5Rqa+if - SAJ8KoeNR7gitEsnoVQqSbGOkJmYX1ggxaY70SabwIGMUrjn8I3WIXnBRPnWu/8nDnE9Sd7cAaP/ZSES - 6/rRKJRArpiHXC7HzekZNIukiCyrhW9mGZgXa4w2kUVnibJnzdXbxP5URzyDO4QjxGl5i9uNpMZeKP5U - IrywAq9yCnGAOGGMonbYxpVnEPGdyR9BO/MTj8kfgXeNFPt5IngVtoF1kQ9WcTs8qgfgmNreQMS21xZL - 0E6Ln6ef75tg8sfgXT8O77oReAkkYNXJ4PRV/4ztyfo9VPTf4xjdf9CpQKzdxxuGe6UMbhXEmc8V6mze - r3qNivx3HGN7UmglQ6CVDMIxXwybo5UcaunJQD8te9rhyx4JrWwItlGNUut3y5+hlp4cDhFCpl14k9jq - nR+Y1NTjIe7NlmMnWKoHsOtvjWYcKpheqFQAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERTg4QTFENEQyMjExRTRBODEyODk0M0RBMTc5 - Qjg3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERTg4QTFDNEQyMjExRTRBODEyODk0M0RBMTc5 - Qjg3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjJGOUEyRDEyMTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6wJF34AAACl0lEQVRIS62Vy08TURSH73/QhQtXVnBhxEcMiUkhbEg0hB1R - Q1i68C8wIW5cEqMLN7ho2Ji4YiEhWq0prYUhfULbadN3obTaChobtZEUsFY9nnPS6WM6HYowyZf87j33 - nG/amaai9geOBYA+4pTxihmBE8DcTQB4J8em/9IwSQyagmrtL+z9rMFmvnhkKvtV7tcVHPz6DVsftulA - AckdhUg8zf19eoLKAd597iMLMItewfOxUDTN/bqCH3tVSG8VWIBZ9AoJApEk9+sKvu/uQ2IjzwJkGtH8 - OrTwy3Hu77vIAnV9mgWlcgWiqRwLjAMmkOMbPbNTKnN/JJntqJGEBZ++7oKcyLLgLN4JrU8Cms2C4pcy - BKKZumCI18temQ/8DzSLZlBmQX7nG/jCKdpgAa0driCtY5iFHuqHSjNoFtaags1iCdzBBG+QgNY2aZ0F - mIUe6osENAtrTUEq/7kDq9PHAszU5yYoq9f1i9cUSCD5ozxDEeTsrhAoONwyxLLb8MrhYQFmZYCHsnpd - v3hNgQROb5hnKIK29944MAThTBEWbS4WYBZ6qC/sKSy5ZJ6BGUQg8b4Bbhjod4AZXlhXWdBa10LrIVul - AM9ggS+aa6AIMMO8ZYUO0KeyIOMtZyaQpXpNi4LFucYzMINwhbMNcMNw5oIJMMNKIA0LNg88mZuH/ssj - dPgBMnN+cBRmny1wrRtSMMMzWCCFMg0UAeY2Fh0+GL5xG8Zu3oHXUrCj3g0WONdTbeBm21/o1N17gPtg - 98Xh3VoS3qzKMDI22agfglnY/Uld8NDc/ZlZwAwvl4Ngun6LGh8rdfVDViNs3rguOOzq6XOD8PDpc7g2 - OkHDH7XWtYa2It66Y4eCQ8cRfpvUNa2hTUD8A6JMaBvCyTdJAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERjY3MEZENEQyMzExRTRCNDlGQUMwMzk0OTAw - Qzc4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERjY3MEZDNEQyMzExRTRCNDlGQUMwMzk0OTAw - Qzc4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhGOUEyRDEyMTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6GKmpFAAAC+UlEQVRIS63T20vTYRzH8Yforj/Ei24UiSgKIygKi8oyxZQo - cvNYeXaesmzqPGu2POd0ulSsnIdaurTSTJ3O6UxTPGya5vCQx5AuPn39RbHop7nZxQt+z3ie93e/Z4w1 - p7nsCoBt8R6yBF/UHPv+Wb0rfFFzm99CRIwEW1gnqXzxTXxRc0ydctm4OlID2sxrw6iCtiwItC+A2P/D - frLnjwGNSZdMq6N1WOvLwFpP4l/WdRlY6Jaio9Ab7QXba8sVoDHZGdT8PYS9THDqMGnLsKpNw0qXGCua - BO55VZdNQ6U/DRRibVCGb+N1pH5bukoRqHmDHOIG1N8/X2F4I8WyNhtf2+9hqSsZxqZ4upbb6HsSZLHO - Im90ym6hNVcIaktYTexZyUelGEvaHMy/jcFiZxo0xX5Y7ivGcn8JkVmA9uvlWBmqwpJeAWovs+poR99O - eRgWtQWYVUdgrj0FH+i+F3XF3NoappZYGJrEoLaOVYpOOTY/FGJB+xjTqnDMtMTTAC/Ma/Ix/TLUKl9e - x0JfFQpql7PykBP7lWIXzPeUYLIhHCPKCLr/AMy2ZsKoDLTKdNNdvM8TgNpRTBZwfJ885CTmaIChPhwa - mS+GnkdhqjEWY9X+VplqvIMXEhdQ24mZeuSs0N/BNNWWj4k6EdSZHhhXxWH0aSCGFd4c4Tk7zk7XBlUM - FKLToK4Nm+0qYnneRzqGGiSYaIiiyZdhVCdgqFSIwRJPjucZW85O1pvnRmvDkO9zFNTdy2Y6HjGp4HCF - 5kk4xhoiURd/EROv4tBfeM0qAyUC9Mp9QM0+7o829T6LZV0/mNycS6+nFKFWfAGj9ZHozfGwil7miZYH - 7qCmghsw+S6VpV894KuUuKFbfhNNqa749CwY3dm0toK+VABl3HlQM5obYHybwFLc7W1y/Y5BlX6FfgNn - DNcEY0DhZZX+MiGKbh0DNR24AYYWMSfJzc6GZBApwS5skIzNODcg0dV2V36FtsJ7yBJ8UXO8hyzBFzXH - ++H/A/YDv9/V87iOlrYAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 - RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL - ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH - s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW - uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx - xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd - iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ - qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW - GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE - NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n - KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw - qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI - HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq - wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q - 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA3MTZBNTkzNEEwMjExRTRBQjdERDhBQkEzMDEx - MzZEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTZBNTkyNEEwMjExRTRBQjdERDhBQkEzMDEx - MzZEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTgxNjM4Q0YwMTRBRTQxMTk2M0JC - NEQ0MzNCOUIxQzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz7RblD4AAAHUklEQVRIS22WC1ST5xnHg7OerZvT9aydtdzJhVzIlSSEXAgJ - JAESIFyTcJPgBRXEincrnVhaQKug1Qhepk7trG1ltAWn1RbrhYsX0FmGpdQb01Y7bREq3U7/e76s89iz - fef8zvM975fv/3/ey/e+YQFgvXA17ifw1QkBkUoTm2LGpqbdtRf7rnz41d1710dHx0bHx78HE5mcaWee - 81XmLLZMJ/r5L3/9FIvFCmA0/8v/GJDo00TSWy1tO4Zvfzn0aHwcD0fHcKq7F/vfaYdvz9vYR/GTrl6M - jIxi7LtHuPPV18PvHTn+R150fOq00MjfkMmE/2tAws8Q2R2nu1q/oxdvDN/BqtqtUCcXw5C7APbZq+Es - f8UfmZxpZ55fu/l3jDwcxUenOlup567pEaJAMpn4EwMS/hXh6bl4qWN0bAx7D70PqcmNjPIaVL5xCEt9 - h7Hg9QOYV7sHpTV/wPy6vShbt8//nPndjv2H8c23I+g639sRqTLlPxfMmcaY+A1IOIDGMe3j013tTCVr - X2+GpXApZlbvRPm6AyipasKMFT54V+9Ayeqd/li4bAtcC9cht2Id3JUbkViwGIW+Zbj/4FscP3nmCFdu - yPnZxKcm+w3IUXjgndZ9D0Yewrf7LZjzFmNu7ZsoWulD3pJNcC9qgLN0LRwlL8HuXeWPTM60exY3InXW - y5C/4YF4fS5qDjXj7v0H2HPw3QPBkXINU/0EouDajVs3+z8bgkiXhrylW5G9oB45VB0jZs2vhCVvERI9 - C5HoJigyOdPOGCp8+VA1FkG1vhi8JSm4NDiA/quf3+IoDCUsmpSg6vrGxntf/wOVq+sQn7sQWWW1SJ1Z - BWteJUzZ8xGfNRfGzLmwFSxByowV/sjkxsxSCNalQvlaPrQNcxBT74X45RzM3FyF23e+xMrqus00POa4 - ox+d+vj6rdsQaVOQMbcG5pwFsHoWQZ9aAp3DC6NzDpKLliMhtwKmrPn+mFS4DPw6O8RVmZCuyYG6dgaU - NQVQvToD/BftuDZ8G4fbjnWwaHIL/vq3wVstbccg0KYi0VUBY0YpYlOKoLZ6/JhzyqFJyn+cqyxucGss - UKx1I2pVOqJWpkPyUhai1+T74S5MxsETbbSi+oaZOSj//Isbo5ubdiPKkIaYpDzo0ryQxzv9xNgYUffj - XGZMR0S1CfwlNkStSId4hROCyhQIFqVAscoF2cpscCuSUf/mdvQPDI4xBsuHrt/84fevNUCgSYacBNQW - F6Jik/xEm7Mg0dl/zG1gFxvBnZMA3jwL+GU2iF50+O8ZxJUZRDq485KwrHk9Phv64gfGYMmVgcHxqlc3 - gCM3kwhj4gQ/mqpUmiHR2yGMsfrvGXhGMsgygZNvAs+bCP4cGzheyr3xEC1wQFhmB2dWIpZvq8fl/oHv - ycBc1nmu797W7XsRLFCTiAkijRUcmQ4cqQ48hdGfs8WxYCu0YOt1iLDqEJ6qRWR+ItgeI8I9eoTn6yGY - ZQN/tg2hhXFo/NMedPb03meWqbu1/cMrZzrPY1qYCByJHlypniKJCFQIF6rBk8UhMtqIMIUGISolwuI1 - 4NqN4DjjEJquQWhGDNguA/UqHpHFFgRma9Dd24c/tx29yuIq4jR1jU0f9F7uh8WRjUCuDBFRJCA1gL5E - hEQqECJQIFxKIjFkbDCAbdIjLEGDYIsSwUlKBNmVYOeSoZuKyDXAXObGpwODWFPXcJQVyJVMpmGq7rpw - 6Z+79x/Cs0E8qpqpnF4SaxHElSAoUopgkQzBEiJahqAYOYL0cgQaiQQ5ItJoiJxacHKMmO5QYnfL2zjX - e/lfHJm+jjY8VgAvOi57o2/Xye4Ll+DMLcLzNFQRYg31JAYchR6hYiUCRVIESYhoQi1DoFaGELMabLsB - EQ6ar0wj9USNtIpiXP50ABu37OgK5itm+je758MFU3lK09qD734wdKLjNKK1JqpajiitDUKdFSIDrXlT - CkQmKwRmC4Q2ylNTIExPgjAzCWKXA2F2HRQ5iTjTcw6tbceGI6Ta+qcnT+X7DeiaEB4Vo6AJ39h65Phd - 2jpgtDkQKlFDbsmEJo02Myd9wU4XVFlEDpHngaaoENEFLoSnxEGf58DJs120VZ/+RqCO9/0uhGch3emP - Dxy6JoaLNYl07G3ad7Dlxidnz2FV9SsIEUYhRKaCxJoKdSZtap5iqN0FkGQ4EWrSIVQnxYq6tTjfdwXv - tR+7Q+JNL7BF2aQXREx50iCAmBTCV2hpTho2bNnZd+LkWaqqBw3btqOwtBSmNAeUFhPinQ7kzZ+NDc3b - 0HWhD93n++Dbua+fK9NvoTM5+Udx5mye9NjgCZNf0HEnpN5U5RbPa9+0bdfQ+0eOPzp5ppvG96JfjFkM - nXR/vOP0ePOu/deyCuf8JVSorJny7HQdvR9MTCUm+fUYgyehazLBVCCd8ttpJbQANtO3cDjWbO9werzd - ruK5F9Ld3p7YBEdHCE/WMi0s0jf5mefm0e+ZCsXEf85i/98XsP4NaTpxka74X+IAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBREU3RDk2NEFCMDExRTQ4OUM5QjZFOENGQzJF - MDk1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBREU3RDk1NEFCMDExRTQ4OUM5QjZFOENGQzJF - MDk1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEM5Mzk2NTZBRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz52g1XsAAADeUlEQVRIS62Va0hTYRiAXzVNoQs6oUCttJu3aqatrLxr2k0n - W6bLLlLSxTKCKLoQQUg3IbLMflSgBRGRP7JSSzGnWalYdpnV1MQu1tBWWklqvr3fp2dsOytSfOFh3/l2 - eJ7tnDMGkkmzGCqigsARhPlUQqCi8nEd9v7GEYP5mFcI4K/e/hGHeQ2B7p4+1HV8Nf6Kw4a5GGxtCHzv - 7sU2nR4lbr4/AUBFKIeD4GKYBL79+IX6rm622U8nSgnX4SC4GCaBL50/OXwTwIUY1ohcQkCn/84ZDLBP - I5p16TBl7XYIoaXVwI54RC4h8LG9k/OvQPIOmEZUJW2F+XRoPbBrOiKXEGj9rOdYCqi2gxXhnLQNIo6f - n9tEa7ViI79PoojIJQSaP3RwjAOJaSAjjhL3N+9zrD+W499UVJnSeeVmWDvtlcWlgCedZnK5RC4h8KZV - x2FryQSYmrAVjh/MnP46/57yS7VmZ9+zxr1Yr92NtQ1pWFmfiBevL9QpUqE0JhHcyWuImLsMAU1zG4et - V6yHC1l5oe+evNmD1ZoteL9OgaW1K7GkRoF3H8ZigTocb5bFY8bZWbpoFVwh7yiCR8xdhsAz7XuOh9QD - D2R6twyIEzG/JApz88N7z+T5d+VcDezKL43Ea4UxeCjTqyNUDpUBYeBFXjvjgOAyCdS9asXDJ3NQFj3u - 7eWCyG/FjxR45OyMr6s3S1qCYqE8RA654Uq4dOiUV/v+E9P0i1ZA9Zwg8COnA2HyDZiLYRw4dyAjC50n - z8awBBvNbbWyZ+8x10+By+GONARCbe1gDBPJloCvfKODluQ10mD+qDK5LWFyD6pfvOUYBzydXL0v2I+V - rI9Mhud5BQE9i+RQPt2P30BBYrM4HmYSNf5REGS0b5CzYdKq+iaOITA44wmPiLXwaFfGhDbZMkinYxNJ - 8CpwXxgHobQcPbhv8XegrtNyzAPsOtqHJUPeml1jm/1jYDkdM5G5hB3bDL6KhknLal9xzAN8gpMgVZHm - oKUAuwx29H420c9O/l9KHms4bC0KLFCAY6CSHr+VoHJy88lWbEjHoqoXWPzw5ZCxGKCxkslBLo22L1+6 - ahPeUj/FwgfPh8zpSzfQ0cWrwVKAjfXcWFjjPm9isWSSbx/7JEPF0cWzcYzE7dTfAmysfSLB2z0Awm1H - 8ycnjrD4N/kX4gEg8A9sAFSe4VuPvgAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzN0Y5NjgxNEE5MDExRTRBMzU1RUM1MkVEQTU3 - REQxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzN0Y5NjgwNEE5MDExRTRBMzU1RUM1MkVEQTU3 - REQxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUU1QUVCQUI4RjRBRTQxMUI2QTlC - RjEwMkVGQzEyNEEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4Oz1B+AAABO0lEQVRIS7WUP0sDQRDFt0snIcEiklhGJLH3k6bNp0ifYCUo - KWwMIRCx0EYxEEL+IOPO4SxzczN7d7gGfuzd7Hszd9nHOQD4V9RiStRiStQi0b68GXkgwkjzcdQigU1O - 32CC+9IjUYsENvjY7EySDHhev5skGXA3X5r8aYA3lx0wET1otYgmNMcOku+jXtMg4QJFJMb1a7uPmjUd - rVzHDfDy9pmJaZViCe5rPq7hYpgvXjPw2hNtTqBOevk+F8L0YRGQQosyHxfSf0jUegPLZwkrNedYfi6o - 9Y2RWP6cACPHYnf4XauQablfHYAxo6jt9sfwRGWgVvrVASKmdd7g2OoN4P5pVYhqbgCPmnPuzHPtua1C - s9OHyeyxEFU+IJcCb2p4zj3dKjQvrsat3jD4CwNCIcEv14/fpAfcDwXsled4Tu6+AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlGMEQ1RDBCNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 - MzBCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlGMEQ1RDBBNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 - MzBCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzFDMDRERTRENjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6zemTaAAABh0lEQVRIS7WUvUoDQRSFEwiBKPEHsRAkb+ArWIsv4CNYCSKI - jRD8a1S0m9QhdTobG5uARZogBJSkiLASFJJChQiRcJ2z2bnMZtbxCnrhY3YO556z1aSI6F9JFP+SRBEs - FFaUhoSopAyQKGIBi58jEuErcQSAhY/hyP5DL8Y7mQMcAcD8Phh+u2Tzk9cRAMz914G4wOd1BABzt/cm - LvB5HQHA3On2xQU+ryMAmB8en8UFPq8jAJjvWk/iAp/XEQDM9WZHXODzOgKAudZoiwt8XkcAMN/U78Ml - CcY7mQMcAWhz+FRc3zZFREXypwKYEiG/e+ykc1WYVRrCGUk8nGUHsyic6nKeetUK4dTESjjLDjZUlqaV - hiS8lEsh0Z1LTFYs2FBazFFwcUzB+YE+T8bffD+i4LRIwSV0jdZaO5vhHXtRPmfFgg1n81mlIQnt/W1q - bKyH34dz2XKUz1mxYBaFU5zJUG1tlXDu5TMcjuEsO5hF4exOpZWGtnLpWDiGs+xgFv9gxlmU+gIVyyIX - YCSg/AAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVGNUQ0RjNENEQyRDExRTRBQ0ZFOEVGNkU4Rjcw - RkEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVGNUQ0RjNDNEQyRDExRTRBQ0ZFOEVGNkU4Rjcw - RkEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzUxNUY0MjEyRDRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz7jldwbAAAEyklEQVRIS6WWDUzUdRjHoeXWVktIc74MLREMUxBQV4RYkBmL - SBwSoZIFCgULlOJFDJDxqkiAqGgoiIQ6jaFLB1EqUaC8iMgdL8cJB3fHwR13HO8Hh3x7fn+pwN01nM/2 - 2X77Pb/n+33+v/3/95zBbGOVnZM58QHhRKwgnp9KPXuQ2CtJ6ScOjGo0fcMjI93llVX55us3rqbUc49P - zDLyw9auL4iw5l+IsMY//BRujcygdcg+ug83rpzCsVhf3C6+hHg/W+R++985BtU3pey1cCCpOYQhJzo9 - 8kPX1tZcDoS0Jp2jrCgWmakhOJMVA4GwBd1KNSQ9veiUdeNifjqyMsJxveD7f8+z2rPBlg0kNZ9gJjMj - L8RqQlSegIbLX6CuYAcOBm9FHe8B2rt70SZTgNfehTphJ+paCaEYjSIJkmP24PaPnrhfsBP8okCcCbZ8 - RFLmxIuc6PTICV5Dh4IxNqSEemAA6adzwBdJ8VeDEL/XNqGkmo/iKh4HW5fWNCL7QiEqq2sw3N+Dijwf - nPx6FUjKkpjLiU6P7MDVqL/gj8nJSY4bpbcQnZyK8EOJCI2Ox3dRcY+JjkNYTAIi4w4j7+JlKBQKjI+P - 42qqJ9J832AGawkjTnR6ZPm/iXvn9+ARiWsnJjCu1YLeGshJQCKVolMs5hBLJOiSydAjl0OpUmFweBhj - ZJAfuxVJ3ub6DTJ9LVCd40Pij6AZ01IRoWVGumE5dmZEM45RjRbnolwR72Wm3yDt85W4e2o3FVLnGg1G - xsYwSvDEdxB03gEa6vJwSopOhkZHkRPhgkPbTfUbpOwwR+XxXdT9OM79EQ/lgBLNkjpsz1iMP5t/oU7H - dIoz+oeGcTbUGVHblus3SPJYgfI0LxLSIPmaL4LyHOB5bClK6gswNDLKoUucoezvx+n9W3Dg49f0G8S5 - LUfZEU8MkpC8T43YQi8UVp3kutOFenAIvep+dClUkClVOPXNZoQ6L9NvEE3uN+PdMUBvRXevCgqVmjob - gGpgEH1PwPZYTq7soy9bDolcgRNfOWL/ZhP9BpEfLsVvMW70kQ1C2qMgEyVnUiUoQ2CuPZTUra7rYYi6 - ZDi+910EvbdEv0GYkwlKIj+BijrL+jUKbdJO1LZWwD19EUrrr0Cu6tMpzhCKJcj40gEB9ov1G4RsWoLi - UBe6V7r/n70RkPMOPDJMcLXqLPc0DF3ijBaRCOneG+H31kL9BkF2i3B9nzN1qoagQ4yDlzxQUE6/lHRd - XfLeGbA9cbccwk4JHggegi8UIc3LDj7rFug3CNiwENcCt6CH3ojm9g7qqoN79HZpF9rpjjumYGu2x3I8 - 4UNU85pwv0WAox5vY7f1/xj42SxAkf/7kCmUuNfUiho+FTa3gtfaRh22o6lNxMHWbI/lKut5uFVdh7sN - jTiybQN2rpmv18DQ1+rViUJfRwia+bjXLEB1YxNqyai+VUiditDY1sHB1myP5e408FFR34Cb5WVIdLXF - Zxbz2DywJYw51WkxZ9eqebxUFyvk7rDHD24bkOhig4RZEM/4yAZhm1Ziq6lRG2mxscmm2owwdF72suOn - ZkZCTzNjuJsaYdtT4vr63E4L4xcCSYv9IXiJU30i2BxlzmzkWRHsLp8GVsNqp2aygcHfZtZtYIryU78A - AAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUzNzJDMjE3NEFENjExRTRCNjE0OEVEQzI4MEM0 - RTZDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNzJDMjE2NEFENjExRTRCNjE0OEVEQzI4MEM0 - RTZDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI3NUQ0QkNENDRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6PyaLfAAADMElEQVRIS6VUXUiTYRT+vi3Tzd+ps23+3KRigtiPkolEQReG - UYTkhWatpWlWGkRdddfdSPImqUAJjSIT00oxLJIk0cR+tFSyzDJtgaMkDEPkdM7ZPvm2vS6jBx6es3Pe - 8zzvtm+TohLS/ov+AACStLgEQuJyLRJWYK1yzh/+FgCoQrpnfM4fOGBhcUlIMkEVkma4H4i1y2kFcMD8 - wqKQZILKZqTqmlTAWrfvMjhgbv63Dwm0hLWQohn1eNEbzrlfPiTQAtZCKjP1GXdAIC+r4XD+9CGBFrDm - RVJ1re6pZ0GyHHMvIawauYVNCFPfvvuQQAtYC6meKXU0amNsaGN/ZR60xIf9aIgN3cpGE9OzZCZ85nEm - pGiWlLABmuJCnUOXrNB7chdct4TUo32ANDbp4NuielDpqWfePdaPX6GrohSK4uLhlCEo96YlZLbOFHzH - oJXjMSBcGn4/zQGovEDqXXtzeTb+BTrKj0J3+Q54djYP7EZdTU2MPjFSK8eieQR9QtLg6GcOQPWgqKeQ - ZyOfoK30CDw+lg2Ot3Z4VLoNqo269mCNHIa2WjYn9A1PcAAqU6m9VV3TF9psOwwPS3JgZugCdNoyocwU - jU+RlImWBpezGz0vxzkA1YOiHvPFO7Ca1kGHLQtmXp2HdutmqN+/F6JiU+h3kOpyVeHJwBgHoLIpqajm - 189HoaG4CNqsGTA1UAWth9Lg6r490PygGyLjUikgzuWqQlffCAegelDdUwLqigqhpXgjTPYeh+bCFCg2 - RkEk3vxuVz/P0c43oLP3DQegLhspNalSFxiNcLswHT48LYNbBUlQk7ebzenmyhm08w1o7xmiAP6hRZiT - 70eYkzpctUuJWdHmwWs74+F1Uz7cyE+E4ohQB5mHm9a3GywpTXzektyKduIAIsKI3ISkL4rIdYle05C9 - VrZVBmvtl7eboUyv7V4jSQdwRn8FdI72iErtCUxnIuifkJ5hUqUOq9Jr7OeCNU6bTpNVqtMcDJSldOwn - KnOk+jypJ5QANRWc0cs5SEelXr54QidfwVYAMoiHq4W/gNM6OaNCJ+diaUIqN/43+Atwg27t+9ZXBUn6 - A2MdqQeVc5pWAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUzQzNGNDI5NEQyQzExRTQ4QkE1QUNCMEVDRDZF - MDVEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUzQzNGNDI4NEQyQzExRTQ4QkE1QUNCMEVDRDZF - MDVEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI1NUY4OTYyQTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6IsaOmAAADF0lEQVQ4T62U/UuTURTH+0nICqRI1ERMMyNQe8N0ChqBwQhN - yvwhEgJjVCqJ/qCibZo6tzQ339h6Nre5prapUzc1XzItX1ilzuWMLLVAen+xf6DTuTxjdxsFVj58ebjc - c+7nnud7z3228DbpIaDFH/CfoqCn72DIDvNfPDM2KAqyr8PcJxqY+QBTb8kkjocXQTsKigGwfqYJHqIg - 1OxHGHvlWPx4hXB1YyA3g4CBhqst+piEnrDA3rA95vBAY1x8d7lq/DVZwm5PQZNvoKYdypSgHgbVEIh1 - cLOZzOCbSSsyRQRba6uWtcpVLbPcwlglInNUCJNWWKqABqMLCGvGlfpJELaQ/V1Vd1lujAhe0chtUrH5 - ZExnmJ85MdomEa+qZMbIEF2BHGunILSjdZwYgTt4gJqjjj0Rltml1Zq9AeL0Mn71Wn2mtDU80MIvsFTw - O+KPIoWC8BNYRIUaqrRQroJKjQOk9N+xLBF2pXJFKfnsDGYa8gS6xOO2whyMuoHaHpGzZ/pBM0IMrtXD - nT4HqNHXe0lYoogMFeQP4jbSDkCPTUyXmnNoPutSo+9WN5DEQDyeWCWnhqm4p7Oimt3b54rzmmKPVHKz - 0Xg0AU1pz87VJp+yXOfd9t3mBmLXsGrsJhSsDtF4iOWxKdpzyQNnuRW7vEUp13obFG05OVUBPtO5V1Sn - k5q4SX8ENfWA6C7xHsP981Bb2sf38ZKd4JhSuXUJHPHhg/WJnAeZFw0Xzt/w8erRtLmBnB/CSmaC599I - 2PYVRl+CXigu3R9SfCC0Pf1MZ1oqvqvjogX7gtRFJfb1n24g7GblfQcFP2fkBYm5anxqQcbLKgzyK/Df - WRTkV5+RMTg84ZrgAOHo4ZIDVNdJw67CpsVLZ5gifj97Typlq2ZFQXj8LKh5EHpnaIar8N+Al5l9Y9Vs - T7OiIAzjqaMsa6QJnBkeWvgOHdPkAuIV67PSeQpCYYZplsZ+KyyWLRyFF8D553EDbURY770J0rrYJbda - SYE4iWb9NcgpRKDrOMAWwYP6d5BTaC52zyaAWDlAm/DweL8AX9zXukfxHsIAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjYzQTM5NEY4Mjg0OUU0MTE5NDBEQTc4ODZEQzk5 - N0NGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJGRTU5OEQ1NDlEQjExRTRBRUVDOTkyMjQ5NzEw - REUwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJGRTU5OEQ0NDlEQjExRTRBRUVDOTkyMjQ5NzEw - REUwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTY0MkI1RjlEQTQ5RTQxMUE0QzNB - MjdEOTJBQzc3QkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjNBMzk0RjgyODQ5RTQxMTk0MERB - Nzg4NkRDOTk3Q0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6B5sF9AAACe0lEQVRIS7WVb2jMcRzHL7UHanF/Mts5prE/1li3kAfu5Ak7 - 5IHNobBkSC2UIuGJkrrSWRvTmHQWK8U1T8jqUtYwkZpaGjV/Js6to5YwfXze39+fu/v23f36hXe9us+f - 7/v9rd/dr3MQ0X/F4Zm3+K9QhWajNNlBFZqN0mQHS6lMdrCUyqSgimllUsy4XmOmp+QRDllQWbygjjq6 - uimZStOX8a+ixox3pXrM1JLCDAqYJmY7c669M0bff07mcLbtEl9QE8k6V6BH5ooXMsHZZX7ae+AY7W45 - SrPm19LbsSR9m/iRA2bYGefggVePzUgKBzeu9sQpmZ4QcG/WMtk7eLjv0WMz0kOz+TX6MUXvP6cFeNbD - bz6YvQFm2Bk9PPByZO6jksLB5KvRTzTyLikIrG2ktsvXzd4g2hGjYP1ms4eHvb850qkl65LCQW/ntVs0 - 9HpMcPx0K1X4V1Ff/3NzhnphbVDsjBk8Lm/VE44s0ZJ1KS4Ie8uXUvPBE7Tn0ElCzTMqrV5BO/cfEaDG - TD5X6PFFONLygsTF7jj1vxihyPkYNTS1iFrFxm37KHIhJmp43L7qZxzp0pJ1SeHhQGgLJQaH6fb9R1QX - 2EB3Ek9FryLe95j8K9eLT/TB0FZcskOP1iRdkIh23aR7Ay9pzaZddKY9Jup8nIpeoXXhZlHD655b85Bj - p2npLOmCML+dD/iTZhaX3+UvbRB1PpzeygFnSUUvatecRUMzisoOc+x0LZ3FixxYhQyK1cxyZhkTYhqY - RgnM6hmcwVl4ljDI0KS4AC+Kmyli8Jv2MF7GNwXY4QzOwgNv5mWTL7CLpVQmO1hKZbKDpVR/1P8OcvwB - lh7gOXXZq9sAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNDMTJDMTRENEFDOTExRTRCRDk4ODBFRTFERTlG - MzY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNDMTJDMTRDNEFDOTExRTRCRDk4ODBFRTFERTlG - MzY1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjYwQjFGREZDNjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4rRYZ8AAACEElEQVRIS2MQltOlCP///x8vxqqJFIzNUGSMVRMpmCDApokU - TBBg04SEpwHxfwJ4GtQo7ACoABfODY3N+P/773+82C88GWRJBtQ4TIBmKAyziCsa/L98/c5/37Ck/3Wt - fVixT2ji//OXr/8XU9T/zy0kzQo1EhVgMRyEm0uqW//vP3Lqv5Cs9ml+CZVp/OLKs/nFleYgY0EZzQt7 - Dh7/n1/eCFLXBjUSFWAxXENZ1/r/g6evgK5P/l/d1IMXe4ck/L//+MV/RW2r/0IyWppQYxEAiwWT+qfN - /7/7wHGQq84BXT9FQEq9S1Bas0VQWqMVFWu2ANWc2LbnyP/eKfNA6qdDjUUANMN9Tex8/j999eG/LzDy - yuo7icIeQfH/n7x8/x+kV0hGOwBqNASgWbBt+frt/7cCXQRko2Cg9xfCXA5io8uv37bv//J124G+0NkF - NJYRYjoQACWR8f97T99gxSA5oHIpECZCHTvIbDCAGgy34MaDF1ixo08k3LWO3hEY8jC9IBporBDEdCAA - CqBYcPnOU4ow1AKQTyEA3YKz1x9RhKEWyEBMBwJ0C05cvocVl9R3o2BsakCYoAWHz9+mCBO0YP/pGzhx - flUHGGOTg2GCFuw+cY0iTNCCHceuUIQJWUBMBYMX80uo7gQai9MCkJAoENsDcQiZGKQXZAYEYLEAlM1B - CkCuIAeD9EKLCgYGAMLPWmGxemtkAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY2MzBBRkRDNEFDOTExRTQ5Q0JEQkU0NDNBNTYy - QTY5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY2MzBBRkRCNEFDOTExRTQ5Q0JEQkU0NDNBNTYy - QTY5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjgwQjFGREZDNjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6+q/BOAAABR0lEQVRIS7WVTUvDQBCGe/PoQQQP4s2jv8E/4W/rXxEFQRAp - olCwfjRUJWK1ltJgNJh+6Toz7OCSzrIZFwce2LDzvs8hkDSMMf/K7wFmbWunCRgFTQp6RhKY+ZephSvh - Du7hoWf3AgPT+XcteLcqcUcUlNMFYYNLuPeVXZK4IwqKckZMZgsveO/u8jNKqMiOKHgrJrWQdqsSUTDO - Pwm7LBK6pzIYUTDMPoi8KGvB+4wVrGCfKHge5VFYwTr2iYLHQUbgWYObg6pN7BMFd/0RMczeVXAuKOim - r1EEBVf3LwSeNbg5qPIL2skTkQ7GKjgXFJzfpFEEBa3LBwLPGtwcVPkFJ+0ekcAL08C5oOD4IokiKDg6 - uyXwrMHNQZVfcNi6Jjq9vgrOBQX7p50oQgLtT3+J1Y3tA6iSBXbwS7gL7P0RzNqvqWn8AE4SSnpUkJk6 - AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFGMTBBQzY2NEFDQTExRTRBQTYyQjA5QjRFNjBF - MzcyIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFGMTBBQzY1NEFDQTExRTRBQTYyQjA5QjRFNjBF - MzcyIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0EzRTc1RjdDOTRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjg2NjBEMzE2NEFGRTExRTQ4NTY1QzE4RjMzMkM0 - NEY4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjg2NjBEMzE1NEFGRTExRTQ4NTY1QzE4RjMzMkM0 - NEY4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTU5NUNEQTdGQTRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz5BZhOvAAAD9ElEQVRIS7WWe0xbZRiH95+T6DQxcc7NLfrHTBaR4NyFmDAy - ljFwwERGpmRxxmyY6QbqgogDhqluOpFLlm6AFslGRVlXKISVS7tByzgUOF1vtLUtLVBogQ4YsLoN9ec5 - 3+xXyIiJWdrkyfed9/u979PLSdsVz6wPfyQA/Cehf3DPQsiBECHkBVj4CyGBn00E9xb+DglU4L/35xIM - 7j78qCpAlVqAg6KNkOtqMTPnx9TcLOzjFty5u4CJWR9u++/AM+NBh7WRnM3/cX/JHCqY899fwu35u/BN - z2HM60NcURjB7hwmNX4/PjmNWzPzZL/v3FPIEK9DQskTNOudmML0rD8oiD0d9hAutxej4z6yZ3pZaA0D - ZO8c8dDM8d9egtSxGxetMTiri8Ih8XpS79cZ4fZOBgVu7y2YrINg9QOIPvU4QcPqyWp1DJM6vwbOUivW - QGSMgdi8E7mqSGQqIpAoXE3OmuRtuKHRwjU6HhQMe6dgG/LA4hhBVM5KJJatJmsPa8TNARup8xm+1tnd - R9bkc88hicsllnGrcC2p1Te1QKliYLQ6SZ4KhriLYe80oaa9Ghk/JEMkqYJS3Q0DF3a4J7D9s1V4s2QN - Nmc+hviTLyOvIgv55SeQe/4YUgu3QlRXjbbrN6A12TDoniSzqMDh9lEszjEoGQbF4u/wa+tlmOxu2Ecm - 0dglR86FjxEteBZx2Zsgab4KhaoH17lXJFO04nKLDCrus+L7A7OowOLyUsxODwy2EaTm78BrWU/io6KD - YE126KxDaFDKEZ4Rhg8E+1HbKAOjNZP6TYsL0mtNaFYrUCmrAGu2YWBwLCgw2Ecf4qeGakRmPo203D1Q - dPWjz8TdBGYX0guSIK5vgLyDQa/BDr3NTdAYrYg68iI2HliJiitV6DM6ggLWwt0p/8J9PeFMsRDnJSLE - H38DsXEJSEhKAaOzod88hMjXt+KTz/PQ2WtCLyfl8wE2RbyKkyWFqJLUQdqu4ASvPBBojE4KH9wVtxel - v5Tj5zopuU5MSQOjt6NG0swJtmHtCxtwrUePHsMDQaA3J/9rfJpTgDY1CwWjDwq6dHYK37BzdwJqZe3I - E3yP9ENHsG//u+TsvcNH8dXZMryVlo4ioYjmA73ZnCA7T4BO1gqV1hp8izr6f6fwDafOlKLgdAlidsXj - 29JKJHOCFrWOnAXga4F8gIjN21Df1k1nUYFSY6bwwUvSVjy/bgN2cILKmnokvf0O8r8pRvr7H5JMcwdL - zvkcn1/cvxgqaGVMFL6BX6Nj9+BLQREuXLyCvSkHEB65BcXll2ju8LETyPqikOaXgwqudhlCQkAQ8p/M - R2K5fxKLWbbp/7Dc0CBY8Q+pPmOq0VkzzQAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjIxNUQ2NkYyNEQyRDExRTQ5N0NDRjdBNTBDQjc0 - MUY3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNUQ2NkYxNEQyRDExRTQ5N0NDRjdBNTBDQjc0 - MUY3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkU1NUY4OTYyQTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4lOJsMAAADqUlEQVRIS6WTf0hVdxjGj2beulPvD52aU6Np6tKBhUWsYjIH - prDYSlZjNPsjlUnkMmSx6eJqS/u5zXGtoKKEMaEt2lpZ20RX01Bjad31A8UakdZ0SyrLJfHueU7H0zl6 - U8QXPvCe933e5/3e8z1XCY5+dVKIyJh4HZoI48bQE5kU44a3ISM45TxQCTxgQIM5a/M0m+eHN1OC4TfB - 96mZ78reg9+I50qn3HvwSIU5a+xBcwyka3ajY3DoySgwUJ44P02O/vSz4HlMfqitk7mLlnLRNs3SHAOD - QzoQOYF7de4Gud17V1DTuf/wP7nScUOFubF3559+4QxngUOzfhr9DwZV0AgHVZ99/oXcvf9IUNPZd6hG - 5qS8Ic7IOb2EOWtGDWdKtuzmkj300uwVpa9/gOZTae6qqBQ8myjb4RZbeEyjJcBROt0W6rLaw4unBYYU - 2mfMrmNvpJ4ewdFJe+Hnry7o7rvHBV+v/7hUkJtoab8qobOSZarlhfX2iLhjS5d/IBkrsvlLDmPJEvao - GTlXsKmMS9zqApjnZWatkeu3+uSvnn9NlO2skqCwl2tt4bH7N7l26nXmzqgkFxZVUWOcIfSiZ3BU0odc - 0Hay/px03Px7FOuKXBIUOms/zDwn6pr0OnOcsN0ZlVhEjXFmGHpCc0n9BenvZMulzlvyZ1ePiZLySsG7 - /hYn3VpYXKHXmdtnxLmx4CtqjDOEXunLs3F3sS7lwrWbCoT71hYUC3ITJxta1TsIDImOh+ZA2rL3hdjC - Yhr8pwdlsUfNyLkceEFThxt4TWnxXFf8rTab46WEmo8+KRc8m9jwaQXed2I1Trw4IDgqx2oPK8EFb4T+ - KHsj9fSA+Rkf3ynvYUGi0tjWybv2DXBGxjsiEo7kF5XJ7xc6BHWdzdv3yOzk1/lOu3BxN5izZtRwJr+o - VDX3s1jz4ZkCHErD+WsqiCn4xuPsEfHfvbUqV2rPtgnqOvWtV6Xm+G8qzI09ajmjmvtPy4PXQhBCT+XX - 5ss6CD/wIl5H9SspaVLhrhbUx4QaavG1/YLZVWABPTQvRTnV5DGhNZyBITPz8cqaU1KXSeHmXXLgyGn5 - seEPFeassYfDXLTawr7EzNsgmbOax9M4cfbiKBC+IBDEYjgXn9spfKrduIPHBHkPXke9JcBZCs1KkEqt - NsPZZ4H/gVcQPsAC+HMTwCKQAXhSwpw19qihljPm8GZuBDG8yAZCQYQGc9a8Gw+HN9OJMG54G5oIY4ei - /A9dc78cqtG90gAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 - RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL - ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH - s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW - uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx - xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd - iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ - qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW - GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE - NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n - KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw - qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI - HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq - wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q - 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -4803,6 +4005,804 @@ ++H/A/YDv9/V87iOlrYAAAAASUVORK5CYII= + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlDMzFEOUI4NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 + NEI4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlDMzFEOUI3NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 + NEI4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDk5Mzk2NTZBRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz73sIMwAAADIElEQVRIS7WVa0iTYRTH56Uiysvm3TkvpLl5DRIvQYWVWl+6 + iNEVg0yhQqloQZHkLT+Y0YdAs75IpEUhzERZoZhsRpZlS7soblotsRwoxhqWeTrnYZtv+u7NsB74cZ5z + zv89/z17HzYRAPxXeIv/EpFXcOyi4BvKhfehv4FvKBfeh+ayqIUDlIgBgT8whpRYoT2fhgvNVJKBQT9s + hB8/QZDPpnEIjEhg0J5Pw4Vm0mwygG9T06BSqQQhTUhUMoRGpyxYT7OZwfhXC6jVakFIYzNYqN5uMGKa + BI1GIwhpghXJaJJi13d0dEB2bj74hsWzSDlXbzfQG02g0+kEIU2wIomdovzKdVifngnFFytBeb4cLN+n + WaSc6hfKKqB/eHTWoHfwExgMBkFII5MnQUD4WlAWloO26wVs35MDmifPmQFFyqlO/aKKqlmDp31DYDKZ + BCGNTJ4IPqHx8LJvACbNUw7p6e2HuJQMNIhhBuaHj3vBYrEI0tb1BoIiE9kJ9h7Oh7EJM+g/jEJuwVlY + s24ri5RTnfo5BedAIoueIYPumvomuHzjzm9cq2uCq7UNUH2rEarr7kNd0yP26Y+eKoSWtk4wfpmAg7kn + ITY5DUorq1g8cOQEqze3aplOEhRtJoMcL1mMTixV9IgD5a/tSBVDYql8AKOBQLEJtTP08gY/jjFiktKg + 5FIV21Ok3NazvmR2AvrFkCAJyGYk1comZAuHDM/AyLvHThfBveZ26NOPwI59eey7LsbhFCmnOvVJ5+Ef + rrYZLEU8EZ85+HLwW7ZCLMVTFWdkHoLut+/hgbYHaE9XN31XNsupTrWV3jKVs+uS3cyAD0cLe331jW3Q + qRt0CPUlQVHDKI+fN9iGo4W90uNnyuA2vvRtWTlQgxeg/dk7FimnOvU9/CNqUe47b7ANRwt7AfjpKvAK + Gt18Qur35ymhRfsKKLr5hN7EyzDq7humWrrcfSfKxbz/QlwcLDck1snZJdUzYHUDmk57+K1qdXJyzsL6 + RmQD9ZmObygXB8sVIRO6fXQB4hC6eRQppzr1XXmHclnAckFomLc1Um5dItEvhZ97MQXP9N0AAAAASUVO + RK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjhDMTdBQjRENEFBRTExRTQ4QjQyODY0MDNBNTJE + NzNCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhDMTdBQjRDNEFBRTExRTQ4QjQyODY0MDNBNTJE + NzNCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUQyMjc4QTlBQjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4eHsDfAAAB00lEQVRIS7XVWytEURQH8HniTTNHLs0NCXNcXjTN5dH9g/gM + 3jx590QhFDJS0gyTGmpqaqJIMW4hzlAoOaWISS7LWifntI3ddnTGrl92e/57/We/DBsA/CvuYSHZSr0t + lvCGsriX/oI3lMW9lM/SwgF9SEHwizs08IX2vAyLZvZRgXJ+cQWv7yB0q96Ds86voT0vw6KZNJsK4Pnl + DWKxmBBlqhpDUN0UNp2n2VrB/WMOEomEEGX0ArN5o+BGfYB0Oi1EGa8cwpKw6bxRcH6lQiaTEaKMVw5q + rzCbNwr2z65BURQhynh8Qe0VZvNGwdZBFlRVFaKMxxfQXmE2rxc8rW3sQy6XE0puHoG7IaC9YnV9j5th + pbZPqOCDCrbH5uIwOD7/zWgkDkNTizAyuwQjkWWIxFNQWduqmVxI/MiPz6/A8HTUuDMTTYLkbrqhgt5S + T3PG4ZJ3HE7focElZx0u3yn+VQiG1ZLymmm7s74f88f42S6bl9zyJZ6d6Xckd+Mt5ieogH4xJORHHajt + SzvqZPSgECpHZSiA2DztuxBlad+NgnpBEbIjusiiYboKRF+kGFHegUR5ImkFv7G0eAPzWVq8gfksLd5/ + oULiHhYS97BwwPYJlSCUgVubViQAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJEMDQyOEZBNEFEMjExRTRBN0MxRDBCNzJGRUND + MDEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMDQyOEY5NEFEMjExRTRBN0MxRDBCNzJGRUND + MDEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkRDRkI1RDVEMTRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz59jfe3AAAEbUlEQVRIS8WTeUybZRzHF48/pnFOuQRajkFLgQFb5iRLNJr4 + l/EPgsniUI4xZDAY1zyxwApsMJyIME61rByl3DfoYGBrgbWUY06FcZSCha4rQ8jYxkqPr2/fvkv8o2Sg + S/wkT970eb6/T5/39z7Prv8dt/Oql4mR4HZJ3ccoXFxhVCzB9DT9JueJdSq6c1wzVZFupepVzxu34XVj + CaEDi1jX6hF8ZQoeokl4iBVwzV9YdU1XRlIl28eVo8phCdXwGltEeOUsro6psaHVwcSDh5volc4iOO8X + 7KuVwb1hEi7J8myq9PEQO//I85oafr0KtEpUpNSETm+AwWDAvfv3YTQaybnm/t/AyO6Ga+UonJOnIijF + 1hA9tWI2qle9RxcI+RIpmZpTIfBULhIyyqHVahHPKcN70TmYnFFCp9OhqXcc9KwW0DOHVl3YU1aUyjJu + F1SpfhO3EM6bMMsVt+D8Zhz2HIpC4oU6bG5uIu4cD3tfTwAjIBNypQYbGxsISquBU34PaDHiVEplGXee + SuIjVaBv3Lz7gJg8vHg4FlZvc+ATVoLipiHsD8qCXWAO7IPK8MG5FjLXKboOeoYADkldUkplGWb7vOb4 + 4BzxIXXQE/1m59WDXdgBvxPfwz6UC4eQUth/WIBDZ2qQXj+K7IYRImeE5s5fOFrcDPvPapcJzVNmmwVY + VxWG9U09uau1tTVymPpc0iYFLew7OEUJ4BwtALfvJpl5xMrKCu6s3cUrn5YbCM1us80CrJZZVWjXr7j3 + 4CE0y8v4IrcaH+cK4Bv+DRyPl8ApphYuia3wZ3eCUzOA1PIfcVuzjHnlIgK/vgy7mHzTG+w12yzA5E53 + edYPo1c2i/X1dQTEfwvbwDQ4hhXg8OcN4P48Df+UTrgkNIAeW4Hg3Hbo9Xq0iGSgs4ls5CUhoXnObLOA + S8pkhG/bdZzgDZJnffT3GXieLAA9XgB2/RjZjuQqMWhxfBw824H55XWyhcfy+HDNqoB1SH4Codn6G7iw + p3d78EaVPlXX0CaZgkqlgly1gpCiK0htHCH/IL6oFcEF3ZjT3CUvXqv0DzDSS0FPq1a/8EbYS5Rqa+if + SAJ8KoeNR7gitEsnoVQqSbGOkJmYX1ggxaY70SabwIGMUrjn8I3WIXnBRPnWu/8nDnE9Sd7cAaP/ZSES + 6/rRKJRArpiHXC7HzekZNIukiCyrhW9mGZgXa4w2kUVnibJnzdXbxP5URzyDO4QjxGl5i9uNpMZeKP5U + IrywAq9yCnGAOGGMonbYxpVnEPGdyR9BO/MTj8kfgXeNFPt5IngVtoF1kQ9WcTs8qgfgmNreQMS21xZL + 0E6Ln6ef75tg8sfgXT8O77oReAkkYNXJ4PRV/4ztyfo9VPTf4xjdf9CpQKzdxxuGe6UMbhXEmc8V6mze + r3qNivx3HGN7UmglQ6CVDMIxXwybo5UcaunJQD8te9rhyx4JrWwItlGNUut3y5+hlp4cDhFCpl14k9jq + nR+Y1NTjIe7NlmMnWKoHsOtvjWYcKpheqFQAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERTg4QTFENEQyMjExRTRBODEyODk0M0RBMTc5 + Qjg3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERTg4QTFDNEQyMjExRTRBODEyODk0M0RBMTc5 + Qjg3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjJGOUEyRDEyMTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6wJF34AAACl0lEQVRIS62Vy08TURSH73/QhQtXVnBhxEcMiUkhbEg0hB1R + Q1i68C8wIW5cEqMLN7ho2Ji4YiEhWq0prYUhfULbadN3obTaChobtZEUsFY9nnPS6WM6HYowyZf87j33 + nG/amaai9geOBYA+4pTxihmBE8DcTQB4J8em/9IwSQyagmrtL+z9rMFmvnhkKvtV7tcVHPz6DVsftulA + AckdhUg8zf19eoLKAd597iMLMItewfOxUDTN/bqCH3tVSG8VWIBZ9AoJApEk9+sKvu/uQ2IjzwJkGtH8 + OrTwy3Hu77vIAnV9mgWlcgWiqRwLjAMmkOMbPbNTKnN/JJntqJGEBZ++7oKcyLLgLN4JrU8Cms2C4pcy + BKKZumCI18temQ/8DzSLZlBmQX7nG/jCKdpgAa0driCtY5iFHuqHSjNoFtaags1iCdzBBG+QgNY2aZ0F + mIUe6osENAtrTUEq/7kDq9PHAszU5yYoq9f1i9cUSCD5ozxDEeTsrhAoONwyxLLb8MrhYQFmZYCHsnpd + v3hNgQROb5hnKIK29944MAThTBEWbS4WYBZ6qC/sKSy5ZJ6BGUQg8b4Bbhjod4AZXlhXWdBa10LrIVul + AM9ggS+aa6AIMMO8ZYUO0KeyIOMtZyaQpXpNi4LFucYzMINwhbMNcMNw5oIJMMNKIA0LNg88mZuH/ssj + dPgBMnN+cBRmny1wrRtSMMMzWCCFMg0UAeY2Fh0+GL5xG8Zu3oHXUrCj3g0WONdTbeBm21/o1N17gPtg + 98Xh3VoS3qzKMDI22agfglnY/Uld8NDc/ZlZwAwvl4Ngun6LGh8rdfVDViNs3rguOOzq6XOD8PDpc7g2 + OkHDH7XWtYa2It66Y4eCQ8cRfpvUNa2hTUD8A6JMaBvCyTdJAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERjY3MEZENEQyMzExRTRCNDlGQUMwMzk0OTAw + Qzc4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERjY3MEZDNEQyMzExRTRCNDlGQUMwMzk0OTAw + Qzc4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhGOUEyRDEyMTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6GKmpFAAAC+UlEQVRIS63T20vTYRzH8Yforj/Ei24UiSgKIygKi8oyxZQo + cvNYeXaesmzqPGu2POd0ulSsnIdaurTSTJ3O6UxTPGya5vCQx5AuPn39RbHop7nZxQt+z3ie93e/Z4w1 + p7nsCoBt8R6yBF/UHPv+Wb0rfFFzm99CRIwEW1gnqXzxTXxRc0ydctm4OlID2sxrw6iCtiwItC+A2P/D + frLnjwGNSZdMq6N1WOvLwFpP4l/WdRlY6Jaio9Ab7QXba8sVoDHZGdT8PYS9THDqMGnLsKpNw0qXGCua + BO55VZdNQ6U/DRRibVCGb+N1pH5bukoRqHmDHOIG1N8/X2F4I8WyNhtf2+9hqSsZxqZ4upbb6HsSZLHO + Im90ym6hNVcIaktYTexZyUelGEvaHMy/jcFiZxo0xX5Y7ivGcn8JkVmA9uvlWBmqwpJeAWovs+poR99O + eRgWtQWYVUdgrj0FH+i+F3XF3NoappZYGJrEoLaOVYpOOTY/FGJB+xjTqnDMtMTTAC/Ma/Ix/TLUKl9e + x0JfFQpql7PykBP7lWIXzPeUYLIhHCPKCLr/AMy2ZsKoDLTKdNNdvM8TgNpRTBZwfJ885CTmaIChPhwa + mS+GnkdhqjEWY9X+VplqvIMXEhdQ24mZeuSs0N/BNNWWj4k6EdSZHhhXxWH0aSCGFd4c4Tk7zk7XBlUM + FKLToK4Nm+0qYnneRzqGGiSYaIiiyZdhVCdgqFSIwRJPjucZW85O1pvnRmvDkO9zFNTdy2Y6HjGp4HCF + 5kk4xhoiURd/EROv4tBfeM0qAyUC9Mp9QM0+7o829T6LZV0/mNycS6+nFKFWfAGj9ZHozfGwil7miZYH + 7qCmghsw+S6VpV894KuUuKFbfhNNqa749CwY3dm0toK+VABl3HlQM5obYHybwFLc7W1y/Y5BlX6FfgNn + DNcEY0DhZZX+MiGKbh0DNR24AYYWMSfJzc6GZBApwS5skIzNODcg0dV2V36FtsJ7yBJ8UXO8hyzBFzXH + ++H/A/YDv9/V87iOlrYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 + RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL + ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH + s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW + uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx + xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd + iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ + qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW + GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE + NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n + KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw + qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI + HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq + wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q + 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA3MTZBNTkzNEEwMjExRTRBQjdERDhBQkEzMDEx + MzZEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTZBNTkyNEEwMjExRTRBQjdERDhBQkEzMDEx + MzZEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTgxNjM4Q0YwMTRBRTQxMTk2M0JC + NEQ0MzNCOUIxQzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + 0HWhD93n++Dbua+fK9NvoTM5+Udx5mye9NjgCZNf0HEnpN5U5RbPa9+0bdfQ+0eOPzp5ppvG96JfjFkM + nXR/vOP0ePOu/deyCuf8JVSorJny7HQdvR9MTCUm+fUYgyehazLBVCCd8ttpJbQANtO3cDjWbO9werzd + ruK5F9Ld3p7YBEdHCE/WMi0s0jf5mefm0e+ZCsXEf85i/98XsP4NaTpxka74X+IAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBREU3RDk2NEFCMDExRTQ4OUM5QjZFOENGQzJF + MDk1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBREU3RDk1NEFCMDExRTQ4OUM5QjZFOENGQzJF + MDk1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEM5Mzk2NTZBRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz52g1XsAAADeUlEQVRIS62Va0hTYRiAXzVNoQs6oUCttJu3aqatrLxr2k0n + W6bLLlLSxTKCKLoQQUg3IbLMflSgBRGRP7JSSzGnWalYdpnV1MQu1tBWWklqvr3fp2dsOytSfOFh3/l2 + eJ7tnDMGkkmzGCqigsARhPlUQqCi8nEd9v7GEYP5mFcI4K/e/hGHeQ2B7p4+1HV8Nf6Kw4a5GGxtCHzv + 7sU2nR4lbr4/AUBFKIeD4GKYBL79+IX6rm622U8nSgnX4SC4GCaBL50/OXwTwIUY1ohcQkCn/84ZDLBP + I5p16TBl7XYIoaXVwI54RC4h8LG9k/OvQPIOmEZUJW2F+XRoPbBrOiKXEGj9rOdYCqi2gxXhnLQNIo6f + n9tEa7ViI79PoojIJQSaP3RwjAOJaSAjjhL3N+9zrD+W499UVJnSeeVmWDvtlcWlgCedZnK5RC4h8KZV + x2FryQSYmrAVjh/MnP46/57yS7VmZ9+zxr1Yr92NtQ1pWFmfiBevL9QpUqE0JhHcyWuImLsMAU1zG4et + V6yHC1l5oe+evNmD1ZoteL9OgaW1K7GkRoF3H8ZigTocb5bFY8bZWbpoFVwh7yiCR8xdhsAz7XuOh9QD + D2R6twyIEzG/JApz88N7z+T5d+VcDezKL43Ea4UxeCjTqyNUDpUBYeBFXjvjgOAyCdS9asXDJ3NQFj3u + 7eWCyG/FjxR45OyMr6s3S1qCYqE8RA654Uq4dOiUV/v+E9P0i1ZA9Zwg8COnA2HyDZiLYRw4dyAjC50n + z8awBBvNbbWyZ+8x10+By+GONARCbe1gDBPJloCvfKODluQ10mD+qDK5LWFyD6pfvOUYBzydXL0v2I+V + rI9Mhud5BQE9i+RQPt2P30BBYrM4HmYSNf5REGS0b5CzYdKq+iaOITA44wmPiLXwaFfGhDbZMkinYxNJ + 8CpwXxgHobQcPbhv8XegrtNyzAPsOtqHJUPeml1jm/1jYDkdM5G5hB3bDL6KhknLal9xzAN8gpMgVZHm + oKUAuwx29H420c9O/l9KHms4bC0KLFCAY6CSHr+VoHJy88lWbEjHoqoXWPzw5ZCxGKCxkslBLo22L1+6 + ahPeUj/FwgfPh8zpSzfQ0cWrwVKAjfXcWFjjPm9isWSSbx/7JEPF0cWzcYzE7dTfAmysfSLB2z0Awm1H + 8ycnjrD4N/kX4gEg8A9sAFSe4VuPvgAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzN0Y5NjgxNEE5MDExRTRBMzU1RUM1MkVEQTU3 + REQxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzN0Y5NjgwNEE5MDExRTRBMzU1RUM1MkVEQTU3 + REQxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUU1QUVCQUI4RjRBRTQxMUI2QTlC + RjEwMkVGQzEyNEEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4Oz1B+AAABO0lEQVRIS7WUP0sDQRDFt0snIcEiklhGJLH3k6bNp0ifYCUo + KWwMIRCx0EYxEEL+IOPO4SxzczN7d7gGfuzd7Hszd9nHOQD4V9RiStRiStQi0b68GXkgwkjzcdQigU1O + 32CC+9IjUYsENvjY7EySDHhev5skGXA3X5r8aYA3lx0wET1otYgmNMcOku+jXtMg4QJFJMb1a7uPmjUd + rVzHDfDy9pmJaZViCe5rPq7hYpgvXjPw2hNtTqBOevk+F8L0YRGQQosyHxfSf0jUegPLZwkrNedYfi6o + 9Y2RWP6cACPHYnf4XauQablfHYAxo6jt9sfwRGWgVvrVASKmdd7g2OoN4P5pVYhqbgCPmnPuzHPtua1C + s9OHyeyxEFU+IJcCb2p4zj3dKjQvrsat3jD4CwNCIcEv14/fpAfcDwXsled4Tu6+AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlGMEQ1RDBCNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 + MzBCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlGMEQ1RDBBNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 + MzBCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzFDMDRERTRENjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6zemTaAAABh0lEQVRIS7WUvUoDQRSFEwiBKPEHsRAkb+ArWIsv4CNYCSKI + jRD8a1S0m9QhdTobG5uARZogBJSkiLASFJJChQiRcJ2z2bnMZtbxCnrhY3YO556z1aSI6F9JFP+SRBEs + FFaUhoSopAyQKGIBi58jEuErcQSAhY/hyP5DL8Y7mQMcAcD8Phh+u2Tzk9cRAMz914G4wOd1BABzt/cm + LvB5HQHA3On2xQU+ryMAmB8en8UFPq8jAJjvWk/iAp/XEQDM9WZHXODzOgKAudZoiwt8XkcAMN/U78Ml + CcY7mQMcAWhz+FRc3zZFREXypwKYEiG/e+ykc1WYVRrCGUk8nGUHsyic6nKeetUK4dTESjjLDjZUlqaV + hiS8lEsh0Z1LTFYs2FBazFFwcUzB+YE+T8bffD+i4LRIwSV0jdZaO5vhHXtRPmfFgg1n81mlIQnt/W1q + bKyH34dz2XKUz1mxYBaFU5zJUG1tlXDu5TMcjuEsO5hF4exOpZWGtnLpWDiGs+xgFv9gxlmU+gIVyyIX + YCSg/AAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVGNUQ0RjNENEQyRDExRTRBQ0ZFOEVGNkU4Rjcw + RkEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVGNUQ0RjNDNEQyRDExRTRBQ0ZFOEVGNkU4Rjcw + RkEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzUxNUY0MjEyRDRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz7jldwbAAAEyklEQVRIS6WWDUzUdRjHoeXWVktIc74MLREMUxBQV4RYkBmL + SBwSoZIFCgULlOJFDJDxqkiAqGgoiIQ6jaFLB1EqUaC8iMgdL8cJB3fHwR13HO8Hh3x7fn+pwN01nM/2 + 2X77Pb/n+33+v/3/95zBbGOVnZM58QHhRKwgnp9KPXuQ2CtJ6ScOjGo0fcMjI93llVX55us3rqbUc49P + zDLyw9auL4iw5l+IsMY//BRujcygdcg+ug83rpzCsVhf3C6+hHg/W+R++985BtU3pey1cCCpOYQhJzo9 + 8kPX1tZcDoS0Jp2jrCgWmakhOJMVA4GwBd1KNSQ9veiUdeNifjqyMsJxveD7f8+z2rPBlg0kNZ9gJjMj + L8RqQlSegIbLX6CuYAcOBm9FHe8B2rt70SZTgNfehTphJ+paCaEYjSIJkmP24PaPnrhfsBP8okCcCbZ8 + RFLmxIuc6PTICV5Dh4IxNqSEemAA6adzwBdJ8VeDEL/XNqGkmo/iKh4HW5fWNCL7QiEqq2sw3N+Dijwf + nPx6FUjKkpjLiU6P7MDVqL/gj8nJSY4bpbcQnZyK8EOJCI2Ox3dRcY+JjkNYTAIi4w4j7+JlKBQKjI+P + 42qqJ9J832AGawkjTnR6ZPm/iXvn9+ARiWsnJjCu1YLeGshJQCKVolMs5hBLJOiSydAjl0OpUmFweBhj + ZJAfuxVJ3ub6DTJ9LVCd40Pij6AZ01IRoWVGumE5dmZEM45RjRbnolwR72Wm3yDt85W4e2o3FVLnGg1G + xsYwSvDEdxB03gEa6vJwSopOhkZHkRPhgkPbTfUbpOwwR+XxXdT9OM79EQ/lgBLNkjpsz1iMP5t/oU7H + dIoz+oeGcTbUGVHblus3SPJYgfI0LxLSIPmaL4LyHOB5bClK6gswNDLKoUucoezvx+n9W3Dg49f0G8S5 + LUfZEU8MkpC8T43YQi8UVp3kutOFenAIvep+dClUkClVOPXNZoQ6L9NvEE3uN+PdMUBvRXevCgqVmjob + gGpgEH1PwPZYTq7soy9bDolcgRNfOWL/ZhP9BpEfLsVvMW70kQ1C2qMgEyVnUiUoQ2CuPZTUra7rYYi6 + ZDi+910EvbdEv0GYkwlKIj+BijrL+jUKbdJO1LZWwD19EUrrr0Cu6tMpzhCKJcj40gEB9ov1G4RsWoLi + UBe6V7r/n70RkPMOPDJMcLXqLPc0DF3ijBaRCOneG+H31kL9BkF2i3B9nzN1qoagQ4yDlzxQUE6/lHRd + XfLeGbA9cbccwk4JHggegi8UIc3LDj7rFug3CNiwENcCt6CH3ojm9g7qqoN79HZpF9rpjjumYGu2x3I8 + 4UNU85pwv0WAox5vY7f1/xj42SxAkf/7kCmUuNfUiho+FTa3gtfaRh22o6lNxMHWbI/lKut5uFVdh7sN + jTiybQN2rpmv18DQ1+rViUJfRwia+bjXLEB1YxNqyai+VUiditDY1sHB1myP5e408FFR34Cb5WVIdLXF + Zxbz2DywJYw51WkxZ9eqebxUFyvk7rDHD24bkOhig4RZEM/4yAZhm1Ziq6lRG2mxscmm2owwdF72suOn + ZkZCTzNjuJsaYdtT4vr63E4L4xcCSYv9IXiJU30i2BxlzmzkWRHsLp8GVsNqp2aygcHfZtZtYIryU78A + AAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUzNzJDMjE3NEFENjExRTRCNjE0OEVEQzI4MEM0 + RTZDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNzJDMjE2NEFENjExRTRCNjE0OEVEQzI4MEM0 + RTZDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI3NUQ0QkNENDRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6PyaLfAAADMElEQVRIS6VUXUiTYRT+vi3Tzd+ps23+3KRigtiPkolEQReG + UYTkhWatpWlWGkRdddfdSPImqUAJjSIT00oxLJIk0cR+tFSyzDJtgaMkDEPkdM7ZPvm2vS6jBx6es3Pe + 8zzvtm+TohLS/ov+AACStLgEQuJyLRJWYK1yzh/+FgCoQrpnfM4fOGBhcUlIMkEVkma4H4i1y2kFcMD8 + wqKQZILKZqTqmlTAWrfvMjhgbv63Dwm0hLWQohn1eNEbzrlfPiTQAtZCKjP1GXdAIC+r4XD+9CGBFrDm + RVJ1re6pZ0GyHHMvIawauYVNCFPfvvuQQAtYC6meKXU0amNsaGN/ZR60xIf9aIgN3cpGE9OzZCZ85nEm + pGiWlLABmuJCnUOXrNB7chdct4TUo32ANDbp4NuielDpqWfePdaPX6GrohSK4uLhlCEo96YlZLbOFHzH + oJXjMSBcGn4/zQGovEDqXXtzeTb+BTrKj0J3+Q54djYP7EZdTU2MPjFSK8eieQR9QtLg6GcOQPWgqKeQ + ZyOfoK30CDw+lg2Ot3Z4VLoNqo269mCNHIa2WjYn9A1PcAAqU6m9VV3TF9psOwwPS3JgZugCdNoyocwU + jU+RlImWBpezGz0vxzkA1YOiHvPFO7Ca1kGHLQtmXp2HdutmqN+/F6JiU+h3kOpyVeHJwBgHoLIpqajm + 189HoaG4CNqsGTA1UAWth9Lg6r490PygGyLjUikgzuWqQlffCAegelDdUwLqigqhpXgjTPYeh+bCFCg2 + RkEk3vxuVz/P0c43oLP3DQegLhspNalSFxiNcLswHT48LYNbBUlQk7ebzenmyhm08w1o7xmiAP6hRZiT + 70eYkzpctUuJWdHmwWs74+F1Uz7cyE+E4ohQB5mHm9a3GywpTXzektyKduIAIsKI3ISkL4rIdYle05C9 + VrZVBmvtl7eboUyv7V4jSQdwRn8FdI72iErtCUxnIuifkJ5hUqUOq9Jr7OeCNU6bTpNVqtMcDJSldOwn + KnOk+jypJ5QANRWc0cs5SEelXr54QidfwVYAMoiHq4W/gNM6OaNCJ+diaUIqN/43+Atwg27t+9ZXBUn6 + A2MdqQeVc5pWAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUzQzNGNDI5NEQyQzExRTQ4QkE1QUNCMEVDRDZF + MDVEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUzQzNGNDI4NEQyQzExRTQ4QkE1QUNCMEVDRDZF + MDVEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI1NUY4OTYyQTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6IsaOmAAADF0lEQVQ4T62U/UuTURTH+0nICqRI1ERMMyNQe8N0ChqBwQhN + yvwhEgJjVCqJ/qCibZo6tzQ339h6Nre5prapUzc1XzItX1ilzuWMLLVAen+xf6DTuTxjdxsFVj58ebjc + c+7nnud7z3228DbpIaDFH/CfoqCn72DIDvNfPDM2KAqyr8PcJxqY+QBTb8kkjocXQTsKigGwfqYJHqIg + 1OxHGHvlWPx4hXB1YyA3g4CBhqst+piEnrDA3rA95vBAY1x8d7lq/DVZwm5PQZNvoKYdypSgHgbVEIh1 + cLOZzOCbSSsyRQRba6uWtcpVLbPcwlglInNUCJNWWKqABqMLCGvGlfpJELaQ/V1Vd1lujAhe0chtUrH5 + ZExnmJ85MdomEa+qZMbIEF2BHGunILSjdZwYgTt4gJqjjj0Rltml1Zq9AeL0Mn71Wn2mtDU80MIvsFTw + O+KPIoWC8BNYRIUaqrRQroJKjQOk9N+xLBF2pXJFKfnsDGYa8gS6xOO2whyMuoHaHpGzZ/pBM0IMrtXD + nT4HqNHXe0lYoogMFeQP4jbSDkCPTUyXmnNoPutSo+9WN5DEQDyeWCWnhqm4p7Oimt3b54rzmmKPVHKz + 0Xg0AU1pz87VJp+yXOfd9t3mBmLXsGrsJhSsDtF4iOWxKdpzyQNnuRW7vEUp13obFG05OVUBPtO5V1Sn + k5q4SX8ENfWA6C7xHsP981Bb2sf38ZKd4JhSuXUJHPHhg/WJnAeZFw0Xzt/w8erRtLmBnB/CSmaC599I + 2PYVRl+CXigu3R9SfCC0Pf1MZ1oqvqvjogX7gtRFJfb1n24g7GblfQcFP2fkBYm5anxqQcbLKgzyK/Df + WRTkV5+RMTg84ZrgAOHo4ZIDVNdJw67CpsVLZ5gifj97Typlq2ZFQXj8LKh5EHpnaIar8N+Al5l9Y9Vs + T7OiIAzjqaMsa6QJnBkeWvgOHdPkAuIV67PSeQpCYYZplsZ+KyyWLRyFF8D553EDbURY770J0rrYJbda + SYE4iWb9NcgpRKDrOMAWwYP6d5BTaC52zyaAWDlAm/DweL8AX9zXukfxHsIAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjYzQTM5NEY4Mjg0OUU0MTE5NDBEQTc4ODZEQzk5 + N0NGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJGRTU5OEQ1NDlEQjExRTRBRUVDOTkyMjQ5NzEw + REUwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJGRTU5OEQ0NDlEQjExRTRBRUVDOTkyMjQ5NzEw + REUwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTY0MkI1RjlEQTQ5RTQxMUE0QzNB + MjdEOTJBQzc3QkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjNBMzk0RjgyODQ5RTQxMTk0MERB + Nzg4NkRDOTk3Q0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6B5sF9AAACe0lEQVRIS7WVb2jMcRzHL7UHanF/Mts5prE/1li3kAfu5Ak7 + 5IHNobBkSC2UIuGJkrrSWRvTmHQWK8U1T8jqUtYwkZpaGjV/Js6to5YwfXze39+fu/v23f36hXe9us+f + 7/v9rd/dr3MQ0X/F4Zm3+K9QhWajNNlBFZqN0mQHS6lMdrCUyqSgimllUsy4XmOmp+QRDllQWbygjjq6 + uimZStOX8a+ixox3pXrM1JLCDAqYJmY7c669M0bff07mcLbtEl9QE8k6V6BH5ooXMsHZZX7ae+AY7W45 + SrPm19LbsSR9m/iRA2bYGefggVePzUgKBzeu9sQpmZ4QcG/WMtk7eLjv0WMz0kOz+TX6MUXvP6cFeNbD + bz6YvQFm2Bk9PPByZO6jksLB5KvRTzTyLikIrG2ktsvXzd4g2hGjYP1ms4eHvb850qkl65LCQW/ntVs0 + 9HpMcPx0K1X4V1Ff/3NzhnphbVDsjBk8Lm/VE44s0ZJ1KS4Ie8uXUvPBE7Tn0ElCzTMqrV5BO/cfEaDG + TD5X6PFFONLygsTF7jj1vxihyPkYNTS1iFrFxm37KHIhJmp43L7qZxzp0pJ1SeHhQGgLJQaH6fb9R1QX + 2EB3Ek9FryLe95j8K9eLT/TB0FZcskOP1iRdkIh23aR7Ay9pzaZddKY9Jup8nIpeoXXhZlHD655b85Bj + p2npLOmCML+dD/iTZhaX3+UvbRB1PpzeygFnSUUvatecRUMzisoOc+x0LZ3FixxYhQyK1cxyZhkTYhqY + RgnM6hmcwVl4ljDI0KS4AC+Kmyli8Jv2MF7GNwXY4QzOwgNv5mWTL7CLpVQmO1hKZbKDpVR/1P8OcvwB + lh7gOXXZq9sAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNDMTJDMTRENEFDOTExRTRCRDk4ODBFRTFERTlG + MzY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNDMTJDMTRDNEFDOTExRTRCRDk4ODBFRTFERTlG + MzY1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjYwQjFGREZDNjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4rRYZ8AAACEElEQVRIS2MQltOlCP///x8vxqqJFIzNUGSMVRMpmCDApokU + TBBg04SEpwHxfwJ4GtQo7ACoABfODY3N+P/773+82C88GWRJBtQ4TIBmKAyziCsa/L98/c5/37Ck/3Wt + fVixT2ji//OXr/8XU9T/zy0kzQo1EhVgMRyEm0uqW//vP3Lqv5Cs9ml+CZVp/OLKs/nFleYgY0EZzQt7 + Dh7/n1/eCFLXBjUSFWAxXENZ1/r/g6evgK5P/l/d1IMXe4ck/L//+MV/RW2r/0IyWppQYxEAiwWT+qfN + /7/7wHGQq84BXT9FQEq9S1Bas0VQWqMVFWu2ANWc2LbnyP/eKfNA6qdDjUUANMN9Tex8/j999eG/LzDy + yuo7icIeQfH/n7x8/x+kV0hGOwBqNASgWbBt+frt/7cCXQRko2Cg9xfCXA5io8uv37bv//J124G+0NkF + NJYRYjoQACWR8f97T99gxSA5oHIpECZCHTvIbDCAGgy34MaDF1ixo08k3LWO3hEY8jC9IBporBDEdCAA + CqBYcPnOU4ow1AKQTyEA3YKz1x9RhKEWyEBMBwJ0C05cvocVl9R3o2BsakCYoAWHz9+mCBO0YP/pGzhx + flUHGGOTg2GCFuw+cY0iTNCCHceuUIQJWUBMBYMX80uo7gQai9MCkJAoENsDcQiZGKQXZAYEYLEAlM1B + CkCuIAeD9EKLCgYGAMLPWmGxemtkAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY2MzBBRkRDNEFDOTExRTQ5Q0JEQkU0NDNBNTYy + QTY5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY2MzBBRkRCNEFDOTExRTQ5Q0JEQkU0NDNBNTYy + QTY5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjgwQjFGREZDNjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6+q/BOAAABR0lEQVRIS7WVTUvDQBCGe/PoQQQP4s2jv8E/4W/rXxEFQRAp + olCwfjRUJWK1ltJgNJh+6Toz7OCSzrIZFwce2LDzvs8hkDSMMf/K7wFmbWunCRgFTQp6RhKY+ZephSvh + Du7hoWf3AgPT+XcteLcqcUcUlNMFYYNLuPeVXZK4IwqKckZMZgsveO/u8jNKqMiOKHgrJrWQdqsSUTDO + Pwm7LBK6pzIYUTDMPoi8KGvB+4wVrGCfKHge5VFYwTr2iYLHQUbgWYObg6pN7BMFd/0RMczeVXAuKOim + r1EEBVf3LwSeNbg5qPIL2skTkQ7GKjgXFJzfpFEEBa3LBwLPGtwcVPkFJ+0ekcAL08C5oOD4IokiKDg6 + uyXwrMHNQZVfcNi6Jjq9vgrOBQX7p50oQgLtT3+J1Y3tA6iSBXbwS7gL7P0RzNqvqWn8AE4SSnpUkJk6 + AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFGMTBBQzY2NEFDQTExRTRBQTYyQjA5QjRFNjBF + MzcyIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFGMTBBQzY1NEFDQTExRTRBQTYyQjA5QjRFNjBF + MzcyIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0EzRTc1RjdDOTRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjg2NjBEMzE2NEFGRTExRTQ4NTY1QzE4RjMzMkM0 + NEY4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjg2NjBEMzE1NEFGRTExRTQ4NTY1QzE4RjMzMkM0 + NEY4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTU5NUNEQTdGQTRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz5BZhOvAAAD9ElEQVRIS7WWe0xbZRiH95+T6DQxcc7NLfrHTBaR4NyFmDAy + ljFwwERGpmRxxmyY6QbqgogDhqluOpFLlm6AFslGRVlXKISVS7tByzgUOF1vtLUtLVBogQ4YsLoN9ec5 + 3+xXyIiJWdrkyfed9/u979PLSdsVz6wPfyQA/Cehf3DPQsiBECHkBVj4CyGBn00E9xb+DglU4L/35xIM + 7j78qCpAlVqAg6KNkOtqMTPnx9TcLOzjFty5u4CJWR9u++/AM+NBh7WRnM3/cX/JHCqY899fwu35u/BN + z2HM60NcURjB7hwmNX4/PjmNWzPzZL/v3FPIEK9DQskTNOudmML0rD8oiD0d9hAutxej4z6yZ3pZaA0D + ZO8c8dDM8d9egtSxGxetMTiri8Ih8XpS79cZ4fZOBgVu7y2YrINg9QOIPvU4QcPqyWp1DJM6vwbOUivW + QGSMgdi8E7mqSGQqIpAoXE3OmuRtuKHRwjU6HhQMe6dgG/LA4hhBVM5KJJatJmsPa8TNARup8xm+1tnd + R9bkc88hicsllnGrcC2p1Te1QKliYLQ6SZ4KhriLYe80oaa9Ghk/JEMkqYJS3Q0DF3a4J7D9s1V4s2QN + Nmc+hviTLyOvIgv55SeQe/4YUgu3QlRXjbbrN6A12TDoniSzqMDh9lEszjEoGQbF4u/wa+tlmOxu2Ecm + 0dglR86FjxEteBZx2Zsgab4KhaoH17lXJFO04nKLDCrus+L7A7OowOLyUsxODwy2EaTm78BrWU/io6KD + YE126KxDaFDKEZ4Rhg8E+1HbKAOjNZP6TYsL0mtNaFYrUCmrAGu2YWBwLCgw2Ecf4qeGakRmPo203D1Q + dPWjz8TdBGYX0guSIK5vgLyDQa/BDr3NTdAYrYg68iI2HliJiitV6DM6ggLWwt0p/8J9PeFMsRDnJSLE + H38DsXEJSEhKAaOzod88hMjXt+KTz/PQ2WtCLyfl8wE2RbyKkyWFqJLUQdqu4ASvPBBojE4KH9wVtxel + v5Tj5zopuU5MSQOjt6NG0swJtmHtCxtwrUePHsMDQaA3J/9rfJpTgDY1CwWjDwq6dHYK37BzdwJqZe3I + E3yP9ENHsG//u+TsvcNH8dXZMryVlo4ioYjmA73ZnCA7T4BO1gqV1hp8izr6f6fwDafOlKLgdAlidsXj + 29JKJHOCFrWOnAXga4F8gIjN21Df1k1nUYFSY6bwwUvSVjy/bgN2cILKmnokvf0O8r8pRvr7H5JMcwdL + zvkcn1/cvxgqaGVMFL6BX6Nj9+BLQREuXLyCvSkHEB65BcXll2ju8LETyPqikOaXgwqudhlCQkAQ8p/M + R2K5fxKLWbbp/7Dc0CBY8Q+pPmOq0VkzzQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjIxNUQ2NkYyNEQyRDExRTQ5N0NDRjdBNTBDQjc0 + MUY3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNUQ2NkYxNEQyRDExRTQ5N0NDRjdBNTBDQjc0 + MUY3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkU1NUY4OTYyQTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4lOJsMAAADqUlEQVRIS6WTf0hVdxjGj2beulPvD52aU6Np6tKBhUWsYjIH + prDYSlZjNPsjlUnkMmSx6eJqS/u5zXGtoKKEMaEt2lpZ20RX01Bjad31A8UakdZ0SyrLJfHueU7H0zl6 + U8QXPvCe933e5/3e8z1XCY5+dVKIyJh4HZoI48bQE5kU44a3ISM45TxQCTxgQIM5a/M0m+eHN1OC4TfB + 96mZ78reg9+I50qn3HvwSIU5a+xBcwyka3ajY3DoySgwUJ44P02O/vSz4HlMfqitk7mLlnLRNs3SHAOD + QzoQOYF7de4Gud17V1DTuf/wP7nScUOFubF3559+4QxngUOzfhr9DwZV0AgHVZ99/oXcvf9IUNPZd6hG + 5qS8Ic7IOb2EOWtGDWdKtuzmkj300uwVpa9/gOZTae6qqBQ8myjb4RZbeEyjJcBROt0W6rLaw4unBYYU + 2mfMrmNvpJ4ewdFJe+Hnry7o7rvHBV+v/7hUkJtoab8qobOSZarlhfX2iLhjS5d/IBkrsvlLDmPJEvao + GTlXsKmMS9zqApjnZWatkeu3+uSvnn9NlO2skqCwl2tt4bH7N7l26nXmzqgkFxZVUWOcIfSiZ3BU0odc + 0Hay/px03Px7FOuKXBIUOms/zDwn6pr0OnOcsN0ZlVhEjXFmGHpCc0n9BenvZMulzlvyZ1ePiZLySsG7 + /hYn3VpYXKHXmdtnxLmx4CtqjDOEXunLs3F3sS7lwrWbCoT71hYUC3ITJxta1TsIDImOh+ZA2rL3hdjC + Yhr8pwdlsUfNyLkceEFThxt4TWnxXFf8rTab46WEmo8+KRc8m9jwaQXed2I1Trw4IDgqx2oPK8EFb4T+ + KHsj9fSA+Rkf3ynvYUGi0tjWybv2DXBGxjsiEo7kF5XJ7xc6BHWdzdv3yOzk1/lOu3BxN5izZtRwJr+o + VDX3s1jz4ZkCHErD+WsqiCn4xuPsEfHfvbUqV2rPtgnqOvWtV6Xm+G8qzI09ajmjmvtPy4PXQhBCT+XX + 5ss6CD/wIl5H9SspaVLhrhbUx4QaavG1/YLZVWABPTQvRTnV5DGhNZyBITPz8cqaU1KXSeHmXXLgyGn5 + seEPFeassYfDXLTawr7EzNsgmbOax9M4cfbiKBC+IBDEYjgXn9spfKrduIPHBHkPXke9JcBZCs1KkEqt + NsPZZ4H/gVcQPsAC+HMTwCKQAXhSwpw19qihljPm8GZuBDG8yAZCQYQGc9a8Gw+HN9OJMG54G5oIY4ei + /A9dc78cqtG90gAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 + RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL + ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH + s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW + uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx + xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd + iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ + qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW + GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE + NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n + KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw + qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI + HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq + wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q + 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 diff --git a/Cyberpipe.csproj b/Cyberpipe.csproj index d9a70bc..ea462be 100644 --- a/Cyberpipe.csproj +++ b/Cyberpipe.csproj @@ -1143,6 +1143,7 @@ SysRescInfoManager.cs + True True diff --git a/Cyberpipe.suo b/Cyberpipe.suo index c1d31ce..6c59fcf 100644 --- a/Cyberpipe.suo +++ b/Cyberpipe.suo Binary files differ diff --git a/FrmLayerControl.cs b/FrmLayerControl.cs index 8586041..81346fe 100644 --- a/FrmLayerControl.cs +++ b/FrmLayerControl.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; @@ -13,10 +14,10 @@ GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - TreeNode terrainManagerNode = null; - TreeNode layerManagerNode = null; - TreeNode terrainManagerNode1 = null; - TreeNode layerManagerNode1 = null; +// TreeNode terrainManagerNode = null; +// TreeNode layerManagerNode = null; +// TreeNode terrainManagerNode1 = null; +// TreeNode layerManagerNode1 = null; public FrmLayerControl(GSOGlobeControl ctl1,GSOGlobeControl ctl2) { @@ -25,14 +26,14 @@ globeControl2 = ctl2; } - private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) - { - treeNode=new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - } +// private void initLayerTree(out TreeNode treeNode, string strTreeNodeText) +// { +// treeNode=new TreeNode(); +// treeNode.ImageIndex = 0; +// treeNode.SelectedImageIndex = 0; +// treeNode.Checked = false; +// treeNode.Text = strTreeNodeText; +// } // private void initTreeView() // { @@ -51,234 +52,258 @@ // layerTree2.Nodes.Add(terrainManagerNode); // } - #region wxl重构树形结构代码 + + - private TreeNode treeNode(string strTreeNodeText) - { - TreeNode treeNode = new TreeNode(); - treeNode.ImageIndex = 0; - treeNode.SelectedImageIndex = 0; - treeNode.Checked = false; - treeNode.Text = strTreeNodeText; - return treeNode; - } -// private void appendToParent(TreeNodeCollection treeNodeCollection, ) - #endregion - private void initTreeView() +// private void initNode(string nodeName) +// { +// TreeNode nodeGroupElse1 = new TreeNode(); +// nodeGroupElse1.Text = nodeName; +// layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); +// +// TreeNode nodeGroupElse = new TreeNode(); +// nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; +// layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); +// } + +// private void initTreeNode(XmlNodeList Params) +// { +// foreach (XmlNode paramsNode in Params) //layers +// { +// foreach (XmlNode layerNode in paramsNode) //layer +// { +// initNode(layerNode.Attributes["label"].Value); +// } +// } +// +// initNode("基础图层"); +// initNode("其他"); +// } + +// private void FrmLayerControl_Load(object sender, EventArgs e) +// { +// +// initTreeView(); +// try +// { +// XmlDocument doc = new XmlDocument(); +// doc.Load(Application.StartupPath + "\\双屏设置.xml"); +// XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// +// initTreeNode(Params); +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// +// RefreshLayerAndTerrainTree(); +// } + private void FrmLayerControl_Load(object sender, EventArgs e) { layerTree1.Nodes.Clear(); layerTree2.Nodes.Clear(); - - //加载layertree2 - initLayerTree(out layerManagerNode1, "图层管理"); - layerTree1.Nodes.Add(layerManagerNode1); - initLayerTree(out terrainManagerNode1, "地形管理"); - layerTree1.Nodes.Add(terrainManagerNode1); - - initLayerTree(out layerManagerNode, "图层管理"); - layerTree2.Nodes.Add(layerManagerNode); - initLayerTree(out terrainManagerNode, "地形管理"); - layerTree2.Nodes.Add(terrainManagerNode); + TreeUtils.initTree(globeControl1, layerTree1, "实测数据"); + TreeUtils.initTree(globeControl2, layerTree2, "施工数据"); } - private void initNode(string nodeName) - { - TreeNode nodeGroupElse1 = new TreeNode(); - nodeGroupElse1.Text = nodeName; - layerTree1.Nodes[0].Nodes.Add(nodeGroupElse1); + #region wxl重构树形结构代码 - TreeNode nodeGroupElse = new TreeNode(); - nodeGroupElse.Text = nodeName == "供电" ? "电力" : nodeName; - layerTree2.Nodes[0].Nodes.Add(nodeGroupElse); - } + /// + /// 构造tree,最多解析三层,可放在工具类中 - private void initTreeNode(XmlNodeList Params) - { - foreach (XmlNode paramsNode in Params) //layers - { - foreach (XmlNode layerNode in paramsNode) //layer - { - initNode(layerNode.Attributes["label"].Value); - } - } + /// 所属地球 + /// 要加载的树 + /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 +// private void initTree(GSOGlobeControl gsoGlobeControl,TreeView treeView, string viewDatasrc) +// { +// treeView.Nodes.Clear(); +// LayerConfig layerConfig = Utility.layerConfig; +// List datasrcs = layerConfig.datasrcs; +// foreach (DataSrc datasrc in datasrcs) +// { +// if (viewDatasrc != null && !viewDatasrc.Trim().Equals("") && !datasrc.label.Equals(viewDatasrc)) continue; +// TreeNode rootNode = treeView.Nodes.Add(datasrc.label); +// List layerTypes = datasrc.layertypes; +// foreach (LayerType layerType in layerTypes) +// { +// TreeNode secNode = rootNode.Nodes.Add(layerType.label); +// List layers = layerType.layers; +// foreach (Layer layer in layers) +// { +// GSOLayer gsoLayer = gsoGlobeControl.Globe.Layers.GetLayerByCaption(layer.layer); +// if (gsoLayer == null) continue;//将不存在的去除 +// TreeNode node = new TreeNode(); +// node.Tag = gsoLayer; +// node.Text = layer.label; +// node.Checked = gsoLayer.Visible; +// if (gsoLayer.Visible) +// { +// secNode.Checked = true; +// rootNode.Checked = true; +// } +// secNode.Nodes.Add(node); +// } +// } +// } +// } - initNode("基础图层"); - initNode("其他"); - } + #endregion - private void FrmLayerControl_Load(object sender, EventArgs e) - { - initTreeView(); - try - { - XmlDocument doc = new XmlDocument(); - doc.Load(Application.StartupPath + "\\双屏设置.xml"); - XmlNodeList Params = doc.SelectNodes("/Params/layers"); +// private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, +// TreeView layerTree) +// { +// try +// { +// for (int i = 0; i < nLayerCount; i++) +// { +// GSOLayer layer = globcontrol.Globe.Layers[i]; +// if (layer == null) continue; +// string layerName = layer.Name; +// TreeNode node = new TreeNode(); +// node.Tag = layer; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = layer.Caption; +// node.Checked = layer.Visible; +// +// bool isContains = false; +// for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) +// { +// if (!layerName.Contains("fttp:")) +// { +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || +// layerName.Contains("施工") || +// layerName.Contains("规划")) continue; +// break; +// case "layerTree2": +// if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[j].Nodes.Add(node); +// isContains = true; +// break; +// } +// else +// { +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); +// isContains = true; +// break; +// } +// } +// switch (layerTree.Name) +// { +// case "layerTree1": +// if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || +// layerName.Contains("标注") || +// isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || +// layerName.Contains("景观") || layerName.Contains("红线")) +// continue; +// break; +// case "layerTree2": +// if (isContains != false || layerName.Contains("tempLgdData2")) +// continue; +// break; +// default: +// break; +// } +// +// layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); +// } +// +// for (int i = 0; i < nTerrainCount; i++) +// { +// GSOTerrain terrain = globcontrol.Globe.Terrains[i]; +// if (terrain == null) continue; +// TreeNode node = new TreeNode(); +// node.Tag = terrain; +// node.ImageIndex = 0; +// node.SelectedImageIndex = 0; +// node.Text = terrain.Caption; +// node.Checked = terrain.Visible; +// switch (layerTree.Name) +// { +// case "layerTree1": +// terrainManagerNode1.Nodes.Add(node); +// break; +// case "layerTree2": +// terrainManagerNode.Nodes.Add(node); +// break; +// default: +// break; +// } +// } +// } +// catch (Exception ex) +// { +// LogError.PublishError(ex); +// } +// } - initTreeNode(Params); - } - catch (Exception ex) - { - LogError.PublishError(ex); - } +// private void initTreeNodeCheckedStatus(TreeView layerTreeView) +// { +// //节点选中状态控制 +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) +// { +// if (node.Checked != true) continue; +// layerTreeView.Nodes[0].Checked = true; +// break; +// } +// +// foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) +// { +// foreach (TreeNode childNode in node.Nodes) +// { +// GSOTerrain layer = childNode.Tag as GSOTerrain; +// if (layer == null || layer.Visible != true) continue; +// node.Checked = true; +// break; +// } +// } +// } - RefreshLayerAndTerrainTree(); - } - - private void addLayerTreeNode(int nLayerCount, int nTerrainCount, GSOGlobeControl globcontrol, - TreeView layerTree) - { - try - { - for (int i = 0; i < nLayerCount; i++) - { - GSOLayer layer = globcontrol.Globe.Layers[i]; - if (layer == null) continue; - string layerName = layer.Name; - TreeNode node = new TreeNode(); - node.Tag = layer; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = layer.Caption; - node.Checked = layer.Visible; - - bool isContains = false; - for (int j = 0; j < layerTree.Nodes[0].Nodes.Count; j++) - { - if (!layerName.Contains("fttp:")) - { - switch (layerTree.Name) - { - case "layerTree1": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim()) || - layerName.Contains("施工") || - layerName.Contains("规划")) continue; - break; - case "layerTree2": - if (!layerName.Contains(layerTree.Nodes[0].Nodes[j].Text.Trim())) continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[j].Nodes.Add(node); - isContains = true; - break; - } - else - { - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 2].Nodes.Add(node); - isContains = true; - break; - } - } - switch (layerTree.Name) - { - case "layerTree1": - if (layerName.Contains("tempLgdData") || layerName.Contains("城市") || - layerName.Contains("标注") || - isContains == true || layerName.Contains("施工") || layerName.Contains("规划") || - layerName.Contains("景观") || layerName.Contains("红线")) - continue; - break; - case "layerTree2": - if (isContains != false || layerName.Contains("tempLgdData2")) - continue; - break; - default: - break; - } - - layerTree.Nodes[0].Nodes[layerTree.Nodes[0].Nodes.Count - 1].Nodes.Add(node); - } - - for (int i = 0; i < nTerrainCount; i++) - { - GSOTerrain terrain = globcontrol.Globe.Terrains[i]; - if (terrain == null) continue; - TreeNode node = new TreeNode(); - node.Tag = terrain; - node.ImageIndex = 0; - node.SelectedImageIndex = 0; - node.Text = terrain.Caption; - node.Checked = terrain.Visible; - switch (layerTree.Name) - { - case "layerTree1": - terrainManagerNode1.Nodes.Add(node); - break; - case "layerTree2": - terrainManagerNode.Nodes.Add(node); - break; - default: - break; - } - } - } - catch (Exception ex) - { - LogError.PublishError(ex); - } - } - - private void initTreeNodeCheckedStatus(TreeView layerTreeView) - { - //节点选中状态控制 - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - - foreach (TreeNode node in layerTreeView.Nodes[0].Nodes) - { - if (node.Checked != true) continue; - layerTreeView.Nodes[0].Checked = true; - break; - } - - foreach (TreeNode node in layerTreeView.Nodes[1].Nodes) - { - foreach (TreeNode childNode in node.Nodes) - { - GSOTerrain layer = childNode.Tag as GSOTerrain; - if (layer == null || layer.Visible != true) continue; - node.Checked = true; - break; - } - } - } - - void exPandTreeNode() - { - layerManagerNode1.Expand(); - terrainManagerNode1.Expand(); - layerManagerNode.Expand(); - terrainManagerNode.Expand(); - } +// void exPandTreeNode() +// { +// layerManagerNode1.Expand(); +// terrainManagerNode1.Expand(); +// layerManagerNode.Expand(); +// terrainManagerNode.Expand(); +// } /// /// 刷新节点树 /// - private void RefreshLayerAndTerrainTree() - { - int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 - int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 - addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); - initTreeNodeCheckedStatus(layerTree1); - - int nLayerCount = globeControl2.Globe.Layers.Count; - int nTerrainCount = globeControl2.Globe.Terrains.Count; - addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); - initTreeNodeCheckedStatus(layerTree2); - - // 展开 - exPandTreeNode(); - } +// private void RefreshLayerAndTerrainTree() +// { +// int nLayerCount1 = globeControl1.Globe.Layers.Count;//图层 +// int nTerrainCount1 = globeControl1.Globe.Terrains.Count;//地形 +// addLayerTreeNode(nLayerCount1, nTerrainCount1, globeControl1, layerTree1); +// initTreeNodeCheckedStatus(layerTree1); +// +// int nLayerCount = globeControl2.Globe.Layers.Count; +// int nTerrainCount = globeControl2.Globe.Terrains.Count; +// addLayerTreeNode(nLayerCount, nTerrainCount, globeControl2, layerTree2); +// initTreeNodeCheckedStatus(layerTree2); +// +// // 展开 +// exPandTreeNode(); +// } /// /// 节点树复选框选中状态改变事件处理 @@ -289,144 +314,132 @@ { if (e.Action != TreeViewAction.Unknown) { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl2.Globe.Refresh(); - } - } + TreeUtils.treeNodeCheckedChange(globeControl2,e.Node); + } + } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree2(e.Node, e.Node.Checked); + private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); } } + + +// private void layerTree2_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl2.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree2(e.Node, e.Node.Checked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl1.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree1(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree1(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl1.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree1(childNode, isChecked); +// } +// } /// /// 改变指定节点的子节点的选中状态 /// /// /// - private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) - { - foreach (TreeNode childNode in parentNode.Nodes) - { - childNode.Checked = isChecked; - GSOLayer layer = childNode.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Tag is GSOTerrain) - { - GSOTerrain feat = childNode.Tag as GSOTerrain; - feat.Visible = isChecked; - globeControl2.Globe.Refresh(); - } - if (childNode.Nodes.Count > 0) - checkChildrenNodeLayertree2(childNode, isChecked); - } - } +// private void checkChildrenNodeLayertree2(TreeNode parentNode, bool isChecked) +// { +// foreach (TreeNode childNode in parentNode.Nodes) +// { +// childNode.Checked = isChecked; +// GSOLayer layer = childNode.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Tag is GSOTerrain) +// { +// GSOTerrain feat = childNode.Tag as GSOTerrain; +// feat.Visible = isChecked; +// globeControl2.Globe.Refresh(); +// } +// if (childNode.Nodes.Count > 0) +// checkChildrenNodeLayertree2(childNode, isChecked); +// } +// } /// /// 节点树选中状态改变事件 /// /// /// - private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Action != TreeViewAction.Unknown) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOTerrain) - { - GSOTerrain feat = e.Node.Tag as GSOTerrain; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } +// private void layerTree1_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Action != TreeViewAction.Unknown) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOTerrain) +// { +// GSOTerrain feat = e.Node.Tag as GSOTerrain; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// checkChildrenNodeLayertree1(e.Node, e.Node.Checked); +// } +// } - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - checkChildrenNodeLayertree1(e.Node, e.Node.Checked); - } - } - /// - /// 改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - /// - /// - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent != null) - { - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } - } } } diff --git a/MainFrm.cs b/MainFrm.cs index d22b2c9..ba3bf31 100644 --- a/MainFrm.cs +++ b/MainFrm.cs @@ -28,10 +28,10 @@ { TreeNode layerManagerNode; bool m_bFullScreen; - + GSOGlobeControl globeControl1; GSOGlobeControl globeControl2; - private GSOHudButton legend;//定义图例 + private GSOHudButton legend; //定义图例 private GSOHudButton btnToolNone; private GSOHudButton btnToolSelect; ToolTip tooltip1; @@ -50,12 +50,12 @@ public bool boolfrmShResult; public bool boolfrmModify; - public static string m_CurrentQueryLayer;//定义当前查询的图层 + public static string m_CurrentQueryLayer; //定义当前查询的图层 //定位和闪烁初始化定义 private EnumDesignMode enumDesignMode; //模拟规划设计模式 - private string trackflag;//定义阀门查询个数 + private string trackflag; //定义阀门查询个数 //记录沿线飞行设置 //int m_nFlyMode = 2; @@ -67,7 +67,7 @@ Double m_dDigPitWidthAlongLine = 6; Boolean m_bDigPitByDepth = true; //选择管线 - int selectState;//wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 + int selectState; //wxl 注释,表示是否已经计算过净距等了,1已计算,0未计算 //private OracleConnection connBackup = null; //数据集合 @@ -89,8 +89,8 @@ //双屏对比 //bool zhanshi=false; Thread t = null; - private GSOHudButton legendSC;//定义图例 - private GSOHudButton legendSG;//定义图例 + private GSOHudButton legendSC; //定义图例 + private GSOHudButton legendSG; //定义图例 //管纵图 private GSOHudButton lendendGZ50; private GSOHudButton lendendGZ36; @@ -102,12 +102,13 @@ GSOGeoPoint3D bsqPT; - FrmYJSHTC frmSh;//一键审核窗口全局变量wxl - FrmWait frmWait;//一键审核等待窗口 + FrmYJSHTC frmSh; //一键审核窗口全局变量wxl + FrmWait frmWait; //一键审核等待窗口 //FrmWait frmWait2 = null;//文档操作等待窗口 float mouseDownX1, mouseDownY1; float mouseDownX2, mouseDownY2; + /// /// /// @@ -164,8 +165,9 @@ RigthMenuSet(); MenuSet(); - + } + /// /// 右屏中添加管纵图片 /// @@ -259,6 +261,7 @@ } #region 区域分析 + if (Utility.userRole.IndexOf("区域分析") < 0) { toolRightMenu.Items.Remove(区域分析ToolStripMenuItem); @@ -278,9 +281,11 @@ 区域分析ToolStripMenuItem.DropDownItems.Remove(无源淹没分析ToolStripMenuItem); } } + #endregion #region 视域分析 + if (Utility.userRole.IndexOf("视域分析") < 0) { toolRightMenu.Items.Remove(视域分析ToolStripMenuItem); @@ -300,9 +305,11 @@ 视域分析ToolStripMenuItem.DropDownItems.Remove(可视包络分析ToolStripMenuItem); } } + #endregion #region 开发分析 + if (Utility.userRole.IndexOf("开挖分析") < 0) { toolRightMenu.Items.Remove(开挖分析ToolStripMenuItem); @@ -334,9 +341,11 @@ 开挖分析ToolStripMenuItem.DropDownItems.Remove(删除隧道ToolStripMenuItem); } } + #endregion #region 拓扑分析 + if (Utility.userRole.IndexOf("拓扑分析") < 0) { toolRightMenu.Items.Remove(拓扑分析ToolStripMenuItem); @@ -372,9 +381,11 @@ 拓扑分析ToolStripMenuItem.DropDownItems.Remove(爆管分析ToolStripMenuItem); } } + #endregion #region 断面分析 + if (Utility.userRole.IndexOf("断面分析") < 0) { toolRightMenu.Items.Remove(断面分析ToolStripMenuItem); @@ -398,9 +409,11 @@ 断面分析ToolStripMenuItem.DropDownItems.Remove(基线剖面分析ToolStripMenuItem); } } + #endregion #region 绘制区域统计 + if (Utility.userRole.IndexOf("绘制区域统计") < 0) { toolRightMenu.Items.Remove(绘制区域统计ToolStripMenuItem); @@ -445,9 +458,11 @@ } } + #endregion #region 全区域统计 + if (Utility.userRole.IndexOf("全区域统计") < 0) { toolRightMenu.Items.Remove(全区域统计ToolStripMenuItem); @@ -492,9 +507,11 @@ } } + #endregion #region 查询 + if (Utility.userRole.IndexOf("查询") < 0) { toolRightMenu.Items.Remove(查询ToolStripMenuItem); @@ -542,9 +559,11 @@ 查询ToolStripMenuItem.DropDownItems.Remove(附属物查询ToolStripMenuItem); } } + #endregion #region 标注 + if (Utility.userRole.IndexOf("标注") < 0) { toolRightMenu.Items.Remove(标注ToolStripMenuItem); @@ -592,9 +611,11 @@ 标注ToolStripMenuItem.DropDownItems.Remove(标注管理ToolStripMenuItem); } } + #endregion #region 飞行 + if (Utility.userRole.IndexOf("飞行") < 0) { toolRightMenu.Items.Remove(飞行ToolStripMenuItem); @@ -618,9 +639,11 @@ 飞行ToolStripMenuItem.DropDownItems.Remove(绕眼睛飞行ToolStripMenuItem); } } + #endregion #region 编辑 + if (Utility.userRole.IndexOf("编辑") < 0) { toolRightMenu.Items.Remove(编辑ToolStripMenuItem); @@ -656,9 +679,11 @@ 编辑ToolStripMenuItem.DropDownItems.Remove(删除模型ToolStripMenuItem); } } + #endregion #region 量算 + if (Utility.userRole.IndexOf("量算") < 0) { toolRightMenu.Items.Remove(量算ToolStripMenuItem); @@ -694,6 +719,7 @@ 量算ToolStripMenuItem.DropDownItems.Remove(地表面积ToolStripMenuItem1); } } + #endregion } @@ -701,6 +727,7 @@ { #region 权限管理 + if (Utility.userRole.IndexOf("权限管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem2); @@ -734,9 +761,11 @@ } } + #endregion #region 基础工具 + if (Utility.userRole.IndexOf("基础工具") < 0) { ribbonControl1.Items.Remove(ribbonTabItem1); @@ -781,37 +810,47 @@ } } + #endregion #region 一键审核 + if (Utility.userRole.IndexOf("一键审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem11); } + #endregion #region 红线审核 + if (Utility.userRole.IndexOf("红线审核") < 0) { ribbonControl1.Items.Remove(ribbonTabItem6); } + #endregion #region 双屏对比 + if (Utility.userRole.IndexOf("双屏对比") < 0) { ribbonControl1.Items.Remove(ribbonTabItem9); } + #endregion #region 文档管理 + if (Utility.userRole.IndexOf("文档管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem4); } + #endregion #region 基础管理 + if (Utility.userRole.IndexOf("基础管理") < 0) { ribbonControl1.Items.Remove(ribbonTabItem14); @@ -841,6 +880,7 @@ } #region Fan Zhang 重构现有代码 + //初始化控件布局 private void initLayout() { @@ -848,37 +888,37 @@ double dsw = SW; if (SW > 1440) { - double myScreen = dsw / 1440; - buttonX1.Width = (int)(buttonX1.Width * myScreen); - buttonX2.Width = (int)(buttonX2.Width * myScreen); - buttonX4.Width = (int)(buttonX4.Width * myScreen); - buttonX5.Width = (int)(buttonX5.Width * myScreen); - buttonX6.Width = (int)(buttonX6.Width * myScreen); - buttonX7.Width = (int)(buttonX8.Width * myScreen); - buttonX8.Width = (int)(buttonX8.Width * myScreen); - buttonX9.Width = (int)(buttonX9.Width * myScreen); - buttonX12.Width = (int)(buttonX12.Width * myScreen); - buttonX14.Width = (int)(buttonX14.Width * myScreen); - buttonX15.Width = (int)(buttonX15.Width * myScreen); - buttonX16.Width = (int)(buttonX16.Width * myScreen); - buttonX17.Width = (int)(buttonX17.Width * myScreen); + double myScreen = dsw/1440; + buttonX1.Width = (int) (buttonX1.Width*myScreen); + buttonX2.Width = (int) (buttonX2.Width*myScreen); + buttonX4.Width = (int) (buttonX4.Width*myScreen); + buttonX5.Width = (int) (buttonX5.Width*myScreen); + buttonX6.Width = (int) (buttonX6.Width*myScreen); + buttonX7.Width = (int) (buttonX8.Width*myScreen); + buttonX8.Width = (int) (buttonX8.Width*myScreen); + buttonX9.Width = (int) (buttonX9.Width*myScreen); + buttonX12.Width = (int) (buttonX12.Width*myScreen); + buttonX14.Width = (int) (buttonX14.Width*myScreen); + buttonX15.Width = (int) (buttonX15.Width*myScreen); + buttonX16.Width = (int) (buttonX16.Width*myScreen); + buttonX17.Width = (int) (buttonX17.Width*myScreen); - labelX1.Width = (int)(labelX1.Width * myScreen); - labelX2.Width = (int)(labelX2.Width * myScreen); - labelX3.Width = (int)(labelX3.Width * myScreen); - labelX6.Width = (int)(labelX6.Width * myScreen); - labelX8.Width = (int)(labelX8.Width * myScreen); - labelX9.Width = (int)(labelX9.Width * myScreen); - labelX12.Width = (int)(labelX12.Width * myScreen); - labelX13.Width = (int)(labelX13.Width * myScreen); - labelX14.Width = (int)(labelX14.Width * myScreen); - labelX16.Width = (int)(labelX16.Width * myScreen); - labelX17.Width = (int)(labelX17.Width * myScreen); - labelX11.Width = (int)(labelX11.Width * myScreen); - labelX19.Width = (int)(labelX19.Width * myScreen); - labelX21.Width = (int)(labelX21.Width * myScreen); - labelX22.Width = (int)(labelX22.Width * myScreen); - labelX24.Width = (int)(labelX24.Width * myScreen); + labelX1.Width = (int) (labelX1.Width*myScreen); + labelX2.Width = (int) (labelX2.Width*myScreen); + labelX3.Width = (int) (labelX3.Width*myScreen); + labelX6.Width = (int) (labelX6.Width*myScreen); + labelX8.Width = (int) (labelX8.Width*myScreen); + labelX9.Width = (int) (labelX9.Width*myScreen); + labelX12.Width = (int) (labelX12.Width*myScreen); + labelX13.Width = (int) (labelX13.Width*myScreen); + labelX14.Width = (int) (labelX14.Width*myScreen); + labelX16.Width = (int) (labelX16.Width*myScreen); + labelX17.Width = (int) (labelX17.Width*myScreen); + labelX11.Width = (int) (labelX11.Width*myScreen); + labelX19.Width = (int) (labelX19.Width*myScreen); + labelX21.Width = (int) (labelX21.Width*myScreen); + labelX22.Width = (int) (labelX22.Width*myScreen); + labelX24.Width = (int) (labelX24.Width*myScreen); } sideBar1.Visible = false; sideBar1.ExpandedPanel = sideBarPanelItem3; @@ -899,7 +939,7 @@ splitContainer1.Panel2Collapsed = true; - buttonItem87.Checked = true;//默认地上模式 + buttonItem87.Checked = true; //默认地上模式 ribbonTabItem1.Select(); //初始化状态为浏览 sideBarPanelItem3.Visible = false; @@ -951,7 +991,7 @@ //图例 legend = new GSOHudButton(); - legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg");//图例P + legend.SetImage(Application.StartupPath + "/Resource/图例P.jpg"); //图例P legend.SetOffset(0, 15); legend.MinOpaque = 1; legend.MaxOpaque = 1; @@ -1002,7 +1042,7 @@ globeControl1.Globe.UserBackgroundColor = Color.White; globeControl1.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl1.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed * 3; + globeControl1.Globe.FlyToPointSpeed = globeControl1.Globe.FlyToPointSpeed*3; globeControl1.Globe.EditSnapObject = true; globeControl1.Globe.IsReleaseMemOutOfView = true; globeControl1.Globe.ControlPanel.Visible = true; @@ -1021,18 +1061,22 @@ globeControl2.Globe.UserBackgroundColor = Color.White; globeControl2.Globe.FlyAlongLineSpeed = m_dFlyAlongLineSpeed; globeControl2.Globe.FlyAlongLineRotateSpeed = m_dFlyAlongLineRotateSpeed; - globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed * 3; + globeControl2.Globe.FlyToPointSpeed = globeControl2.Globe.FlyToPointSpeed*3; globeControl2.Globe.EditSnapObject = true; globeControl2.Globe.IsReleaseMemOutOfView = true; globeControl2.Globe.ControlPanel.Visible = false; - GSOSimplePolygonStyle3D trackingRectStyle = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackingRectStyle = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle as GSOSimplePolygonStyle3D; trackingRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimplePolygonStyle3D trackRectStyle = globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; + GSOSimplePolygonStyle3D trackRectStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle as GSOSimplePolygonStyle3D; trackRectStyle.FillColor = Color.FromArgb(0, 0, 0, 0); - GSOSimpleLineStyle3D trackRectLineStyle = globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle = + globeControl1.Globe.TrackRectTool.PolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle.LineType = EnumLineType.Solid; - GSOSimpleLineStyle3D trackRectLineStyle1 = globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; + GSOSimpleLineStyle3D trackRectLineStyle1 = + globeControl1.Globe.TrackRectTool.TrackingPolygonStyle.OutlineStyle as GSOSimpleLineStyle3D; trackRectLineStyle1.LineType = EnumLineType.Solid; trackRectLineStyle1.LineColor = Color.FromArgb(0, 174, 255); trackRectLineStyle1.LineWidth = 1; @@ -1119,21 +1163,28 @@ globeControl1.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 globeControl2.Globe.ConnectServer(Utility.serverip, Utility.serverport, "", ""); //加载locaServer中的数据 //初始化TreeView + + #region wxl + + initLayerTree(); + + #endregion + // 勾选实测图层 - foreach (TreeNode tn in layerTree.Nodes) - { - if (tn.Nodes.Count <= 0) continue; - if (tn.Text != "实测数据") continue; - tn.Checked = true; - foreach (TreeNode tnChild in tn.Nodes) - { - tnChild.Checked = true; - foreach (TreeNode tnGrandChild in tnChild.Nodes) - { - tnGrandChild.Checked = true; - } - } - } +// foreach (TreeNode tn in layerTree.Nodes) +// { +// if (tn.Nodes.Count <= 0) continue; +// if (tn.Text != "实测数据") continue; +// tn.Checked = true; +// foreach (TreeNode tnChild in tn.Nodes) +// { +// tnChild.Checked = true; +// foreach (TreeNode tnGrandChild in tnChild.Nodes) +// { +// tnGrandChild.Checked = true; +// } +// } +// } } private void doLoadDataForGlobalControl1() @@ -1142,7 +1193,10 @@ { globeControl1.Globe.Layers.MoveDown(10000); //加载实测管线数据 - Utility.dataSource = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, Utility.DBPassword); + Utility.dataSource = + globeControl1.Globe.DataManager.OpenOracleDataSource( + Utility.DBServer.Trim() + "/" + Utility.dbdatabase.Trim(), "", "", Utility.userID, + Utility.DBPassword); if (Utility.dataSource != null) { @@ -1160,7 +1214,9 @@ globeControl1.Globe.Layers.GetLayerByCaption("红线").Visible = false; //globleControl1中加载规划数据 - GSODataSource ghDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", Utility.ghdbuser, Utility.ghdbpwd); + GSODataSource ghDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.ghdbip + "/" + Utility.ghdbname, "", "", + Utility.ghdbuser, Utility.ghdbpwd); if (ghDS != null) { for (int j = 0; j < ghDS.DatasetCount; j++) @@ -1176,13 +1232,16 @@ } //globeControl1,globeControl2中加载施工数据 - GSODataSource sgDS = globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", Utility.sgdbuser, Utility.sgdbpwd); + GSODataSource sgDS = + globeControl1.Globe.DataManager.OpenOracleDataSource(Utility.sgdbip + "/" + Utility.sgdbname, "", "", + Utility.sgdbuser, Utility.sgdbpwd); if (sgDS != null) { for (int m = 0; m < sgDS.DatasetCount; m++) { GSODataset dataset = sgDS.GetDatasetAt(m); - if (dataset != null && !dataset.Caption.Contains("SH") && Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) + if (dataset != null && !dataset.Caption.Contains("SH") && + Utility.dictionaryNetLayerNameAndCaption.ContainsKey(dataset.Caption)) { dataset.Caption = dataset.Name; globeControl1.Globe.Layers.Add(dataset); @@ -1196,12 +1255,12 @@ // LoadDataForGlobalControl ss = connectServer; // ss(); - + this.Invoke((EventHandler) delegate { connectServer(); }); - + } catch (Exception ex) @@ -1212,6 +1271,7 @@ private void initLayerTree() { + layerTree.Nodes.Clear(); //加载临时图层节点 layerManagerNode = new TreeNode(); layerManagerNode.ImageIndex = 0; @@ -1220,59 +1280,60 @@ layerManagerNode.Text = "临时图层"; layerTree.Nodes.Add(layerManagerNode); - XmlDocument doc = new XmlDocument(); - doc.Load(Utility.filename); - XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); - - foreach (XmlNode xmlLayerNode in xmlLayerNodes) - { - - //TODO LIST:创建一级TreeNode(实测、规划、施工) - TreeNode nodelayer = new TreeNode(); - string layerName = xmlLayerNode.Attributes["label"].Value; - nodelayer.Text = layerName; - nodelayer.Checked = false; - layerTree.Nodes.Add(nodelayer); - - XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; - foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) - { - //TODO LIST:创建二级TreeNode节点 - TreeNode secondLevelNode = new TreeNode(); - string layerType = xmlChildLayerNode.Attributes["label"].Value; - secondLevelNode.Text = layerType; - - if (xmlChildLayerNode.Attributes["type"] != null) - { //道路图层特殊处理 - string type = xmlChildLayerNode.Attributes["type"].Value; - secondLevelNode.Tag = type + "|" + layerType; - } - else - { - secondLevelNode.Tag = layerType; - } - secondLevelNode.Checked = false; - nodelayer.Nodes.Add(secondLevelNode); - - XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; - - foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) - { - //TODO LIST:创建三级图层节点 - TreeNode layerNode = new TreeNode(); - string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; - string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; - string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; - - layerNode.Text = actutallyLabelName; - layerNode.Tag = layerType + "|" + actutallyLabelName; - layerNode.Checked = false; - secondLevelNode.Nodes.Add(layerNode); - } - - } - - } + TreeUtils.initTree(globeControl1, layerTree, null); +// XmlDocument doc = new XmlDocument(); +// doc.Load(Utility.filename); +// XmlNodeList xmlLayerNodes = doc.SelectNodes("//layer"); +// +// foreach (XmlNode xmlLayerNode in xmlLayerNodes) +// { +// +// //TODO LIST:创建一级TreeNode(实测、规划、施工) +// TreeNode nodelayer = new TreeNode(); +// string layerName = xmlLayerNode.Attributes["label"].Value; +// nodelayer.Text = layerName; +// nodelayer.Checked = false; +// layerTree.Nodes.Add(nodelayer); +// +// XmlNodeList xmlChildLayerNodes = xmlLayerNode.ChildNodes; +// foreach (XmlNode xmlChildLayerNode in xmlChildLayerNodes) +// { +// //TODO LIST:创建二级TreeNode节点 +// TreeNode secondLevelNode = new TreeNode(); +// string layerType = xmlChildLayerNode.Attributes["label"].Value; +// secondLevelNode.Text = layerType; +// +// if (xmlChildLayerNode.Attributes["type"] != null) +// { //道路图层特殊处理 +// string type = xmlChildLayerNode.Attributes["type"].Value; +// secondLevelNode.Tag = type + "|" + layerType; +// } +// else +// { +// secondLevelNode.Tag = layerType; +// } +// secondLevelNode.Checked = false; +// nodelayer.Nodes.Add(secondLevelNode); +// +// XmlNodeList xmlActitualLayerNodes = xmlChildLayerNode.ChildNodes; +// +// foreach (XmlNode xmlActitualLayerNode in xmlActitualLayerNodes) +// { +// //TODO LIST:创建三级图层节点 +// TreeNode layerNode = new TreeNode(); +// string actutallylayerType = xmlActitualLayerNode.Attributes["type"].Value; +// string actutallylayerName = xmlActitualLayerNode.Attributes["layer"].Value; +// string actutallyLabelName = xmlActitualLayerNode.Attributes["label"].Value; +// +// layerNode.Text = actutallyLabelName; +// layerNode.Tag = layerType + "|" + actutallyLabelName; +// layerNode.Checked = false; +// secondLevelNode.Nodes.Add(layerNode); +// } +// +// } +// +// } } @@ -1298,7 +1359,8 @@ for (int i = 0; i < markerStrs.Length; i++) { if (!File.Exists(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd")) continue; - GSOLayer markerLayer = globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); + GSOLayer markerLayer = + globeControl1.Globe.Layers.Add(Application.StartupPath + "\\标注管理\\" + markerStrs[i] + ".lgd"); if (markerLayer == null) continue; TreeNode node1 = new TreeNode(); node1.Text = markerLayer.Caption; @@ -1314,7 +1376,7 @@ { initGlobalControl(); //initGlobalMap(); - initLayerTree(); +// initLayerTree(); initMarkerTree(); initLayout(); loadData(); @@ -1383,7 +1445,7 @@ tempnode.Checked = node.Checked ? feature.Visible : false; tempnode.Tag = feature; node.Nodes.Add(tempnode); - GSOFeatureFolder featureFolder = (GSOFeatureFolder)feature; + GSOFeatureFolder featureFolder = (GSOFeatureFolder) feature; VisitFeature3Ds(featureFolder.Features, tempnode); } else @@ -1444,7 +1506,7 @@ /// Boolean CheckDatasetGeoReference(GSODataset dataset, string strDataPath) { - + if (dataset.GeoReferenceType != EnumGeoReferenceType.Flat) return true; Boolean bSuccess = false; if (MessageBox.Show("数据没有空间参考信息,请设置空间参考信息!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) != @@ -1498,7 +1560,7 @@ dlg.Filter = "输出JPEG(*.jpg)|*.jpg|输出PNG(*.png)|*.png|输出BMP(*.bmp)|*.bmp|输出BMP(*.gif)|*.gif"; if (dlg.ShowDialog() == DialogResult.OK) { - string extension = Path.GetExtension(dlg.FileName);//扩展名 + string extension = Path.GetExtension(dlg.FileName); //扩展名 switch (extension) { case ".jpg": @@ -1520,6 +1582,7 @@ globeControl1.Globe.Action = EnumAction3D.ActionNull; globeControl1.Globe.MouseRoamingEnable = true; } + /// /// 定位正北正90度俯视 /// @@ -1573,100 +1636,112 @@ break; } } + + #region wxl 重构树形结构代码 + + private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) + { + if (e.Action != TreeViewAction.Unknown) + { + TreeUtils.treeNodeCheckedChange(globeControl1, e.Node); + } + } + + #endregion /// - /// layerTree选中后事件处理 + /// layerTree选中后事件处理 /// /// /// - private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) - { - if (e.Node.Tag != null) - { - if (e.Node.Tag.ToString().Contains("|")) - { - string nodeTag = e.Node.Tag.ToString().Split('|')[1]; - GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); - if (layer != null) - { - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - if (e.Node.Tag is GSOLayer) - { - GSOLayer layer = e.Node.Tag as GSOLayer; - layer.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - if (e.Node.Tag is GSOFeature) - { - if (e.Node.Nodes.Count == 0) - { - GSOFeature feat = e.Node.Tag as GSOFeature; - feat.Visible = e.Node.Checked; - globeControl1.Globe.Refresh(); - } - } - } - CheckControl(e); - } +// private void layerTree_AfterCheck(object sender, TreeViewEventArgs e) +// { +// if (e.Node.Tag != null) +// { +// if (e.Node.Tag.ToString().Contains("|")) +// { +// string nodeTag = e.Node.Tag.ToString().Split('|')[1]; +// GSOLayer layer = globeControl1.Globe.Layers.GetLayerByCaption(nodeTag); +// if (layer != null) +// { +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// if (e.Node.Tag is GSOLayer) +// { +// GSOLayer layer = e.Node.Tag as GSOLayer; +// layer.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// if (e.Node.Tag is GSOFeature) +// { +// if (e.Node.Nodes.Count == 0) +// { +// GSOFeature feat = e.Node.Tag as GSOFeature; +// feat.Visible = e.Node.Checked; +// globeControl1.Globe.Refresh(); +// } +// } +// } +// CheckControl(e); +// } /// /// 树节点选中方法 /// /// - private void CheckControl(TreeViewEventArgs e) - { - if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; - CheckParentNode(e.Node); - if (e.Node.Nodes.Count > 0) - { - CheckAllChildNodes(e.Node, e.Node.Checked); - } - } +// private void CheckControl(TreeViewEventArgs e) +// { +// if (e.Action == TreeViewAction.Unknown||e.Node == null || Convert.IsDBNull(e.Node)) return; +// CheckParentNode(e.Node); +// if (e.Node.Nodes.Count > 0) +// { +// CheckAllChildNodes(e.Node, e.Node.Checked); +// } +// } /// /// 改变所有子节点的状态 /// /// /// - private void CheckAllChildNodes(TreeNode pn, bool IsChecked) - { - foreach (TreeNode tn in pn.Nodes) - { - tn.Checked = IsChecked; - - if (tn.Nodes.Count > 0) - { - CheckAllChildNodes(tn, IsChecked); - } - } - } +// private void CheckAllChildNodes(TreeNode pn, bool IsChecked) +// { +// foreach (TreeNode tn in pn.Nodes) +// { +// tn.Checked = IsChecked; +// +// if (tn.Nodes.Count > 0) +// { +// CheckAllChildNodes(tn, IsChecked); +// } +// } +// } //改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 - private void CheckParentNode(TreeNode curNode) - { - bool bChecked = false; - - if (curNode.Parent == null) return; - foreach (TreeNode node in curNode.Parent.Nodes) - { - if (node.Checked) - { - bChecked = true; - break; - } - } - - if (bChecked) - { - curNode.Parent.Checked = true; - CheckParentNode(curNode.Parent); - } - else - { - curNode.Parent.Checked = false; - CheckParentNode(curNode.Parent); - } - } +// private void CheckParentNode(TreeNode curNode) +// { +// bool bChecked = false; +// +// if (curNode.Parent == null) return; +// foreach (TreeNode node in curNode.Parent.Nodes) +// { +// if (node.Checked) +// { +// bChecked = true; +// break; +// } +// } +// +// if (bChecked) +// { +// curNode.Parent.Checked = true; +// CheckParentNode(curNode.Parent); +// } +// else +// { +// curNode.Parent.Checked = false; +// CheckParentNode(curNode.Parent); +// } +// } private void layerTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { diff --git a/MainFrm.designer.cs b/MainFrm.designer.cs index a9b8c6f..1f9c1f5 100644 --- a/MainFrm.designer.cs +++ b/MainFrm.designer.cs @@ -2283,12 +2283,12 @@ // this.ribbonControl1.BackgroundStyle.Class = ""; this.ribbonControl1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square; + this.ribbonControl1.Controls.Add(this.ribbonPanel15); this.ribbonControl1.Controls.Add(this.ribbonPanel6); this.ribbonControl1.Controls.Add(this.ribbonPanel4); this.ribbonControl1.Controls.Add(this.ribbonPanel12); this.ribbonControl1.Controls.Add(this.ribbonPanel5); this.ribbonControl1.Controls.Add(this.ribbonPanel2); - this.ribbonControl1.Controls.Add(this.ribbonPanel15); this.ribbonControl1.Controls.Add(this.ribbonPanel1); this.ribbonControl1.Dock = System.Windows.Forms.DockStyle.Top; this.ribbonControl1.ImeMode = System.Windows.Forms.ImeMode.NoControl; @@ -2356,6 +2356,7 @@ this.ribbonPanel6.StyleMouseOver.Class = ""; this.ribbonPanel6.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel6.TabIndex = 38; + this.ribbonPanel6.Visible = false; // // ribbonBar6 // @@ -2945,7 +2946,6 @@ this.ribbonPanel15.StyleMouseOver.Class = ""; this.ribbonPanel15.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square; this.ribbonPanel15.TabIndex = 35; - this.ribbonPanel15.Visible = false; // // ribbonBar20 // @@ -4465,7 +4465,6 @@ // ribbonTabItem9 // this.ribbonTabItem9.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; - this.ribbonTabItem9.Checked = true; this.ribbonTabItem9.HoverImage = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem9.HoverImage"))); this.ribbonTabItem9.Image = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem9.Image"))); this.ribbonTabItem9.Name = "ribbonTabItem9"; @@ -4486,6 +4485,7 @@ // ribbonTabItem14 // this.ribbonTabItem14.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.ImageAndText; + this.ribbonTabItem14.Checked = true; this.ribbonTabItem14.HoverImage = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem14.HoverImage"))); this.ribbonTabItem14.Image = ((System.Drawing.Image)(resources.GetObject("ribbonTabItem14.Image"))); this.ribbonTabItem14.Name = "ribbonTabItem14"; @@ -5480,7 +5480,7 @@ this.dataGridViewX2.ReadOnly = true; this.dataGridViewX2.RowHeadersVisible = false; this.dataGridViewX2.RowTemplate.Height = 23; - this.dataGridViewX2.Size = new System.Drawing.Size(23359, 92); + this.dataGridViewX2.Size = new System.Drawing.Size(23656, 92); this.dataGridViewX2.TabIndex = 11; // // dataGridViewTextBoxColumn10 @@ -5574,7 +5574,7 @@ this.dataGridViewX3.ReadOnly = true; this.dataGridViewX3.RowHeadersVisible = false; this.dataGridViewX3.RowTemplate.Height = 23; - this.dataGridViewX3.Size = new System.Drawing.Size(23358, 127); + this.dataGridViewX3.Size = new System.Drawing.Size(23655, 127); this.dataGridViewX3.TabIndex = 5; this.dataGridViewX3.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewX3_MouseDoubleClick); // @@ -5832,7 +5832,7 @@ this.dataGridViewX8.ReadOnly = true; this.dataGridViewX8.RowHeadersVisible = false; this.dataGridViewX8.RowTemplate.Height = 23; - this.dataGridViewX8.Size = new System.Drawing.Size(133, 92); + this.dataGridViewX8.Size = new System.Drawing.Size(116, 92); this.dataGridViewX8.TabIndex = 11; // // dataGridViewTextBoxColumn12 @@ -5927,7 +5927,7 @@ this.dataGridViewX9.ReadOnly = true; this.dataGridViewX9.RowHeadersVisible = false; this.dataGridViewX9.RowTemplate.Height = 23; - this.dataGridViewX9.Size = new System.Drawing.Size(132, 127); + this.dataGridViewX9.Size = new System.Drawing.Size(115, 127); this.dataGridViewX9.TabIndex = 5; this.dataGridViewX9.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.dataGridViewX9_MouseDoubleClick); // diff --git a/MainFrm.resx b/MainFrm.resx index b408d34..61fa81b 100644 --- a/MainFrm.resx +++ b/MainFrm.resx @@ -351,804 +351,6 @@ 766, 54 - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlDMzFEOUI4NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 - NEI4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlDMzFEOUI3NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 - NEI4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDk5Mzk2NTZBRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz73sIMwAAADIElEQVRIS7WVa0iTYRTH56Uiysvm3TkvpLl5DRIvQYWVWl+6 - iNEVg0yhQqloQZHkLT+Y0YdAs75IpEUhzERZoZhsRpZlS7soblotsRwoxhqWeTrnYZtv+u7NsB74cZ5z - zv89/z17HzYRAPxXeIv/EpFXcOyi4BvKhfehv4FvKBfeh+ayqIUDlIgBgT8whpRYoT2fhgvNVJKBQT9s - hB8/QZDPpnEIjEhg0J5Pw4Vm0mwygG9T06BSqQQhTUhUMoRGpyxYT7OZwfhXC6jVakFIYzNYqN5uMGKa - BI1GIwhpghXJaJJi13d0dEB2bj74hsWzSDlXbzfQG02g0+kEIU2wIomdovzKdVifngnFFytBeb4cLN+n - WaSc6hfKKqB/eHTWoHfwExgMBkFII5MnQUD4WlAWloO26wVs35MDmifPmQFFyqlO/aKKqlmDp31DYDKZ - BCGNTJ4IPqHx8LJvACbNUw7p6e2HuJQMNIhhBuaHj3vBYrEI0tb1BoIiE9kJ9h7Oh7EJM+g/jEJuwVlY - s24ri5RTnfo5BedAIoueIYPumvomuHzjzm9cq2uCq7UNUH2rEarr7kNd0yP26Y+eKoSWtk4wfpmAg7kn - ITY5DUorq1g8cOQEqze3aplOEhRtJoMcL1mMTixV9IgD5a/tSBVDYql8AKOBQLEJtTP08gY/jjFiktKg - 5FIV21Ok3NazvmR2AvrFkCAJyGYk1comZAuHDM/AyLvHThfBveZ26NOPwI59eey7LsbhFCmnOvVJ5+Ef - rrYZLEU8EZ85+HLwW7ZCLMVTFWdkHoLut+/hgbYHaE9XN31XNsupTrWV3jKVs+uS3cyAD0cLe331jW3Q - qRt0CPUlQVHDKI+fN9iGo4W90uNnyuA2vvRtWTlQgxeg/dk7FimnOvU9/CNqUe47b7ANRwt7AfjpKvAK - Gt18Qur35ymhRfsKKLr5hN7EyzDq7humWrrcfSfKxbz/QlwcLDck1snZJdUzYHUDmk57+K1qdXJyzsL6 - RmQD9ZmObygXB8sVIRO6fXQB4hC6eRQppzr1XXmHclnAckFomLc1Um5dItEvhZ97MQXP9N0AAAAASUVO - RK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjhDMTdBQjRENEFBRTExRTQ4QjQyODY0MDNBNTJE - NzNCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhDMTdBQjRDNEFBRTExRTQ4QjQyODY0MDNBNTJE - NzNCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUQyMjc4QTlBQjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4eHsDfAAAB00lEQVRIS7XVWytEURQH8HniTTNHLs0NCXNcXjTN5dH9g/gM - 3jx590QhFDJS0gyTGmpqaqJIMW4hzlAoOaWISS7LWifntI3ddnTGrl92e/57/We/DBsA/CvuYSHZSr0t - lvCGsriX/oI3lMW9lM/SwgF9SEHwizs08IX2vAyLZvZRgXJ+cQWv7yB0q96Ds86voT0vw6KZNJsK4Pnl - DWKxmBBlqhpDUN0UNp2n2VrB/WMOEomEEGX0ArN5o+BGfYB0Oi1EGa8cwpKw6bxRcH6lQiaTEaKMVw5q - rzCbNwr2z65BURQhynh8Qe0VZvNGwdZBFlRVFaKMxxfQXmE2rxc8rW3sQy6XE0puHoG7IaC9YnV9j5th - pbZPqOCDCrbH5uIwOD7/zWgkDkNTizAyuwQjkWWIxFNQWduqmVxI/MiPz6/A8HTUuDMTTYLkbrqhgt5S - T3PG4ZJ3HE7focElZx0u3yn+VQiG1ZLymmm7s74f88f42S6bl9zyJZ6d6Xckd+Mt5ieogH4xJORHHajt - SzvqZPSgECpHZSiA2DztuxBlad+NgnpBEbIjusiiYboKRF+kGFHegUR5ImkFv7G0eAPzWVq8gfksLd5/ - oULiHhYS97BwwPYJlSCUgVubViQAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJEMDQyOEZBNEFEMjExRTRBN0MxRDBCNzJGRUND - MDEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMDQyOEY5NEFEMjExRTRBN0MxRDBCNzJGRUND - MDEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkRDRkI1RDVEMTRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz59jfe3AAAEbUlEQVRIS8WTeUybZRzHF48/pnFOuQRajkFLgQFb5iRLNJr4 - l/EPgsniUI4xZDAY1zyxwApsMJyIME61rByl3DfoYGBrgbWUY06FcZSCha4rQ8jYxkqPr2/fvkv8o2Sg - S/wkT970eb6/T5/39z7Prv8dt/Oql4mR4HZJ3ccoXFxhVCzB9DT9JueJdSq6c1wzVZFupepVzxu34XVj - CaEDi1jX6hF8ZQoeokl4iBVwzV9YdU1XRlIl28eVo8phCdXwGltEeOUsro6psaHVwcSDh5volc4iOO8X - 7KuVwb1hEi7J8myq9PEQO//I85oafr0KtEpUpNSETm+AwWDAvfv3YTQaybnm/t/AyO6Ga+UonJOnIijF - 1hA9tWI2qle9RxcI+RIpmZpTIfBULhIyyqHVahHPKcN70TmYnFFCp9OhqXcc9KwW0DOHVl3YU1aUyjJu - F1SpfhO3EM6bMMsVt+D8Zhz2HIpC4oU6bG5uIu4cD3tfTwAjIBNypQYbGxsISquBU34PaDHiVEplGXee - SuIjVaBv3Lz7gJg8vHg4FlZvc+ATVoLipiHsD8qCXWAO7IPK8MG5FjLXKboOeoYADkldUkplGWb7vOb4 - 4BzxIXXQE/1m59WDXdgBvxPfwz6UC4eQUth/WIBDZ2qQXj+K7IYRImeE5s5fOFrcDPvPapcJzVNmmwVY - VxWG9U09uau1tTVymPpc0iYFLew7OEUJ4BwtALfvJpl5xMrKCu6s3cUrn5YbCM1us80CrJZZVWjXr7j3 - 4CE0y8v4IrcaH+cK4Bv+DRyPl8ApphYuia3wZ3eCUzOA1PIfcVuzjHnlIgK/vgy7mHzTG+w12yzA5E53 - edYPo1c2i/X1dQTEfwvbwDQ4hhXg8OcN4P48Df+UTrgkNIAeW4Hg3Hbo9Xq0iGSgs4ls5CUhoXnObLOA - S8pkhG/bdZzgDZJnffT3GXieLAA9XgB2/RjZjuQqMWhxfBw824H55XWyhcfy+HDNqoB1SH4Codn6G7iw - p3d78EaVPlXX0CaZgkqlgly1gpCiK0htHCH/IL6oFcEF3ZjT3CUvXqv0DzDSS0FPq1a/8EbYS5Rqa+if - SAJ8KoeNR7gitEsnoVQqSbGOkJmYX1ggxaY70SabwIGMUrjn8I3WIXnBRPnWu/8nDnE9Sd7cAaP/ZSES - 6/rRKJRArpiHXC7HzekZNIukiCyrhW9mGZgXa4w2kUVnibJnzdXbxP5URzyDO4QjxGl5i9uNpMZeKP5U - IrywAq9yCnGAOGGMonbYxpVnEPGdyR9BO/MTj8kfgXeNFPt5IngVtoF1kQ9WcTs8qgfgmNreQMS21xZL - 0E6Ln6ef75tg8sfgXT8O77oReAkkYNXJ4PRV/4ztyfo9VPTf4xjdf9CpQKzdxxuGe6UMbhXEmc8V6mze - r3qNivx3HGN7UmglQ6CVDMIxXwybo5UcaunJQD8te9rhyx4JrWwItlGNUut3y5+hlp4cDhFCpl14k9jq - nR+Y1NTjIe7NlmMnWKoHsOtvjWYcKpheqFQAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERTg4QTFENEQyMjExRTRBODEyODk0M0RBMTc5 - Qjg3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERTg4QTFDNEQyMjExRTRBODEyODk0M0RBMTc5 - Qjg3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjJGOUEyRDEyMTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6wJF34AAACl0lEQVRIS62Vy08TURSH73/QhQtXVnBhxEcMiUkhbEg0hB1R - Q1i68C8wIW5cEqMLN7ho2Ji4YiEhWq0prYUhfULbadN3obTaChobtZEUsFY9nnPS6WM6HYowyZf87j33 - nG/amaai9geOBYA+4pTxihmBE8DcTQB4J8em/9IwSQyagmrtL+z9rMFmvnhkKvtV7tcVHPz6DVsftulA - AckdhUg8zf19eoLKAd597iMLMItewfOxUDTN/bqCH3tVSG8VWIBZ9AoJApEk9+sKvu/uQ2IjzwJkGtH8 - OrTwy3Hu77vIAnV9mgWlcgWiqRwLjAMmkOMbPbNTKnN/JJntqJGEBZ++7oKcyLLgLN4JrU8Cms2C4pcy - BKKZumCI18temQ/8DzSLZlBmQX7nG/jCKdpgAa0driCtY5iFHuqHSjNoFtaags1iCdzBBG+QgNY2aZ0F - mIUe6osENAtrTUEq/7kDq9PHAszU5yYoq9f1i9cUSCD5ozxDEeTsrhAoONwyxLLb8MrhYQFmZYCHsnpd - v3hNgQROb5hnKIK29944MAThTBEWbS4WYBZ6qC/sKSy5ZJ6BGUQg8b4Bbhjod4AZXlhXWdBa10LrIVul - AM9ggS+aa6AIMMO8ZYUO0KeyIOMtZyaQpXpNi4LFucYzMINwhbMNcMNw5oIJMMNKIA0LNg88mZuH/ssj - dPgBMnN+cBRmny1wrRtSMMMzWCCFMg0UAeY2Fh0+GL5xG8Zu3oHXUrCj3g0WONdTbeBm21/o1N17gPtg - 98Xh3VoS3qzKMDI22agfglnY/Uld8NDc/ZlZwAwvl4Ngun6LGh8rdfVDViNs3rguOOzq6XOD8PDpc7g2 - OkHDH7XWtYa2It66Y4eCQ8cRfpvUNa2hTUD8A6JMaBvCyTdJAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERjY3MEZENEQyMzExRTRCNDlGQUMwMzk0OTAw - Qzc4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERjY3MEZDNEQyMzExRTRCNDlGQUMwMzk0OTAw - Qzc4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhGOUEyRDEyMTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6GKmpFAAAC+UlEQVRIS63T20vTYRzH8Yforj/Ei24UiSgKIygKi8oyxZQo - cvNYeXaesmzqPGu2POd0ulSsnIdaurTSTJ3O6UxTPGya5vCQx5AuPn39RbHop7nZxQt+z3ie93e/Z4w1 - p7nsCoBt8R6yBF/UHPv+Wb0rfFFzm99CRIwEW1gnqXzxTXxRc0ydctm4OlID2sxrw6iCtiwItC+A2P/D - frLnjwGNSZdMq6N1WOvLwFpP4l/WdRlY6Jaio9Ab7QXba8sVoDHZGdT8PYS9THDqMGnLsKpNw0qXGCua - BO55VZdNQ6U/DRRibVCGb+N1pH5bukoRqHmDHOIG1N8/X2F4I8WyNhtf2+9hqSsZxqZ4upbb6HsSZLHO - Im90ym6hNVcIaktYTexZyUelGEvaHMy/jcFiZxo0xX5Y7ivGcn8JkVmA9uvlWBmqwpJeAWovs+poR99O - eRgWtQWYVUdgrj0FH+i+F3XF3NoappZYGJrEoLaOVYpOOTY/FGJB+xjTqnDMtMTTAC/Ma/Ix/TLUKl9e - x0JfFQpql7PykBP7lWIXzPeUYLIhHCPKCLr/AMy2ZsKoDLTKdNNdvM8TgNpRTBZwfJ885CTmaIChPhwa - mS+GnkdhqjEWY9X+VplqvIMXEhdQ24mZeuSs0N/BNNWWj4k6EdSZHhhXxWH0aSCGFd4c4Tk7zk7XBlUM - FKLToK4Nm+0qYnneRzqGGiSYaIiiyZdhVCdgqFSIwRJPjucZW85O1pvnRmvDkO9zFNTdy2Y6HjGp4HCF - 5kk4xhoiURd/EROv4tBfeM0qAyUC9Mp9QM0+7o829T6LZV0/mNycS6+nFKFWfAGj9ZHozfGwil7miZYH - 7qCmghsw+S6VpV894KuUuKFbfhNNqa749CwY3dm0toK+VABl3HlQM5obYHybwFLc7W1y/Y5BlX6FfgNn - DNcEY0DhZZX+MiGKbh0DNR24AYYWMSfJzc6GZBApwS5skIzNODcg0dV2V36FtsJ7yBJ8UXO8hyzBFzXH - ++H/A/YDv9/V87iOlrYAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 - RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL - ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH - s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW - uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx - xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd - iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ - qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW - GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE - NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n - KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw - qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI - HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq - wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q - 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA3MTZBNTkzNEEwMjExRTRBQjdERDhBQkEzMDEx - MzZEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTZBNTkyNEEwMjExRTRBQjdERDhBQkEzMDEx - MzZEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTgxNjM4Q0YwMTRBRTQxMTk2M0JC - NEQ0MzNCOUIxQzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - 0HWhD93n++Dbua+fK9NvoTM5+Udx5mye9NjgCZNf0HEnpN5U5RbPa9+0bdfQ+0eOPzp5ppvG96JfjFkM - nXR/vOP0ePOu/deyCuf8JVSorJny7HQdvR9MTCUm+fUYgyehazLBVCCd8ttpJbQANtO3cDjWbO9werzd - ruK5F9Ld3p7YBEdHCE/WMi0s0jf5mefm0e+ZCsXEf85i/98XsP4NaTpxka74X+IAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBREU3RDk2NEFCMDExRTQ4OUM5QjZFOENGQzJF - MDk1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBREU3RDk1NEFCMDExRTQ4OUM5QjZFOENGQzJF - MDk1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEM5Mzk2NTZBRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz52g1XsAAADeUlEQVRIS62Va0hTYRiAXzVNoQs6oUCttJu3aqatrLxr2k0n - W6bLLlLSxTKCKLoQQUg3IbLMflSgBRGRP7JSSzGnWalYdpnV1MQu1tBWWklqvr3fp2dsOytSfOFh3/l2 - eJ7tnDMGkkmzGCqigsARhPlUQqCi8nEd9v7GEYP5mFcI4K/e/hGHeQ2B7p4+1HV8Nf6Kw4a5GGxtCHzv - 7sU2nR4lbr4/AUBFKIeD4GKYBL79+IX6rm622U8nSgnX4SC4GCaBL50/OXwTwIUY1ohcQkCn/84ZDLBP - I5p16TBl7XYIoaXVwI54RC4h8LG9k/OvQPIOmEZUJW2F+XRoPbBrOiKXEGj9rOdYCqi2gxXhnLQNIo6f - n9tEa7ViI79PoojIJQSaP3RwjAOJaSAjjhL3N+9zrD+W499UVJnSeeVmWDvtlcWlgCedZnK5RC4h8KZV - x2FryQSYmrAVjh/MnP46/57yS7VmZ9+zxr1Yr92NtQ1pWFmfiBevL9QpUqE0JhHcyWuImLsMAU1zG4et - V6yHC1l5oe+evNmD1ZoteL9OgaW1K7GkRoF3H8ZigTocb5bFY8bZWbpoFVwh7yiCR8xdhsAz7XuOh9QD - D2R6twyIEzG/JApz88N7z+T5d+VcDezKL43Ea4UxeCjTqyNUDpUBYeBFXjvjgOAyCdS9asXDJ3NQFj3u - 7eWCyG/FjxR45OyMr6s3S1qCYqE8RA654Uq4dOiUV/v+E9P0i1ZA9Zwg8COnA2HyDZiLYRw4dyAjC50n - z8awBBvNbbWyZ+8x10+By+GONARCbe1gDBPJloCvfKODluQ10mD+qDK5LWFyD6pfvOUYBzydXL0v2I+V - rI9Mhud5BQE9i+RQPt2P30BBYrM4HmYSNf5REGS0b5CzYdKq+iaOITA44wmPiLXwaFfGhDbZMkinYxNJ - 8CpwXxgHobQcPbhv8XegrtNyzAPsOtqHJUPeml1jm/1jYDkdM5G5hB3bDL6KhknLal9xzAN8gpMgVZHm - oKUAuwx29H420c9O/l9KHms4bC0KLFCAY6CSHr+VoHJy88lWbEjHoqoXWPzw5ZCxGKCxkslBLo22L1+6 - ahPeUj/FwgfPh8zpSzfQ0cWrwVKAjfXcWFjjPm9isWSSbx/7JEPF0cWzcYzE7dTfAmysfSLB2z0Awm1H - 8ycnjrD4N/kX4gEg8A9sAFSe4VuPvgAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzN0Y5NjgxNEE5MDExRTRBMzU1RUM1MkVEQTU3 - REQxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzN0Y5NjgwNEE5MDExRTRBMzU1RUM1MkVEQTU3 - REQxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUU1QUVCQUI4RjRBRTQxMUI2QTlC - RjEwMkVGQzEyNEEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4Oz1B+AAABO0lEQVRIS7WUP0sDQRDFt0snIcEiklhGJLH3k6bNp0ifYCUo - KWwMIRCx0EYxEEL+IOPO4SxzczN7d7gGfuzd7Hszd9nHOQD4V9RiStRiStQi0b68GXkgwkjzcdQigU1O - 32CC+9IjUYsENvjY7EySDHhev5skGXA3X5r8aYA3lx0wET1otYgmNMcOku+jXtMg4QJFJMb1a7uPmjUd - rVzHDfDy9pmJaZViCe5rPq7hYpgvXjPw2hNtTqBOevk+F8L0YRGQQosyHxfSf0jUegPLZwkrNedYfi6o - 9Y2RWP6cACPHYnf4XauQablfHYAxo6jt9sfwRGWgVvrVASKmdd7g2OoN4P5pVYhqbgCPmnPuzHPtua1C - s9OHyeyxEFU+IJcCb2p4zj3dKjQvrsat3jD4CwNCIcEv14/fpAfcDwXsled4Tu6+AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlGMEQ1RDBCNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 - MzBCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlGMEQ1RDBBNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 - MzBCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzFDMDRERTRENjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6zemTaAAABh0lEQVRIS7WUvUoDQRSFEwiBKPEHsRAkb+ArWIsv4CNYCSKI - jRD8a1S0m9QhdTobG5uARZogBJSkiLASFJJChQiRcJ2z2bnMZtbxCnrhY3YO556z1aSI6F9JFP+SRBEs - FFaUhoSopAyQKGIBi58jEuErcQSAhY/hyP5DL8Y7mQMcAcD8Phh+u2Tzk9cRAMz914G4wOd1BABzt/cm - LvB5HQHA3On2xQU+ryMAmB8en8UFPq8jAJjvWk/iAp/XEQDM9WZHXODzOgKAudZoiwt8XkcAMN/U78Ml - CcY7mQMcAWhz+FRc3zZFREXypwKYEiG/e+ykc1WYVRrCGUk8nGUHsyic6nKeetUK4dTESjjLDjZUlqaV - hiS8lEsh0Z1LTFYs2FBazFFwcUzB+YE+T8bffD+i4LRIwSV0jdZaO5vhHXtRPmfFgg1n81mlIQnt/W1q - bKyH34dz2XKUz1mxYBaFU5zJUG1tlXDu5TMcjuEsO5hF4exOpZWGtnLpWDiGs+xgFv9gxlmU+gIVyyIX - YCSg/AAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVGNUQ0RjNENEQyRDExRTRBQ0ZFOEVGNkU4Rjcw - RkEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVGNUQ0RjNDNEQyRDExRTRBQ0ZFOEVGNkU4Rjcw - RkEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzUxNUY0MjEyRDRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz7jldwbAAAEyklEQVRIS6WWDUzUdRjHoeXWVktIc74MLREMUxBQV4RYkBmL - SBwSoZIFCgULlOJFDJDxqkiAqGgoiIQ6jaFLB1EqUaC8iMgdL8cJB3fHwR13HO8Hh3x7fn+pwN01nM/2 - 2X77Pb/n+33+v/3/95zBbGOVnZM58QHhRKwgnp9KPXuQ2CtJ6ScOjGo0fcMjI93llVX55us3rqbUc49P - zDLyw9auL4iw5l+IsMY//BRujcygdcg+ug83rpzCsVhf3C6+hHg/W+R++985BtU3pey1cCCpOYQhJzo9 - 8kPX1tZcDoS0Jp2jrCgWmakhOJMVA4GwBd1KNSQ9veiUdeNifjqyMsJxveD7f8+z2rPBlg0kNZ9gJjMj - L8RqQlSegIbLX6CuYAcOBm9FHe8B2rt70SZTgNfehTphJ+paCaEYjSIJkmP24PaPnrhfsBP8okCcCbZ8 - RFLmxIuc6PTICV5Dh4IxNqSEemAA6adzwBdJ8VeDEL/XNqGkmo/iKh4HW5fWNCL7QiEqq2sw3N+Dijwf - nPx6FUjKkpjLiU6P7MDVqL/gj8nJSY4bpbcQnZyK8EOJCI2Ox3dRcY+JjkNYTAIi4w4j7+JlKBQKjI+P - 42qqJ9J832AGawkjTnR6ZPm/iXvn9+ARiWsnJjCu1YLeGshJQCKVolMs5hBLJOiSydAjl0OpUmFweBhj - ZJAfuxVJ3ub6DTJ9LVCd40Pij6AZ01IRoWVGumE5dmZEM45RjRbnolwR72Wm3yDt85W4e2o3FVLnGg1G - xsYwSvDEdxB03gEa6vJwSopOhkZHkRPhgkPbTfUbpOwwR+XxXdT9OM79EQ/lgBLNkjpsz1iMP5t/oU7H - dIoz+oeGcTbUGVHblus3SPJYgfI0LxLSIPmaL4LyHOB5bClK6gswNDLKoUucoezvx+n9W3Dg49f0G8S5 - LUfZEU8MkpC8T43YQi8UVp3kutOFenAIvep+dClUkClVOPXNZoQ6L9NvEE3uN+PdMUBvRXevCgqVmjob - gGpgEH1PwPZYTq7soy9bDolcgRNfOWL/ZhP9BpEfLsVvMW70kQ1C2qMgEyVnUiUoQ2CuPZTUra7rYYi6 - ZDi+910EvbdEv0GYkwlKIj+BijrL+jUKbdJO1LZWwD19EUrrr0Cu6tMpzhCKJcj40gEB9ov1G4RsWoLi - UBe6V7r/n70RkPMOPDJMcLXqLPc0DF3ijBaRCOneG+H31kL9BkF2i3B9nzN1qoagQ4yDlzxQUE6/lHRd - XfLeGbA9cbccwk4JHggegi8UIc3LDj7rFug3CNiwENcCt6CH3ojm9g7qqoN79HZpF9rpjjumYGu2x3I8 - 4UNU85pwv0WAox5vY7f1/xj42SxAkf/7kCmUuNfUiho+FTa3gtfaRh22o6lNxMHWbI/lKut5uFVdh7sN - jTiybQN2rpmv18DQ1+rViUJfRwia+bjXLEB1YxNqyai+VUiditDY1sHB1myP5e408FFR34Cb5WVIdLXF - Zxbz2DywJYw51WkxZ9eqebxUFyvk7rDHD24bkOhig4RZEM/4yAZhm1Ziq6lRG2mxscmm2owwdF72suOn - ZkZCTzNjuJsaYdtT4vr63E4L4xcCSYv9IXiJU30i2BxlzmzkWRHsLp8GVsNqp2aygcHfZtZtYIryU78A - AAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUzNzJDMjE3NEFENjExRTRCNjE0OEVEQzI4MEM0 - RTZDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNzJDMjE2NEFENjExRTRCNjE0OEVEQzI4MEM0 - RTZDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI3NUQ0QkNENDRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6PyaLfAAADMElEQVRIS6VUXUiTYRT+vi3Tzd+ps23+3KRigtiPkolEQReG - UYTkhWatpWlWGkRdddfdSPImqUAJjSIT00oxLJIk0cR+tFSyzDJtgaMkDEPkdM7ZPvm2vS6jBx6es3Pe - 8zzvtm+TohLS/ov+AACStLgEQuJyLRJWYK1yzh/+FgCoQrpnfM4fOGBhcUlIMkEVkma4H4i1y2kFcMD8 - wqKQZILKZqTqmlTAWrfvMjhgbv63Dwm0hLWQohn1eNEbzrlfPiTQAtZCKjP1GXdAIC+r4XD+9CGBFrDm - RVJ1re6pZ0GyHHMvIawauYVNCFPfvvuQQAtYC6meKXU0amNsaGN/ZR60xIf9aIgN3cpGE9OzZCZ85nEm - pGiWlLABmuJCnUOXrNB7chdct4TUo32ANDbp4NuielDpqWfePdaPX6GrohSK4uLhlCEo96YlZLbOFHzH - oJXjMSBcGn4/zQGovEDqXXtzeTb+BTrKj0J3+Q54djYP7EZdTU2MPjFSK8eieQR9QtLg6GcOQPWgqKeQ - ZyOfoK30CDw+lg2Ot3Z4VLoNqo269mCNHIa2WjYn9A1PcAAqU6m9VV3TF9psOwwPS3JgZugCdNoyocwU - jU+RlImWBpezGz0vxzkA1YOiHvPFO7Ca1kGHLQtmXp2HdutmqN+/F6JiU+h3kOpyVeHJwBgHoLIpqajm - 189HoaG4CNqsGTA1UAWth9Lg6r490PygGyLjUikgzuWqQlffCAegelDdUwLqigqhpXgjTPYeh+bCFCg2 - RkEk3vxuVz/P0c43oLP3DQegLhspNalSFxiNcLswHT48LYNbBUlQk7ebzenmyhm08w1o7xmiAP6hRZiT - 70eYkzpctUuJWdHmwWs74+F1Uz7cyE+E4ohQB5mHm9a3GywpTXzektyKduIAIsKI3ISkL4rIdYle05C9 - VrZVBmvtl7eboUyv7V4jSQdwRn8FdI72iErtCUxnIuifkJ5hUqUOq9Jr7OeCNU6bTpNVqtMcDJSldOwn - KnOk+jypJ5QANRWc0cs5SEelXr54QidfwVYAMoiHq4W/gNM6OaNCJ+diaUIqN/43+Atwg27t+9ZXBUn6 - A2MdqQeVc5pWAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUzQzNGNDI5NEQyQzExRTQ4QkE1QUNCMEVDRDZF - MDVEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUzQzNGNDI4NEQyQzExRTQ4QkE1QUNCMEVDRDZF - MDVEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI1NUY4OTYyQTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6IsaOmAAADF0lEQVQ4T62U/UuTURTH+0nICqRI1ERMMyNQe8N0ChqBwQhN - yvwhEgJjVCqJ/qCibZo6tzQ339h6Nre5prapUzc1XzItX1ilzuWMLLVAen+xf6DTuTxjdxsFVj58ebjc - c+7nnud7z3228DbpIaDFH/CfoqCn72DIDvNfPDM2KAqyr8PcJxqY+QBTb8kkjocXQTsKigGwfqYJHqIg - 1OxHGHvlWPx4hXB1YyA3g4CBhqst+piEnrDA3rA95vBAY1x8d7lq/DVZwm5PQZNvoKYdypSgHgbVEIh1 - cLOZzOCbSSsyRQRba6uWtcpVLbPcwlglInNUCJNWWKqABqMLCGvGlfpJELaQ/V1Vd1lujAhe0chtUrH5 - ZExnmJ85MdomEa+qZMbIEF2BHGunILSjdZwYgTt4gJqjjj0Rltml1Zq9AeL0Mn71Wn2mtDU80MIvsFTw - O+KPIoWC8BNYRIUaqrRQroJKjQOk9N+xLBF2pXJFKfnsDGYa8gS6xOO2whyMuoHaHpGzZ/pBM0IMrtXD - nT4HqNHXe0lYoogMFeQP4jbSDkCPTUyXmnNoPutSo+9WN5DEQDyeWCWnhqm4p7Oimt3b54rzmmKPVHKz - 0Xg0AU1pz87VJp+yXOfd9t3mBmLXsGrsJhSsDtF4iOWxKdpzyQNnuRW7vEUp13obFG05OVUBPtO5V1Sn - k5q4SX8ENfWA6C7xHsP981Bb2sf38ZKd4JhSuXUJHPHhg/WJnAeZFw0Xzt/w8erRtLmBnB/CSmaC599I - 2PYVRl+CXigu3R9SfCC0Pf1MZ1oqvqvjogX7gtRFJfb1n24g7GblfQcFP2fkBYm5anxqQcbLKgzyK/Df - WRTkV5+RMTg84ZrgAOHo4ZIDVNdJw67CpsVLZ5gifj97Typlq2ZFQXj8LKh5EHpnaIar8N+Al5l9Y9Vs - T7OiIAzjqaMsa6QJnBkeWvgOHdPkAuIV67PSeQpCYYZplsZ+KyyWLRyFF8D553EDbURY770J0rrYJbda - SYE4iWb9NcgpRKDrOMAWwYP6d5BTaC52zyaAWDlAm/DweL8AX9zXukfxHsIAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy - NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjYzQTM5NEY4Mjg0OUU0MTE5NDBEQTc4ODZEQzk5 - N0NGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJGRTU5OEQ1NDlEQjExRTRBRUVDOTkyMjQ5NzEw - REUwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJGRTU5OEQ0NDlEQjExRTRBRUVDOTkyMjQ5NzEw - REUwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTY0MkI1RjlEQTQ5RTQxMUE0QzNB - MjdEOTJBQzc3QkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjNBMzk0RjgyODQ5RTQxMTk0MERB - Nzg4NkRDOTk3Q0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6B5sF9AAACe0lEQVRIS7WVb2jMcRzHL7UHanF/Mts5prE/1li3kAfu5Ak7 - 5IHNobBkSC2UIuGJkrrSWRvTmHQWK8U1T8jqUtYwkZpaGjV/Js6to5YwfXze39+fu/v23f36hXe9us+f - 7/v9rd/dr3MQ0X/F4Zm3+K9QhWajNNlBFZqN0mQHS6lMdrCUyqSgimllUsy4XmOmp+QRDllQWbygjjq6 - uimZStOX8a+ixox3pXrM1JLCDAqYJmY7c669M0bff07mcLbtEl9QE8k6V6BH5ooXMsHZZX7ae+AY7W45 - SrPm19LbsSR9m/iRA2bYGefggVePzUgKBzeu9sQpmZ4QcG/WMtk7eLjv0WMz0kOz+TX6MUXvP6cFeNbD - bz6YvQFm2Bk9PPByZO6jksLB5KvRTzTyLikIrG2ktsvXzd4g2hGjYP1ms4eHvb850qkl65LCQW/ntVs0 - 9HpMcPx0K1X4V1Ff/3NzhnphbVDsjBk8Lm/VE44s0ZJ1KS4Ie8uXUvPBE7Tn0ElCzTMqrV5BO/cfEaDG - TD5X6PFFONLygsTF7jj1vxihyPkYNTS1iFrFxm37KHIhJmp43L7qZxzp0pJ1SeHhQGgLJQaH6fb9R1QX - 2EB3Ek9FryLe95j8K9eLT/TB0FZcskOP1iRdkIh23aR7Ay9pzaZddKY9Jup8nIpeoXXhZlHD655b85Bj - p2npLOmCML+dD/iTZhaX3+UvbRB1PpzeygFnSUUvatecRUMzisoOc+x0LZ3FixxYhQyK1cxyZhkTYhqY - RgnM6hmcwVl4ljDI0KS4AC+Kmyli8Jv2MF7GNwXY4QzOwgNv5mWTL7CLpVQmO1hKZbKDpVR/1P8OcvwB - lh7gOXXZq9sAAAAASUVORK5CYII= - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNDMTJDMTRENEFDOTExRTRCRDk4ODBFRTFERTlG - MzY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNDMTJDMTRDNEFDOTExRTRCRDk4ODBFRTFERTlG - MzY1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjYwQjFGREZDNjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4rRYZ8AAACEElEQVRIS2MQltOlCP///x8vxqqJFIzNUGSMVRMpmCDApokU - TBBg04SEpwHxfwJ4GtQo7ACoABfODY3N+P/773+82C88GWRJBtQ4TIBmKAyziCsa/L98/c5/37Ck/3Wt - fVixT2ji//OXr/8XU9T/zy0kzQo1EhVgMRyEm0uqW//vP3Lqv5Cs9ml+CZVp/OLKs/nFleYgY0EZzQt7 - Dh7/n1/eCFLXBjUSFWAxXENZ1/r/g6evgK5P/l/d1IMXe4ck/L//+MV/RW2r/0IyWppQYxEAiwWT+qfN - /7/7wHGQq84BXT9FQEq9S1Bas0VQWqMVFWu2ANWc2LbnyP/eKfNA6qdDjUUANMN9Tex8/j999eG/LzDy - yuo7icIeQfH/n7x8/x+kV0hGOwBqNASgWbBt+frt/7cCXQRko2Cg9xfCXA5io8uv37bv//J124G+0NkF - NJYRYjoQACWR8f97T99gxSA5oHIpECZCHTvIbDCAGgy34MaDF1ixo08k3LWO3hEY8jC9IBporBDEdCAA - CqBYcPnOU4ow1AKQTyEA3YKz1x9RhKEWyEBMBwJ0C05cvocVl9R3o2BsakCYoAWHz9+mCBO0YP/pGzhx - flUHGGOTg2GCFuw+cY0iTNCCHceuUIQJWUBMBYMX80uo7gQai9MCkJAoENsDcQiZGKQXZAYEYLEAlM1B - CkCuIAeD9EKLCgYGAMLPWmGxemtkAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY2MzBBRkRDNEFDOTExRTQ5Q0JEQkU0NDNBNTYy - QTY5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY2MzBBRkRCNEFDOTExRTQ5Q0JEQkU0NDNBNTYy - QTY5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjgwQjFGREZDNjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz6+q/BOAAABR0lEQVRIS7WVTUvDQBCGe/PoQQQP4s2jv8E/4W/rXxEFQRAp - olCwfjRUJWK1ltJgNJh+6Toz7OCSzrIZFwce2LDzvs8hkDSMMf/K7wFmbWunCRgFTQp6RhKY+ZephSvh - Du7hoWf3AgPT+XcteLcqcUcUlNMFYYNLuPeVXZK4IwqKckZMZgsveO/u8jNKqMiOKHgrJrWQdqsSUTDO - Pwm7LBK6pzIYUTDMPoi8KGvB+4wVrGCfKHge5VFYwTr2iYLHQUbgWYObg6pN7BMFd/0RMczeVXAuKOim - r1EEBVf3LwSeNbg5qPIL2skTkQ7GKjgXFJzfpFEEBa3LBwLPGtwcVPkFJ+0ekcAL08C5oOD4IokiKDg6 - uyXwrMHNQZVfcNi6Jjq9vgrOBQX7p50oQgLtT3+J1Y3tA6iSBXbwS7gL7P0RzNqvqWn8AE4SSnpUkJk6 - AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFGMTBBQzY2NEFDQTExRTRBQTYyQjA5QjRFNjBF - MzcyIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFGMTBBQzY1NEFDQTExRTRBQTYyQjA5QjRFNjBF - MzcyIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0EzRTc1RjdDOTRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - 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 - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjg2NjBEMzE2NEFGRTExRTQ4NTY1QzE4RjMzMkM0 - NEY4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjg2NjBEMzE1NEFGRTExRTQ4NTY1QzE4RjMzMkM0 - NEY4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTU5NUNEQTdGQTRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz5BZhOvAAAD9ElEQVRIS7WWe0xbZRiH95+T6DQxcc7NLfrHTBaR4NyFmDAy - ljFwwERGpmRxxmyY6QbqgogDhqluOpFLlm6AFslGRVlXKISVS7tByzgUOF1vtLUtLVBogQ4YsLoN9ec5 - 3+xXyIiJWdrkyfed9/u979PLSdsVz6wPfyQA/Cehf3DPQsiBECHkBVj4CyGBn00E9xb+DglU4L/35xIM - 7j78qCpAlVqAg6KNkOtqMTPnx9TcLOzjFty5u4CJWR9u++/AM+NBh7WRnM3/cX/JHCqY899fwu35u/BN - z2HM60NcURjB7hwmNX4/PjmNWzPzZL/v3FPIEK9DQskTNOudmML0rD8oiD0d9hAutxej4z6yZ3pZaA0D - ZO8c8dDM8d9egtSxGxetMTiri8Ih8XpS79cZ4fZOBgVu7y2YrINg9QOIPvU4QcPqyWp1DJM6vwbOUivW - QGSMgdi8E7mqSGQqIpAoXE3OmuRtuKHRwjU6HhQMe6dgG/LA4hhBVM5KJJatJmsPa8TNARup8xm+1tnd - R9bkc88hicsllnGrcC2p1Te1QKliYLQ6SZ4KhriLYe80oaa9Ghk/JEMkqYJS3Q0DF3a4J7D9s1V4s2QN - Nmc+hviTLyOvIgv55SeQe/4YUgu3QlRXjbbrN6A12TDoniSzqMDh9lEszjEoGQbF4u/wa+tlmOxu2Ecm - 0dglR86FjxEteBZx2Zsgab4KhaoH17lXJFO04nKLDCrus+L7A7OowOLyUsxODwy2EaTm78BrWU/io6KD - YE126KxDaFDKEZ4Rhg8E+1HbKAOjNZP6TYsL0mtNaFYrUCmrAGu2YWBwLCgw2Ecf4qeGakRmPo203D1Q - dPWjz8TdBGYX0guSIK5vgLyDQa/BDr3NTdAYrYg68iI2HliJiitV6DM6ggLWwt0p/8J9PeFMsRDnJSLE - H38DsXEJSEhKAaOzod88hMjXt+KTz/PQ2WtCLyfl8wE2RbyKkyWFqJLUQdqu4ASvPBBojE4KH9wVtxel - v5Tj5zopuU5MSQOjt6NG0swJtmHtCxtwrUePHsMDQaA3J/9rfJpTgDY1CwWjDwq6dHYK37BzdwJqZe3I - E3yP9ENHsG//u+TsvcNH8dXZMryVlo4ioYjmA73ZnCA7T4BO1gqV1hp8izr6f6fwDafOlKLgdAlidsXj - 29JKJHOCFrWOnAXga4F8gIjN21Df1k1nUYFSY6bwwUvSVjy/bgN2cILKmnokvf0O8r8pRvr7H5JMcwdL - zvkcn1/cvxgqaGVMFL6BX6Nj9+BLQREuXLyCvSkHEB65BcXll2ju8LETyPqikOaXgwqudhlCQkAQ8p/M - R2K5fxKLWbbp/7Dc0CBY8Q+pPmOq0VkzzQAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC - MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjIxNUQ2NkYyNEQyRDExRTQ5N0NDRjdBNTBDQjc0 - MUY3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNUQ2NkYxNEQyRDExRTQ5N0NDRjdBNTBDQjc0 - MUY3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkU1NUY4OTYyQTRERTQxMUIzNkJE - NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC - NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4lOJsMAAADqUlEQVRIS6WTf0hVdxjGj2beulPvD52aU6Np6tKBhUWsYjIH - prDYSlZjNPsjlUnkMmSx6eJqS/u5zXGtoKKEMaEt2lpZ20RX01Bjad31A8UakdZ0SyrLJfHueU7H0zl6 - U8QXPvCe933e5/3e8z1XCY5+dVKIyJh4HZoI48bQE5kU44a3ISM45TxQCTxgQIM5a/M0m+eHN1OC4TfB - 96mZ78reg9+I50qn3HvwSIU5a+xBcwyka3ajY3DoySgwUJ44P02O/vSz4HlMfqitk7mLlnLRNs3SHAOD - QzoQOYF7de4Gud17V1DTuf/wP7nScUOFubF3559+4QxngUOzfhr9DwZV0AgHVZ99/oXcvf9IUNPZd6hG - 5qS8Ic7IOb2EOWtGDWdKtuzmkj300uwVpa9/gOZTae6qqBQ8myjb4RZbeEyjJcBROt0W6rLaw4unBYYU - 2mfMrmNvpJ4ewdFJe+Hnry7o7rvHBV+v/7hUkJtoab8qobOSZarlhfX2iLhjS5d/IBkrsvlLDmPJEvao - GTlXsKmMS9zqApjnZWatkeu3+uSvnn9NlO2skqCwl2tt4bH7N7l26nXmzqgkFxZVUWOcIfSiZ3BU0odc - 0Hay/px03Px7FOuKXBIUOms/zDwn6pr0OnOcsN0ZlVhEjXFmGHpCc0n9BenvZMulzlvyZ1ePiZLySsG7 - /hYn3VpYXKHXmdtnxLmx4CtqjDOEXunLs3F3sS7lwrWbCoT71hYUC3ITJxta1TsIDImOh+ZA2rL3hdjC - Yhr8pwdlsUfNyLkceEFThxt4TWnxXFf8rTab46WEmo8+KRc8m9jwaQXed2I1Trw4IDgqx2oPK8EFb4T+ - KHsj9fSA+Rkf3ynvYUGi0tjWybv2DXBGxjsiEo7kF5XJ7xc6BHWdzdv3yOzk1/lOu3BxN5izZtRwJr+o - VDX3s1jz4ZkCHErD+WsqiCn4xuPsEfHfvbUqV2rPtgnqOvWtV6Xm+G8qzI09ajmjmvtPy4PXQhBCT+XX - 5ss6CD/wIl5H9SspaVLhrhbUx4QaavG1/YLZVWABPTQvRTnV5DGhNZyBITPz8cqaU1KXSeHmXXLgyGn5 - seEPFeassYfDXLTawr7EzNsgmbOax9M4cfbiKBC+IBDEYjgXn9spfKrduIPHBHkPXke9JcBZCs1KkEqt - NsPZZ4H/gVcQPsAC+HMTwCKQAXhSwpw19qihljPm8GZuBDG8yAZCQYQGc9a8Gw+HN9OJMG54G5oIY4ei - /A9dc78cqtG90gAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl - LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi - Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv - cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE - RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 - cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv - bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw - ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w - TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 - RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC - MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N - OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD - QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ - eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL - ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH - s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW - uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx - xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd - iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ - qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW - GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE - NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n - KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw - qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI - HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq - wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q - 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= - - iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -4803,6 +4005,804 @@ ++H/A/YDv9/V87iOlrYAAAAASUVORK5CYII= + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlDMzFEOUI4NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 + NEI4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlDMzFEOUI3NEFBRjExRTQ4OTA5OUYwQ0QzM0Q2 + NEI4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDk5Mzk2NTZBRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz73sIMwAAADIElEQVRIS7WVa0iTYRTH56Uiysvm3TkvpLl5DRIvQYWVWl+6 + iNEVg0yhQqloQZHkLT+Y0YdAs75IpEUhzERZoZhsRpZlS7soblotsRwoxhqWeTrnYZtv+u7NsB74cZ5z + zv89/z17HzYRAPxXeIv/EpFXcOyi4BvKhfehv4FvKBfeh+ayqIUDlIgBgT8whpRYoT2fhgvNVJKBQT9s + hB8/QZDPpnEIjEhg0J5Pw4Vm0mwygG9T06BSqQQhTUhUMoRGpyxYT7OZwfhXC6jVakFIYzNYqN5uMGKa + BI1GIwhpghXJaJJi13d0dEB2bj74hsWzSDlXbzfQG02g0+kEIU2wIomdovzKdVifngnFFytBeb4cLN+n + WaSc6hfKKqB/eHTWoHfwExgMBkFII5MnQUD4WlAWloO26wVs35MDmifPmQFFyqlO/aKKqlmDp31DYDKZ + BCGNTJ4IPqHx8LJvACbNUw7p6e2HuJQMNIhhBuaHj3vBYrEI0tb1BoIiE9kJ9h7Oh7EJM+g/jEJuwVlY + s24ri5RTnfo5BedAIoueIYPumvomuHzjzm9cq2uCq7UNUH2rEarr7kNd0yP26Y+eKoSWtk4wfpmAg7kn + ITY5DUorq1g8cOQEqze3aplOEhRtJoMcL1mMTixV9IgD5a/tSBVDYql8AKOBQLEJtTP08gY/jjFiktKg + 5FIV21Ok3NazvmR2AvrFkCAJyGYk1comZAuHDM/AyLvHThfBveZ26NOPwI59eey7LsbhFCmnOvVJ5+Ef + rrYZLEU8EZ85+HLwW7ZCLMVTFWdkHoLut+/hgbYHaE9XN31XNsupTrWV3jKVs+uS3cyAD0cLe331jW3Q + qRt0CPUlQVHDKI+fN9iGo4W90uNnyuA2vvRtWTlQgxeg/dk7FimnOvU9/CNqUe47b7ANRwt7AfjpKvAK + Gt18Qur35ymhRfsKKLr5hN7EyzDq7humWrrcfSfKxbz/QlwcLDck1snZJdUzYHUDmk57+K1qdXJyzsL6 + RmQD9ZmObygXB8sVIRO6fXQB4hC6eRQppzr1XXmHclnAckFomLc1Um5dItEvhZ97MQXP9N0AAAAASUVO + RK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjhDMTdBQjRENEFBRTExRTQ4QjQyODY0MDNBNTJE + NzNCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjhDMTdBQjRDNEFBRTExRTQ4QjQyODY0MDNBNTJE + NzNCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUQyMjc4QTlBQjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4eHsDfAAAB00lEQVRIS7XVWytEURQH8HniTTNHLs0NCXNcXjTN5dH9g/gM + 3jx590QhFDJS0gyTGmpqaqJIMW4hzlAoOaWISS7LWifntI3ddnTGrl92e/57/We/DBsA/CvuYSHZSr0t + lvCGsriX/oI3lMW9lM/SwgF9SEHwizs08IX2vAyLZvZRgXJ+cQWv7yB0q96Ds86voT0vw6KZNJsK4Pnl + DWKxmBBlqhpDUN0UNp2n2VrB/WMOEomEEGX0ArN5o+BGfYB0Oi1EGa8cwpKw6bxRcH6lQiaTEaKMVw5q + rzCbNwr2z65BURQhynh8Qe0VZvNGwdZBFlRVFaKMxxfQXmE2rxc8rW3sQy6XE0puHoG7IaC9YnV9j5th + pbZPqOCDCrbH5uIwOD7/zWgkDkNTizAyuwQjkWWIxFNQWduqmVxI/MiPz6/A8HTUuDMTTYLkbrqhgt5S + T3PG4ZJ3HE7focElZx0u3yn+VQiG1ZLymmm7s74f88f42S6bl9zyJZ6d6Xckd+Mt5ieogH4xJORHHajt + SzvqZPSgECpHZSiA2DztuxBlad+NgnpBEbIjusiiYboKRF+kGFHegUR5ImkFv7G0eAPzWVq8gfksLd5/ + oULiHhYS97BwwPYJlSCUgVubViQAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJEMDQyOEZBNEFEMjExRTRBN0MxRDBCNzJGRUND + MDEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMDQyOEY5NEFEMjExRTRBN0MxRDBCNzJGRUND + MDEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkRDRkI1RDVEMTRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz59jfe3AAAEbUlEQVRIS8WTeUybZRzHF48/pnFOuQRajkFLgQFb5iRLNJr4 + l/EPgsniUI4xZDAY1zyxwApsMJyIME61rByl3DfoYGBrgbWUY06FcZSCha4rQ8jYxkqPr2/fvkv8o2Sg + S/wkT970eb6/T5/39z7Prv8dt/Oql4mR4HZJ3ccoXFxhVCzB9DT9JueJdSq6c1wzVZFupepVzxu34XVj + CaEDi1jX6hF8ZQoeokl4iBVwzV9YdU1XRlIl28eVo8phCdXwGltEeOUsro6psaHVwcSDh5volc4iOO8X + 7KuVwb1hEi7J8myq9PEQO//I85oafr0KtEpUpNSETm+AwWDAvfv3YTQaybnm/t/AyO6Ga+UonJOnIijF + 1hA9tWI2qle9RxcI+RIpmZpTIfBULhIyyqHVahHPKcN70TmYnFFCp9OhqXcc9KwW0DOHVl3YU1aUyjJu + F1SpfhO3EM6bMMsVt+D8Zhz2HIpC4oU6bG5uIu4cD3tfTwAjIBNypQYbGxsISquBU34PaDHiVEplGXee + SuIjVaBv3Lz7gJg8vHg4FlZvc+ATVoLipiHsD8qCXWAO7IPK8MG5FjLXKboOeoYADkldUkplGWb7vOb4 + 4BzxIXXQE/1m59WDXdgBvxPfwz6UC4eQUth/WIBDZ2qQXj+K7IYRImeE5s5fOFrcDPvPapcJzVNmmwVY + VxWG9U09uau1tTVymPpc0iYFLew7OEUJ4BwtALfvJpl5xMrKCu6s3cUrn5YbCM1us80CrJZZVWjXr7j3 + 4CE0y8v4IrcaH+cK4Bv+DRyPl8ApphYuia3wZ3eCUzOA1PIfcVuzjHnlIgK/vgy7mHzTG+w12yzA5E53 + edYPo1c2i/X1dQTEfwvbwDQ4hhXg8OcN4P48Df+UTrgkNIAeW4Hg3Hbo9Xq0iGSgs4ls5CUhoXnObLOA + S8pkhG/bdZzgDZJnffT3GXieLAA9XgB2/RjZjuQqMWhxfBw824H55XWyhcfy+HDNqoB1SH4Codn6G7iw + p3d78EaVPlXX0CaZgkqlgly1gpCiK0htHCH/IL6oFcEF3ZjT3CUvXqv0DzDSS0FPq1a/8EbYS5Rqa+if + SAJ8KoeNR7gitEsnoVQqSbGOkJmYX1ggxaY70SabwIGMUrjn8I3WIXnBRPnWu/8nDnE9Sd7cAaP/ZSES + 6/rRKJRArpiHXC7HzekZNIukiCyrhW9mGZgXa4w2kUVnibJnzdXbxP5URzyDO4QjxGl5i9uNpMZeKP5U + IrywAq9yCnGAOGGMonbYxpVnEPGdyR9BO/MTj8kfgXeNFPt5IngVtoF1kQ9WcTs8qgfgmNreQMS21xZL + 0E6Ln6ef75tg8sfgXT8O77oReAkkYNXJ4PRV/4ztyfo9VPTf4xjdf9CpQKzdxxuGe6UMbhXEmc8V6mze + r3qNivx3HGN7UmglQ6CVDMIxXwybo5UcaunJQD8te9rhyx4JrWwItlGNUut3y5+hlp4cDhFCpl14k9jq + nR+Y1NTjIe7NlmMnWKoHsOtvjWYcKpheqFQAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERTg4QTFENEQyMjExRTRBODEyODk0M0RBMTc5 + Qjg3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERTg4QTFDNEQyMjExRTRBODEyODk0M0RBMTc5 + Qjg3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjJGOUEyRDEyMTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6wJF34AAACl0lEQVRIS62Vy08TURSH73/QhQtXVnBhxEcMiUkhbEg0hB1R + Q1i68C8wIW5cEqMLN7ho2Ji4YiEhWq0prYUhfULbadN3obTaChobtZEUsFY9nnPS6WM6HYowyZf87j33 + nG/amaai9geOBYA+4pTxihmBE8DcTQB4J8em/9IwSQyagmrtL+z9rMFmvnhkKvtV7tcVHPz6DVsftulA + AckdhUg8zf19eoLKAd597iMLMItewfOxUDTN/bqCH3tVSG8VWIBZ9AoJApEk9+sKvu/uQ2IjzwJkGtH8 + OrTwy3Hu77vIAnV9mgWlcgWiqRwLjAMmkOMbPbNTKnN/JJntqJGEBZ++7oKcyLLgLN4JrU8Cms2C4pcy + BKKZumCI18temQ/8DzSLZlBmQX7nG/jCKdpgAa0driCtY5iFHuqHSjNoFtaags1iCdzBBG+QgNY2aZ0F + mIUe6osENAtrTUEq/7kDq9PHAszU5yYoq9f1i9cUSCD5ozxDEeTsrhAoONwyxLLb8MrhYQFmZYCHsnpd + v3hNgQROb5hnKIK29944MAThTBEWbS4WYBZ6qC/sKSy5ZJ6BGUQg8b4Bbhjod4AZXlhXWdBa10LrIVul + AM9ggS+aa6AIMMO8ZYUO0KeyIOMtZyaQpXpNi4LFucYzMINwhbMNcMNw5oIJMMNKIA0LNg88mZuH/ssj + dPgBMnN+cBRmny1wrRtSMMMzWCCFMg0UAeY2Fh0+GL5xG8Zu3oHXUrCj3g0WONdTbeBm21/o1N17gPtg + 98Xh3VoS3qzKMDI22agfglnY/Uld8NDc/ZlZwAwvl4Ngun6LGh8rdfVDViNs3rguOOzq6XOD8PDpc7g2 + OkHDH7XWtYa2It66Y4eCQ8cRfpvUNa2hTUD8A6JMaBvCyTdJAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJERjY3MEZENEQyMzExRTRCNDlGQUMwMzk0OTAw + Qzc4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJERjY3MEZDNEQyMzExRTRCNDlGQUMwMzk0OTAw + Qzc4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhGOUEyRDEyMTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6GKmpFAAAC+UlEQVRIS63T20vTYRzH8Yforj/Ei24UiSgKIygKi8oyxZQo + cvNYeXaesmzqPGu2POd0ulSsnIdaurTSTJ3O6UxTPGya5vCQx5AuPn39RbHop7nZxQt+z3ie93e/Z4w1 + p7nsCoBt8R6yBF/UHPv+Wb0rfFFzm99CRIwEW1gnqXzxTXxRc0ydctm4OlID2sxrw6iCtiwItC+A2P/D + frLnjwGNSZdMq6N1WOvLwFpP4l/WdRlY6Jaio9Ab7QXba8sVoDHZGdT8PYS9THDqMGnLsKpNw0qXGCua + BO55VZdNQ6U/DRRibVCGb+N1pH5bukoRqHmDHOIG1N8/X2F4I8WyNhtf2+9hqSsZxqZ4upbb6HsSZLHO + Im90ym6hNVcIaktYTexZyUelGEvaHMy/jcFiZxo0xX5Y7ivGcn8JkVmA9uvlWBmqwpJeAWovs+poR99O + eRgWtQWYVUdgrj0FH+i+F3XF3NoappZYGJrEoLaOVYpOOTY/FGJB+xjTqnDMtMTTAC/Ma/Ix/TLUKl9e + x0JfFQpql7PykBP7lWIXzPeUYLIhHCPKCLr/AMy2ZsKoDLTKdNNdvM8TgNpRTBZwfJ885CTmaIChPhwa + mS+GnkdhqjEWY9X+VplqvIMXEhdQ24mZeuSs0N/BNNWWj4k6EdSZHhhXxWH0aSCGFd4c4Tk7zk7XBlUM + FKLToK4Nm+0qYnneRzqGGiSYaIiiyZdhVCdgqFSIwRJPjucZW85O1pvnRmvDkO9zFNTdy2Y6HjGp4HCF + 5kk4xhoiURd/EROv4tBfeM0qAyUC9Mp9QM0+7o829T6LZV0/mNycS6+nFKFWfAGj9ZHozfGwil7miZYH + 7qCmghsw+S6VpV894KuUuKFbfhNNqa749CwY3dm0toK+VABl3HlQM5obYHybwFLc7W1y/Y5BlX6FfgNn + DNcEY0DhZZX+MiGKbh0DNR24AYYWMSfJzc6GZBApwS5skIzNODcg0dV2V36FtsJ7yBJ8UXO8hyzBFzXH + ++H/A/YDv9/V87iOlrYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 + RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL + ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH + s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW + uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx + xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd + iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ + qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW + GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE + NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n + KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw + qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI + HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq + wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q + 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjA3MTZBNTkzNEEwMjExRTRBQjdERDhBQkEzMDEx + MzZEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTZBNTkyNEEwMjExRTRBQjdERDhBQkEzMDEx + MzZEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTgxNjM4Q0YwMTRBRTQxMTk2M0JC + NEQ0MzNCOUIxQzgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + 0HWhD93n++Dbua+fK9NvoTM5+Udx5mye9NjgCZNf0HEnpN5U5RbPa9+0bdfQ+0eOPzp5ppvG96JfjFkM + nXR/vOP0ePOu/deyCuf8JVSorJny7HQdvR9MTCUm+fUYgyehazLBVCCd8ttpJbQANtO3cDjWbO9werzd + ruK5F9Ld3p7YBEdHCE/WMi0s0jf5mefm0e+ZCsXEf85i/98XsP4NaTpxka74X+IAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBREU3RDk2NEFCMDExRTQ4OUM5QjZFOENGQzJF + MDk1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBREU3RDk1NEFCMDExRTQ4OUM5QjZFOENGQzJF + MDk1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MEM5Mzk2NTZBRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz52g1XsAAADeUlEQVRIS62Va0hTYRiAXzVNoQs6oUCttJu3aqatrLxr2k0n + W6bLLlLSxTKCKLoQQUg3IbLMflSgBRGRP7JSSzGnWalYdpnV1MQu1tBWWklqvr3fp2dsOytSfOFh3/l2 + eJ7tnDMGkkmzGCqigsARhPlUQqCi8nEd9v7GEYP5mFcI4K/e/hGHeQ2B7p4+1HV8Nf6Kw4a5GGxtCHzv + 7sU2nR4lbr4/AUBFKIeD4GKYBL79+IX6rm622U8nSgnX4SC4GCaBL50/OXwTwIUY1ohcQkCn/84ZDLBP + I5p16TBl7XYIoaXVwI54RC4h8LG9k/OvQPIOmEZUJW2F+XRoPbBrOiKXEGj9rOdYCqi2gxXhnLQNIo6f + n9tEa7ViI79PoojIJQSaP3RwjAOJaSAjjhL3N+9zrD+W499UVJnSeeVmWDvtlcWlgCedZnK5RC4h8KZV + x2FryQSYmrAVjh/MnP46/57yS7VmZ9+zxr1Yr92NtQ1pWFmfiBevL9QpUqE0JhHcyWuImLsMAU1zG4et + V6yHC1l5oe+evNmD1ZoteL9OgaW1K7GkRoF3H8ZigTocb5bFY8bZWbpoFVwh7yiCR8xdhsAz7XuOh9QD + D2R6twyIEzG/JApz88N7z+T5d+VcDezKL43Ea4UxeCjTqyNUDpUBYeBFXjvjgOAyCdS9asXDJ3NQFj3u + 7eWCyG/FjxR45OyMr6s3S1qCYqE8RA654Uq4dOiUV/v+E9P0i1ZA9Zwg8COnA2HyDZiLYRw4dyAjC50n + z8awBBvNbbWyZ+8x10+By+GONARCbe1gDBPJloCvfKODluQ10mD+qDK5LWFyD6pfvOUYBzydXL0v2I+V + rI9Mhud5BQE9i+RQPt2P30BBYrM4HmYSNf5REGS0b5CzYdKq+iaOITA44wmPiLXwaFfGhDbZMkinYxNJ + 8CpwXxgHobQcPbhv8XegrtNyzAPsOtqHJUPeml1jm/1jYDkdM5G5hB3bDL6KhknLal9xzAN8gpMgVZHm + oKUAuwx29H420c9O/l9KHms4bC0KLFCAY6CSHr+VoHJy88lWbEjHoqoXWPzw5ZCxGKCxkslBLo22L1+6 + ahPeUj/FwgfPh8zpSzfQ0cWrwVKAjfXcWFjjPm9isWSSbx/7JEPF0cWzcYzE7dTfAmysfSLB2z0Awm1H + 8ycnjrD4N/kX4gEg8A9sAFSe4VuPvgAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzN0Y5NjgxNEE5MDExRTRBMzU1RUM1MkVEQTU3 + REQxIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzN0Y5NjgwNEE5MDExRTRBMzU1RUM1MkVEQTU3 + REQxIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MUU1QUVCQUI4RjRBRTQxMUI2QTlC + RjEwMkVGQzEyNEEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4Oz1B+AAABO0lEQVRIS7WUP0sDQRDFt0snIcEiklhGJLH3k6bNp0ifYCUo + KWwMIRCx0EYxEEL+IOPO4SxzczN7d7gGfuzd7Hszd9nHOQD4V9RiStRiStQi0b68GXkgwkjzcdQigU1O + 32CC+9IjUYsENvjY7EySDHhev5skGXA3X5r8aYA3lx0wET1otYgmNMcOku+jXtMg4QJFJMb1a7uPmjUd + rVzHDfDy9pmJaZViCe5rPq7hYpgvXjPw2hNtTqBOevk+F8L0YRGQQosyHxfSf0jUegPLZwkrNedYfi6o + 9Y2RWP6cACPHYnf4XauQablfHYAxo6jt9sfwRGWgVvrVASKmdd7g2OoN4P5pVYhqbgCPmnPuzHPtua1C + s9OHyeyxEFU+IJcCb2p4zj3dKjQvrsat3jD4CwNCIcEv14/fpAfcDwXsled4Tu6+AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlGMEQ1RDBCNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 + MzBCIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlGMEQ1RDBBNEFENzExRTRBNTYzOUQ5RUQ0RTQ0 + MzBCIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzFDMDRERTRENjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6zemTaAAABh0lEQVRIS7WUvUoDQRSFEwiBKPEHsRAkb+ArWIsv4CNYCSKI + jRD8a1S0m9QhdTobG5uARZogBJSkiLASFJJChQiRcJ2z2bnMZtbxCnrhY3YO556z1aSI6F9JFP+SRBEs + FFaUhoSopAyQKGIBi58jEuErcQSAhY/hyP5DL8Y7mQMcAcD8Phh+u2Tzk9cRAMz914G4wOd1BABzt/cm + LvB5HQHA3On2xQU+ryMAmB8en8UFPq8jAJjvWk/iAp/XEQDM9WZHXODzOgKAudZoiwt8XkcAMN/U78Ml + CcY7mQMcAWhz+FRc3zZFREXypwKYEiG/e+ykc1WYVRrCGUk8nGUHsyic6nKeetUK4dTESjjLDjZUlqaV + hiS8lEsh0Z1LTFYs2FBazFFwcUzB+YE+T8bffD+i4LRIwSV0jdZaO5vhHXtRPmfFgg1n81mlIQnt/W1q + bKyH34dz2XKUz1mxYBaFU5zJUG1tlXDu5TMcjuEsO5hF4exOpZWGtnLpWDiGs+xgFv9gxlmU+gIVyyIX + YCSg/AAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6npMy1AAAGEUlEQVRIS7WVeVDUZRjHf7Ase8ECu+wl4LIXcqyyHC783AWW + 5QaRFTHkMi9SQvE+UhLzwk0BUcQSgQBBgcYDzStMSzOPcpqcmo5pmqk/+rOapqb+iG/PbzfFcSz/6pn5 + zPN739/7fp/nvZn/3TSLjj+XJy2/RaItPCT5vaBd8m1+q2Qku1lcrcvki+iXr7fFU6ZZeOx5KDU1b7jU + 1Z2bVPMPWNMbRXrXkWAc+ywVLbcS8fKwFjlu8VdpW0XzSc6f8PEIPzJ19dFnU3WEJdHL9P3X9O1nkdB8 + CQrX7i3mKn9zfqsUq29ZsPfjRBx5aMO2cTMy94gm7FuF7XyJTwDJTo5GVdHxNALVgsPd5Ceye+9g8b0f + UXbjB8RtH4Msd+MeXS7f6twjxbILZiy7pEHDtTBsvG7BqivTUXpsClLWCbtJNpDwBlGVH3ySIFV520eW + nedRcf0HVJGwbeRrOHs/h2n1CGRZDe7wND/W1hiI8sEYlJ4KRcVpJcrfVqByNBILhqLh3KeA+UXBOpL2 + jkRZduARPGXZ/vH4pnMou/gd7INfIPn4QyQc/RSOzk9hrBtEiKPerUn1Y5PXBaDojWlwdgUjr0+G/H4Z + cnpCUNJrQNZ+LeLrBD/LYnixFEDAKFz7vJQ0r49dO4zikS8x8/ADxLd9jIT2B5ix/z7SX78Pw+K3EJy2 + wq1M4rEz6sRwthgw82Ag2KNS2I5JPZ4rZx00ImGNHIZSfisFkDGhxbs5AkKLd/3kaLkDlgTjXrsNc/Md + mPfeQeyOD2HbcRu6yi4E2Wrd8ngeG71IBPtePWa4JUhsD0DykQAkHQqApUWCFLcGyZvDoZ/P/5oCTGXk + hU2MvGB7rbGmG47dd2Fa+x6iX/kAMa/eQvS2m4jaeAPspvcROb8TQexid3CcL2usFCJjnwE5nQYU9RhR + PGDC7D4TCrqMyDqkR9oePbRz/SZEKh8rI8vdyshyXhmzLD8DS/1VGOquwtgw7glkXH0Nhvp3kbL2GrSl + hyC11ril03xZfbkQKZuVsDeq4NihRtYuDbJ2auBoUsO2TQXrJiWMlWIExflWMiHOjRzfJy0bg776HCKX + vANd7WXol1/xeN3Si7A2XIXW1YbAxAq3UO0zPTSd1yG38bplLK//vxBrffKY4PQ1HH9aKk8jonQUUyvO + Qlt9HtqaCx4/tXIMyXWXMXXOAQTEv+D2zCvDhBBTCN1zCGOCZq3k+DXO1YcpRYOY4hpF2LzTCCs74/VE + 3IvnEVd1EhGFblBbWot6BKXWQZq64tlYa2+TuJwQM9KU5cRL35hyOxCe2w913hA0hcPQFI16KRzxEFtO + a1Q9htSVN5C+5S5x7x/uIm3DR7CvuomUReOImt1FU7nwEolHECImMGkJE5i46EJkejNM+X1QOPqhzBqC + KvskVDmnJuHKT/K4bgjKzBMItXcjJv84NOwWiKPndJK40TOCgPgaRmIur1dZ1yM6txvyWT0ITR+AImOQ + gg39N1ybDBJP60PorC5My3oTwQm18FdNryBxbq0EJL6AEUTYZBTkF0NGKyKdvZDb3qJOAxSIOqcP/jtp + JyC3D1BSvYgp6EN4aiNlP/cTEk4gFASPEUeXkWd8RaY5jcrEBkTn9UCT4Q3gzfBfRvJE9rrsfpicHSRe + NsFXmJeSXhTBXXY+jMjk8uArVkpExuKb6pkbYJ7L7Ria37xTUBeMeCkcncRTN0z/TyLKNYy4khNQJq2G + IMLBXdUWQkXwCYYR6md7IPP1k8WEC3UFDzSpG2BZeAZJtXQWFpyls3HOC50JzkdQnbFqDInLLiC2rBcq + 6xoSzzzP+NDVwDBaQkx4XzahNv8xZH48sVotCHeOUnnCWNJG18Q4UjddB7vlfbBbPwC7+YannLTyIrS5 + OyHU5v3hr07poL7JBHe4Jh8bzgQROY8h46IKCAVfbi73D3PcpfoJlX0VtEVN0JXsQlj2ZoRaaynj7N/8 + NfZLPLFmHrXnpiWSCCL8iMl32T/M6YGMq+R+covD7QADwfoIgqt4QVGtfvIZJ4lRv5CY4zypbjfjy+eE + M4l4gtuSwYSQ4DS4EZAew/wNiCYQJlvQU3cAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVGNUQ0RjNENEQyRDExRTRBQ0ZFOEVGNkU4Rjcw + RkEzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVGNUQ0RjNDNEQyRDExRTRBQ0ZFOEVGNkU4Rjcw + RkEzIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzUxNUY0MjEyRDRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz7jldwbAAAEyklEQVRIS6WWDUzUdRjHoeXWVktIc74MLREMUxBQV4RYkBmL + SBwSoZIFCgULlOJFDJDxqkiAqGgoiIQ6jaFLB1EqUaC8iMgdL8cJB3fHwR13HO8Hh3x7fn+pwN01nM/2 + 2X77Pb/n+33+v/3/95zBbGOVnZM58QHhRKwgnp9KPXuQ2CtJ6ScOjGo0fcMjI93llVX55us3rqbUc49P + zDLyw9auL4iw5l+IsMY//BRujcygdcg+ug83rpzCsVhf3C6+hHg/W+R++985BtU3pey1cCCpOYQhJzo9 + 8kPX1tZcDoS0Jp2jrCgWmakhOJMVA4GwBd1KNSQ9veiUdeNifjqyMsJxveD7f8+z2rPBlg0kNZ9gJjMj + L8RqQlSegIbLX6CuYAcOBm9FHe8B2rt70SZTgNfehTphJ+paCaEYjSIJkmP24PaPnrhfsBP8okCcCbZ8 + RFLmxIuc6PTICV5Dh4IxNqSEemAA6adzwBdJ8VeDEL/XNqGkmo/iKh4HW5fWNCL7QiEqq2sw3N+Dijwf + nPx6FUjKkpjLiU6P7MDVqL/gj8nJSY4bpbcQnZyK8EOJCI2Ox3dRcY+JjkNYTAIi4w4j7+JlKBQKjI+P + 42qqJ9J832AGawkjTnR6ZPm/iXvn9+ARiWsnJjCu1YLeGshJQCKVolMs5hBLJOiSydAjl0OpUmFweBhj + ZJAfuxVJ3ub6DTJ9LVCd40Pij6AZ01IRoWVGumE5dmZEM45RjRbnolwR72Wm3yDt85W4e2o3FVLnGg1G + xsYwSvDEdxB03gEa6vJwSopOhkZHkRPhgkPbTfUbpOwwR+XxXdT9OM79EQ/lgBLNkjpsz1iMP5t/oU7H + dIoz+oeGcTbUGVHblus3SPJYgfI0LxLSIPmaL4LyHOB5bClK6gswNDLKoUucoezvx+n9W3Dg49f0G8S5 + LUfZEU8MkpC8T43YQi8UVp3kutOFenAIvep+dClUkClVOPXNZoQ6L9NvEE3uN+PdMUBvRXevCgqVmjob + gGpgEH1PwPZYTq7soy9bDolcgRNfOWL/ZhP9BpEfLsVvMW70kQ1C2qMgEyVnUiUoQ2CuPZTUra7rYYi6 + ZDi+910EvbdEv0GYkwlKIj+BijrL+jUKbdJO1LZWwD19EUrrr0Cu6tMpzhCKJcj40gEB9ov1G4RsWoLi + UBe6V7r/n70RkPMOPDJMcLXqLPc0DF3ijBaRCOneG+H31kL9BkF2i3B9nzN1qoagQ4yDlzxQUE6/lHRd + XfLeGbA9cbccwk4JHggegi8UIc3LDj7rFug3CNiwENcCt6CH3ojm9g7qqoN79HZpF9rpjjumYGu2x3I8 + 4UNU85pwv0WAox5vY7f1/xj42SxAkf/7kCmUuNfUiho+FTa3gtfaRh22o6lNxMHWbI/lKut5uFVdh7sN + jTiybQN2rpmv18DQ1+rViUJfRwia+bjXLEB1YxNqyai+VUiditDY1sHB1myP5e408FFR34Cb5WVIdLXF + Zxbz2DywJYw51WkxZ9eqebxUFyvk7rDHD24bkOhig4RZEM/4yAZhm1Ziq6lRG2mxscmm2owwdF72suOn + ZkZCTzNjuJsaYdtT4vr63E4L4xcCSYv9IXiJU30i2BxlzmzkWRHsLp8GVsNqp2aygcHfZtZtYIryU78A + AAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkUzNzJDMjE3NEFENjExRTRCNjE0OEVEQzI4MEM0 + RTZDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkUzNzJDMjE2NEFENjExRTRCNjE0OEVEQzI4MEM0 + RTZDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI3NUQ0QkNENDRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6PyaLfAAADMElEQVRIS6VUXUiTYRT+vi3Tzd+ps23+3KRigtiPkolEQReG + UYTkhWatpWlWGkRdddfdSPImqUAJjSIT00oxLJIk0cR+tFSyzDJtgaMkDEPkdM7ZPvm2vS6jBx6es3Pe + 8zzvtm+TohLS/ov+AACStLgEQuJyLRJWYK1yzh/+FgCoQrpnfM4fOGBhcUlIMkEVkma4H4i1y2kFcMD8 + wqKQZILKZqTqmlTAWrfvMjhgbv63Dwm0hLWQohn1eNEbzrlfPiTQAtZCKjP1GXdAIC+r4XD+9CGBFrDm + RVJ1re6pZ0GyHHMvIawauYVNCFPfvvuQQAtYC6meKXU0amNsaGN/ZR60xIf9aIgN3cpGE9OzZCZ85nEm + pGiWlLABmuJCnUOXrNB7chdct4TUo32ANDbp4NuielDpqWfePdaPX6GrohSK4uLhlCEo96YlZLbOFHzH + oJXjMSBcGn4/zQGovEDqXXtzeTb+BTrKj0J3+Q54djYP7EZdTU2MPjFSK8eieQR9QtLg6GcOQPWgqKeQ + ZyOfoK30CDw+lg2Ot3Z4VLoNqo269mCNHIa2WjYn9A1PcAAqU6m9VV3TF9psOwwPS3JgZugCdNoyocwU + jU+RlImWBpezGz0vxzkA1YOiHvPFO7Ca1kGHLQtmXp2HdutmqN+/F6JiU+h3kOpyVeHJwBgHoLIpqajm + 189HoaG4CNqsGTA1UAWth9Lg6r490PygGyLjUikgzuWqQlffCAegelDdUwLqigqhpXgjTPYeh+bCFCg2 + RkEk3vxuVz/P0c43oLP3DQegLhspNalSFxiNcLswHT48LYNbBUlQk7ebzenmyhm08w1o7xmiAP6hRZiT + 70eYkzpctUuJWdHmwWs74+F1Uz7cyE+E4ohQB5mHm9a3GywpTXzektyKduIAIsKI3ISkL4rIdYle05C9 + VrZVBmvtl7eboUyv7V4jSQdwRn8FdI72iErtCUxnIuifkJ5hUqUOq9Jr7OeCNU6bTpNVqtMcDJSldOwn + KnOk+jypJ5QANRWc0cs5SEelXr54QidfwVYAMoiHq4W/gNM6OaNCJ+diaUIqN/43+Atwg27t+9ZXBUn6 + A2MdqQeVc5pWAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjUzQzNGNDI5NEQyQzExRTQ4QkE1QUNCMEVDRDZF + MDVEIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjUzQzNGNDI4NEQyQzExRTQ4QkE1QUNCMEVDRDZF + MDVEIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkI1NUY4OTYyQTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6IsaOmAAADF0lEQVQ4T62U/UuTURTH+0nICqRI1ERMMyNQe8N0ChqBwQhN + yvwhEgJjVCqJ/qCibZo6tzQ339h6Nre5prapUzc1XzItX1ilzuWMLLVAen+xf6DTuTxjdxsFVj58ebjc + c+7nnud7z3228DbpIaDFH/CfoqCn72DIDvNfPDM2KAqyr8PcJxqY+QBTb8kkjocXQTsKigGwfqYJHqIg + 1OxHGHvlWPx4hXB1YyA3g4CBhqst+piEnrDA3rA95vBAY1x8d7lq/DVZwm5PQZNvoKYdypSgHgbVEIh1 + cLOZzOCbSSsyRQRba6uWtcpVLbPcwlglInNUCJNWWKqABqMLCGvGlfpJELaQ/V1Vd1lujAhe0chtUrH5 + ZExnmJ85MdomEa+qZMbIEF2BHGunILSjdZwYgTt4gJqjjj0Rltml1Zq9AeL0Mn71Wn2mtDU80MIvsFTw + O+KPIoWC8BNYRIUaqrRQroJKjQOk9N+xLBF2pXJFKfnsDGYa8gS6xOO2whyMuoHaHpGzZ/pBM0IMrtXD + nT4HqNHXe0lYoogMFeQP4jbSDkCPTUyXmnNoPutSo+9WN5DEQDyeWCWnhqm4p7Oimt3b54rzmmKPVHKz + 0Xg0AU1pz87VJp+yXOfd9t3mBmLXsGrsJhSsDtF4iOWxKdpzyQNnuRW7vEUp13obFG05OVUBPtO5V1Sn + k5q4SX8ENfWA6C7xHsP981Bb2sf38ZKd4JhSuXUJHPHhg/WJnAeZFw0Xzt/w8erRtLmBnB/CSmaC599I + 2PYVRl+CXigu3R9SfCC0Pf1MZ1oqvqvjogX7gtRFJfb1n24g7GblfQcFP2fkBYm5anxqQcbLKgzyK/Df + WRTkV5+RMTg84ZrgAOHo4ZIDVNdJw67CpsVLZ5gifj97Typlq2ZFQXj8LKh5EHpnaIar8N+Al5l9Y9Vs + T7OiIAzjqaMsa6QJnBkeWvgOHdPkAuIV67PSeQpCYYZplsZ+KyyWLRyFF8D553EDbURY770J0rrYJbda + SYE4iWb9NcgpRKDrOMAWwYP6d5BTaC52zyaAWDlAm/DweL8AX9zXukfxHsIAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkVENUYwQThBNEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkVENUYwQTg5NEQyOTExRTQ5QzUzQzdFMkFGQkQy + NTA1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkRGNkEzOUYyOTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjYzQTM5NEY4Mjg0OUU0MTE5NDBEQTc4ODZEQzk5 + N0NGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJGRTU5OEQ1NDlEQjExRTRBRUVDOTkyMjQ5NzEw + REUwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJGRTU5OEQ0NDlEQjExRTRBRUVDOTkyMjQ5NzEw + REUwIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTY0MkI1RjlEQTQ5RTQxMUE0QzNB + MjdEOTJBQzc3QkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjNBMzk0RjgyODQ5RTQxMTk0MERB + Nzg4NkRDOTk3Q0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6B5sF9AAACe0lEQVRIS7WVb2jMcRzHL7UHanF/Mts5prE/1li3kAfu5Ak7 + 5IHNobBkSC2UIuGJkrrSWRvTmHQWK8U1T8jqUtYwkZpaGjV/Js6to5YwfXze39+fu/v23f36hXe9us+f + 7/v9rd/dr3MQ0X/F4Zm3+K9QhWajNNlBFZqN0mQHS6lMdrCUyqSgimllUsy4XmOmp+QRDllQWbygjjq6 + uimZStOX8a+ixox3pXrM1JLCDAqYJmY7c669M0bff07mcLbtEl9QE8k6V6BH5ooXMsHZZX7ae+AY7W45 + SrPm19LbsSR9m/iRA2bYGefggVePzUgKBzeu9sQpmZ4QcG/WMtk7eLjv0WMz0kOz+TX6MUXvP6cFeNbD + bz6YvQFm2Bk9PPByZO6jksLB5KvRTzTyLikIrG2ktsvXzd4g2hGjYP1ms4eHvb850qkl65LCQW/ntVs0 + 9HpMcPx0K1X4V1Ff/3NzhnphbVDsjBk8Lm/VE44s0ZJ1KS4Ie8uXUvPBE7Tn0ElCzTMqrV5BO/cfEaDG + TD5X6PFFONLygsTF7jj1vxihyPkYNTS1iFrFxm37KHIhJmp43L7qZxzp0pJ1SeHhQGgLJQaH6fb9R1QX + 2EB3Ek9FryLe95j8K9eLT/TB0FZcskOP1iRdkIh23aR7Ay9pzaZddKY9Jup8nIpeoXXhZlHD655b85Bj + p2npLOmCML+dD/iTZhaX3+UvbRB1PpzeygFnSUUvatecRUMzisoOc+x0LZ3FixxYhQyK1cxyZhkTYhqY + RgnM6hmcwVl4ljDI0KS4AC+Kmyli8Jv2MF7GNwXY4QzOwgNv5mWTL7CLpVQmO1hKZbKDpVR/1P8OcvwB + lh7gOXXZq9sAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkNDMTJDMTRENEFDOTExRTRCRDk4ODBFRTFERTlG + MzY1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkNDMTJDMTRDNEFDOTExRTRCRDk4ODBFRTFERTlG + MzY1IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjYwQjFGREZDNjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4rRYZ8AAACEElEQVRIS2MQltOlCP///x8vxqqJFIzNUGSMVRMpmCDApokU + TBBg04SEpwHxfwJ4GtQo7ACoABfODY3N+P/773+82C88GWRJBtQ4TIBmKAyziCsa/L98/c5/37Ck/3Wt + fVixT2ji//OXr/8XU9T/zy0kzQo1EhVgMRyEm0uqW//vP3Lqv5Cs9ml+CZVp/OLKs/nFleYgY0EZzQt7 + Dh7/n1/eCFLXBjUSFWAxXENZ1/r/g6evgK5P/l/d1IMXe4ck/L//+MV/RW2r/0IyWppQYxEAiwWT+qfN + /7/7wHGQq84BXT9FQEq9S1Bas0VQWqMVFWu2ANWc2LbnyP/eKfNA6qdDjUUANMN9Tex8/j999eG/LzDy + yuo7icIeQfH/n7x8/x+kV0hGOwBqNASgWbBt+frt/7cCXQRko2Cg9xfCXA5io8uv37bv//J124G+0NkF + NJYRYjoQACWR8f97T99gxSA5oHIpECZCHTvIbDCAGgy34MaDF1ixo08k3LWO3hEY8jC9IBporBDEdCAA + CqBYcPnOU4ow1AKQTyEA3YKz1x9RhKEWyEBMBwJ0C05cvocVl9R3o2BsakCYoAWHz9+mCBO0YP/pGzhx + flUHGGOTg2GCFuw+cY0iTNCCHceuUIQJWUBMBYMX80uo7gQai9MCkJAoENsDcQiZGKQXZAYEYLEAlM1B + CkCuIAeD9EKLCgYGAMLPWmGxemtkAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkY2MzBBRkRDNEFDOTExRTQ5Q0JEQkU0NDNBNTYy + QTY5IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkY2MzBBRkRCNEFDOTExRTQ5Q0JEQkU0NDNBNTYy + QTY5IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjgwQjFGREZDNjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz6+q/BOAAABR0lEQVRIS7WVTUvDQBCGe/PoQQQP4s2jv8E/4W/rXxEFQRAp + olCwfjRUJWK1ltJgNJh+6Toz7OCSzrIZFwce2LDzvs8hkDSMMf/K7wFmbWunCRgFTQp6RhKY+ZephSvh + Du7hoWf3AgPT+XcteLcqcUcUlNMFYYNLuPeVXZK4IwqKckZMZgsveO/u8jNKqMiOKHgrJrWQdqsSUTDO + Pwm7LBK6pzIYUTDMPoi8KGvB+4wVrGCfKHge5VFYwTr2iYLHQUbgWYObg6pN7BMFd/0RMczeVXAuKOim + r1EEBVf3LwSeNbg5qPIL2skTkQ7GKjgXFJzfpFEEBa3LBwLPGtwcVPkFJ+0ekcAL08C5oOD4IokiKDg6 + uyXwrMHNQZVfcNi6Jjq9vgrOBQX7p50oQgLtT3+J1Y3tA6iSBXbwS7gL7P0RzNqvqWn8AE4SSnpUkJk6 + AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFGMTBBQzY2NEFDQTExRTRBQTYyQjA5QjRFNjBF + MzcyIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFGMTBBQzY1NEFDQTExRTRBQTYyQjA5QjRFNjBF + MzcyIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0EzRTc1RjdDOTRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjg2NjBEMzE2NEFGRTExRTQ4NTY1QzE4RjMzMkM0 + NEY4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjg2NjBEMzE1NEFGRTExRTQ4NTY1QzE4RjMzMkM0 + NEY4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTU5NUNEQTdGQTRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz5BZhOvAAAD9ElEQVRIS7WWe0xbZRiH95+T6DQxcc7NLfrHTBaR4NyFmDAy + ljFwwERGpmRxxmyY6QbqgogDhqluOpFLlm6AFslGRVlXKISVS7tByzgUOF1vtLUtLVBogQ4YsLoN9ec5 + 3+xXyIiJWdrkyfed9/u979PLSdsVz6wPfyQA/Cehf3DPQsiBECHkBVj4CyGBn00E9xb+DglU4L/35xIM + 7j78qCpAlVqAg6KNkOtqMTPnx9TcLOzjFty5u4CJWR9u++/AM+NBh7WRnM3/cX/JHCqY899fwu35u/BN + z2HM60NcURjB7hwmNX4/PjmNWzPzZL/v3FPIEK9DQskTNOudmML0rD8oiD0d9hAutxej4z6yZ3pZaA0D + ZO8c8dDM8d9egtSxGxetMTiri8Ih8XpS79cZ4fZOBgVu7y2YrINg9QOIPvU4QcPqyWp1DJM6vwbOUivW + QGSMgdi8E7mqSGQqIpAoXE3OmuRtuKHRwjU6HhQMe6dgG/LA4hhBVM5KJJatJmsPa8TNARup8xm+1tnd + R9bkc88hicsllnGrcC2p1Te1QKliYLQ6SZ4KhriLYe80oaa9Ghk/JEMkqYJS3Q0DF3a4J7D9s1V4s2QN + Nmc+hviTLyOvIgv55SeQe/4YUgu3QlRXjbbrN6A12TDoniSzqMDh9lEszjEoGQbF4u/wa+tlmOxu2Ecm + 0dglR86FjxEteBZx2Zsgab4KhaoH17lXJFO04nKLDCrus+L7A7OowOLyUsxODwy2EaTm78BrWU/io6KD + YE126KxDaFDKEZ4Rhg8E+1HbKAOjNZP6TYsL0mtNaFYrUCmrAGu2YWBwLCgw2Ecf4qeGakRmPo203D1Q + dPWjz8TdBGYX0guSIK5vgLyDQa/BDr3NTdAYrYg68iI2HliJiitV6DM6ggLWwt0p/8J9PeFMsRDnJSLE + H38DsXEJSEhKAaOzod88hMjXt+KTz/PQ2WtCLyfl8wE2RbyKkyWFqJLUQdqu4ASvPBBojE4KH9wVtxel + v5Tj5zopuU5MSQOjt6NG0swJtmHtCxtwrUePHsMDQaA3J/9rfJpTgDY1CwWjDwq6dHYK37BzdwJqZe3I + E3yP9ENHsG//u+TsvcNH8dXZMryVlo4ioYjmA73ZnCA7T4BO1gqV1hp8izr6f6fwDafOlKLgdAlidsXj + 29JKJHOCFrWOnAXga4F8gIjN21Df1k1nUYFSY6bwwUvSVjy/bgN2cILKmnokvf0O8r8pRvr7H5JMcwdL + zvkcn1/cvxgqaGVMFL6BX6Nj9+BLQREuXLyCvSkHEB65BcXll2ju8LETyPqikOaXgwqudhlCQkAQ8p/M + R2K5fxKLWbbp/7Dc0CBY8Q+pPmOq0VkzzQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJGQzkyMzc0Rjk0OUU0MTE5NjNCQjRENDMzQjlC + MUM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjIxNUQ2NkYyNEQyRDExRTQ5N0NDRjdBNTBDQjc0 + MUY3IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNUQ2NkYxNEQyRDExRTQ5N0NDRjdBNTBDQjc0 + MUY3IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkU1NUY4OTYyQTRERTQxMUIzNkJE + NUVDQjU5MzE1NjIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkZDOTIzNzRGOTQ5RTQxMTk2M0JC + NEQ0MzNCOUIxQzgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4lOJsMAAADqUlEQVRIS6WTf0hVdxjGj2beulPvD52aU6Np6tKBhUWsYjIH + prDYSlZjNPsjlUnkMmSx6eJqS/u5zXGtoKKEMaEt2lpZ20RX01Bjad31A8UakdZ0SyrLJfHueU7H0zl6 + U8QXPvCe933e5/3e8z1XCY5+dVKIyJh4HZoI48bQE5kU44a3ISM45TxQCTxgQIM5a/M0m+eHN1OC4TfB + 96mZ78reg9+I50qn3HvwSIU5a+xBcwyka3ajY3DoySgwUJ44P02O/vSz4HlMfqitk7mLlnLRNs3SHAOD + QzoQOYF7de4Gud17V1DTuf/wP7nScUOFubF3559+4QxngUOzfhr9DwZV0AgHVZ99/oXcvf9IUNPZd6hG + 5qS8Ic7IOb2EOWtGDWdKtuzmkj300uwVpa9/gOZTae6qqBQ8myjb4RZbeEyjJcBROt0W6rLaw4unBYYU + 2mfMrmNvpJ4ewdFJe+Hnry7o7rvHBV+v/7hUkJtoab8qobOSZarlhfX2iLhjS5d/IBkrsvlLDmPJEvao + GTlXsKmMS9zqApjnZWatkeu3+uSvnn9NlO2skqCwl2tt4bH7N7l26nXmzqgkFxZVUWOcIfSiZ3BU0odc + 0Hay/px03Px7FOuKXBIUOms/zDwn6pr0OnOcsN0ZlVhEjXFmGHpCc0n9BenvZMulzlvyZ1ePiZLySsG7 + /hYn3VpYXKHXmdtnxLmx4CtqjDOEXunLs3F3sS7lwrWbCoT71hYUC3ITJxta1TsIDImOh+ZA2rL3hdjC + Yhr8pwdlsUfNyLkceEFThxt4TWnxXFf8rTab46WEmo8+KRc8m9jwaQXed2I1Trw4IDgqx2oPK8EFb4T+ + KHsj9fSA+Rkf3ynvYUGi0tjWybv2DXBGxjsiEo7kF5XJ7xc6BHWdzdv3yOzk1/lOu3BxN5izZtRwJr+o + VDX3s1jz4ZkCHErD+WsqiCn4xuPsEfHfvbUqV2rPtgnqOvWtV6Xm+G8qzI09ajmjmvtPy4PXQhBCT+XX + 5ss6CD/wIl5H9SspaVLhrhbUx4QaavG1/YLZVWABPTQvRTnV5DGhNZyBITPz8cqaU1KXSeHmXXLgyGn5 + seEPFeassYfDXLTawr7EzNsgmbOax9M4cfbiKBC+IBDEYjgXn9spfKrduIPHBHkPXke9JcBZCs1KkEqt + NsPZZ4H/gVcQPsAC+HMTwCKQAXhSwpw19qihljPm8GZuBDG8yAZCQYQGc9a8Gw+HN9OJMG54G5oIY4ei + /A9dc78cqtG90gAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADZmlUWHRYTUw6Y29tLmFkb2Jl + LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi + Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv + cmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPiA8cmRmOlJE + RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 + cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv + bS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw + ZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1w + TU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkVGN0NDMDNDRTA0QUU0MTE5NzRBQ0FBRUI0QjM1 + RDZFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjFFRUUzNDdFNEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFFRUUzNDdENEFGMTExRTQ5M0I5QzUwRjVCODdC + MERFIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpIj4gPHhtcE1N + OkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkI0NEVFQkRFRjRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RUY3Q0MwM0NFMDRBRTQxMTk3NEFD + QUFFQjRCMzVENkUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/ + eHBhY2tldCBlbmQ9InIiPz4Ym8PVAAAC+UlEQVRIS6WVbUhTYRTHr5tuc073YoSmmyuwNPWLKdaHEgpL + ISg/VB8Ugj5oRi9C9iEDe8UKMzDKKRVIRfRCaR8Ko8xEK6PMbDInmqlroKit+YYiejrnaa47dreye+DH + s+f8z/M/57lw77jPV3Wi8BcAwHFtFdqlgqe4IERCe3/BGrwv1y4VIPC8CpEwJx/BGrRc1PwrAYjsTZkW + uh6vBPz91yaswatzal8oXp5R72k4q65FBnEPjaUasNTFgfNrGpjvxQDl0MdnE9ag/mSYF89KwnbiOvCx + xgj9zSkwZk2HKXsWTH7PhElbBoyZY+GHJQU+3dID1vm/yZPiUA/qjocewHWhr2kdTroZbO9SoeNBLDRd + iYCnpzTQdjsGRtqTofVmNGAdaFesAV30WgjXJ0K4IanSZfsnHhap3Nw/qsrFdWEQTTtr46G+dBncLVRZ + qvJDTBuSjdDd1QG1xWpoMUUB1oG1uwcGbHZwOCdgdm6eGtBtPOPO4ZBFopDxL48SANf5qjxl3aEseTaW + GDSRq2t00fFsUtQYGpxcGxUHOn0CM3ajT6z+7eyKG/uVjOv5StPrKiNU5ym78zPkO1EyIMuRMB1e/+fE + NIxPzQDWQu+3AcbwqAMmpmdhambOjdctru0LJpTIeMXe4IYkgzQO05GIGpHjRCb+hNSMbuI1OR/+LS7n + KrhLOYrs8hxFe5JeasQUTR2CSEmjA2POaTcjjkkYGnWylZ/nQ2fIm8WF3XLu/C552ZGtsjTc0sdFiUiw + qNI90f9TyZ3OlnElO2QFaEpTk7mUclRgG3aIgjy4E9tlXFGmLBWNFUgg7QkS++yjomANjm0L4vI2BWrI + HJHQniDR2j8kCtagcEsgt36VhF7zAIL2BInmXrsoWIOD6VJBSGzrGhQFa1CwUSoIia3mPg8o5w+henwq + wkFic3uPB0K5RXzVu+y8g8TGD1YPKOcPoXqXnXeQ+KLV4gHfTAihepedd5BY/7ZTFKwB/a3xWQwURX8q + 1BGxz38BvCwLsyQ3iHgAAAAASUVORK5CYII= + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 diff --git a/TreeUtils.cs b/TreeUtils.cs new file mode 100644 index 0000000..e3c3615 --- /dev/null +++ b/TreeUtils.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using GeoScene.Globe; + +namespace Cyberpipe +{ + public class TreeUtils + { + /// + /// 构造tree,最多解析三层,可放在工具类中 + /// + /// 所属地球 + /// 要加载的树 + /// 数据来源,实测数据/施工数据/规划数据/红线数据,为空则展示全部 + public static void initTree(GSOGlobeControl gsoGlobeControl, TreeView treeView, string viewDatasrc) + { +// treeView.Nodes.Clear(); + LayerConfig layerConfig = Utility.layerConfig; + List datasrcs = layerConfig.datasrcs; + foreach (DataSrc datasrc in datasrcs) + { + if (viewDatasrc != null && !viewDatasrc.Trim().Equals("") && !datasrc.label.Equals(viewDatasrc)) continue; + TreeNode rootNode = treeView.Nodes.Add(datasrc.label); + List layerTypes = datasrc.layertypes; + foreach (LayerType layerType in layerTypes) + { + TreeNode secNode = rootNode.Nodes.Add(layerType.label); + List layers = layerType.layers; + foreach (Layer layer in layers) + { + GSOLayer gsoLayer = gsoGlobeControl.Globe.Layers.GetLayerByCaption(layer.layer); + if (gsoLayer == null) continue;//将不存在的去除 + TreeNode node = new TreeNode(); + node.Tag = gsoLayer; + node.Text = layer.label; + node.Checked = gsoLayer.Visible; + if (gsoLayer.Visible) + { + secNode.Checked = true; + rootNode.Checked = true; + } + secNode.Nodes.Add(node); + } + } + } + } + + + /// + /// TreeNode选中状态改变,对其子节点和父节点的选中状态做相应改变 + /// + /// + /// + public static void treeNodeCheckedChange(GSOGlobeControl globeControl, TreeNode node) + { + if (node.Tag != null) + { + if (node.Tag is GSOLayer) + { + GSOLayer layer = node.Tag as GSOLayer; + layer.Visible = node.Checked; + globeControl.Globe.Refresh(); + } + else if (node.Tag is GSOTerrain) + { + GSOTerrain feat = node.Tag as GSOTerrain; + feat.Visible = node.Checked; + globeControl.Globe.Refresh(); + } + } + + CheckParentNode(node); + if (node.Nodes.Count > 0) + checkChildrenNode(globeControl, node, node.Checked); + } + /// + /// 树形结构中,根据parentNode的选中状态,更改其子节点的选中状态 + /// + /// + /// + /// + public static void checkChildrenNode(GSOGlobeControl globeControl, TreeNode parentNode, bool isChecked) + { + foreach (TreeNode childNode in parentNode.Nodes) + { + childNode.Checked = isChecked; + if (childNode.Tag is GSOLayer) + { + GSOLayer layer = childNode.Tag as GSOLayer; + layer.Visible = isChecked; + globeControl.Globe.Refresh(); + } + else if (childNode.Tag is GSOTerrain) + { + GSOTerrain feat = childNode.Tag as GSOTerrain; + feat.Visible = isChecked; + globeControl.Globe.Refresh(); + } + if (childNode.Nodes.Count > 0) + checkChildrenNode(globeControl, childNode, isChecked); + } + } + + /// + /// 子节点则父节点:一选则选,全不选才不选 + /// 改变父节点的选中状态,此处为所有子节点不选中时才取消父节点选中,可以根据需要修改 + /// + /// 要检查的节点,更改其父节点状态 + public static void CheckParentNode(TreeNode curNode) + { + + if (curNode.Parent == null) return; + bool bChecked = false; + foreach (TreeNode node in curNode.Parent.Nodes) + { + if (!node.Checked) continue; + bChecked = true; + break; + } + curNode.Parent.Checked = bChecked; + CheckParentNode(curNode.Parent); + + } + } +}