diff --git a/Administration.html b/Administration.html
new file mode 100644
index 0000000000000000000000000000000000000000..65ae1c9a343bc800ef9f945211e94fc0d64beba2
--- /dev/null
+++ b/Administration.html
@@ -0,0 +1,104 @@
+<!doctype html>
+<html lang="fr">
+  <head>
+    <meta charset="utf-8"/>
+    <title>Inscription Bol d'or d'hiver</title>
+  </head>
+  <header>
+ </header>
+  <body>
+    <text id="btnTxt">Formulaire d'inscription</text>
+    <main>
+      <form  method="POST">
+        <label>Nom equipe</label><br>
+        <input type="text" id="equipe"><br>
+        <label>Tag id</label><br>
+        <input type="text" id="tag" >
+        <button id="lastTag">Recuper Tag Scanné</button><br>
+        <button id="enterData">Inscrire l'équipe</button>
+
+      </form>
+    </main>
+    <h2>Gestion de la course</h2>
+    <button id="raceControl">Commencer la course</button>
+
+</body>
+<script>
+const btnPost = document.getElementById("enterData");
+const btnRaceControl = document.getElementById("raceControl");
+
+const btnGet = document.getElementById("lastTag");
+btnPost.addEventListener("click",submitEntry);
+btnGet.addEventListener("click",getLastTag);
+btnRaceControl.addEventListener("click",submitStartContol);
+isRaceStarted = false;
+
+fetch('http://localhost:8000/isRaceStarted')
+  .then((response) => response.json())
+  .then((res) => {
+      isRaceStarted = res.data
+      if(isRaceStarted) {
+        btnRaceControl.innerHTML = "Finir la course"
+      }
+    });
+
+function submitStartContol(event) {
+  var raw = "";
+  var requestOptions = {
+    method: 'POST',
+    body: raw,
+    redirect: 'follow'
+  };
+  isRaceStarted = !isRaceStarted
+  fetch("http://localhost:8000/raceContol?status="+isRaceStarted,requestOptions)
+  .then(response => response.json())
+  .then(result => console.log(result))
+  .catch(error => console.log('error', error));
+  if(isRaceStarted) {
+    btnRaceControl.innerHTML = "Finir la course"
+  }
+  else {
+    btnRaceControl.innerHTML = "Commencer la course"
+  }
+}
+
+function submitEntry(event) {
+  tag = document.getElementById("tag").value;
+  nomEquipe = document.getElementById("equipe").value;
+  event.preventDefault();
+  var myHeaders = new Headers();
+  myHeaders.append("Content-Type", "application/json");
+
+  var raw = JSON.stringify({
+    "tag_id": tag,
+    "team_name": nomEquipe
+  });
+
+  var requestOptions = {
+    method: 'POST',
+    headers: myHeaders,
+    body: raw,
+    redirect: 'follow'
+  };
+
+  fetch("http://localhost:8000/registerTag", requestOptions)
+  .then(response => response.text())
+  .then((res) => {
+      document.getElementById("tag").value = ""
+      document.getElementById("equipe").value = ""
+      console.log(res)
+    })
+  .catch(error => console.log('error', error));
+}
+function getLastTag(event) {
+  fetch('http://localhost:8000/LastTagDetected')
+  .then((response) => response.json())
+  .then((data) => {
+      document.getElementById("tag").value = data.data;
+      console.log(data.data)
+    });
+  event.preventDefault();
+}
+
+  </script>
+</html>
diff --git a/FluxOCC.drawio.png b/FluxOCC.drawio.png
new file mode 100644
index 0000000000000000000000000000000000000000..9f6aae483cfe6acdbfb1a2a70e19e1be64a9f18d
Binary files /dev/null and b/FluxOCC.drawio.png differ
diff --git a/Installation.txt b/Installation.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cd45e6e53637f23fe05e97306a83f77aa38c23df
--- /dev/null
+++ b/Installation.txt
@@ -0,0 +1,11 @@
+Routeur
+Ballenberg
+admin
+sc4lpsc4lp
+
+
+lecteur:
+USR-WIFI232-610_5EC8
+10.10.100.254
+admin
+admin
\ No newline at end of file
diff --git a/Manuel d'utilisation.pdf b/Manuel d'utilisation.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b6132afcacc76ec89fa6e2b22014479e02b86d87
Binary files /dev/null and b/Manuel d'utilisation.pdf differ
diff --git a/Passage.html b/Passage.html
new file mode 100644
index 0000000000000000000000000000000000000000..545e4354ddf79dd2e3b0c9cc6cb3e57aa7fdeec6
--- /dev/null
+++ b/Passage.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html lang="fr">
+  <head>
+    <meta charset="utf-8"/>
+    <title>Affichage des passages</title>
+  </head>
+  <header>
+
+ </header>
+  <body onload="showAlert()">
+    <h3>Filtres: </h3>
+    <select onchange="updateFilter()" id="teams" name="teams">
+    </select>
+    <h3 id="filterType">Pas de filtres</h3>
+    <p id="loadRes"></p>
+</body>
+<script>
+    const dropdownList = document.getElementById("teams")
+    const filterTypeElem = document.getElementById("filterType")
+    const requestOptions = {
+        method: 'GET',
+        redirect: 'follow'
+    };
+    var passagesUrl = 'http://localhost:8000/passages'
+
+    fetch("http://localhost:8000/teams", requestOptions)
+    .then(response => response.json())
+    .then((res) => {
+        data = res.data;
+        console.log(data)
+        res = "<option default value='all'>All teams</option>"
+        data.forEach(e => {
+            res += "<option value='"+e.team_name+"''>"+e.team_name+"</option>"
+        });
+        res += "</table>";
+        dropdownList.innerHTML = res;
+    });
+    function updateFilter() {
+        if(dropdownList.value == 'all') {
+            passagesUrl = 'http://localhost:8000/passages'
+            filterTypeElem.innerHTML = "Pas de filtres"
+            showAlert()
+        }
+        else {
+            passagesUrl = 'http://localhost:8000/passagesByTeam?teamName='+dropdownList.value
+            filterTypeElem.innerHTML = "Filtré par équipe: "+dropdownList.value
+            showAlert()
+        }
+    }
+    function showAlert(){
+        cmpt = 0
+        res = "<table><tr><th>Position</th><th>Temps</th><th>Equipe</th></tr>"
+        fetch(passagesUrl)
+            .then((response) => response.json())
+            .then((data) => {
+                x = data.data;
+                x.forEach(element => {
+                    cmpt = cmpt + 1;
+                    res += "<tr><td>" + cmpt + "</td><td> " + element.timestamp + "</td><td>" + element.team_name + "</td></tr>";
+                });
+                res += "</table>";
+                document.getElementById("loadRes").innerHTML = res;
+            });
+
+    }
+    const interval = setInterval(function() {
+        showAlert()
+    }, 5000);
+  
+</script>
+</html>
diff --git a/Projet Definition.txt b/Projet Definition.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fce5059cf2c7c9a7f0a8e39c418d97ea98a0a73a
--- /dev/null
+++ b/Projet Definition.txt	
@@ -0,0 +1,9 @@
+equipe ...   Tag : UID 0x.....
+
+1) scan UID (appairage dans Genève plage), rentrée dans une base de donnée (Id, équipe)
+
+2) passe à coté de la bouée : lit ID + timestamp, -> Base de donnée
+
+3) tableau dynamique avec équipe et heure de passage
+	visble depuis smartphone
+(organisateurs, Users)
diff --git a/README.md b/README.md
index af268a9e93efbe4a8965d0ab80ed580cf2bb94d3..0ebacfa0b2ed6f9d64f418bfaf6b88c07edd52f5 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,33 @@
-# Rfid
+# API-object-comm
 
-
-
-## Getting started
-
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
-
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
-
-## Add your files
-
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+## install Requirement
 
 ```
-cd existing_repo
-git remote add origin https://gitedu.hesge.ch/marc.laugt/rfid.git
-git branch -M main
-git push -uf origin main
+pip install fastapi
+pip install pydantic
+pip install starlette
+pip install databases
+pip install databases[aiosqlite]
+pip install uvicorn
+ou : sudo apt install uvicorn
 ```
 
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitedu.hesge.ch/marc.laugt/rfid/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
+## Launch API
 
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!).  Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
+```
+uvicorn api:app  --reload --host 0.0.0.0 --port 8000
+```
 
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
+## Rapport: 
 
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
+rappeler: 
+- le besoin: on veut qu'une equipe voulant participer au bol d'or puisse aller voir l'organisateur pour s'inscrire. Pendant l'inscription on attribue un tag à cette équipe. Pour cela le tag doit être scanné et dois pouvoir être récupéré sur l'interface d'inscription. Ensuite lors de la course, les spectateurs doivent avoir accès aux passages des équipes au checkpoint et doivent pouvoir voir le momment au-quel ils ont passé le checkpoint.
 
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
+- le cahier des charges
+expliquer comment ont à répondu à ce besoin avec un diagramme de flux
 
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
+faire un manuel utilisateur (1 page recto/verso)
 
-## License
-For open source projects, say how it is licensed.
+temps: 8/9min par équipe
 
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+faire une vidéo démo de 2 min montrant notre appli en marche pour montrer pendant la présentation
diff --git a/Rapport d'avancement - Groupe TBD - Semaine 47.pdf b/Rapport d'avancement - Groupe TBD - Semaine 47.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9dbdbf26fe42ef2f344dca3215aa71fcede063d0
Binary files /dev/null and b/Rapport d'avancement - Groupe TBD - Semaine 47.pdf differ
diff --git a/Rapport d'avancement - Groupe TBD - Semaine 48.pdf b/Rapport d'avancement - Groupe TBD - Semaine 48.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..68d205bbadbde3f644b1960e28419b2053f73533
Binary files /dev/null and b/Rapport d'avancement - Groupe TBD - Semaine 48.pdf differ
diff --git a/Rapport d'avancement - Groupe TBD - Semaine 49.pdf b/Rapport d'avancement - Groupe TBD - Semaine 49.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5b9f8298129ef070ff285bb0cd13caa8fc187a59
Binary files /dev/null and b/Rapport d'avancement - Groupe TBD - Semaine 49.pdf differ
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/.~dc0a90da73da6859-DC0A90DA73DA6859!189353-ccde7b.insyncdl b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/.~dc0a90da73da6859-DC0A90DA73DA6859!189353-ccde7b.insyncdl
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/.~dc0a90da73da6859-DC0A90DA73DA6859!189354-1e77c3.insyncdl b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/.~dc0a90da73da6859-DC0A90DA73DA6859!189354-1e77c3.insyncdl
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/6dc67eef-6175-4ebb-9321-9bec39526748.vsidx b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/6dc67eef-6175-4ebb-9321-9bec39526748.vsidx
new file mode 100644
index 0000000000000000000000000000000000000000..da3bb27d3d44be130839ce3ef2c4b01843518892
Binary files /dev/null and b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/6dc67eef-6175-4ebb-9321-9bec39526748.vsidx differ
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/86bdfe4d-1bc9-4624-8618-ed51c621dbfd.vsidx b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/86bdfe4d-1bc9-4624-8618-ed51c621dbfd.vsidx
new file mode 100644
index 0000000000000000000000000000000000000000..33a8ed6fe4cd7d1d0d078a93dc8a5e0ceac33462
Binary files /dev/null and b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/86bdfe4d-1bc9-4624-8618-ed51c621dbfd.vsidx differ
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/8e23093c-e57d-4518-933c-ad953db453b5.vsidx b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/8e23093c-e57d-4518-933c-ad953db453b5.vsidx
new file mode 100644
index 0000000000000000000000000000000000000000..2d05d96b4affe72ca28beea8b7fdaf522b4f6d31
Binary files /dev/null and b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/8e23093c-e57d-4518-933c-ad953db453b5.vsidx differ
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/b44b8ace-fb41-4c94-a57e-18e29dcf3353.vsidx b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/b44b8ace-fb41-4c94-a57e-18e29dcf3353.vsidx
new file mode 100644
index 0000000000000000000000000000000000000000..622bc872c04cd98281498d13edb7fae101b04771
Binary files /dev/null and b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/b44b8ace-fb41-4c94-a57e-18e29dcf3353.vsidx differ
diff --git a/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/read.lock b/SendTags_DL9230/.vs/DL9230Demo/FileContentIndex/read.lock
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SendTags_DL9230/.vs/DL9230Demo/v17/.suo b/SendTags_DL9230/.vs/DL9230Demo/v17/.suo
new file mode 100644
index 0000000000000000000000000000000000000000..e5fb5c4ca2254715e3595bf2c90f297a07b57204
Binary files /dev/null and b/SendTags_DL9230/.vs/DL9230Demo/v17/.suo differ
diff --git a/SendTags_DL9230/AdressServer.txt b/SendTags_DL9230/AdressServer.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1e5bd2980e47f72c9bc18790726f01e3ff142349
--- /dev/null
+++ b/SendTags_DL9230/AdressServer.txt
@@ -0,0 +1 @@
+http://localhost:8000/
\ No newline at end of file
diff --git a/SendTags_DL9230/AutoConnect.cs b/SendTags_DL9230/AutoConnect.cs
new file mode 100644
index 0000000000000000000000000000000000000000..465ef09de8de5eea45d8756c0a2b13f175447d5e
--- /dev/null
+++ b/SendTags_DL9230/AutoConnect.cs
@@ -0,0 +1,444 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
+using System.Windows.Forms;
+
+namespace Ethernet_data
+{
+ 
+
+    public class AutoConnect
+    {
+        private Socket UDP;
+        private bool _closeing = false;
+
+        public bool Closeing { get => _closeing; set => _closeing = value; }
+        private bool resing = false;
+        private IPEndPoint iep;
+        private UdpClient UDP_send;
+        TcpListener m_sockListener=null;
+
+        public delegate void addDeviceHandle(DeviceInfo deviceInfo);
+        public event addDeviceHandle AddDeviceEvent;
+  
+
+        /// <summary>
+        /// The response of the listening device to the broadcast 监听设备对广播的响应
+        /// </summary>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public Object read_message(byte[] data)
+        {
+
+            UDP = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+            UDP.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
+            IPEndPoint iep1 = new IPEndPoint(IPAddress.Any, 65534);
+            EndPoint Remote = (EndPoint)(iep1);
+            UDP.Bind(Remote);
+
+            iep = new IPEndPoint(IPAddress.Parse("255.255.255.255"), 65533);
+            UDP_send = new UdpClient();
+            UDP_send.Send(data, data.Length, iep);//发送数据
+            UDP_send.Close();
+            Object result = listen();
+            return result;
+
+        }
+
+        /// <summary>
+        /// listen 
+        /// </summary>
+        /// <returns></returns>
+        private Object listen()//监听
+        {
+            try
+            {
+                byte[] receive_data = new byte[1024];
+                bool result = false;
+                int delaytime = 0;
+                while (true)
+                {
+                    Thread.Sleep(100);
+                    if (delaytime++ > 20)
+                    {
+                        return result;
+                    }
+                    if (UDP != null)
+                    {
+                        if (UDP.Available > 0)
+                        {
+                            delaytime = 0;
+                            resing = true;
+                            UDP.Receive(receive_data);//返回接受的数据 Encoding.UTF8.GetString
+                            resing = false;
+                            //  if (receive_data.Length != 208) continue;
+                            if (receive_data[207] != 13) continue;
+
+                            if (receive_data[1] == 0x10 && receive_data[2] == 0x04)      //获取设备应答
+                            {
+
+                               DeviceInfo deviceInfo= GetDeviceInfos(receive_data);
+                                if (deviceInfo != null&&AddDeviceEvent!=null)
+                                {
+                                    AddDeviceEvent(deviceInfo);
+                                }
+                                delaytime = 0;
+                                result = true;
+                            }
+                            else if (receive_data[1] == 0x10 && receive_data[2] == 0x06)      //设置设备IP地址应答
+                            {
+                                if (receive_data[77] > 0)
+                                {
+
+                                    return false;
+                                }
+                                return true;
+                            }
+                            else if (receive_data[1] == 0x10 && receive_data[2] == 0x1F)      //设置设备工作模式应答
+                            {
+                                if (receive_data[119] == 0)
+                                {
+
+                                    return false;
+                                }
+                                return true;
+                            }
+
+                        }
+                    }
+
+                }
+            }
+            finally
+            {
+                if (UDP != null) UDP.Close();
+
+            }
+        }
+
+        /// <summary>
+        /// get the deviceInfo form bytes data  从字节数组解析设备信息
+        /// </summary>
+        /// <param name="receive_data"></param>
+        /// <returns></returns>
+        private DeviceInfo GetDeviceInfos(byte[] receive_data)
+        {
+            DeviceInfo deviceInfo = new DeviceInfo();
+
+            string devicename, IP, SubnetMask, Gateway, MAC;
+            MAC = receive_data[72] + "-" + receive_data[73] + "-" + receive_data[74] + "-" + receive_data[75] + "-" + receive_data[76] + "-" + receive_data[77];
+            IP = receive_data[78] + "." + receive_data[79] + "." + receive_data[80] + "." + receive_data[81];
+            SubnetMask = receive_data[82] + "." + receive_data[83] + "." + receive_data[84] + "." + receive_data[85];
+            Gateway = receive_data[86] + "." + receive_data[87] + "." + receive_data[88] + "." + receive_data[89];
+            byte[] name = new byte[21];
+            Array.Copy(receive_data, 90, name, 0, 21);
+            devicename = Encoding.Default.GetString(name);
+            devicename = devicename.Substring(0, devicename.IndexOf('\0'));
+            deviceInfo.IP = IP;
+            deviceInfo.MAC = MAC;
+            deviceInfo.SubnetMask = SubnetMask;
+            deviceInfo.Gateway = Gateway;
+            deviceInfo.Devicename = devicename;
+            return deviceInfo;
+        }
+
+        /// <summary>
+        /// get the reader power by deviceIp 根据设备ip获取设备功率
+        /// </summary>
+        /// <param name="ip"></param>
+        /// <param name="port"></param>
+        /// <param name="deviceIp"></param>
+        /// <param name="deviceCount"></param>
+        /// <returns></returns>
+        public string GetPower(string ip, string port, string deviceIp, int deviceCount)
+        {
+            if (m_sockListener != null)
+            {
+                m_sockListener.Stop();
+            }
+            try
+            {
+                IPAddress localAddr = IPAddress.Parse(ip);
+                m_sockListener = new TcpListener(localAddr, int.Parse(port));
+            }
+            catch { }
+           
+            m_sockListener.ExclusiveAddressUse = false;
+            m_sockListener.Start(deviceCount);
+            Thread.Sleep(500);
+            int delaytime = 30;
+            TcpClient tcpclient_tmp = null;
+            bool result = false;
+            
+
+            while (delaytime-- > 0)
+            {
+                try
+                {
+                    if (m_sockListener.Pending())
+                    {
+                        tcpclient_tmp = m_sockListener.AcceptTcpClient();//侦听到连接后创建客户端连接TcpClient 
+                        if (tcpclient_tmp != null)
+                        {
+                            string iptmp1 = tcpclient_tmp.Client.RemoteEndPoint.ToString();
+                            iptmp1 = iptmp1.Substring(0, iptmp1.IndexOf(':'));
+                            if (tcpclient_tmp.Connected == true && deviceIp == iptmp1)
+                            {
+
+                                string value = getDB_tcpip(tcpclient_tmp);
+
+                                m_sockListener.Stop();
+                                return value;
+                            }
+                            else {
+                                tcpclient_tmp.Close();
+                            }
+                        }
+
+                    }
+                }
+                catch (Exception ex)
+                {
+                }
+
+            }
+            m_sockListener.Stop();
+            return "";
+        }
+
+        /// <summary>
+        ///  set the reader power by deviceIp 根据设备ip设置设备功率
+        /// </summary>
+        /// <param name="ip"></param>
+        /// <param name="port"></param>
+        /// <param name="deviceIp"></param>
+        /// <param name="deviceCount"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public bool SetPower(string ip, string port, string deviceIp, int deviceCount, string value)
+        {
+            if (m_sockListener != null)
+            {
+                m_sockListener.Stop();
+            }
+            try
+            {
+                IPAddress localAddr = IPAddress.Parse(ip);
+                m_sockListener = new TcpListener(localAddr, int.Parse(port));
+            }
+            catch { }
+            
+            m_sockListener.ExclusiveAddressUse = false;
+            m_sockListener.Start(deviceCount);
+            Thread.Sleep(500);
+            int delaytime = 30;
+            TcpClient tcpclient_tmp = null;
+            bool result = false;
+
+
+            while (delaytime-- > 0)
+            {
+                try
+                {
+                    if (m_sockListener.Pending())
+                    {
+                        tcpclient_tmp = m_sockListener.AcceptTcpClient();//侦听到连接后创建客户端连接TcpClient 
+                        if (tcpclient_tmp != null)
+                        {
+                            string iptmp1 = tcpclient_tmp.Client.RemoteEndPoint.ToString();
+                            iptmp1 = iptmp1.Substring(0, iptmp1.IndexOf(':'));
+                            if (tcpclient_tmp.Connected == true && deviceIp == iptmp1)
+                            {
+                            
+                                bool isok= setDB_tcpip(tcpclient_tmp, value);
+                                tcpclient_tmp.Close();
+                                m_sockListener.Stop();
+                                 
+                                return isok;
+                            }
+                        }
+
+                    }
+                }
+                catch (Exception ex)
+                {
+                }
+
+            }
+            m_sockListener.Stop();
+            return false;
+        }
+
+        /// <summary>
+        /// get the reader power 读取功率
+        /// </summary>
+        /// <param name="tcpclient"></param>
+        /// <returns></returns>
+        private string getDB_tcpip(TcpClient tcpclient)
+        {
+            byte Addr = ReadAddr(tcpclient);
+            if (Addr == 0) return "";
+
+
+            byte[] sendBuf = new byte[] { Addr, 0x04, 0x4c, 0x03 };
+
+            NetworkStream netStream;
+            try
+            {
+                netStream = tcpclient.GetStream();//得到网络流 
+                netStream.Write(sendBuf, 0, sendBuf[1]);
+            }
+            catch (Exception exp)
+            {
+                MessageBox.Show(exp.Message);
+                return "";
+            }
+
+            for (int i = 0; i < 20; i++)
+            {
+                int count = tcpclient.Available;
+
+                if (count >= 6)
+                {
+                    byte[] recvBuf = new byte[count];
+                    try
+                    {
+                        int recvLength = netStream.Read(recvBuf, 0, count);
+
+                        if (recvLength >= 6 && recvBuf[0] == 0xFF && recvBuf[1] == 0xFF && recvBuf[4] == 0xEE && recvBuf[5] == 0xEE)
+                        {
+                            byte btDB = recvBuf[3];
+                           string value = (31 - btDB).ToString();
+
+                            //addinfo("Get Power sucessfully!", false);
+                            return value;
+                        }
+                    }
+                    catch { }
+                }
+                System.Threading.Thread.Sleep(50);
+            }
+            //addinfo("Get Power failed", true);
+            return "";
+        }
+
+        /// <summary>
+        /// set the reader power 设置功率
+        /// </summary>
+        /// <param name="tcpclient"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        private bool setDB_tcpip(TcpClient tcpclient,string value)
+        {
+            byte Addr = ReadAddr(tcpclient);
+            if (Addr == 0) return false;
+
+            byte btDB = 0;
+
+            try
+            {
+                btDB = byte.Parse(value);
+            }
+            catch (Exception exp)
+            {
+                MessageBox.Show(exp.Message);
+                return false;
+            }
+            if (btDB > 31) btDB = 31;
+            btDB = (byte)(31 - btDB);
+
+            byte[] sendBuf = new byte[] { Addr, 0x05, 0xcc, btDB, 0x03 };
+
+            NetworkStream netStream;
+            try
+            {
+                netStream = tcpclient.GetStream();//得到网络流 
+                netStream.Write(sendBuf, 0, sendBuf[1]);
+            }
+            catch (Exception exp)
+            {
+                MessageBox.Show(exp.Message);
+                return false;
+            }
+
+            for (int i = 0; i < 20; i++)
+            {
+                int count = tcpclient.Available;
+
+                if (count >= 6)
+                {
+                    byte[] recvBuf = new byte[count];
+                    try
+                    {
+                        int recvLength = netStream.Read(recvBuf, 0, count);
+
+                        if (recvLength >= 6 && recvBuf[0] == 0xFF && recvBuf[1] == 0xFF && recvBuf[3] == btDB && recvBuf[4] == 0xEE && recvBuf[5] == 0xEE)
+                        {
+                            //addinfo("Set Power sucessfully!", false);
+                            return true;
+                        }
+                    }
+                    catch { }
+                }
+                System.Threading.Thread.Sleep(50);
+            }
+            //addinfo("Set Power failed", true);
+            return false;
+        }
+
+        /// <summary>
+        /// get the reader id 获取读卡器id
+        /// </summary>
+        /// <param name="tcpclient"></param>
+        /// <returns></returns>
+        private byte ReadAddr(TcpClient tcpclient)
+        {
+            byte addr = 0;
+
+            byte[] sendBuf = new byte[] { 0xff, 0xff, 0x08, 0xee, 0xee };
+            NetworkStream netStream;
+            try
+            {
+                netStream = tcpclient.GetStream();//得到网络流 
+                netStream.Write(sendBuf, 0, 5);
+            }
+            catch (Exception exp)
+            {
+                //addinfo(exp.Message, true);
+                return 0;
+            }
+
+            for (int i = 0; i < 20; i++)
+            {
+                int count = tcpclient.Available;
+
+                if (count >= 5)
+                {
+                    byte[] recvBuf = new byte[count];
+                    try
+                    {
+                        int recvLength = netStream.Read(recvBuf, 0, count);
+
+                        if (recvLength >= 5 && recvBuf[0] == 0xFF && recvBuf[1] == 0xFF && recvBuf[3] == 0xEE && recvBuf[4] == 0xEE)
+                        {
+                            addr = recvBuf[2];
+                            break;
+                        }
+                    }
+                    catch (Exception exp)
+                    {
+                        //addinfo(exp.Message, true);
+                        return 0;
+                    }
+                }
+                Thread.Sleep(50);
+            }
+            return addr;
+        }
+ 
+    }
+}
diff --git a/SendTags_DL9230/Class2.cs b/SendTags_DL9230/Class2.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0eba824c5f87294aa67d92f0419e8235151cb2ec
--- /dev/null
+++ b/SendTags_DL9230/Class2.cs
@@ -0,0 +1,139 @@
+using System;
+namespace CRC
+{
+    public interface ICRC
+    {
+
+        long Value
+        {
+            get;
+        }
+
+        void Reset();
+
+        void Crc(int bval);
+
+        void Crc(byte[] buffer);
+
+        void Crc(byte[] buf, int off, int len);
+
+    }
+}
+
+
+namespace CRC
+{
+    /// <summary> 
+    /// CRC16 的摘要说明。 
+    /// </summary> 
+    public class p
+    {
+        public class CRC16 : ICRC
+        {
+            #region CRC 16 位校验表
+
+            /// <summary> 
+            /// 16 位校验表 Upper 表 
+            /// </summary> 
+            public ushort[] uppercrctab = new ushort[] 
+   { 
+    0x0000,0x1231,0x2462,0x3653,0x48c4,0x5af5,0x6ca6,0x7e97, 
+    0x9188,0x83b9,0xb5ea,0xa7db,0xd94c,0xcb7d,0xfd2e,0xef1f 
+   };
+
+            /// <summary> 
+            /// 16 位校验表 Lower 表 
+            /// </summary> 
+            public ushort[] lowercrctab = new ushort[] 
+   { 
+    0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7, 
+    0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef 
+   };
+            #endregion
+
+            ushort crc = 0;
+
+            /// <summary> 
+            /// 校验后的结果 
+            /// </summary> 
+            public long Value
+            {
+                get
+                {
+                    return crc;
+                }
+                set
+                {
+                    crc = (ushort)value;
+                }
+            }
+
+            /// <summary> 
+            /// 设置crc 初始值 
+            /// </summary> 
+            public void Reset()
+            {
+                crc = 0;
+            }
+
+            /// <summary> 
+            /// Crc16 
+            /// </summary> 
+            /// <param name="ucrc"></param> 
+            /// <param name="buf"></param> 
+            public void Crc(ushort ucrc, byte[] buf)
+            {
+                crc = ucrc;
+                Crc(buf);
+            }
+
+            /// <summary> 
+            /// Crc16 
+            /// </summary> 
+            /// <param name="bval"></param> 
+            public void Crc(int bval)
+            {
+                ushort h = (ushort)((crc >> 12) & 0x0f);
+                ushort l = (ushort)((crc >> 8) & 0x0f);
+                ushort temp = crc;
+                temp = (ushort)(((temp & 0x00ff) << 8) | bval);
+                temp = (ushort)(temp ^ (uppercrctab[(h - 1) + 1] ^ lowercrctab[(l - 1) + 1]));
+                crc = temp;
+            }
+
+
+            /// <summary> 
+            /// Crc16 
+            /// </summary> 
+            /// <param name="buffer"></param> 
+            public void Crc(byte[] buffer)
+            {
+                Crc(buffer, 0, buffer.Length);
+            }
+
+            /// <summary> 
+            /// Crc16 
+            /// </summary> 
+            /// <param name="buf"></param> 
+            /// <param name="off"></param> 
+            /// <param name="len"></param> 
+            public void Crc(byte[] buf, int off, int len)
+            {
+                if (buf == null)
+                {
+                    throw new ArgumentNullException("buf");
+                }
+
+                if (off < 0 || len < 0 || off + len > buf.Length)
+                {
+                    throw new ArgumentOutOfRangeException();
+                }
+                for (int i = off; i < len; i++)
+                {
+                    Crc(buf[i]);
+                }
+            }
+
+        }
+    }
+}
diff --git a/SendTags_DL9230/Class3.cs b/SendTags_DL9230/Class3.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3be14953f453ebad524d8ce28448f19109c9d791
--- /dev/null
+++ b/SendTags_DL9230/Class3.cs
@@ -0,0 +1,79 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Net;
+//using System.IO;
+using System.Net.NetworkInformation; 
+using System.Management;
+using System.Windows.Forms;
+using System.Runtime.InteropServices;  //api
+using System.Net.Sockets;
+
+namespace Ethernet_data
+{
+    class Class3
+    {
+        [DllImport("ws2_32.dll")]
+        private static extern int inet_addr(string cp);
+        [DllImport("IPHLPAPI.dll")]
+        private static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 pMacAddr, ref Int32 PhyAddrLen);
+
+
+        public static bool getNetwork(ref string[,] list,ref int index)
+        {
+            if (NetworkInterface.GetIsNetworkAvailable())
+            {
+                NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
+                foreach (NetworkInterface adapter in adapters)
+                {
+                    IPInterfaceProperties ipProperties = adapter.GetIPProperties();//获取IP配置
+                    UnicastIPAddressInformationCollection ipCollection = ipProperties.UnicastAddresses;//获取单播地址集
+                    foreach (UnicastIPAddressInformation ip in ipCollection)
+                    {
+                        try
+                        {
+                            if (ip.Address.AddressFamily == AddressFamily.InterNetwork)//只要ipv4的
+                            {
+
+                                list[index,0] = ip.Address.ToString();
+                                if (ip.IPv4Mask == null) list[index, 1] = "";
+                                else list[index, 1] = ip.IPv4Mask.ToString();
+                                foreach (GatewayIPAddressInformation Gateaddress in ipProperties.GatewayAddresses)
+                                {
+
+                                    if (Gateaddress.Address.AddressFamily == AddressFamily.InterNetwork)
+                                        list[index,2] = Gateaddress.Address.ToString();
+                                }
+                                list[index, 3] = adapter.Name + " [" + adapter.Description + " " + adapter.NetworkInterfaceType+"]";
+
+                                index++;
+                            }
+                        }
+                        catch { }
+                    }
+                }
+                return true;
+            }
+            return false;
+        }
+        public static string ScanTarget(string ip)
+        {
+            string strIPAddress = ip;
+            int nStrat = Int32.Parse("2");
+            int nEnd = Int32.Parse("254");
+            for (int i = nStrat; i <= nEnd; i++)
+            {
+                try
+                {
+                    Int32 ldest = inet_addr(strIPAddress + "." + i); //将IP地址从 点数格式转换成无符号长整型
+                    Int64 macinfo = new Int64();
+                    Int32 len = 6;
+                    SendARP(ldest, 0, ref macinfo, ref len);
+                    if (macinfo == 0)  return strIPAddress + "." + i;
+                }
+                catch { }
+            }
+            return null;
+        }
+    }
+}
diff --git a/SendTags_DL9230/DL Logo.ico b/SendTags_DL9230/DL Logo.ico
new file mode 100644
index 0000000000000000000000000000000000000000..89fd6600f28e5874135ef32458b40a443441859e
Binary files /dev/null and b/SendTags_DL9230/DL Logo.ico differ
diff --git a/SendTags_DL9230/DL9230Demo.csproj b/SendTags_DL9230/DL9230Demo.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..bd31bf7004ad1166be95ae4e936634b3b7c644ed
--- /dev/null
+++ b/SendTags_DL9230/DL9230Demo.csproj
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{352BD4AC-BA09-4194-89B1-D8C522FA8C82}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Ethernet_data</RootNamespace>
+    <AssemblyName>DL9230 RFID Reader%28TCPIP%29</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ApplicationIcon>DL Logo.ico</ApplicationIcon>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="RFIDLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>bin\Debug\RFIDLib.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Management" />
+    <Reference Include="System.Web.Extensions" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AutoConnect.cs" />
+    <Compile Include="DeviceInfo.cs" />
+    <Compile Include="SendTags.cs" />
+    <Compile Include="TCPIP_Reader.cs" />
+    <Compile Include="Class2.cs" />
+    <Compile Include="Class3.cs" />
+    <Compile Include="Form3.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Form3.Designer.cs">
+      <DependentUpon>Form3.cs</DependentUpon>
+    </Compile>
+    <Compile Include="frmmain.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="frmmain.Designer.cs">
+      <DependentUpon>frmmain.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <EmbeddedResource Include="Form3.resx">
+      <DependentUpon>Form3.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="frmmain.resx">
+      <DependentUpon>frmmain.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="AdressServer.txt" />
+    <Content Include="DL Logo.ico" />
+    <None Include="Resources\paixi.ico" />
+    <None Include="Resources\Hardware - Plug.ico" />
+    <None Include="Resources\network.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/SendTags_DL9230/DL9230Demo.csproj.user b/SendTags_DL9230/DL9230Demo.csproj.user
new file mode 100644
index 0000000000000000000000000000000000000000..3bfbc24af095eb12e223c972d664b0998d01a079
--- /dev/null
+++ b/SendTags_DL9230/DL9230Demo.csproj.user
@@ -0,0 +1,12 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0">
+  <PropertyGroup>
+    <PublishUrlHistory />
+    <InstallUrlHistory />
+    <SupportUrlHistory />
+    <UpdateUrlHistory />
+    <BootstrapperUrlHistory />
+    <ErrorReportUrlHistory />
+    <FallbackCulture>zh-CN</FallbackCulture>
+    <VerifyUploadedFiles>false</VerifyUploadedFiles>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/SendTags_DL9230/DL9230Demo.sln b/SendTags_DL9230/DL9230Demo.sln
new file mode 100644
index 0000000000000000000000000000000000000000..c7cd50f0e06a6a47bfe34f38ee492375f87b9fda
--- /dev/null
+++ b/SendTags_DL9230/DL9230Demo.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.27428.2043
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DL9230Demo", "DL9230Demo.csproj", "{352BD4AC-BA09-4194-89B1-D8C522FA8C82}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{352BD4AC-BA09-4194-89B1-D8C522FA8C82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{352BD4AC-BA09-4194-89B1-D8C522FA8C82}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{352BD4AC-BA09-4194-89B1-D8C522FA8C82}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{352BD4AC-BA09-4194-89B1-D8C522FA8C82}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {7D254693-5D69-411C-B9B2-75428CD79559}
+	EndGlobalSection
+EndGlobal
diff --git a/SendTags_DL9230/DL9230Demo.suo b/SendTags_DL9230/DL9230Demo.suo
new file mode 100644
index 0000000000000000000000000000000000000000..1de96f6075856a4725dfc4478f59be94b0186d47
Binary files /dev/null and b/SendTags_DL9230/DL9230Demo.suo differ
diff --git a/SendTags_DL9230/DeviceInfo.cs b/SendTags_DL9230/DeviceInfo.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ab36980e0a97a493816286f62a8ef6a2d40001bc
--- /dev/null
+++ b/SendTags_DL9230/DeviceInfo.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Ethernet_data
+{
+    public class DeviceInfo
+    {
+        string _iP;
+        string _subnetMask;
+        string _gateway;
+        string _mAC;
+        string _devicename;
+
+        public string IP { get => _iP; set => _iP = value; }
+        public string SubnetMask { get => _subnetMask; set => _subnetMask = value; }
+        public string Gateway { get => _gateway; set => _gateway = value; }
+        public string MAC { get => _mAC; set => _mAC = value; }
+        public string Devicename { get => _devicename; set => _devicename = value; }
+    }
+}
diff --git "a/SendTags_DL9230/Endroit modifi\303\251.txt" "b/SendTags_DL9230/Endroit modifi\303\251.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..bed779f1c21074a4bd2abd1c7f0b6ddb5c13ed78
--- /dev/null
+++ "b/SendTags_DL9230/Endroit modifi\303\251.txt"	
@@ -0,0 +1,3 @@
+frmmain.cs : ligne 12, 495-521
+
+ajout : SendTags.cs et AdressServer
\ No newline at end of file
diff --git a/SendTags_DL9230/Form2.Designer.cs b/SendTags_DL9230/Form2.Designer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..bd31dc89f96a2ca8508eb154a93721dde7ae9592
--- /dev/null
+++ b/SendTags_DL9230/Form2.Designer.cs
@@ -0,0 +1,61 @@
+namespace Ethernet_data
+{
+    partial class Form2
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.button1 = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(64, 183);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(153, 43);
+            this.button1.TabIndex = 0;
+            this.button1.Text = "button1";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.button1_Click);
+            // 
+            // Form2
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(292, 266);
+            this.Controls.Add(this.button1);
+            this.Name = "Form2";
+            this.Text = "Form2";
+            this.Load += new System.EventHandler(this.Form2_Load);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button button1;
+    }
+}
\ No newline at end of file
diff --git a/SendTags_DL9230/Form2.cs b/SendTags_DL9230/Form2.cs
new file mode 100644
index 0000000000000000000000000000000000000000..5864bc82d487035f61dcc75d29dd597410a37e07
--- /dev/null
+++ b/SendTags_DL9230/Form2.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Net;
+using System.Net.Sockets; 
+
+
+namespace Ethernet_data
+{
+    public partial class Form2 : Form
+    {
+        public Form2()
+        {
+            InitializeComponent();
+        }
+        private void button1_Click(object sender, EventArgs e)
+        {
+            Socket socket = new Socket(AddressFamily.AppleTalk ,SocketType.);
+            socket.EnableBroadcast = true;
+            socket.Close();
+        }
+    }
+}
diff --git a/SendTags_DL9230/Form2.resx b/SendTags_DL9230/Form2.resx
new file mode 100644
index 0000000000000000000000000000000000000000..ff31a6db56e23b5a334f34387830ba5b4bd33eb8
--- /dev/null
+++ b/SendTags_DL9230/Form2.resx
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ No newline at end of file
diff --git a/SendTags_DL9230/Form3.Designer.cs b/SendTags_DL9230/Form3.Designer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..eb65ec7267336de81ba052281c33e4a6fb4c831a
--- /dev/null
+++ b/SendTags_DL9230/Form3.Designer.cs
@@ -0,0 +1,153 @@
+namespace Ethernet_data
+{
+    partial class Form3
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.getTagbtn = new System.Windows.Forms.Button();
+            this.Clearbtn = new System.Windows.Forms.Button();
+            this.grid1 = new System.Windows.Forms.DataGridView();
+            this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            ((System.ComponentModel.ISupportInitialize)(this.grid1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // getTagbtn
+            // 
+            this.getTagbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.getTagbtn.Location = new System.Drawing.Point(401, 152);
+            this.getTagbtn.Name = "getTagbtn";
+            this.getTagbtn.Size = new System.Drawing.Size(92, 33);
+            this.getTagbtn.TabIndex = 18;
+            this.getTagbtn.Tag = "";
+            this.getTagbtn.Text = "OK";
+            this.getTagbtn.UseVisualStyleBackColor = true;
+            this.getTagbtn.Click += new System.EventHandler(this.getTagbtn_Click);
+            // 
+            // Clearbtn
+            // 
+            this.Clearbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.Clearbtn.Location = new System.Drawing.Point(499, 152);
+            this.Clearbtn.Name = "Clearbtn";
+            this.Clearbtn.Size = new System.Drawing.Size(92, 33);
+            this.Clearbtn.TabIndex = 17;
+            this.Clearbtn.Text = "Cancel";
+            this.Clearbtn.UseVisualStyleBackColor = true;
+            this.Clearbtn.Click += new System.EventHandler(this.Clearbtn_Click);
+            // 
+            // grid1
+            // 
+            this.grid1.AllowUserToAddRows = false;
+            this.grid1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.grid1.BackgroundColor = System.Drawing.Color.DarkGray;
+            this.grid1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.grid1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.grid1.ColumnHeadersVisible = false;
+            this.grid1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Column1,
+            this.Column2,
+            this.Column3,
+            this.Column4});
+            this.grid1.EnableHeadersVisualStyles = false;
+            this.grid1.Location = new System.Drawing.Point(12, 13);
+            this.grid1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.grid1.MultiSelect = false;
+            this.grid1.Name = "grid1";
+            this.grid1.ReadOnly = true;
+            this.grid1.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
+            this.grid1.RowHeadersVisible = false;
+            this.grid1.RowTemplate.Height = 30;
+            this.grid1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.grid1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+            this.grid1.ShowCellToolTips = false;
+            this.grid1.ShowEditingIcon = false;
+            this.grid1.Size = new System.Drawing.Size(588, 135);
+            this.grid1.TabIndex = 20;
+            // 
+            // Column1
+            // 
+            this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column1.HeaderText = "Column1";
+            this.Column1.MaxInputLength = 200;
+            this.Column1.Name = "Column1";
+            this.Column1.ReadOnly = true;
+            // 
+            // Column2
+            // 
+            this.Column2.HeaderText = "Column2";
+            this.Column2.Name = "Column2";
+            this.Column2.ReadOnly = true;
+            this.Column2.Visible = false;
+            // 
+            // Column3
+            // 
+            this.Column3.HeaderText = "Column3";
+            this.Column3.Name = "Column3";
+            this.Column3.ReadOnly = true;
+            this.Column3.Visible = false;
+            // 
+            // Column4
+            // 
+            this.Column4.HeaderText = "Column4";
+            this.Column4.Name = "Column4";
+            this.Column4.ReadOnly = true;
+            this.Column4.Visible = false;
+            // 
+            // Form3
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(612, 191);
+            this.Controls.Add(this.grid1);
+            this.Controls.Add(this.getTagbtn);
+            this.Controls.Add(this.Clearbtn);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.Name = "Form3";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.Text = "Where the reader connected?";
+            ((System.ComponentModel.ISupportInitialize)(this.grid1)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button getTagbtn;
+        private System.Windows.Forms.Button Clearbtn;
+        protected internal System.Windows.Forms.DataGridView grid1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
+    }
+}
\ No newline at end of file
diff --git a/SendTags_DL9230/Form3.cs b/SendTags_DL9230/Form3.cs
new file mode 100644
index 0000000000000000000000000000000000000000..a85e3c98817dd85de6cdad53ba6fea01a8905d1d
--- /dev/null
+++ b/SendTags_DL9230/Form3.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Ethernet_data
+{
+    public partial class Form3 : Form
+    {
+        public Form3()
+        {
+            InitializeComponent();
+        }
+
+        private void Clearbtn_Click(object sender, EventArgs e)
+        {
+            this.Close();
+        }
+
+        private void getTagbtn_Click(object sender, EventArgs e)
+        {
+            if (grid1.SelectedRows.Count == 1)
+            {
+                this.DialogResult = DialogResult.OK;
+            }
+        }
+    }
+}
diff --git a/SendTags_DL9230/Form3.resx b/SendTags_DL9230/Form3.resx
new file mode 100644
index 0000000000000000000000000000000000000000..9db29e0a195b7a245e704cdcefbd0c1b214ec276
--- /dev/null
+++ b/SendTags_DL9230/Form3.resx
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+</root>
\ No newline at end of file
diff --git a/SendTags_DL9230/Program.cs b/SendTags_DL9230/Program.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ffd8c8cf6fc2b505df2bc6717f96308cca6338ca
--- /dev/null
+++ b/SendTags_DL9230/Program.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Ethernet_data
+{
+    static class Program
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new frmmain());
+        }
+    }
+}
diff --git a/SendTags_DL9230/SendTags.cs b/SendTags_DL9230/SendTags.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0a85390f550556d1dc774eb433ac4b466f5e3606
--- /dev/null
+++ b/SendTags_DL9230/SendTags.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Web.Script.Serialization;
+
+namespace SendTags {
+    public class Tag {
+        public string tag_id { get; set; }
+        public string timestamp { get; set; }
+    }
+
+    public class PostTags
+    {
+        public static void PostTagsAsync(List<Tag> tags) 
+        {
+            //Read URL Server
+            var addressServer = System.IO.File.ReadAllText(@"AdressServer.txt");
+
+            HttpWebRequest request = WebRequest.Create(addressServer + "detectedTags") as HttpWebRequest;
+            request.Method = "POST";
+
+            JavaScriptSerializer serializer = new JavaScriptSerializer();
+            string TagsJSON = serializer.Serialize(tags);
+
+            byte[] bArray = Encoding.UTF8.GetBytes(TagsJSON);
+
+            request.ContentType = "application/json";
+            request.ContentLength = bArray.Length;
+            Stream webData = request.GetRequestStream();
+            webData.Write(bArray, 0, bArray.Length);
+            webData.Close();
+            /*WebResponse webResponse = request.GetResponse();
+            Console.WriteLine(((HttpWebResponse)webResponse).StatusDescription);
+            webData = webResponse.GetResponseStream();
+            StreamReader reader = new StreamReader(webData);
+            string responseFromServer = reader.ReadToEnd();
+            Console.WriteLine(responseFromServer);
+            reader.Close();
+            webData.Close();
+            webResponse.Close();*/
+        }
+    }
+}
diff --git a/SendTags_DL9230/TCPIP_Reader.cs b/SendTags_DL9230/TCPIP_Reader.cs
new file mode 100644
index 0000000000000000000000000000000000000000..326c14baf2e58d396a5268f3da66e403a6ea85dc
--- /dev/null
+++ b/SendTags_DL9230/TCPIP_Reader.cs
@@ -0,0 +1,159 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Ethernet_data
+{
+    class reader
+    {
+        //public static reader_IpAddress Ip_Address;
+       /* public struct reader_IpAddress
+        {
+            public string name;
+            public string IP;
+            public string SubnetMask;
+            public string Gateway;
+            public string MAC;
+        };
+        */
+        static UInt16 cncrc_16 = 0x8005;
+        static UInt32[] table_cre = new UInt32[256];
+
+        public static byte[] GetReader_list()
+        {
+            byte[] b = new byte[208];
+            int i = 0;
+            b[i++] = 0x7f;
+            b[i++] = 0x10;
+            b[i++] = 0x03;
+            b[i++] = 0x00;
+            b[i++] = 0xD0;
+            b[i++] = 0x12;
+            b[i++] = 0x06;
+            b[207] = 0x0D;
+            long crc = crc_16(b,208);
+            byte L = (byte)(crc << 8 >> 8);
+            byte H = (byte)(crc>> 8);
+            b[205] =H;
+            b[206] =L;
+            return b;
+        }
+        public static byte[] SETReader(string IP, string SubnetMask, string Gateway, string MAC)
+        {
+            byte[] b = new byte[208];
+            int i = 0;
+            b[i++] = 0x7f;
+            b[i++] = 0x10;
+            b[i++] = 0x05;
+            b[i++] = 0x00;
+            b[i++] = 0xD0;
+            b[i++] = 0x12;
+            b[i++] = 0x06;
+            i += 64;
+            byte[] byte_MAC = Array.ConvertAll(MAC.Split('-'), new Converter<string, byte>(StringToByte));
+            Array.Copy(byte_MAC, 0, b, i, 6); //6字节 MAC
+            i += 6;
+
+            byte[] byte_IP = Array.ConvertAll(IP.Split('.'), new Converter<string, byte>(StringToByte));
+            Array.Copy(byte_IP, 0, b, i, 4); //4字节 IP
+            i += 4;
+
+            byte[] byte_SubnetMask = Array.ConvertAll(SubnetMask.Split('.'), new Converter<string, byte>(StringToByte));
+            Array.Copy(byte_SubnetMask, 0, b, i, 4); //4字节 子网掩码
+            i += 4;
+
+            byte[] byte_Gateway = Array.ConvertAll(Gateway.Split('.'), new Converter<string, byte>(StringToByte));
+            Array.Copy(byte_Gateway, 0, b, i, 4); //4字节 网关
+
+            b[207] = 0x0D;
+            long crc = crc_16(b, 208);
+            byte L = (byte)(crc << 8 >> 8);
+            byte H = (byte)(crc >> 8);
+            b[205] = H;
+            b[206] = L;
+            return b;
+        }
+        public static byte[] Set_WorkMode(string IP, string MAC)
+        {
+            byte[] b = new byte[208];
+            int i = 0;
+            b[i++] = 0x7f;
+            b[i++] = 0x10;
+            b[i++] = 0x1E;
+            b[i++] = 0x00;
+            b[i++] = 0xD0;
+            b[i++] = 0x12;
+            b[i++] = 0x06;
+            i += 64;
+            byte[] byte_MAC = Array.ConvertAll(MAC.Split('-'), new Converter<string, byte>(StringToByte));
+            Array.Copy(byte_MAC, 0, b, i, 6); //6字节 MAC
+            i += 6;
+            b[i++] = 0x00;
+            b[i++] = 0x01;
+            b[i++] = 0x00; // 工作模式0:client 1:server 2:udp 3:tcpauto
+            b[i++] = 0x75;
+            b[i++] = 0x30;  //0x7530=30000; 本地端口(设备 DL9230)
+            b[i++] = 0x0; //域名使能。
+
+            byte[] byte_IP = Array.ConvertAll(IP.Split('.'), new Converter<string, byte>(StringToByte));
+            Array.Copy(byte_IP, 0, b, i, 4); //4字节 IP
+            i += 30;
+            
+            b[i++] = 0x27;
+            b[i++] = 0x10;  //0x2710=10000; 目的端口(电脑)
+
+            b[i++] = 0x1;  //1:立即连接
+            b[i++] = 0x01;
+            b[i++] = 0x2C;  //0X012C=300秒
+
+            b[207] = 0x0D;
+            long crc = crc_16(b, 208);
+            byte L = (byte)(crc << 8 >> 8);
+            byte H = (byte)(crc >> 8);
+            b[205] = H;
+            b[206] = L;
+            return b;
+        }
+
+        private static byte StringTohex(string str)
+        {
+            return Convert.ToByte(str, 16);
+        }
+        private  static byte StringToByte(string str)
+        {
+           return Convert.ToByte(str, 10);
+        }
+        
+        private static void bulidtable16(int apoly)
+        {
+            UInt16 ndata;
+            UInt16 naccum;
+            for (UInt16 i = 0; i < 256; i++)
+            {
+                ndata =(UInt16)(i << 8);
+                naccum = 0;
+                for (UInt16 j = 0; j < 8; j++)
+                {
+                    if (((ndata ^ naccum) & 0x8000)>0)
+                        naccum =(UInt16)((naccum << 1) ^ apoly);
+                    else
+                        naccum <<= 1;
+                    ndata <<= 1;
+                }
+                table_cre[i] =(UInt32) naccum;
+            }
+        }
+        private static UInt16 crc_16(byte[] adata, UInt16 asize)
+        {
+            UInt16 naccum = 0;
+            bulidtable16(cncrc_16);
+            for (int i = 0; i < asize; i++)
+            { 
+                naccum=(UInt16)((naccum <<8) ^ table_cre[(naccum >>8 ) ^ adata[i]]);
+            }
+            return naccum;
+        }
+
+
+    }
+}
diff --git a/SendTags_DL9230/UpgradeLog.htm b/SendTags_DL9230/UpgradeLog.htm
new file mode 100644
index 0000000000000000000000000000000000000000..8f1f2b2013e92247dd5bdb24b78030f661e04c0f
Binary files /dev/null and b/SendTags_DL9230/UpgradeLog.htm differ
diff --git a/SendTags_DL9230/bin/Debug/AdressServer.txt b/SendTags_DL9230/bin/Debug/AdressServer.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1e5bd2980e47f72c9bc18790726f01e3ff142349
--- /dev/null
+++ b/SendTags_DL9230/bin/Debug/AdressServer.txt
@@ -0,0 +1 @@
+http://localhost:8000/
\ No newline at end of file
diff --git a/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).exe b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).exe
new file mode 100644
index 0000000000000000000000000000000000000000..81a09057f9d4af8f89ac4839d7e3e586be9c6730
Binary files /dev/null and b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).exe differ
diff --git a/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).pdb b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).pdb
new file mode 100644
index 0000000000000000000000000000000000000000..b67f029ef274f30774e1555906bf53d85d3b1f27
Binary files /dev/null and b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).pdb differ
diff --git a/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).vshost.exe b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).vshost.exe
new file mode 100644
index 0000000000000000000000000000000000000000..69ed6c0c8c1cf063b077b0f15cbc4b855c47d780
Binary files /dev/null and b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).vshost.exe differ
diff --git a/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).vshost.exe.manifest b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).vshost.exe.manifest
new file mode 100644
index 0000000000000000000000000000000000000000..f96b1d6b3fa078c224681c663f485501b44f10c1
--- /dev/null
+++ b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader(TCPIP).vshost.exe.manifest	
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>
diff --git a/SendTags_DL9230/bin/Debug/DL9230 RFID Reader.vshost.exe.manifest b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader.vshost.exe.manifest
new file mode 100644
index 0000000000000000000000000000000000000000..f96b1d6b3fa078c224681c663f485501b44f10c1
--- /dev/null
+++ b/SendTags_DL9230/bin/Debug/DL9230 RFID Reader.vshost.exe.manifest	
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>
diff --git a/SendTags_DL9230/bin/Debug/DevComponents.DotNetBar2.dll b/SendTags_DL9230/bin/Debug/DevComponents.DotNetBar2.dll
new file mode 100644
index 0000000000000000000000000000000000000000..ae23c166494761027bb11a6a8044cf435f0b21f0
Binary files /dev/null and b/SendTags_DL9230/bin/Debug/DevComponents.DotNetBar2.dll differ
diff --git a/SendTags_DL9230/bin/Debug/Ethernet_data.vshost.exe.manifest b/SendTags_DL9230/bin/Debug/Ethernet_data.vshost.exe.manifest
new file mode 100644
index 0000000000000000000000000000000000000000..f96b1d6b3fa078c224681c663f485501b44f10c1
--- /dev/null
+++ b/SendTags_DL9230/bin/Debug/Ethernet_data.vshost.exe.manifest
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>
diff --git a/SendTags_DL9230/bin/Debug/RFIDLib.dll b/SendTags_DL9230/bin/Debug/RFIDLib.dll
new file mode 100644
index 0000000000000000000000000000000000000000..7a6398d99477cd018c2dc070bd33c900e69bd622
Binary files /dev/null and b/SendTags_DL9230/bin/Debug/RFIDLib.dll differ
diff --git a/SendTags_DL9230/bin/Debug/network.png b/SendTags_DL9230/bin/Debug/network.png
new file mode 100644
index 0000000000000000000000000000000000000000..83df4824a68b9997c4d6a06c62f4d52116741a40
Binary files /dev/null and b/SendTags_DL9230/bin/Debug/network.png differ
diff --git a/SendTags_DL9230/frmmain.Designer.cs b/SendTags_DL9230/frmmain.Designer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..3ff751c64338ea71779cfc0dd4d1359666b18b0a
--- /dev/null
+++ b/SendTags_DL9230/frmmain.Designer.cs
@@ -0,0 +1,958 @@
+namespace Ethernet_data
+{
+    partial class frmmain
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmmain));
+            this.autoconnect = new System.Windows.Forms.Button();
+            this.dataGridView1 = new System.Windows.Forms.DataGridView();
+            this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.IP = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.TagPower = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column5 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.timer1 = new System.Windows.Forms.Timer(this.components);
+            this.Clearbtn = new System.Windows.Forms.Button();
+            this.label2 = new System.Windows.Forms.Label();
+            this.dataGridView2 = new System.Windows.Forms.DataGridView();
+            this.Column7 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column6 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.button2 = new System.Windows.Forms.Button();
+            this.label7 = new System.Windows.Forms.Label();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.label9 = new System.Windows.Forms.Label();
+            this.label13 = new System.Windows.Forms.Label();
+            this.label14 = new System.Windows.Forms.Label();
+            this.label11 = new System.Windows.Forms.Label();
+            this.label12 = new System.Windows.Forms.Label();
+            this.label10 = new System.Windows.Forms.Label();
+            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+            this.toolStripButton3 = new System.Windows.Forms.ToolStripLabel();
+            this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
+            this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
+            this.groupBox3 = new System.Windows.Forms.GroupBox();
+            this.tabControl1 = new System.Windows.Forms.TabControl();
+            this.tabPage1 = new System.Windows.Forms.TabPage();
+            this.comboBox_ip = new System.Windows.Forms.ComboBox();
+            this.label17 = new System.Windows.Forms.Label();
+            this.comboBox_port = new System.Windows.Forms.ComboBox();
+            this.label18 = new System.Windows.Forms.Label();
+            this.getTagbtn = new System.Windows.Forms.Button();
+            this.serialPort1 = new System.IO.Ports.SerialPort(this.components);
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.label3 = new System.Windows.Forms.Label();
+            this.label1 = new System.Windows.Forms.Label();
+            this.panel2 = new System.Windows.Forms.Panel();
+            this.textBoxReaderDB = new System.Windows.Forms.ComboBox();
+            this.button3 = new System.Windows.Forms.Button();
+            this.button1 = new System.Windows.Forms.Button();
+            this.ListView1 = new System.Windows.Forms.ListView();
+            this.ReaderIP = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.SubnetMask = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.Gateway = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.MAC = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.DeviceName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.power = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.State = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+            this.panel3 = new System.Windows.Forms.Panel();
+            this.panel4 = new System.Windows.Forms.Panel();
+            this.panel5 = new System.Windows.Forms.Panel();
+            this.panel6 = new System.Windows.Forms.Panel();
+            this.panel7 = new System.Windows.Forms.Panel();
+            this.panel8 = new System.Windows.Forms.Panel();
+            this.panel9 = new System.Windows.Forms.Panel();
+            this.panel10 = new System.Windows.Forms.Panel();
+            this.panel11 = new System.Windows.Forms.Panel();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
+            this.groupBox2.SuspendLayout();
+            this.toolStrip1.SuspendLayout();
+            this.groupBox3.SuspendLayout();
+            this.tabControl1.SuspendLayout();
+            this.tabPage1.SuspendLayout();
+            this.panel1.SuspendLayout();
+            this.panel2.SuspendLayout();
+            this.panel3.SuspendLayout();
+            this.panel4.SuspendLayout();
+            this.panel5.SuspendLayout();
+            this.panel6.SuspendLayout();
+            this.panel7.SuspendLayout();
+            this.panel8.SuspendLayout();
+            this.panel9.SuspendLayout();
+            this.panel10.SuspendLayout();
+            this.panel11.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // autoconnect
+            // 
+            this.autoconnect.Font = new System.Drawing.Font("Arial", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.autoconnect.Location = new System.Drawing.Point(6, 22);
+            this.autoconnect.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.autoconnect.Name = "autoconnect";
+            this.autoconnect.Size = new System.Drawing.Size(141, 59);
+            this.autoconnect.TabIndex = 2;
+            this.autoconnect.Text = "Auto Connect";
+            this.autoconnect.UseMnemonic = false;
+            this.autoconnect.UseVisualStyleBackColor = true;
+            this.autoconnect.Click += new System.EventHandler(this.autoconnect_Click);
+            // 
+            // dataGridView1
+            // 
+            this.dataGridView1.AllowUserToAddRows = false;
+            this.dataGridView1.AllowUserToDeleteRows = false;
+            this.dataGridView1.AllowUserToResizeRows = false;
+            this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
+            this.dataGridView1.BackgroundColor = System.Drawing.Color.White;
+            this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
+            dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control;
+            dataGridViewCellStyle6.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText;
+            dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+            dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+            dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+            this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle6;
+            this.dataGridView1.ColumnHeadersHeight = 25;
+            this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Column1,
+            this.IP,
+            this.Column2,
+            this.Column3,
+            this.TagPower,
+            this.Column4,
+            this.Column5});
+            dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Window;
+            dataGridViewCellStyle9.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.ControlText;
+            dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+            dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+            dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+            this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle9;
+            this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.dataGridView1.EnableHeadersVisualStyles = false;
+            this.dataGridView1.Location = new System.Drawing.Point(0, 285);
+            this.dataGridView1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.dataGridView1.Name = "dataGridView1";
+            this.dataGridView1.ReadOnly = true;
+            this.dataGridView1.RowHeadersVisible = false;
+            this.dataGridView1.RowTemplate.Height = 23;
+            this.dataGridView1.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
+            this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+            this.dataGridView1.ShowCellToolTips = false;
+            this.dataGridView1.ShowEditingIcon = false;
+            this.dataGridView1.ShowRowErrors = false;
+            this.dataGridView1.Size = new System.Drawing.Size(826, 244);
+            this.dataGridView1.TabIndex = 11;
+            // 
+            // Column1
+            // 
+            this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column1.FillWeight = 81.13369F;
+            this.Column1.HeaderText = "ID";
+            this.Column1.Name = "Column1";
+            this.Column1.ReadOnly = true;
+            // 
+            // IP
+            // 
+            this.IP.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.IP.FillWeight = 81.13369F;
+            this.IP.HeaderText = "IP:Port";
+            this.IP.Name = "IP";
+            this.IP.ReadOnly = true;
+            // 
+            // Column2
+            // 
+            this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column2.FillWeight = 81.13369F;
+            this.Column2.HeaderText = "Address";
+            this.Column2.MinimumWidth = 60;
+            this.Column2.Name = "Column2";
+            this.Column2.ReadOnly = true;
+            // 
+            // Column3
+            // 
+            this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column3.FillWeight = 213.1979F;
+            this.Column3.HeaderText = "TAG ID";
+            this.Column3.Name = "Column3";
+            this.Column3.ReadOnly = true;
+            // 
+            // TagPower
+            // 
+            this.TagPower.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.TagPower.FillWeight = 81.13369F;
+            this.TagPower.HeaderText = "Tag Power";
+            this.TagPower.Name = "TagPower";
+            this.TagPower.ReadOnly = true;
+            // 
+            // Column4
+            // 
+            this.Column4.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            this.Column4.DefaultCellStyle = dataGridViewCellStyle7;
+            this.Column4.FillWeight = 81.13369F;
+            this.Column4.HeaderText = "Last time";
+            this.Column4.Name = "Column4";
+            this.Column4.ReadOnly = true;
+            // 
+            // Column5
+            // 
+            this.Column5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            this.Column5.DefaultCellStyle = dataGridViewCellStyle8;
+            this.Column5.FillWeight = 81.13369F;
+            this.Column5.HeaderText = "times";
+            this.Column5.Name = "Column5";
+            this.Column5.ReadOnly = true;
+            // 
+            // timer1
+            // 
+            this.timer1.Interval = 80;
+            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
+            // 
+            // Clearbtn
+            // 
+            this.Clearbtn.Location = new System.Drawing.Point(87, 3);
+            this.Clearbtn.Name = "Clearbtn";
+            this.Clearbtn.Size = new System.Drawing.Size(85, 33);
+            this.Clearbtn.TabIndex = 15;
+            this.Clearbtn.Text = "Clear";
+            this.Clearbtn.UseVisualStyleBackColor = true;
+            this.Clearbtn.Click += new System.EventHandler(this.Clearbtn_Click);
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+            this.label2.Location = new System.Drawing.Point(0, 23);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(89, 15);
+            this.label2.TabIndex = 18;
+            this.label2.Text = "Command Info";
+            // 
+            // dataGridView2
+            // 
+            this.dataGridView2.AllowUserToAddRows = false;
+            this.dataGridView2.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
+            this.dataGridView2.BackgroundColor = System.Drawing.Color.White;
+            this.dataGridView2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.dataGridView2.ColumnHeadersVisible = false;
+            this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Column7,
+            this.Column6});
+            dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+            dataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Window;
+            dataGridViewCellStyle10.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            dataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.ControlText;
+            dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+            dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+            dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+            this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle10;
+            this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.dataGridView2.EnableHeadersVisualStyles = false;
+            this.dataGridView2.Location = new System.Drawing.Point(0, 567);
+            this.dataGridView2.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.dataGridView2.MultiSelect = false;
+            this.dataGridView2.Name = "dataGridView2";
+            this.dataGridView2.ReadOnly = true;
+            this.dataGridView2.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
+            this.dataGridView2.RowHeadersVisible = false;
+            this.dataGridView2.RowTemplate.Height = 23;
+            this.dataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
+            this.dataGridView2.ShowCellToolTips = false;
+            this.dataGridView2.ShowEditingIcon = false;
+            this.dataGridView2.Size = new System.Drawing.Size(826, 140);
+            this.dataGridView2.TabIndex = 19;
+            // 
+            // Column7
+            // 
+            this.Column7.HeaderText = "Column7";
+            this.Column7.Name = "Column7";
+            this.Column7.ReadOnly = true;
+            this.Column7.Width = 50;
+            // 
+            // Column6
+            // 
+            this.Column6.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column6.HeaderText = "Column6";
+            this.Column6.Name = "Column6";
+            this.Column6.ReadOnly = true;
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(61, 3);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(85, 33);
+            this.button2.TabIndex = 20;
+            this.button2.Text = "Clear";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // label7
+            // 
+            this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.label7.BackColor = System.Drawing.Color.DarkOrange;
+            this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+            this.label7.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label7.ForeColor = System.Drawing.Color.White;
+            this.label7.Location = new System.Drawing.Point(14, 185);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(111, 60);
+            this.label7.TabIndex = 22;
+            this.label7.Text = "0";
+            this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.label9);
+            this.groupBox2.Controls.Add(this.label13);
+            this.groupBox2.Controls.Add(this.label14);
+            this.groupBox2.Controls.Add(this.label11);
+            this.groupBox2.Controls.Add(this.label12);
+            this.groupBox2.Controls.Add(this.label10);
+            this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top;
+            this.groupBox2.Location = new System.Drawing.Point(0, 0);
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.Size = new System.Drawing.Size(826, 46);
+            this.groupBox2.TabIndex = 23;
+            this.groupBox2.TabStop = false;
+            this.groupBox2.Text = "Computer";
+            // 
+            // label9
+            // 
+            this.label9.BackColor = System.Drawing.SystemColors.Control;
+            this.label9.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.label9.Location = new System.Drawing.Point(75, 18);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(108, 19);
+            this.label9.TabIndex = 5;
+            this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // label13
+            // 
+            this.label13.BackColor = System.Drawing.SystemColors.Control;
+            this.label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.label13.Location = new System.Drawing.Point(414, 18);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(108, 19);
+            this.label13.TabIndex = 9;
+            this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // label14
+            // 
+            this.label14.AutoSize = true;
+            this.label14.Location = new System.Drawing.Point(350, 21);
+            this.label14.Name = "label14";
+            this.label14.Size = new System.Drawing.Size(66, 15);
+            this.label14.TabIndex = 8;
+            this.label14.Text = "Gateway:";
+            // 
+            // label11
+            // 
+            this.label11.BackColor = System.Drawing.SystemColors.Control;
+            this.label11.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+            this.label11.Location = new System.Drawing.Point(235, 19);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(108, 19);
+            this.label11.TabIndex = 7;
+            this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
+            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(189, 21);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(48, 15);
+            this.label12.TabIndex = 6;
+            this.label12.Text = "Mask:";
+            // 
+            // label10
+            // 
+            this.label10.Location = new System.Drawing.Point(6, 21);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(71, 15);
+            this.label10.TabIndex = 4;
+            this.label10.Text = "IP:";
+            this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+            // 
+            // toolStrip1
+            // 
+            this.toolStrip1.AutoSize = false;
+            this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.toolStrip1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
+            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.toolStripButton3,
+            this.toolStripButton2,
+            this.toolStripButton1});
+            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+            this.toolStrip1.Name = "toolStrip1";
+            this.toolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
+            this.toolStrip1.Size = new System.Drawing.Size(320, 42);
+            this.toolStrip1.TabIndex = 11;
+            this.toolStrip1.Text = "toolStrip1";
+            // 
+            // toolStripButton3
+            // 
+            this.toolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
+            this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton3.Name = "toolStripButton3";
+            this.toolStripButton3.Size = new System.Drawing.Size(36, 39);
+            this.toolStripButton3.Text = "View:";
+            // 
+            // toolStripButton2
+            // 
+            this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
+            this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton2.Name = "toolStripButton2";
+            this.toolStripButton2.Size = new System.Drawing.Size(66, 39);
+            this.toolStripButton2.Text = "LargeIcon";
+            this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click);
+            // 
+            // toolStripButton1
+            // 
+            this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+            this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
+            this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
+            this.toolStripButton1.Name = "toolStripButton1";
+            this.toolStripButton1.Size = new System.Drawing.Size(50, 39);
+            this.toolStripButton1.Text = "Details";
+            this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
+            // 
+            // groupBox3
+            // 
+            this.groupBox3.Controls.Add(this.tabControl1);
+            this.groupBox3.Controls.Add(this.autoconnect);
+            this.groupBox3.Dock = System.Windows.Forms.DockStyle.Left;
+            this.groupBox3.Location = new System.Drawing.Point(0, 0);
+            this.groupBox3.Name = "groupBox3";
+            this.groupBox3.Size = new System.Drawing.Size(155, 707);
+            this.groupBox3.TabIndex = 24;
+            this.groupBox3.TabStop = false;
+            this.groupBox3.Text = "Connect Reader";
+            // 
+            // tabControl1
+            // 
+            this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.tabControl1.Controls.Add(this.tabPage1);
+            this.tabControl1.ItemSize = new System.Drawing.Size(100, 25);
+            this.tabControl1.Location = new System.Drawing.Point(6, 115);
+            this.tabControl1.Name = "tabControl1";
+            this.tabControl1.SelectedIndex = 0;
+            this.tabControl1.Size = new System.Drawing.Size(145, 592);
+            this.tabControl1.TabIndex = 25;
+            // 
+            // tabPage1
+            // 
+            this.tabPage1.BackColor = System.Drawing.Color.White;
+            this.tabPage1.Controls.Add(this.comboBox_ip);
+            this.tabPage1.Controls.Add(this.label17);
+            this.tabPage1.Controls.Add(this.comboBox_port);
+            this.tabPage1.Controls.Add(this.label18);
+            this.tabPage1.Controls.Add(this.label7);
+            this.tabPage1.Controls.Add(this.getTagbtn);
+            this.tabPage1.Location = new System.Drawing.Point(4, 29);
+            this.tabPage1.Name = "tabPage1";
+            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
+            this.tabPage1.Size = new System.Drawing.Size(137, 559);
+            this.tabPage1.TabIndex = 0;
+            this.tabPage1.Text = "Query Tag";
+            // 
+            // comboBox_ip
+            // 
+            this.comboBox_ip.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.comboBox_ip.FormattingEnabled = true;
+            this.comboBox_ip.Location = new System.Drawing.Point(11, 42);
+            this.comboBox_ip.MaxLength = 15;
+            this.comboBox_ip.Name = "comboBox_ip";
+            this.comboBox_ip.Size = new System.Drawing.Size(114, 23);
+            this.comboBox_ip.TabIndex = 35;
+            this.comboBox_ip.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.comboBox1_KeyPress);
+            // 
+            // label17
+            // 
+            this.label17.AutoSize = true;
+            this.label17.BackColor = System.Drawing.Color.Transparent;
+            this.label17.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+            this.label17.Location = new System.Drawing.Point(11, 76);
+            this.label17.Name = "label17";
+            this.label17.Size = new System.Drawing.Size(29, 15);
+            this.label17.TabIndex = 33;
+            this.label17.Text = "Port";
+            // 
+            // comboBox_port
+            // 
+            this.comboBox_port.DropDownStyle = System.Windows.Forms.ComboBoxStyle.Simple;
+            this.comboBox_port.FormattingEnabled = true;
+            this.comboBox_port.Items.AddRange(new object[] {
+            "1200",
+            "2400",
+            "4800",
+            "9600",
+            "19200",
+            "38400",
+            "57600",
+            "115200"});
+            this.comboBox_port.Location = new System.Drawing.Point(11, 94);
+            this.comboBox_port.MaxLength = 6;
+            this.comboBox_port.Name = "comboBox_port";
+            this.comboBox_port.Size = new System.Drawing.Size(114, 23);
+            this.comboBox_port.TabIndex = 36;
+            this.comboBox_port.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.comboBox_port_KeyPress);
+            // 
+            // label18
+            // 
+            this.label18.AutoSize = true;
+            this.label18.BackColor = System.Drawing.Color.Transparent;
+            this.label18.ImeMode = System.Windows.Forms.ImeMode.NoControl;
+            this.label18.Location = new System.Drawing.Point(11, 21);
+            this.label18.Name = "label18";
+            this.label18.Size = new System.Drawing.Size(76, 15);
+            this.label18.TabIndex = 34;
+            this.label18.Text = "Computer IP";
+            // 
+            // getTagbtn
+            // 
+            this.getTagbtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+            this.getTagbtn.Image = global::Ethernet_data.Properties.Resources.paixi;
+            this.getTagbtn.Location = new System.Drawing.Point(11, 129);
+            this.getTagbtn.Name = "getTagbtn";
+            this.getTagbtn.Size = new System.Drawing.Size(114, 44);
+            this.getTagbtn.TabIndex = 16;
+            this.getTagbtn.Tag = "";
+            this.getTagbtn.Text = "Start";
+            this.getTagbtn.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
+            this.getTagbtn.UseVisualStyleBackColor = true;
+            this.getTagbtn.Click += new System.EventHandler(this.getTagbtn_Click);
+            // 
+            // panel1
+            // 
+            this.panel1.Controls.Add(this.panel8);
+            this.panel1.Controls.Add(this.dataGridView2);
+            this.panel1.Controls.Add(this.panel7);
+            this.panel1.Controls.Add(this.dataGridView1);
+            this.panel1.Controls.Add(this.panel6);
+            this.panel1.Controls.Add(this.panel5);
+            this.panel1.Controls.Add(this.ListView1);
+            this.panel1.Controls.Add(this.panel4);
+            this.panel1.Controls.Add(this.groupBox2);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel1.Enabled = false;
+            this.panel1.Location = new System.Drawing.Point(155, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(826, 707);
+            this.panel1.TabIndex = 25;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Dock = System.Windows.Forms.DockStyle.Left;
+            this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+            this.label3.Location = new System.Drawing.Point(0, 0);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(53, 15);
+            this.label3.TabIndex = 63;
+            this.label3.Text = "Tag List:";
+            this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Dock = System.Windows.Forms.DockStyle.Left;
+            this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
+            this.label1.Location = new System.Drawing.Point(0, 0);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(74, 15);
+            this.label1.TabIndex = 62;
+            this.label1.Text = "Reader List:";
+            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+            // 
+            // panel2
+            // 
+            this.panel2.Controls.Add(this.textBoxReaderDB);
+            this.panel2.Controls.Add(this.button3);
+            this.panel2.Controls.Add(this.button1);
+            this.panel2.Dock = System.Windows.Forms.DockStyle.Right;
+            this.panel2.Enabled = false;
+            this.panel2.Location = new System.Drawing.Point(558, 0);
+            this.panel2.Name = "panel2";
+            this.panel2.Size = new System.Drawing.Size(268, 42);
+            this.panel2.TabIndex = 60;
+            // 
+            // textBoxReaderDB
+            // 
+            this.textBoxReaderDB.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.textBoxReaderDB.FormattingEnabled = true;
+            this.textBoxReaderDB.Items.AddRange(new object[] {
+            "0",
+            "1",
+            "2",
+            "3",
+            "4",
+            "5",
+            "6",
+            "7",
+            "8",
+            "9",
+            "10",
+            "11",
+            "12",
+            "13",
+            "14",
+            "15",
+            "16",
+            "17",
+            "18",
+            "19",
+            "20",
+            "21",
+            "22",
+            "23",
+            "24",
+            "25",
+            "26",
+            "27",
+            "28",
+            "29",
+            "30",
+            "31"});
+            this.textBoxReaderDB.Location = new System.Drawing.Point(21, 8);
+            this.textBoxReaderDB.MaxLength = 2;
+            this.textBoxReaderDB.Name = "textBoxReaderDB";
+            this.textBoxReaderDB.Size = new System.Drawing.Size(58, 23);
+            this.textBoxReaderDB.TabIndex = 57;
+            this.textBoxReaderDB.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.comboBox_port_KeyPress);
+            // 
+            // button3
+            // 
+            this.button3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.button3.Location = new System.Drawing.Point(89, 3);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(85, 33);
+            this.button3.TabIndex = 55;
+            this.button3.Text = "Set Power";
+            this.button3.UseVisualStyleBackColor = true;
+            this.button3.Click += new System.EventHandler(this.btnItemSetDB_Click);
+            // 
+            // button1
+            // 
+            this.button1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.button1.Location = new System.Drawing.Point(176, 3);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(85, 33);
+            this.button1.TabIndex = 54;
+            this.button1.Text = "Get Power";
+            this.button1.UseVisualStyleBackColor = true;
+            this.button1.Click += new System.EventHandler(this.btnItemGetDB_Click);
+            // 
+            // ListView1
+            // 
+            this.ListView1.BackColor = System.Drawing.Color.White;
+            this.ListView1.CheckBoxes = true;
+            this.ListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.ReaderIP,
+            this.SubnetMask,
+            this.Gateway,
+            this.MAC,
+            this.DeviceName,
+            this.power,
+            this.State});
+            this.ListView1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.ListView1.FullRowSelect = true;
+            this.ListView1.GridLines = true;
+            this.ListView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
+            this.ListView1.LargeImageList = this.imageList1;
+            this.ListView1.Location = new System.Drawing.Point(0, 62);
+            this.ListView1.Name = "ListView1";
+            this.ListView1.ShowGroups = false;
+            this.ListView1.Size = new System.Drawing.Size(826, 161);
+            this.ListView1.TabIndex = 58;
+            this.ListView1.UseCompatibleStateImageBehavior = false;
+            this.ListView1.View = System.Windows.Forms.View.Details;
+            this.ListView1.ItemChecked += new System.Windows.Forms.ItemCheckedEventHandler(this.gridreader_ItemChecked);
+            this.ListView1.SizeChanged += new System.EventHandler(this.ListView1_SizeChanged);
+            this.ListView1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.gridreader_MouseDoubleClick);
+            // 
+            // ReaderIP
+            // 
+            this.ReaderIP.Text = "Reader IP";
+            this.ReaderIP.Width = 109;
+            // 
+            // SubnetMask
+            // 
+            this.SubnetMask.Text = "Mask";
+            this.SubnetMask.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.SubnetMask.Width = 124;
+            // 
+            // Gateway
+            // 
+            this.Gateway.Text = "Gateway";
+            this.Gateway.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.Gateway.Width = 126;
+            // 
+            // MAC
+            // 
+            this.MAC.Text = "MAC";
+            this.MAC.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.MAC.Width = 134;
+            // 
+            // DeviceName
+            // 
+            this.DeviceName.Text = "Device Name";
+            this.DeviceName.Width = 136;
+            // 
+            // power
+            // 
+            this.power.Text = "Power";
+            this.power.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.power.Width = 67;
+            // 
+            // State
+            // 
+            this.State.Text = "Connect state";
+            this.State.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            this.State.Width = 107;
+            // 
+            // imageList1
+            // 
+            this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+            this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
+            this.imageList1.Images.SetKeyName(0, "dl9230.jpg");
+            // 
+            // panel3
+            // 
+            this.panel3.Controls.Add(this.toolStrip1);
+            this.panel3.Dock = System.Windows.Forms.DockStyle.Left;
+            this.panel3.Location = new System.Drawing.Point(0, 0);
+            this.panel3.Name = "panel3";
+            this.panel3.Size = new System.Drawing.Size(320, 42);
+            this.panel3.TabIndex = 61;
+            this.panel3.Visible = false;
+            // 
+            // panel4
+            // 
+            this.panel4.Controls.Add(this.label1);
+            this.panel4.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel4.Location = new System.Drawing.Point(0, 46);
+            this.panel4.Name = "panel4";
+            this.panel4.Size = new System.Drawing.Size(826, 16);
+            this.panel4.TabIndex = 64;
+            // 
+            // panel5
+            // 
+            this.panel5.Controls.Add(this.panel2);
+            this.panel5.Controls.Add(this.panel3);
+            this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel5.Location = new System.Drawing.Point(0, 223);
+            this.panel5.Name = "panel5";
+            this.panel5.Size = new System.Drawing.Size(826, 42);
+            this.panel5.TabIndex = 65;
+            // 
+            // panel6
+            // 
+            this.panel6.Controls.Add(this.label3);
+            this.panel6.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel6.Location = new System.Drawing.Point(0, 265);
+            this.panel6.Name = "panel6";
+            this.panel6.Size = new System.Drawing.Size(826, 20);
+            this.panel6.TabIndex = 66;
+            // 
+            // panel7
+            // 
+            this.panel7.Controls.Add(this.panel10);
+            this.panel7.Controls.Add(this.panel9);
+            this.panel7.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel7.Location = new System.Drawing.Point(0, 529);
+            this.panel7.Name = "panel7";
+            this.panel7.Size = new System.Drawing.Size(826, 38);
+            this.panel7.TabIndex = 67;
+            // 
+            // panel8
+            // 
+            this.panel8.Controls.Add(this.panel11);
+            this.panel8.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.panel8.Location = new System.Drawing.Point(0, 669);
+            this.panel8.Name = "panel8";
+            this.panel8.Size = new System.Drawing.Size(826, 38);
+            this.panel8.TabIndex = 68;
+            // 
+            // panel9
+            // 
+            this.panel9.Controls.Add(this.Clearbtn);
+            this.panel9.Dock = System.Windows.Forms.DockStyle.Right;
+            this.panel9.Location = new System.Drawing.Point(647, 0);
+            this.panel9.Name = "panel9";
+            this.panel9.Size = new System.Drawing.Size(179, 38);
+            this.panel9.TabIndex = 19;
+            // 
+            // panel10
+            // 
+            this.panel10.Controls.Add(this.label2);
+            this.panel10.Dock = System.Windows.Forms.DockStyle.Left;
+            this.panel10.Location = new System.Drawing.Point(0, 0);
+            this.panel10.Name = "panel10";
+            this.panel10.Size = new System.Drawing.Size(200, 38);
+            this.panel10.TabIndex = 20;
+            // 
+            // panel11
+            // 
+            this.panel11.Controls.Add(this.button2);
+            this.panel11.Dock = System.Windows.Forms.DockStyle.Right;
+            this.panel11.Location = new System.Drawing.Point(673, 0);
+            this.panel11.Name = "panel11";
+            this.panel11.Size = new System.Drawing.Size(153, 38);
+            this.panel11.TabIndex = 21;
+            // 
+            // frmmain
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(981, 707);
+            this.Controls.Add(this.panel1);
+            this.Controls.Add(this.groupBox3);
+            this.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+            this.MinimumSize = new System.Drawing.Size(758, 523);
+            this.Name = "frmmain";
+            this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmmain_FormClosing);
+            this.Load += new System.EventHandler(this.Form3_Load);
+            this.Shown += new System.EventHandler(this.frmmain_Shown);
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
+            this.groupBox2.ResumeLayout(false);
+            this.groupBox2.PerformLayout();
+            this.toolStrip1.ResumeLayout(false);
+            this.toolStrip1.PerformLayout();
+            this.groupBox3.ResumeLayout(false);
+            this.tabControl1.ResumeLayout(false);
+            this.tabPage1.ResumeLayout(false);
+            this.tabPage1.PerformLayout();
+            this.panel1.ResumeLayout(false);
+            this.panel2.ResumeLayout(false);
+            this.panel3.ResumeLayout(false);
+            this.panel4.ResumeLayout(false);
+            this.panel4.PerformLayout();
+            this.panel5.ResumeLayout(false);
+            this.panel6.ResumeLayout(false);
+            this.panel6.PerformLayout();
+            this.panel7.ResumeLayout(false);
+            this.panel8.ResumeLayout(false);
+            this.panel9.ResumeLayout(false);
+            this.panel10.ResumeLayout(false);
+            this.panel10.PerformLayout();
+            this.panel11.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Button autoconnect;
+        private System.Windows.Forms.DataGridView dataGridView1;
+        private System.Windows.Forms.Timer timer1;
+        private System.Windows.Forms.Button Clearbtn;
+        private System.Windows.Forms.Button getTagbtn;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.DataGridView dataGridView2;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column7;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column6;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.GroupBox groupBox2;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.Label label14;
+        private System.Windows.Forms.Label label11;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.GroupBox groupBox3;
+        private System.Windows.Forms.TabControl tabControl1;
+        private System.Windows.Forms.TabPage tabPage1;
+        public System.Windows.Forms.ComboBox comboBox_ip;
+        private System.Windows.Forms.Label label17;
+        public System.Windows.Forms.ComboBox comboBox_port;
+        private System.Windows.Forms.Label label18;
+        private System.IO.Ports.SerialPort serialPort1;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Button button3;
+        private System.Windows.Forms.ComboBox textBoxReaderDB;
+        private System.Windows.Forms.ColumnHeader DeviceName;
+        private System.Windows.Forms.ColumnHeader ReaderIP;
+        private System.Windows.Forms.ColumnHeader SubnetMask;
+        private System.Windows.Forms.ColumnHeader Gateway;
+        private System.Windows.Forms.ColumnHeader MAC;
+        private System.Windows.Forms.ColumnHeader power;
+        private System.Windows.Forms.Panel panel2;
+        private System.Windows.Forms.ColumnHeader State;
+        private System.Windows.Forms.ImageList imageList1;
+        private System.Windows.Forms.ToolStrip toolStrip1;
+        private System.Windows.Forms.ToolStripButton toolStripButton2;
+        private System.Windows.Forms.ToolStripButton toolStripButton1;
+        private System.Windows.Forms.ToolStripLabel toolStripButton3;
+        private System.Windows.Forms.Panel panel3;
+        private System.Windows.Forms.ListView ListView1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn IP;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
+        private System.Windows.Forms.DataGridViewTextBoxColumn TagPower;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column4;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column5;
+        private System.Windows.Forms.Panel panel8;
+        private System.Windows.Forms.Panel panel7;
+        private System.Windows.Forms.Panel panel6;
+        private System.Windows.Forms.Panel panel5;
+        private System.Windows.Forms.Panel panel4;
+        private System.Windows.Forms.Panel panel11;
+        private System.Windows.Forms.Panel panel10;
+        private System.Windows.Forms.Panel panel9;
+    }
+}
\ No newline at end of file
diff --git a/SendTags_DL9230/frmmain.cs b/SendTags_DL9230/frmmain.cs
new file mode 100644
index 0000000000000000000000000000000000000000..99df1f7b164a1859f3a56309a4da60977e735458
--- /dev/null
+++ b/SendTags_DL9230/frmmain.cs
@@ -0,0 +1,614 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Net;
+using System.Net.Sockets;
+using System.Threading;
+using RFIDLib;
+using SendTags;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement;
+
+namespace Ethernet_data
+{
+    public partial class frmmain : Form
+    {
+        const int _readerip = 0, _SubnetMask = 1, _Gateway = 2, _MAC = 3, _devicename = 4, _power = 5, _state = 6;
+
+        private const string scanreader = "Searching Reader";
+        private const string scanreader_ok = "Successful connection   ";
+        private const string scanreader_fail = "Auto Connect failed, please check:1. If your PC and RFID reader are in the same network?2. If your PC is a laptop? " +
+            "Due to the laptop has 2 NIC(network interface card), it is required to disable one to make sure the AUTO Connect is valid." +
+            "3. Please make sure the system firewall is turned off or the RFID application is whitelisted.";
+        private const string ip_fail ="Different network segments, or address conflicts, setting"; //"网段不同或地址冲突,正在设置";
+        private const string set_ok = "Set DL9230 Reader IP success";
+        private const string set_fail ="Failed to set the IP"; // "设置IP失败";
+        private const string start_read = "Start reading Tag";
+        private const string stop_read = "Stop Reading Tag";
+        private const string nofindreader = "Connection Failed";
+        private const string setip_fail = "Set the IP address failed  ";
+        private const string setWordMode_fail ="Failed to set the working mode    "; // "设置工作模式失败     ";
+        private const string getlocalfail ="Failed to get the PC client IP address";  // "没能获取电脑端IP地址";
+        RFIDReader m_rfidReader =RFIDReaderFactory.GetRfidReader("TcpReader_5");
+
+        #region  TCPIP  用到的变量
+
+        TcpListener m_sockListener = null;
+        public TcpClient[] m_tcpClient = new TcpClient[0];
+        TcpClient currtcpclient = null;
+        AutoConnect _autoConnect = new AutoConnect();
+
+        private IPEndPoint iep;
+        private bool Closeing = false;
+        private bool  resing=false ;
+        private byte[] receive_data = new byte[1024];
+        private string[] ComputerIP = new string[3];
+        string[,] network_info = new string[10,4];
+        //private RFIDLib.TcpReader_5 tcp_reader = new RFIDLib.TcpReader_5();
+        #endregion
+
+        ///*************************************************************************/
+        //public struct TAGDATA
+        //{
+        //    public byte addr;     //读卡器地址
+        //    public byte volt;     //标签电压 0:正常,1:欠压
+        //    public uint tagID;    //卡号
+        //    public DateTime time; //时间
+        //}
+        //List<TAGDATA> listTag;
+        /*************************************************************************/
+
+        public frmmain()
+        {
+            InitializeComponent();
+            CheckForIllegalCrossThreadCalls = false;
+            this.WindowState = FormWindowState.Maximized;
+        }
+     
+
+        //***************************************************************************************************************
+        #region 其它事件
+
+        private void Form3_Load(object sender, EventArgs e)
+        {
+            this.Text = Application.ProductName + "  V" + Application.ProductVersion;
+            dataGridView1.RowCount = 0;
+            dataGridView1.Columns[2].DefaultCellStyle.ForeColor = Color.Blue;
+
+            comboBox_port.Text = "10000";
+
+            int network_count = 0;
+            Class3.getNetwork(ref network_info, ref network_count); //取本机IP 子网掩码 网关
+            for (int i = 0; i < network_count; i++)
+            {
+                comboBox_ip.Items.Add(network_info[i, 0]);
+            }
+            if (comboBox_ip.Items.Count == 1) comboBox_ip.SelectedIndex=0;
+        }
+        private void frmmain_Shown(object sender, EventArgs e)
+        {
+            //getreaderip_Click(null, null);
+        }
+        private void frmmain_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            while (resing)
+            {
+                Application.DoEvents();
+            }
+            Closeing = true;
+            //tcp_reader.Stop();
+            foreach (TcpClient item in m_tcpClient)
+            {
+                if (item != null)
+                {
+                    if(item .Connected) item.Close();
+                }
+            }
+        }
+        private void addinfo(string infoname, bool iserror)
+        {
+            for (int row = 0; row < dataGridView2.RowCount; row++)
+            {
+                if ( dataGridView2[1, row].Value.ToString().Contains(infoname))
+                {
+                    dataGridView2.Rows.RemoveAt(row);
+                }
+            }
+                    string[] info = new string[2];
+            info[0] = (dataGridView2.RowCount + 1).ToString();
+            info[1] = DateTime.Now.ToLongTimeString() + "  " + infoname;
+            dataGridView2.Rows.Add(info);
+            dataGridView2[0,dataGridView2.RowCount - 1].Selected = true;
+            if (iserror) dataGridView2.Rows[dataGridView2.RowCount - 1].DefaultCellStyle.ForeColor = Color.Red;
+            dataGridView2.FirstDisplayedScrollingRowIndex = dataGridView2.RowCount - 1;
+        }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+            dataGridView2.RowCount = 0;
+        }
+        private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            e.Handled = "0123456789.\b".IndexOf(e.KeyChar) < 0;
+        }
+        private void comboBox_port_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            e.Handled = "0123456789\b".IndexOf(e.KeyChar) < 0;
+        }
+
+        private void Clearbtn_Click(object sender, EventArgs e)
+        {
+            dataGridView1.RowCount = 0;
+            label7.Text = "0";
+        }
+        private void tag_show(string ip,string addr,string tagID,bool isOverpressure, string time)
+        {
+            bool findok = false;
+            string isOverpressureStr = "Nomal";
+            if (isOverpressure)
+            {
+                isOverpressureStr = "Undervoltage";
+            }
+            for (int row =0; row < dataGridView1.RowCount; row++)
+            {
+                if (tagID == dataGridView1[3, row].Value.ToString() && ip == dataGridView1[1, row].Value.ToString())
+                {
+                    if (isOverpressure)
+                    {
+                        dataGridView1.Rows[row].Cells[4].Style.ForeColor = Color.Red;
+
+                    }
+                    else {
+                        dataGridView1.Rows[row].Cells[4].Style.ForeColor = Color.Black;
+                    }
+                    dataGridView1[4, row].Value = isOverpressureStr;
+                    dataGridView1[5, row].Value = time;
+                    dataGridView1[6, row].Value = (int.Parse(dataGridView1[6, row].Value.ToString()) + 1).ToString();
+                    //dataGridView1[4, row].Selected=true;
+                    findok = true;
+                    break;
+                }
+
+            }
+            if (!findok)
+            {
+                string[] str1 = new string[7];
+                str1[0] = (dataGridView1.RowCount + 1).ToString();
+                str1[1] = ip;
+                str1[2] = addr;
+                str1[3] = tagID;
+                str1[4] = isOverpressureStr;
+                str1[5] = time;
+                str1[6] = "1";
+                dataGridView1.Rows.Add(str1);
+                dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount - 1;
+            }
+            label7.Text = dataGridView1.RowCount.ToString();
+        }
+
+        #endregion
+
+        #region  reader connect 连接相关函数或事件
+
+        private void autoconnect_Click(object sender, EventArgs e)
+        {
+            this.Cursor = Cursors.WaitCursor;
+            try
+            {
+                panel1.Enabled = false;
+                ListView1.Items.Clear();
+                addinfo(scanreader, false);
+                if (searchReader())
+                {
+                    comboBox_ip.Text = ComputerIP[0];
+                    comboBox_port.Text  = "10000";
+                    getTagbtn_Click(null, null);
+                }
+            }
+            finally
+            {
+                this.Cursor = Cursors.Default;
+            }
+        }
+        private void M_rfidReader_OnLineNotify(byte devID, object data)
+        {
+
+        }
+        private void getTagbtn_Click(object sender, EventArgs e)
+        {
+            
+            if (comboBox_ip.Text.Trim() == "" || comboBox_port.Text.Trim() == null)
+            {
+                comboBox_ip.Focus();
+                MessageBox.Show("ip或端口不能为空!");
+                return;
+            }
+
+            if (string.IsNullOrEmpty(getTagbtn.Tag.ToString()))
+            {
+                try
+                {
+                    foreach (TcpClient item in m_tcpClient)
+                    {
+                        if (item != null)
+                        {
+                            try
+                            {
+                                if (item.Connected) item.Close();
+                            }
+                            catch { }
+                        }
+                    }
+
+                    //开始读卡
+                    m_rfidReader.Start(comboBox_ip.Text + "," + comboBox_port.Text);
+
+                    //m_rfidReader.OnLineNotify += M_rfidReader_OnLineNotify;
+
+                    timer1.Interval = 500;
+                    timer1.Enabled = true;//启动定时器,以便定时获取读卡器数据
+                  
+
+                    getTagbtn.Text = "Stop";
+                    getTagbtn.Tag = "1";
+                    autoconnect.Enabled = panel2.Enabled = false;
+                }
+                catch (Exception ex)
+                {
+                    MessageBox.Show(ex.Message, "提示");
+                    return;
+                }
+
+            }
+            else
+            {
+                timer1.Enabled = false;
+                m_rfidReader.Stop();
+                getTagbtn.Text = "Start";
+                getTagbtn.Tag = "";
+                panel2.Enabled = autoconnect.Enabled = true;
+                panel1.Enabled = true;
+            }
+
+            //if (getTagbtn.Enabled == false) return;
+            //if (string.IsNullOrEmpty(getTagbtn.Tag.ToString()))
+            //{
+            //    if (comboBox_ip.Text.Trim() == "")
+            //    {
+            //        comboBox_ip.Focus();
+            //        return;
+            //    }
+            //    getTagbtn.Enabled = autoconnect.Enabled = panel2.Enabled = false;
+            //    dataGridView1.Rows.Clear();
+            //    if (Tcpip_connect(comboBox_ip.Text, comboBox_port.Text))
+            //    {
+            //        timer1.Enabled = true;
+            //        addinfo(start_read, false);
+            //        getTagbtn.Text = "Stop";
+            //        getTagbtn.Tag = "1";
+            //    }
+            //    else
+            //    {
+            //        panel2.Enabled = autoconnect.Enabled = true;
+
+            //    }
+            //    getTagbtn.Enabled = true;
+            //}
+            //else
+            //{
+            //    timer1.Enabled = false;
+            //    addinfo(stop_read, false);
+            //    panel2.Enabled = autoconnect.Enabled = true;
+            //    getTagbtn.Text ="Start";
+            //    getTagbtn.Tag =  "";
+            //}
+        }
+
+     
+        /// <summary>
+        /// Search reader and setting
+        /// </summary>
+        /// <param name="IP"> computer ip </param>
+        /// <returns></returns>
+        private bool searchReader()
+        {
+            panel1.Enabled = false;
+            ListView1.Items.Clear();
+
+            int docount = 0;
+            bool result = false;
+            byte[] data = reader.GetReader_list();
+            _autoConnect.AddDeviceEvent += _autoConnect_AddDeviceEvent;
+            while (docount++ < 2)
+            {
+                try
+                {
+                    result = (bool)_autoConnect.read_message(data);
+                    _autoConnect.AddDeviceEvent -= _autoConnect_AddDeviceEvent;
+                }
+                catch (Exception ex) {
+                    MessageBox.Show(ex.Message, nofindreader, MessageBoxButtons.OK, MessageBoxIcon.Error);
+                }
+
+                if (result) break;
+            }
+            if (result == false)
+            {
+                addinfo(scanreader_fail,false);
+                //MessageBox.Show(, nofindreader, MessageBoxButtons.OK, MessageBoxIcon.Error);
+                //addinfo(scanreader_fail, true);
+                return false;
+            }
+
+            int network_count = 0;
+            Class3.getNetwork(ref network_info, ref network_count); //取本机IP 子网掩码 网关
+            if (network_count == 0)  //没有网卡
+            {
+                addinfo(getlocalfail, true);
+                return false;
+            }
+            else if (network_count == 1)  //只有一张网卡
+            {
+                int index = 0;
+                ComputerIP[0] = network_info[index, 0];
+                ComputerIP[1] = network_info[index, 1];
+                ComputerIP[2] = network_info[index, 2];
+            }
+            else //有多张网卡
+            {
+
+                Form3 frm = new Form3();
+                DataGridView grid1 = frm.grid1;
+                for (int i = 0; i < network_count; i++)
+                {
+                    grid1.Rows.Add(); ;
+                    grid1[0, grid1.Rows.Count - 1].Value = network_info[i, 3];
+                    grid1[1, grid1.Rows.Count - 1].Value = network_info[i, 0];
+                    grid1[2, grid1.Rows.Count - 1].Value = network_info[i, 1];
+                    grid1[3, grid1.Rows.Count - 1].Value = network_info[i, 2];
+                }
+                if (frm.ShowDialog(this) != DialogResult.OK)
+                {
+                    return false;
+                }
+                ComputerIP[0] = grid1[1, grid1.SelectedRows[0].Index].Value.ToString();
+                ComputerIP[1] = grid1[2, grid1.SelectedRows[0].Index].Value.ToString();
+                ComputerIP[2] = grid1[3, grid1.SelectedRows[0].Index].Value.ToString();
+            }
+           
+            bool IPsame = false;
+            foreach (ListViewItem item in ListView1.Items)
+            {
+                string[] tmp1 = item.Text.Split('.');
+                string[] localtion = ComputerIP[0].Split('.');
+                IPsame = false;
+                for (int i = 0; i < item.Index; i++)
+                {
+                    if (item.SubItems[_readerip].Text == ListView1.Items[i].SubItems[_readerip].Text)
+                    {
+                        IPsame = true;
+                        break;
+                    }
+                }
+                if (IPsame||item.SubItems[_SubnetMask].Text != ComputerIP[1] || item.SubItems[_Gateway].Text != ComputerIP[2] || tmp1[0] != localtion[0] || tmp1[1] != localtion[1] || tmp1[2] != localtion[2] || item.SubItems[_readerip].Text == ComputerIP[0]) //网段不同或掩码不同或网关不同
+                {
+                    addinfo(ip_fail, true);
+
+                    string newip = Class3.ScanTarget(localtion[0] + "." + localtion[1] + "." + localtion[2]); //获取局域网一个空闲IP
+                    if (string.IsNullOrEmpty(newip)) return false;
+
+                    data = reader.SETReader(newip, ComputerIP[1], ComputerIP[2],item .SubItems[_MAC].Text); //设置reader IP
+                    try
+                    {
+                        if ((bool)_autoConnect.read_message(data))
+                        {
+                            ListView1.Items[item.Index].SubItems[_readerip].Text = newip;
+                            ListView1.Items[item.Index].SubItems[_SubnetMask].Text = ComputerIP[1];
+                            ListView1.Items[item.Index].SubItems[_Gateway].Text = ComputerIP[2];
+                            addinfo(set_ok, false);
+                        }
+                        else
+                        {
+
+                            addinfo(set_fail, true);
+                            return false;
+                        }
+                    }
+                    catch (Exception ex) {
+                        MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                    }
+                }
+                data = reader.Set_WorkMode(ComputerIP[0],item.SubItems[_MAC].Text); //设置工作模式
+                if (!(bool)_autoConnect.read_message(data))
+                {
+                    
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        private void _autoConnect_AddDeviceEvent(DeviceInfo deviceInfo)
+        {
+            ShowDeviceList(deviceInfo);
+        }
+
+        private void ShowDeviceList(DeviceInfo deviceInfo)
+        {
+            string[] str = new string[ListView1.Columns.Count];
+            str[0] = deviceInfo.IP;
+            str[1] = deviceInfo.SubnetMask;
+            str[2] = deviceInfo.Gateway;
+            str[3] = deviceInfo.MAC;
+            str[4] = deviceInfo.Devicename;
+            for (int i = 5; i < ListView1.Columns.Count; i++)
+            {
+                str[i] = "";
+            }
+            ListViewItem item = new ListViewItem(str);
+            item.Checked = true;
+            item.ImageIndex = 0;
+           
+            ListView1.Items.Add(item);
+            btnItemGetDB_Click(null,null);
+            changeConnectState(item.Index, "connected");
+        }
+        
+        private void changeConnectState(int row,string value)
+        {
+            if (row >= 0)
+            {
+                ListView1.Items[row].SubItems[_state].Text = value;
+                ListView1.Items[row].ForeColor = value == "" ? Color.DimGray : Color.Blue;
+            }
+            else
+            {
+                for (row = 0; row < ListView1.Items.Count; row++)
+                {
+                    ListView1.Items[row].SubItems[_state].Text = value;
+                    ListView1.Items[row].ForeColor = value == "" ? Color.DimGray : Color.Blue;
+                }
+            }
+        }
+        
+        /***************************************************TCPIP connect END***************************************************************************/
+        #endregion
+
+        #region read tag 获取标签相关事件或函数
+
+
+        
+        private void timer1_Tick(object sender, EventArgs e)
+        {
+            //读取读卡器中标签数据
+            List<TAGDATA> listTag = m_rfidReader.GetTagData();
+
+            if (listTag == null || listTag.Count == 0)
+            {
+                addinfo("can not get tag data,please check the reader is ready and have a valid rfidCare ",false);
+                return;
+            }
+
+            var tags = new List<Tag>();
+
+            for (int i = 0; i < listTag.Count; i++)
+            {
+                if (ListView1.Items != null && ListView1.Items.Count > 0)
+                {
+                    ListViewItem item = ListView1.FindItemWithText(listTag[i].strReaderIP, false, 0);
+                    if (item != null)
+                    {
+                        if (item.Checked) //选择了
+                        {
+                            tag_show(listTag[i].strReaderIP, listTag[i].readerID.ToString(), listTag[i].tagID.ToString(), listTag[i].bVoltLow, listTag[i].time.ToString("yyyy-MM-dd HH:mm;ss"));
+                        }
+                    }
+                }
+                else
+                {
+                    tag_show(listTag[i].strReaderIP, listTag[i].readerID.ToString(), listTag[i].tagID.ToString(), listTag[i].bVoltLow, listTag[i].time.ToString("yyyy-MM-dd HH:mm;ss"));
+                }
+
+                var tag = new Tag();
+                tag.tag_id = listTag[i].tagID.ToString();
+                tag.timestamp = listTag[i].time.ToString("HH:mm:ss");
+                tags.Add(tag);
+            }
+
+            PostTags.PostTagsAsync(tags);
+        }
+
+        private void ListView1_SizeChanged(object sender, EventArgs e)
+        {
+            int _Count = ListView1.Columns.Count;
+            int _Width = ListView1.Width;
+            foreach (ColumnHeader ch in ListView1.Columns)
+            {
+                ch.Width = _Width / _Count;
+            }
+ 
+        }
+
+        #endregion
+
+        #region    衰减值读取与设置
+
+        //读取衰减值
+        private void btnItemGetDB_Click(object sender, EventArgs e)
+        {
+       
+            textBoxReaderDB.Text = "";
+            foreach (ListViewItem item in ListView1.Items)
+            {
+                if (item.Checked == false) continue;
+                string iptmp1 = item.SubItems[_readerip].Text;
+                string power= _autoConnect. GetPower(comboBox_ip.Text,comboBox_port.Text,  iptmp1, ListView1.Items.Count);
+                ListView1.Items[item.Index].SubItems[_power].Text = power;
+                
+               
+            }
+        }
+         //设置衰减值
+        private void btnItemSetDB_Click(object sender, EventArgs e)
+        {
+            if (textBoxReaderDB.Text.Trim() == "")
+            {
+                textBoxReaderDB.Focus();
+                return;
+            }
+
+            foreach (ListViewItem item in ListView1.Items)
+            {
+                if (item.Checked == false) continue;
+                string iptmp1 = item.SubItems[_readerip].Text;
+                string value= textBoxReaderDB.Text;
+
+                bool isok = _autoConnect.SetPower(comboBox_ip.Text, comboBox_port.Text, iptmp1, ListView1.Items.Count, value);
+                if (isok) {
+                    ListView1.Items[item.Index].SubItems[_power].Text= textBoxReaderDB.Text;
+                }
+              
+               
+            }
+        }
+
+         
+        
+        #endregion
+
+        private void gridreader_ItemChecked(object sender, ItemCheckedEventArgs e)
+        {
+            panel2.Enabled =  false;
+            foreach (ListViewItem item in ListView1.Items)
+            {
+                if (item.Checked)
+                {
+                    panel2.Enabled = getTagbtn.Enabled = true;
+                    break;
+                }
+            }
+        }
+
+        private void gridreader_MouseDoubleClick(object sender, MouseEventArgs e)
+        {
+            if (e.Button == MouseButtons.Left)
+            {
+                if(ListView1 .SelectedItems.Count==0) return ;
+                System.Diagnostics.Process.Start("http://" + ListView1.SelectedItems[0].SubItems[_readerip].Text);
+            }
+        }
+
+        private void toolStripButton2_Click(object sender, EventArgs e)
+        {
+            ListView1.View = View.LargeIcon;
+        }
+
+        private void toolStripButton1_Click(object sender, EventArgs e)
+        {
+            ListView1.View = View.Details;
+        }
+    }
+}
\ No newline at end of file
diff --git a/SendTags_DL9230/frmmain.resx b/SendTags_DL9230/frmmain.resx
new file mode 100644
index 0000000000000000000000000000000000000000..caffd6d4d348b44de6378869e94ea5aceca76273
--- /dev/null
+++ b/SendTags_DL9230/frmmain.resx
@@ -0,0 +1,1575 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="IP.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="TagPower.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column4.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column5.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="Column7.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column6.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>326, 20</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+        YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+        0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+        bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+        VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+        c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+        Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+        mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+        kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+        TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+  </data>
+  <metadata name="serialPort1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>93, 20</value>
+  </metadata>
+  <metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>213, 20</value>
+  </metadata>
+  <data name="imageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq
+        GAEAAk1TRnQBSQFMAwEBAAEsAQABLAEAAW4BAAFTAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABuAEB
+        AgABUwMAAQEBAAEgBQABoAE6AQIRAAGyAbsBvwH/AbQBvQHBAf8BtAG+AcUB/wG2AcABxwH/AbcBwwHJ
+        Af8BuAHEAcgB/wG7AccBzQH/Ab4BygHQAf8BwgHMAdMB/wHDAc0B1AH/AcIBzQHRAf8BwwHOAdIB/wHE
+        Ac8B0wH/AcUB0AHUAf8BygHSAdkB/wHMAdQB2wH/AcsB1gHaAf8BywHWAdoB/wHNAdUB3AH/Ac0B1QHc
+        Af8BzQHVAdwB/wHMAdQB2wH/AcsB1QHcAf8BywHVAdwB/wHLAdYB2gH/AcwB1wHbAf8BzwHXAd4B/wHP
+        AdcB3gH/Ac8B1wHeAf8BzwHXAd4B/wHPAdcB3gH/Ac8B1wHeAf8BzwHYAdwB/wHPAdgB3AH/AdIB2AHf
+        Af8B0gHYAd8B/wHQAdkB3QH/AdAB2QHdAf8B0QHaAd4B/wHRAdoB3gH/AdEB2gHeAf8B0AHZAd0B/wHT
+        AdkB3gH/AdQB2gHfAf8B0QHaAd4B/wHSAdsB3wH/AdUB2wHgAf8B2AHcAeEB/wHYAdwB4QH/AdYB2wHe
+        Af8B1wHcAd8B/wHXAdwB3wH/AdMB2gHdAf8B0wHaAd0B/wHWAdsB3gH/AdcB3AHfAf8B1gHbAd4B/wHY
+        Ad0B4AH/AdkB3gHhAf8B2AHdAeAB/wHXAdsB4AH/AdcB2wHgAf8B1gHaAd8B/wHWAdoB3wH/AdcB3AHf
+        Af8B1wHcAd8B/wHYAd0B4AH/AdkB3gHhAf8B2QHeAeEB/wHbAeAB4wH/AdwB3wHjAf8B2wHeAeIB/wHc
+        AeEB5AH/AdkB3gHhAf8B3QHgAeQB/wHcAd8B4wH/Ad0B4QHiAf8B3AHgAeEB/wHcAeAB4QH/Ad0B4QHi
+        Af8B3QHiAeEB/wHeAeMB4gH/Ad8B4QHiAf8B4AHiAeMB/wHgAuIB/wHiAuQB/wHhAuMB/wHgAuIB/wPi
+        Af8D4wH/A+MB/wPlAf8D5AH/A+QB/wHlAeYB5AH/AeQB5QHjAf8D4gH/A+MB/wHmAuQB/wHlAuMB/wPj
+        Af8D4gH/AeUB4wHiAf8B5gHkAeMB/wHjAeQB4gH/AeIB4wHhAf8B5ALiAf8B5ALiAf8D4QH/A+EB//8A
+        /wD/AP8A/wAtAAG0AcABwgH/AbcBwgHGAf8BuQHDAcoB/wG7AcUBzAH/AbwBxgHNAf8BvgHIAc8B/wHB
+        AcsB0gH/AcEBywHSAf8BxAHNAdEB/wHGAc8B0wH/AcgB0QHVAf8BxgHPAdMB/wHFAc8B1gH/AccB0QHY
+        Af8BygHTAdcB/wHLAdQB2AH/AcsB1gHaAf8BzAHXAdsB/wHOAdYB3QH/Ac0B1QHcAf8BzQHUAd0B/wHN
+        AdUB3AH/AcsB1QHcAf8BygHVAdkB/wHKAdQB2wH/AckB0wHaAf8BzAHVAdkB/wHNAdYB2gH/Ac4B1gHd
+        Af8BzwHXAd4B/wHPAdcB3gH/Ac8B1wHeAf8BzQHYAdwB/wHNAdgB3AH/Ac8B1wHeAf8BzgHWAd0B/wHP
+        AdgB3AH/Ac8B2AHcAf8BzwHYAdwB/wHPAdgB3AH/AdAB2QHdAf8B0AHZAd0B/wHRAdcB3AH/AdAB1gHb
+        Af8BzgHXAdsB/wHQAdkB3QH/AdIB2AHdAf8B0wHZAd4B/wHSAdgB3QH/AdMB2QHeAf8B0gHYAd0B/wHS
+        AdgB3QH/AdQB2gHfAf8B1AHaAd8B/wHUAdgB3QH/AdUB2QHeAf8B1gHbAd4B/wHWAdsB3gH/AdcB3AHf
+        Af8B1wHcAd8B/wHXAdsB4AH/AdYB2gHfAf8B2AHdAeAB/wHaAd8B4gH/AdoB3wHiAf8B2gHfAeIB/wHZ
+        Ad4B4QH/AdoB3wHiAf8B2AHdAeAB/wHZAd4B4QH/AdoB3QHhAf8B2wHeAeIB/wHbAeAB4wH/AdoB3wHi
+        Af8B2QHcAeAB/wHbAd4B4gH/AdsB3wHgAf8B3AHgAeEB/wHcAeAB4QH/AdwB4AHhAf8B3AHgAeEB/wHc
+        AeAB4QH/Ad8B4QHiAf8B3wHhAeIB/wHeAeAB4QH/Ad8B4QHiAf8B3wHhAeIB/wHfAuEB/wPhAf8B4gHj
+        AeEB/wHkAeUB4wH/AeQB5QHjAf8D4gH/A+MB/wHiAeMB4QH/AeQB5QHjAf8B4gHlAeMB/wHkAeUB4wH/
+        AecC5QH/AeYC5AH/AeMB5AHiAf8B4wHkAeIB/wHmAeQB4wH/AeYB5AHjAf8B5gHkAeMB/wHnAeUB5AH/
+        AeUB4wHiAf8B5QHjAeIB/wHjAeQB4gH/AeIB4wHhAf//AP8A/wD/AP8ALQABuwHHAckB/wG9AcgBzAH/
+        Ab8ByQHQAf8BwQHLAdIB/wHBAcsB0gH/AcEBywHSAf8BxgHOAdUB/wHFAc4B0gH/AcYBzwHTAf8BxwHQ
+        AdQB/wHIAdEB1QH/AcgB0QHVAf8ByAHQAdcB/wHHAc8B1gH/AckB0gHWAf8BygHTAdcB/wHLAdQB2AH/
+        Ac4B1wHbAf8BzwHXAd4B/wHNAdUB3AH/AcsB0gHbAf8BygHSAdkB/wHJAdMB2gH/AckB1AHYAf8BxwHR
+        AdgB/wHIAdIB2QH/AcsB0wHaAf8BzQHWAdoB/wHOAdYB3QH/Ac8B1wHeAf8B0AHYAd8B/wHQAdgB3wH/
+        Ac0B2AHcAf8BzwHaAd4B/wHRAdkB4AH/AdAB2AHfAf8B0QHaAd4B/wHRAdoB3gH/AdEB2gHeAf8B0gHb
+        Ad8B/wHSAdsB3wH/AdIB2wHfAf8B1AHaAd8B/wHUAdoB3wH/AdMB3AHgAf8B0gHbAd8B/wHTAdkB3gH/
+        AdUB2wHgAf8B1QHbAeIB/wHUAdoB4QH/AdQB2gHfAf8B1AHaAd8B/wHTAdkB3gH/AdQB2gHfAf8B1gHa
+        Ad8B/wHWAdoB3wH/AdcB3AHfAf8B1wHcAd8B/wHXAdwB3wH/AdcB3AHfAf8B1gHaAd8B/wHWAdoB3wH/
+        AdUB2gHdAf8B1QHaAd0B/wHWAdsB3gH/AdYB2wHeAf8B1wHcAd8B/wHXAdwB3wH/AdgB3QHgAf8B1wHc
+        Ad8B/wHYAd0B4AH/AdkB3gHhAf8B2AHdAeAB/wHaAd8B4gH/AdsB4AHjAf8B3AHfAeMB/wHdAeAB5AH/
+        Ad0B4QHiAf8B3AHgAeEB/wHdAeEB4gH/Ad8B4wHkAf8B3AHgAeEB/wHfAeEB4gH/Ad4B4AHhAf8B4AHi
+        AeMB/wHgAeIB4wH/AeIB5AHlAf8B4gHkAeUB/wPkAf8D4wH/A+IB/wPjAf8D4wH/A+QB/wHkAeUB4wH/
+        AeQB5QHjAf8B4wHmAeQB/wHkAeUB4wH/A+UB/wHmAuQB/wHkAeUB4wH/AeMB5AHiAf8B5gHkAeMB/wHl
+        AeMB4gH/AeQB4gHhAf8B5AHiAeEB/wHjAeEB4AH/AeQB4gHhAf8B4QHiAeAB/wHiAeMB4QH//wD/AP8A
+        /wD/AC0AAcQBzQHRAf8BxgHPAdMB/wHEAc0B0QH/AcUBzQHUAf8BxgHOAdUB/wHGAc4B1QH/AccB0AHU
+        Af8BxQHOAdIB/wHEAc0B0QH/AcUBzgHRAf8ByQHPAdQB/wHKAdAB1QH/AcsB0QHWAf8BygHQAdUB/wHM
+        AdIB1wH/Ac0B0wHYAf8BzQHTAdgB/wHPAdgB3AH/Ac4B1gHdAf8BzQHVAdwB/wHMAdQB2wH/AcwB1AHb
+        Af8BygHSAdkB/wHJAdEB2AH/AckB0AHZAf8BygHSAdkB/wHLAdMB2gH/Ac0B1QHcAf8BzgHWAd0B/wHM
+        AdQB2wH/AdEB1wHeAf8BzgHWAd0B/wHOAdkB3QH/Ac8B2gHeAf8B0AHYAd8B/wHQAdgB3wH/Ac4B2QHd
+        Af8B0QHaAd4B/wHQAdgB3wH/AdEB2gHeAf8B0gHbAd8B/wHSAdsB3gH/AdQB2gHfAf8B1AHaAd8B/wHT
+        AdkB3gH/AdIB2AHdAf8B1AHaAd8B/wHUAdoB3wH/AdQB2gHfAf8B0wHZAd4B/wHUAdoB3wH/AdUB2wHg
+        Af8B1gHcAeEB/wHWAdwB4QH/AdcB3AHfAf8B1wHcAd8B/wHWAdoB3wH/AdYB2gHfAf8B1AHbAd4B/wHU
+        AdsB3gH/AdQB2gHfAf8B1QHbAeAB/wHXAdsB4AH/AdYB2gHfAf8B2QHeAeEB/wHZAd4B4QH/AdgB3AHh
+        Af8B2AHcAeEB/wHYAd0B4AH/AdcB3AHfAf8B2AHcAeEB/wHVAdsB4AH/AdUB2wHgAf8B1gHcAeEB/wHW
+        AdwB4QH/AdgB3QHgAf8B2QHeAeEB/wHYAd0B4AH/AdkB3AHgAf8B2gHdAeEB/wHcAd4B3wH/Ad0B3wHg
+        Af8B2gHdAeEB/wHbAd4B4gH/AdwB4AHhAf8B3AHgAeEB/wHeAeAB4QH/Ad0B3wHgAf8B3QHfAeAB/wHf
+        AeEB4gH/Ad4B4AHhAf8B3wLhAf8B4ALiAf8B4ALiAf8D4gH/A+IB/wPiAf8D4QH/A+IB/wPjAf8D4gH/
+        A+IB/wPiAf8D4gH/A+IB/wPjAf8D4QH/A+IB/wPiAf8D4QH//wD/AP8A/wD/AC0AAcoB0wHXAf8ByQHS
+        AdYB/wHJAdIB1gH/AcgB0QHVAf8ByAHQAdcB/wHIAdAB1wH/AccB0AHUAf8ByAHRAdUB/wHIAdEB1QH/
+        AcgB0QHVAf8BywHRAdYB/wHMAdIB1wH/Ac4B1AHZAf8BzgHUAdkB/wHPAdUB2gH/Ac0B0wHYAf8BzwHV
+        AdoB/wHNAdYB2gH/Ac8B1wHeAf8B0AHYAd8B/wHOAdYB3QH/AcwB1AHbAf8ByQHRAdgB/wHHAdEB2AH/
+        AcoB0QHaAf8BywHSAdsB/wHLAdMB2gH/AcsB0wHaAf8BywHTAdoB/wHOAdYB3QH/AdAB1gHdAf8BzgHW
+        Ad0B/wHPAdkB4AH/AdAB2gHhAf8B0QHZAeAB/wHRAdkB4AH/AdAB2wHfAf8B0gHbAd8B/wHUAdwB4wH/
+        AdUB2wHiAf8B0wHcAeAB/wHTAdwB3wH/AdUB2wHgAf8B1AHaAd8B/wHVAdsB4AH/AdQB2gHfAf8B0wHZ
+        Ad4B/wHVAdsB4AH/AdUB2wHgAf8B1QHbAeAB/wHVAdsB4AH/AdQB2gHfAf8B1QHbAeAB/wHVAdsB4AH/
+        AdgB3QHgAf8B2AHdAeAB/wHXAdsB4AH/AdcB2wHgAf8B1QHcAd8B/wHWAd0B4AH/AdYB3AHhAf8B1gHc
+        AeEB/wHZAd0B4gH/AdcB3AHfAf8B2AHdAeAB/wHXAdwB3wH/AdgB3AHhAf8B2AHcAeEB/wHZAd0B4gH/
+        AdYB3AHhAf8B0QHXAdwB/wHNAdMB2AH/AcwB0QHUAf8BzwHUAdcB/wHVAdoB3QH/AdgB3QHgAf8B2gHf
+        AeIB/wHZAd4B4QH/AdkB3gHhAf8B2wHeAeIB/wHbAd8B4AH/AdsB3gHiAf8B2wHeAeIB/wHcAd8B4wH/
+        Ad0B4AHkAf8B2gHeAd8B/wHbAd0B3gH/AdwB3gHfAf8B3gHgAeEB/wHdAeEB4gH/Ad0B4QHiAf8B3QHh
+        AeIB/wHgAeIB4wH/AeAC4gH/A+IB/wPhAf8D4AH/A+EB/wPhAf8D4gH/A+EB/wPiAf8D4QH/A+EB/wPi
+        Af8D4QH/A+EB/wPgAf8D3wH/A90B//8A/wD/AP8A/wAtAAHKAdMB1wH/AckB0gHWAf8BxwHQAdQB/wHH
+        AdAB1AH/AckB0gHWAf8BxwHQAdQB/wHHAc8B1gH/AcYBzgHVAf8BxwHPAdYB/wHHAc8B1gH/AcYBzgHV
+        Af8ByAHQAdcB/wHHAdAB1AH/AckB0gHWAf8ByAHQAdcB/wHKAdIB2QH/AckB0gHWAf8ByQHSAdYB/wHK
+        AdIB2QH/AckB0wHaAf8ByAHRAdoB/wHHAdAB2QH/AcUBzgHXAf8BxQHQAdgB/wHFAc4B1wH/AcYBzwHY
+        Af8BxwHQAdkB/wHJAdIB2wH/AcgB0QHaAf8BygHTAdwB/wHMAdMB3AH/Ac0B1AHdAf8BzAHVAd4B/wHO
+        AdgB3wH/AdAB2AHfAf8B0gHaAeEB/wHTAdsB4gH/AdMB2wHiAf8B1AHbAeQB/wHUAdwB4wH/AdcB3QHi
+        Af8B1wHdAeIB/wHYAdwB4QH/AdYB3AHhAf8B1gHcAeEB/wHUAd0B4QH/AdQB2gHfAf8B1AHaAd8B/wHU
+        AdoB3wH/AdUB2wHgAf8B1gHaAd8B/wHXAdsB4AH/AdkB3gHhAf8B2AHdAeAB/wHVAdsB4AH/AdUB2wHg
+        Af8B1gHbAd4B/wHWAdsB3gH/AdgB3QHgAf8B2QHeAeEB/wHWAd0B4AH/AdQB2wHeAf8B1wHcAd8B/wHZ
+        Ad4B4QH/AdkB3gHhAf8B2AHdAeAB/wHZAd0B4gH/AdgB3AHhAf8B1QHbAeAB/wHLAdEB1gH/Aa4BtQG4
+        Af8BbgFzAXQB/wFNAk8B/wFNAU4BTAH/AXECcwH/AZ0BogGhAf8ByAHMAc0B/wHUAdkB2gH/AdkB3gHh
+        Af8B2wHgAeMB/wHcAd8B4wH/AdsB3gHiAf8B2wHeAeMB/wHWAdoB3wH/Ac0B0QHWAf8BtwG8Ab8B/wGX
+        AZsBnAH/AZoBnAGdAf8BvQHCAcEB/wHaAd8B3gH/AdwB4AHhAf8B3gHfAeMB/wHeAd8B4wH/Ad4B4AHh
+        Af8D4AH/A+EB/wHeAuAB/wHeAuAB/wPhAf8D4gH/A+EB/wPiAf8D4QH/A+MB/wPiAf8D4gH/A+EB/wPh
+        Af8D4QH/A+AB//8A/wD/AP8A/wAtAAHNAdYB2gH/Ac0B1gHaAf8BywHUAdgB/wHLAdQB2AH/AcoB0wHX
+        Af8BygHTAdcB/wHJAdEB2AH/AcgB0AHXAf8BxwHPAdYB/wHHAc8B1gH/AccBzwHWAf8BxwHPAdYB/wHH
+        AdAB1AH/AccB0AHUAf8BxgHOAdUB/wHIAdAB1wH/AcoB0gHZAf8ByQHRAdgB/wHGAdAB1wH/AcgB0gHZ
+        Af8BxwHQAdkB/wHFAc4B1wH/AcQBzwHXAf8BwwHOAdYB/wHFAdAB2AH/AcUB0AHYAf8BxwHQAdkB/wHH
+        AdAB2QH/AcgB0QHaAf8ByAHRAdoB/wHMAdMB3AH/AcwB0wHcAf8BygHTAdwB/wHKAdMB3AH/Ac4B1gHd
+        Af8BzwHXAd4B/wHPAdcB3gH/AdAB2AHfAf8B0AHYAd8B/wHSAdoB4QH/AdUB2wHgAf8B1AHaAd8B/wHX
+        AdsB4AH/AdQB2gHfAf8B1AHaAd8B/wHSAdsB3wH/AdUB2wHgAf8B1gHcAeEB/wHVAdsB4AH/AdUB2wHg
+        Af8B2AHcAeEB/wHYAdwB4QH/AdkB3gHhAf8B2QHeAeEB/wHXAd0B4gH/AdgB3gHjAf8B2gHfAeIB/wHZ
+        Ad4B4QH/AdkB3gHhAf8B2QHeAeEB/wHWAd0B4AH/AdgB3wHiAf8B2AHdAeAB/wHYAd0B4AH/AdgB3QHe
+        Af8B2AHdAeAB/wHYAdwB4QH/AdcB2wHgAf8BzAHSAdkB/wGkAaoBrwH/AUABRAFFAf8BOQE6ATgB/wFA
+        AT0BOQH/AT8BPAE3Af8BOwE4ATMB/wE4ATcBMwH/AUYBRwFFAf8BdAJ2Af8BoAGlAaQB/wHMAdAB0QH/
+        AdsB3wHgAf8B3AHfAeMB/wHWAdkB4QH/AcQByAHNAf8BdwGAAYEB/wE5AjsB/wE1ATMBMgH/ATUBNAEw
+        Af8BQAFBAT0B/wGWAZcBkwH/A+AB/wHgAeIB4wH/Ad8B4QHiAf8B3wHhAeIB/wPhAf8D4gH/Ad8C4QH/
+        AeAC4gH/A+IB/wPiAf8D4gH/A+EB/wPhAf8D4QH/A+AB/wPgAf8D4AH/A98B/wPgAf8D4AH//wD/AP8A
+        /wD/AC0AAc8B1QHaAf8BzwHVAdoB/wHOAdQB2QH/Ac4B1AHZAf8BywHUAdgB/wHKAdMB1wH/AckB0gHW
+        Af8ByQHSAdYB/wHHAdIB1gH/AcgB0QHVAf8ByAHRAdUB/wHJAc8B1AH/AccBzwHWAf8BxgHOAdUB/wHG
+        Ac4B1QH/AcYBzgHVAf8BxwHPAdYB/wHFAcwB1QH/AcMBzAHVAf8BwwHMAdUB/wHEAc0B1gH/AcUBzgHX
+        Af8BxgHPAdgB/wHGAc8B2AH/AccB0AHZAf8BxwHQAdkB/wHGAc8B2QH/AccB0AHaAf8BxwHQAdoB/wHH
+        AdAB2gH/AcgB0QHbAf8BygHTAd0B/wHLAdQB3QH/AcoB0wHcAf8BzQHUAd0B/wHPAdYB3wH/Ac8B1wHe
+        Af8B0gHaAeEB/wHUAdoB4QH/AdYB3AHhAf8B1AHaAd8B/wHWAdwB4QH/AdYB3AHhAf8B1wHdAeIB/wHW
+        Ad0B4AH/AdcB3gHhAf8B1wHdAeIB/wHXAd0B4gH/AdcB3QHiAf8B1wHdAeIB/wHWAd0B4AH/AdkB4AHj
+        Af8B1gHcAeEB/wHXAd0B4gH/AdgB3AHhAf8B2QHdAeIB/wHaAd8B4gH/AdoB3wHiAf8B2AHeAeMB/wHY
+        Ad4B4wH/AdUB2wHgAf8B0gHYAd0B/wHWAdsB3gH/AdgB3QHgAf8B2QHeAeEB/wHZAd4B4QH/AdgB3AHh
+        Af8B1wHbAeAB/wHFAcsB0gH/AU8BUgFWAf8BPQE6ATYB/wFFAT8BOAH/AUcBQAE3Af8BSAFBATgB/wFK
+        AUMBOgH/AU0BRgE9Af8BRAE/ATYB/wE7ATgBMAH/ATwBOQE0Af8BUgFRAU0B/wGrAa4BrAH/AdoB3gHf
+        Af8BygHQAdcB/wF0AXkBgQH/ATYBNQExAf8BTQFIAT8B/wFUAU4BQwH/AWoBYQFXAf8BXgFYAU0B/wFG
+        AUEBOAH/AcABvQG5Af8B4gHjAeEB/wHgAuIB/wHhAuMB/wPjAf8D5AH/AeQB4wHlAf8B4wHiAeQB/wPk
+        Af8D5AH/A+MB/wPjAf8D4wH/A+MB/wHgAeEB3wH/AeMB5AHiAf8D4QH/A+EB/wPiAf8D4AH//wD/AP8A
+        /wD/AC0AAc8B1QHaAf8BzwHVAdoB/wHPAdUB2gH/Ac8B1QHaAf8BzgHUAdkB/wHLAdQB2AH/AcsB1AHY
+        Af8BzQHWAdoB/wHNAdYB2gH/AcwB1QHZAf8BzgHUAdkB/wHPAdUB2gH/AcoB0gHZAf8ByQHRAdgB/wHJ
+        AdEB2AH/AckB0QHYAf8ByAHPAdgB/wHFAcwB1QH/AcIBywHUAf8BwgHLAdQB/wHDAcwB1QH/AcYBzwHY
+        Af8ByAHRAdoB/wHJAdIB2wH/AcoB0wHcAf8ByQHSAdsB/wHIAdEB2wH/AccB0AHaAf8ByAHRAdsB/wHI
+        AdEB2wH/AcgB0QHbAf8ByAHRAdsB/wHKAdMB3AH/AcwB1QHeAf8B0AHXAeAB/wHRAdgB4QH/AdIB2gHh
+        Af8B0QHZAeAB/wHUAdoB4QH/AdYB3AHhAf8B1gHcAeEB/wHXAd0B4gH/AdgB3gHjAf8B2AHeAeMB/wHY
+        Ad8B4gH/AdoB4QHkAf8B2AHeAeMB/wHYAd4B4wH/AdYB3AHhAf8B1wHdAeIB/wHYAd8B4gH/AdkB4AHj
+        Af8B1wHdAeIB/wHXAd0B4gH/AdoB3gHjAf8B2QHdAeIB/wHaAd8B4gH/AdsB4AHjAf8B1wHdAeIB/wHP
+        AdUB2gH/AcMByAHLAf8BjQGSAZMB/wFtAXEBcgH/AW0BcQFyAf8BlgGaAZsB/wHSAdYB1wH/AdkB3AHg
+        Af8B1gHaAd8B/wGwAbQBuQH/AS4BMAExAf8BRAE+ATkB/wFHAT4BNAH/AUcBPgE0Af8BSgFBATcB/wFN
+        AUQBNwH/AU4BRQE4Af8BTgFGATkB/wFOAUgBPQH/AU8BSAE/Af8BRQFCAToB/wJCATwB/wG4AroB/wGp
+        Aa4BsQH/AS4BMAExAf8BTgFJAUAB/wFfAVYBSAH/AV0BUwFCAf8BdgFsAVsB/wFmAVkBSQH/AVgBTwFC
+        Af8BdwF0AWwB/wHiAeEB3QH/AeIB4wHhAf8B3wLhAf8D4QH/A+EB/wHhAeAB4gH/AeAB3wHhAf8D4QH/
+        A+MB/wPhAf8D4QH/A+IB/wPiAf8B4gHjAeEB/wHiAeMB4QH/A+EB/wPiAf8D4QH/A+IB//8A/wD/AP8A
+        /wAtAAHMAdAB1QH/AdQB2AHdAf8B1AHYAd0B/wHRAdcB3AH/AdIB2QHcAf8B0gHZAdwB/wHRAdcB3AH/
+        AdAB1gHbAf8BzwHVAdoB/wHOAdQB2QH/Ac8B1QHcAf8B0AHWAd0B/wHOAdQB2QH/Ac0B0wHYAf8BzAHS
+        AdcB/wHLAdEB1gH/AcgB0AHXAf8BxwHPAdYB/wHEAc4B1QH/AcMBzQHUAf8BxAHOAdUB/wHFAc8B1gH/
+        AcYBzwHYAf8BxwHQAdkB/wHIAdEB2gH/AcgB0QHaAf8ByQHSAdsB/wHKAdMB3AH/AcoB0wHcAf8BygHT
+        AdwB/wHKAdMB3AH/AcoB0wHcAf8BygHTAdwB/wHKAdMB3AH/Ac0B1AHdAf8BzQHUAd0B/wHOAdUB3gH/
+        AdAB2AHfAf8BzwHXAd4B/wHRAdkB4AH/AdMB3AHgAf8B1QHeAeIB/wHZAd8B5AH/AdoB3gHjAf8B2wHf
+        AeQB/wHbAd8B5AH/AdsB3wHkAf8B2QHdAeIB/wHaAd8B4gH/AdkB3gHhAf8B2gHeAeMB/wHbAd8B5AH/
+        AdwB4QHkAf8B2wHgAeMB/wHcAeEB5AH/AdsB4AHjAf8B2wHgAeMB/wHaAd4B4wH/AdEB1wHeAf8BugHA
+        AcUB/wFSAVYBVwH/AT0BPgE8Af8BQAE+AT0B/wE7AToBNgH/ATsBPAE4Af8BagFrAWkB/wHPAdEB0gH/
+        AdsB3AHgAf8BrwGwAbQB/wEyAjAB/wFDAT0BNgH/AUgBPwE1Af8BSAE/ATUB/wFJAUEBNAH/AU0BQwE5
+        Af8BTQFEATcB/wFPAUYBOQH/AVEBSAE7Af8BUgFJATwB/wFMAUYBOwH/AUQBQQE5Af8BagFpAWUB/wNf
+        Af8BMQEuASoB/wFYAU8BQgH/AV8BUwFBAf8BYAFUAUIB/wFXAUsBOQH/AWMBVQFDAf8BWAFNAT8B/wFt
+        AWgBXwH/AeIB4QHdAf8B4gHjAeEB/wHfAuEB/wPjAf8D4gH/A+EB/wPiAf8D4wH/A+MB/wPiAf8D4gH/
+        A+EB/wPiAf8D4gH/A+IB/wPhAf8D4AH/A+AB/wPfAf//AP8A/wD/AP8ALQABkgGVAZkB/wHUAdcB2wH/
+        AdEB1QHaAf8B0gHWAdsB/wHRAdgB2wH/AdEB2AHbAf8BzwHVAdoB/wHQAdYB2wH/Ac8B1QHaAf8BzwHV
+        AdoB/wHPAdUB3AH/Ac8B1QHcAf8BzgHUAdkB/wHOAdQB2QH/Ac8B1QHaAf8BzgHUAdkB/wHJAdEB2AH/
+        AcYBzgHVAf8BwgHMAdMB/wHBAcsB0gH/AcABygHRAf8BwgHMAdMB/wHGAc8B2AH/AckB0gHbAf8BygHT
+        AdwB/wHLAdQB3QH/AcsB1AHdAf8ByQHSAdsB/wHIAdEB2gH/AckB0gHbAf8ByQHSAdsB/wHKAdMB3AH/
+        AcoB0wHcAf8ByQHSAdsB/wHMAdMB3AH/Ac4B1QHeAf8BzQHUAd0B/wHPAdcB3gH/AdEB2QHgAf8B0QHZ
+        AeAB/wHSAdsB3wH/AdMB3AHgAf8B1QHbAeAB/wHYAdwB4QH/AdkB3QHiAf8B2QHdAeIB/wHaAd4B4wH/
+        AdsB3wHkAf8B2wHgAeMB/wHbAeAB4wH/AdsB3wHkAf8B2QHdAeIB/wHZAd4B4QH/AdsB4AHjAf8B3AHh
+        AeQB/wHbAeAB4wH/AdoB3wHiAf8B1wHdAeIB/wHLAdEB2AH/AWUBaQFuAf8BLQEwAS4B/wIpASMB/wEz
+        AS8BKgH/ATsBNwEyAf8BOwE4ATMB/wI6ATQB/wFjAWEBYAH/A8kB/wHPAc4B0AH/ATkBNwE2Af8BRgFA
+        ATsB/wFJAUABNwH/AUkBQAE2Af8BSwFDATYB/wFOAUUBOAH/AU4BRQE4Af8BTwFGATgB/wFRAUgBOgH/
+        AVUBSgE8Af8BTgFGATkB/wFEAUIBOAH/ATwBOQE0Af8BHQEaARUB/wFJAUQBOwH/AVkBTwE+Af8BXwFR
+        AT4B/wFTAUUBMwH/AVUBSQE3Af8BZgFYAUUB/wFZAVEBQAH/AYUBgQF6Af8B5QHkAeAB/wHjAeQB4gH/
+        AeEC4wH/A+QB/wPjAf8D4wH/A+IB/wPiAf8D4gH/A+IB/wPiAf8D4gH/A+IB/wPiAf8D4wH/A+EB/wPg
+        Af8D4AH/A+EB//8A/wD/AP8A/wAtAAFoAWUBZwH/AdwB2wHdAf8B1gHZAd0B/wHUAdkB3AH/AdUB2gHd
+        Af8B1QHaAd0B/wHUAdgB3QH/AdMB1wHcAf8B0QHYAdsB/wHSAdkB3AH/AdQB2AHdAf8B0wHXAdwB/wHR
+        AdcB3AH/AdIB2AHdAf8B0QHXAdwB/wHRAdcB3AH/AcwB1AHbAf8BygHRAdoB/wHHAc4B1wH/AcYBzQHW
+        Af8BwwHNAdQB/wHEAc4B1QH/AccB0AHZAf8BygHTAdwB/wHNAdYB3wH/Ac8B2AHhAf8B0AHXAeAB/wHQ
+        AdcB4AH/Ac8B1gHfAf8BzgHVAd4B/wHOAdUB3gH/Ac8B1gHfAf8BzwHWAd8B/wHQAdcB4AH/Ac8B1gHf
+        Af8BzgHVAd4B/wHMAdYB3QH/AdAB2AHfAf8BzwHXAd4B/wHOAdQB2QH/Ac8B1QHaAf8B0AHWAdsB/wHS
+        AdgB3QH/AdUB2wHgAf8B2QHdAeIB/wHbAd8B5AH/AdwB4QHkAf8B3AHhAeQB/wHaAd8B4gH/AdsB4AHj
+        Af8B2QHgAeMB/wHaAeEB5AH/Ad0B4gHlAf8B2wHgAeMB/wHcAeEB5AH/AdwB4QHkAf8B2AHfAeIB/wHW
+        Ad0B4AH/Ab8BxQHKAf8BKgEvATAB/wEaARsBFwH/AW0BawFjAf8BQwFAATgB/wE4ATIBKwH/ATkBMwEs
+        Af8BPAE5ATEB/wE7ATcBMgH/AVcBVgFSAf8BwwLFAf8DggH/AUEBPAE5Af8BRwE/ATgB/wFLAUIBOQH/
+        AUsBQwE2Af8BTgFFATgB/wFPAUYBOAH/AVIBRwE5Af8BUwFIAToB/wFRAUgBOwH/AUsBQgE4Af8BKgEn
+        AR8B/wEgAR0BGAH/AS0BKAEfAf8BVwFOAUEB/wFcAU8BPwH/AVgBSgE4Af8BTAE/AS8B/wFXAU0BPAH/
+        AV8BUwFBAf8BWQFSAUMB/wHKAcYBwQH/AeMB5AHiAf8D4gH/A+MB/wPjAf8D5AH/AeUC4wH/AeYC5AH/
+        A+MB/wPkAf8D5QH/A+QB/wPjAf8D4gH/A+QB/wPjAf8B5gLkAf8B5ALiAf8B5QHjAeIB/wHjAeEB4AH/
+        /wD/AP8A/wD/AC0AAVoBVQFWAf8BvgK8Af8B1QHZAdoB/wHVAdoB3QH/AdUB2gHdAf8B1AHZAdwB/wHT
+        AdcB3AH/AdIB1gHbAf8B0gHXAdoB/wHQAdcB2gH/AdIB1gHbAf8B0gHWAdsB/wHPAdUB2gH/Ac0B0wHY
+        Af8BzAHSAdcB/wHJAdEB2AH/AccBzwHWAf8BwwHKAdMB/wHBAcgB0QH/AcEByAHRAf8BvwHJAdAB/wG+
+        AcgBzwH/AbwBxQHOAf8BwAHJAdIB/wHDAcwB1QH/AccB0AHZAf8BywHSAdsB/wHLAdIB2wH/AcwB0wHc
+        Af8BzAHTAdwB/wHMAdMB3AH/AcsB0gHbAf8BygHRAdoB/wHLAdIB2wH/AcsB0gHbAf8BzAHTAdwB/wHO
+        AdYB3QH/AcsB1AHYAf8BxwHNAdIB/wHEAcoBzwH/AccBzQHSAf8ByAHOAdMB/wHMAdIB1wH/Ac8B1QHa
+        Af8B1QHZAd4B/wHYAdwB4QH/AdkB3gHhAf8B2gHfAeIB/wHbAeAB4wH/AdwB4QHkAf8B2wHiAeUB/wHa
+        AeEB5AH/AdwB4QHkAf8B3AHhAeQB/wHdAeIB5QH/AdoB3wHiAf8B2QHgAeMB/wHXAd4B4QH/AbYBuwG+
+        Af8BKQEuAS0B/wI6ATQB/wFOAUwBQgH/ATYBMAEpAf8BNAEuAScB/wE6ATIBKwH/ATkBMwEsAf8BOwE1
+        AS4B/wE5ATYBMQH/AVMBUQFQAf8BwgHDAcEB/wGeAZoBmQH/AWABWwFYAf8BRQE/AToB/wFGAUABOQH/
+        AU0BRgE9Af8BUAFHAT0B/wFSAUgBPgH/AVEBSAE7Af8BUQFIAT4B/wE0AS0BJAH/ASkBJgEiAf8BGQEV
+        ARAB/wFHAT4BNAH/AVUBSgE8Af8BWQFMATwB/wFMAT8BLwH/AUsBQAEyAf8BVAFJATsB/wFRAUgBOgH/
+        AoEBcQH/AegB5QHhAf8D4wH/A+MB/wPiAf8D4gH/A+MB/wHmAuQB/wHmAuQB/wPiAf8D4gH/A+EB/wPh
+        Af8D4gH/A+IB/wPjAf8D4wH/AeQC4gH/AeQC4gH/AeQB4gHhAf8B4wHhAeAB//8A/wD/AP8A/wAtAAE3
+        ATUBNAH/A1gB/wHUAdYB1wH/AdYB2wHeAf8B1gHbAd4B/wHVAdoB3QH/AdQB2QHcAf8B1QHaAd0B/wHV
+        AdkB3gH/AdMB1wHcAf8BzwHVAdoB/wHRAdcB3AH/AdEB1QHaAf8BzgHUAdkB/wHLAdEB2AH/AckB0QHY
+        Af8BxwHPAdYB/wHCAcwB0wH/AcEBygHTAf8BwgHLAdQB/wG/AcgB0QH/AcAByQHSAf8BvgHHAdAB/wG+
+        AccB0AH/AcABxwHQAf8BwwHKAdMB/wHHAc0B2AH/AcoB0AHbAf8BzQHUAd0B/wHNAdQB3QH/AcwB0wHc
+        Af8BywHSAdsB/wHMAdIB3QH/Ac0B0wHeAf8BzAHSAd0B/wHMAdMB3AH/AckB0gHWAf8BxAHLAc4B/wG/
+        AcYByQH/Ab4BxAHJAf8BuwHEAcgB/wG/AccBzgH/AcYBzAHRAf8BygHQAdUB/wHNAdMB2AH/AdAB1gHb
+        Af8B1QHZAd4B/wHXAdsB4AH/AdYB3AHhAf8B1wHdAeIB/wHbAeAB4wH/AdwB4QHkAf8B2gHhAeQB/wHZ
+        AeAB4wH/AdsB4AHjAf8B3AHhAeQB/wHaAd4B4wH/AdkB3QHiAf8BzAHPAdMB/wM0Af8BPgE7ATMB/wFC
+        ATwBMQH/ATwBNQEsAf8BNAEtASQB/wE0AS8BJgH/ATgBMwEqAf8BOAEzASoB/wE7ATUBLgH/AT0BOgEy
+        Af8BaAFlAWAB/wHWAdcB1QH/A9wB/wHFAcQBxgH/AZQCkgH/AWgBZAFjAf8BTQFGAUMB/wFNAUQBQAH/
+        AU4BRgE/Af8BSwFFAUAB/wFZAVQBUQH/AXgBdAFzAf8BKwEmASMB/wFNAUQBOgH/AVEBRgE4Af8BTwFE
+        ATYB/wFHATwBLgH/AVIBRwE5Af8BUwFKAT0B/wFRAUsBQAH/AcwByQHBAf8B5QHjAeIB/wHhAuMB/wHg
+        AeIB4wH/AeAB4gHjAf8D4wH/A+IB/wHhAeIB4AH/AeIB4wHhAf8D4wH/A+MB/wHhAuMB/wHhAuMB/wPi
+        Af8D4gH/A+IB/wPiAf8D4gH/A+EB/wHhAeIB4AH/Ad8B4AHeAf//AP8A/wD/AP8ALQADkgH/ATICNAH/
+        AWEBYwFkAf8BxgHJAc0B/wHWAdsB3gH/AdcB3AHfAf8B1wHaAd4B/wHWAdkB3QH/AdUB2QHeAf8B1QHZ
+        Ad4B/wHRAdcB3AH/AdAB1gHbAf8B0gHWAdsB/wHOAdQB2QH/AckB0QHYAf8BxgHOAdUB/wHFAc8B1gH/
+        AcUBzwHWAf8BwgHLAdQB/wHAAckB0gH/Ab8ByAHRAf8BvgHHAdAB/wG9AcYBzwH/Ab4BxwHQAf8BwAHH
+        AdAB/wHAAccB0AH/AcABxgHRAf8BxAHLAdQB/wHIAc8B2AH/AcwB0wHcAf8BzQHUAd0B/wHNAdQB3QH/
+        AcwB0wHcAf8BzAHTAdwB/wHMAdMB3AH/AcsB0QHYAf8BwgHJAcwB/wG5AcABwwH/AbQBuwG+Af8BsAG3
+        AboB/wGwAbkBvQH/AbQBvQHBAf8BvAHCAccB/wHDAckBzgH/AcgBzgHTAf8BzQHTAdgB/wHSAdYB2wH/
+        AdUB2QHeAf8B1QHbAeAB/wHXAd0B4gH/AdsB4AHjAf8B3gHjAeYB/wHbAeIB5QH/AdsB4gHlAf8B3QHi
+        AeUB/wHcAeEB5AH/AdsB3wHkAf8B2gHeAeMB/wHaAd0B4QH/A4EB/wE/ATsBNgH/AUABOQEwAf8BPgE3
+        AS4B/wE8ATUBLAH/ATYBLwEmAf8BNgEvASYB/wE6ATMBKgH/ATwBNQEsAf8BPAE3AS4B/wE8ATkBMQH/
+        Ab0CvwH/AdsB3gHiAf8B2gHdAeEB/wHcAd0B4QH/Ad4B3QHfAf8B0gHNAc4B/wGqAaUBpAH/AZ4BmQGW
+        Af8BtAGwAa8B/wHbAtkB/wGjAaABogH/ATYBMgExAf8BUAFHAT4B/wFPAUYBOQH/AUwBQAE0Af8BRQE8
+        AS8B/wFSAUYBOgH/AVABRwE9Af8BgAF4AXAB/wHkAeMB3wH/AeIB4wHhAf8B3gLgAf8B4AHiAeMB/wHg
+        AeIB4wH/A+EB/wPhAf8B5AHlAeMB/wHjAeQB4gH/A+IB/wPhAf8B3wLhAf8B3wLhAf8D4QH/A+EB/wPh
+        Af8D3wH/A98B/wPgAf8B4gHjAeEB/wHfAeAB3gH//wD/AP8A/wD/AC0AAdMB2AHZAf8BigGOAY8B/wEn
+        ASsBLAH/ATYBOAE5Af8BhQGJAYoB/wHAAcQBxQH/AdQB1wHbAf8B1QHaAd0B/wHXAdwB3wH/AdcB3AHf
+        Af8B1QHaAd0B/wHTAdgB2wH/Ac8B1QHaAf8BzQHTAdgB/wHJAdEB2AH/AcYBzgHVAf8BwQHKAdMB/wG+
+        AccB0AH/AcEBygHTAf8BwAHJAdIB/wG/AcgB0QH/Ab8ByAHRAf8BvgHHAdAB/wG/AcgB0QH/Ab4BxwHQ
+        Af8BvgHHAdAB/wG+AccB0AH/Ab0BxgHPAf8BwAHHAdAB/wHDAcsB0gH/AcMBywHSAf8BwwHLAdIB/wHG
+        Ac4B1QH/AccBzwHWAf8BxgHMAdEB/wHBAcYByQH/AbUBugG7Af8BqQKxAf8BowGqAa0B/wGiAasBrgH/
+        AasBsgG1Af8BsQG3AbwB/wG2AbwBwQH/AbkBvwHEAf8BuwHDAcoB/wHCAcoB0QH/AckBzwHWAf8BzgHU
+        AdsB/wHRAdcB3AH/AdIB2AHdAf8B1AHbAd4B/wHXAd4B4QH/AdoB3gHjAf8B2wHfAeQB/wHeAeIB5wH/
+        Ad4B4gHnAf8B3QHiAeUB/wHbAeAB4wH/AdsB3wHkAf8B1wHaAd4B/wOBAf8BOwE4ATQB/wE/ATkBNAH/
+        ATwBNQEsAf8BRAE9ATQB/wE9ATYBLQH/ATYBLwEmAf8BPQE2AS0B/wE9ATYBLQH/ATsBOAEwAf8BpAKm
+        Af8B0wHYAdsB/wHGAckBzQH/AawBrwGzAf8BsgG0AbUB/wPTAf8D4QH/A98B/wHeAd0B3wH/AdsB3AHg
+        Af8ByQHKAc4B/wE5AjcB/wFMAUQBPQH/AV8BVwFKAf8BcwFqAV0B/wFLAUMBNgH/AU4BRQE4Af8BTwFI
+        AT8B/wHJAcYBwgH/A+EB/wPiAf8D4gH/A+IB/wPiAf8D5AH/A+IB/wPiAf8D4gH/A+EB/wPiAf8D4gH/
+        A+IB/wPiAf8D4QH/A+EB/wPhAf8D4AH/A98B/wPeAf8D3QH//wD/AP8A/wD/AC0AAdEB2AHbAf8B0AHX
+        AdoB/wGyAbUBuQH/AVoBXgFfAf8BJQEpASoB/wElASkBKgH/AUMBSAFLAf8BaAFtAXAB/wGAAoEB/wGB
+        AYUBiAH/AYkBjgGRAf8BogGnAaoB/wG4AbwBwQH/AcMByQHOAf8BygHQAdUB/wHKAdAB1wH/AcYBzgHV
+        Af8BwwHLAdIB/wHDAcsB0gH/AcIBygHRAf8BvwHHAc4B/wG/AccBzgH/AbsBxAHNAf8BvgHHAdAB/wG9
+        AcYBzwH/Ab0BxgHPAf8BuwHEAc0B/wG6AcMBzAH/AboBwgHJAf8BrQG2AboB/wGoAbEBtQH/AakBsgG1
+        Af8BrAGzAbYB/wGrArMB/wGpAa4BrwH/AaMBqAGpAf8BmwGhAaAB/wGUAZoBmQH/AZECmQH/AZcBngGh
+        Af8BnwGmAakB/wGlAawBrwH/AasBsQG2Af8BsQG3AbwB/wGzAbsBwgH/AbkBwQHIAf8BwAHGAc0B/wHD
+        AckB0AH/AcoB0AHVAf8BzQHTAdgB/wHPAdUB2gH/AdEB1wHcAf8B1wHbAeAB/wHZAd0B4gH/AdkB3QHi
+        Af8B2gHeAeMB/wHdAeIB5QH/AdwB4QHkAf8B2gHeAeMB/wHXAdsB4AH/AdkB2gHeAf8BlAGTAZUB/wE7
+        ATcBNgH/AT4BOAEzAf8BPgE3AS4B/wFGAT0BNAH/AUMBPAEzAf8BPAE1ASwB/wFAATkBMAH/AToBNwEv
+        Af8DoQH/AXcBeQF6Af8BQAE/AUEB/wMyAf8BMgEzATEB/wFIAUkBRwH/A6gB/wHeAeAB4QH/AdoB3QHh
+        Af8B0wHWAdsB/wHLAcwB0AH/AWACXgH/ATkBMwEsAf8BNQEvASQB/wFAAToBLwH/AUkBQwE4Af8BTQFI
+        AT8B/wGoAaQBnwH/A+IB/wHgAeIB4wH/A+IB/wPhAf8D4gH/A+EB/wPgAf8D4gH/A+EB/wPiAf8D4QH/
+        A+EB/wPhAf8D4AH/A+AB/wPhAf8D4QH/A+AB/wPhAf8D4QH/A98B/wPgAf//AP8A/wD/AP8ALQABzQHW
+        AdoB/wHPAdUB2gH/AdEB1wHcAf8B0gHXAdoB/wHGAcsBzgH/AZoBngGjAf8BbwFzAXgB/wFFAUkBTgH/
+        ASoBLgEzAf8BJgEqAS8B/wElASgBLAH/AR8BJAEnAf8BIgEmASsB/wEmASoBLwH/ATABNAE5Af8BPQFC
+        AUUB/wFTAVYBWgH/AW8BcgF2Af8BhgGJAY0B/wGZAZ4BoQH/Ab8BxAHHAf8BxgHMAdEB/wHBAckB0AH/
+        Ab0BxgHPAf8BvAHFAc4B/wG7AcYBzgH/AbwBxQHOAf8BuAHBAcoB/wGuAbYBvQH/AZcBoAGkAf8BiwKT
+        Af8BiQGRAZAB/wGHAY4BiwH/AYUBigGIAf8BgQGGAYQB/wOBAf8BeAGBAYAB/wF5AoEB/wGBAYYBhQH/
+        AYkCkQH/AZABlwGaAf8BlwGeAaEB/wGfAaUBqgH/AaUBqwGwAf8BpgGvAbMB/wGtAbYBugH/AbIBugHB
+        Af8BtwG/AcYB/wG7AcMBygH/AcIBygHRAf8BxAHMAdMB/wHKAdIB2QH/Ac8B1QHcAf8B0QHXAd4B/wHU
+        AdoB3wH/AdUB2wHgAf8B2QHdAeIB/wHaAd4B4wH/AdwB3wHnAf8B2gHdAeUB/wHZAd0B4gH/AdkB3AHh
+        Af8BoQGgAaIB/wE6ATYBNQH/AT0BNwEwAf8BQAE5ATAB/wFJAUABNwH/AXEBagFhAf8BZQFfAVgB/wEp
+        ASUBIAH/ASYBIwEfAf8BNgEzAS8B/wFFAUEBPAH/AUgBQgE9Af8BRgFAATkB/wFAATwBNwH/AUYBRAFD
+        Af8BvQK/Af8BygHNAdEB/wGFAYYBigH/AUQBQwFFAf8BJgEiASEB/wEiARwBFwH/ASsBJQEeAf8BSgFH
+        AT8B/wGIAYUBgQH/AckByAHEAf8D4AH/AeAB3wHhAf8B4AHfAeEB/wHeAeAB4QH/Ad8C4QH/AeAC4gH/
+        AeAB4wHhAf8B4ALiAf8B3wLhAf8B4ALiAf8B4ALiAf8D4gH/A+EB/wPhAf8D3wH/A+EB/wPgAf8D3wH/
+        A98B/wPeAf8D3AH/Ad4B3QHfAf8B3gHdAd8B//8A/wD/AP8A/wAtAAHPAdgB3AH/Ac8B2AHcAf8B0gHY
+        Ad0B/wHRAdcB3AH/Ac8B1QHaAf8B0QHXAdwB/wHRAdcB3gH/AdIB2AHfAf8BzwHTAdgB/wHOAdIB1wH/
+        AcUByQHOAf8BtwG7AcAB/wGnAasBsAH/AZMBmQGeAf8CgQGFAf8BZAFoAW0B/wFVAVgBXAH/AUMBRgFK
+        Af8BLQEwATQB/wEmASkBLQH/ATIBNwE6Af8BWgFfAWIB/wGOAZQBmwH/Ab0BxQHMAf8BwAHKAdEB/wG9
+        AccBzgH/AbsBwwHKAf8BsQG5AcAB/wGfAaUBqgH/AYgBjwGSAf8BbgJ2Af8BXgFkAWMB/wFjAWcBYgH/
+        AWIBZAFeAf8BWQFaAVYB/wFUAVgBUwH/AVwBYAFbAf8BXwFlAWAB/wFrAXABbgH/AXcCgQH/AYEBhgGH
+        Af8BigGRAZQB/wGRAZgBmwH/AZoBoAGlAf8BnwGoAawB/wGlAa4BsgH/AasBtAG4Af8BsAG4Ab8B/wG1
+        Ab0BxAH/AbkBwQHIAf8BvgHGAc0B/wHCAcoB0QH/AcgBzgHVAf8BzQHTAdoB/wHRAdcB3AH/AdMB2QHe
+        Af8B1wHbAeAB/wHZAd0B4gH/AdoB3QHlAf8B1wHdAeQB/wHWAdwB4wH/AdcB2wHgAf8B2AHbAeAB/wGu
+        AbABsQH/AVoBVgFVAf8BQAE8ATcB/wFCATwBNQH/AT8BOAEvAf8BKQEjARwB/wEtASkBJAH/AT8BOwE2
+        Af8BRAE+ATcB/wFCATsBMgH/AUYBPQE0Af8BRQE+ATUB/wFNAUcBQAH/AVQBUQFNAf8BbwFwAW4B/wGB
+        AYABgQH/AzEB/wFDAT4BOwH/AVUBTwFKAf8BUwFNAUYB/wFDAT4BNQH/AVcBVAFMAf8C0wHNAf8B3wLh
+        Af8B3gHgAeEB/wHfAeEB4gH/AeAB3wHhAf8B4AHiAeMB/wHeAeAB4QH/Ad8C4QH/Ad4C4AH/AdwB4QHg
+        Af8B3QHiAeEB/wHeAuAB/wHdAt8B/wPeAf8D3gH/A98B/wPfAf8D3wH/A98B/wPgAf8D3wH/A94B/wPe
+        Af8B3AHbAd0B/wHdAdwB3gH//wD/AP8A/wD/AC0AAc8B2AHcAf8BzwHYAdwB/wHNAdUB3AH/Ac0B1QHc
+        Af8BzAHUAdsB/wHMAdQB2wH/Ac0B1QHcAf8BzgHWAd0B/wHSAdgB3wH/AdEB1wHeAf8B0gHYAd8B/wHM
+        AdQB2wH/AcsB0wHaAf8BywHSAdsB/wHLAdAB2QH/AcsB0AHZAf8BygHRAdoB/wHKAdEB2gH/AckBzgHX
+        Af8BuQG/AcYB/wGHAYoBkgH/AU4BUgFXAf8BKgEuATMB/wEwATQBOQH/AXUBgAGBAf8BtgG8AcEB/wGD
+        AYgBiwH/AU8BVAFXAf8BYwFnAWgB/wKBAYIB/wF5AoEB/wFqAW8BbgH/AYUBhgGCAf8CgQF5Af8CXAFW
+        Af8BXAFeAVgB/wFyAXQBbgH/AWgBagFkAf8BXQFfAVkB/wFdAWEBXAH/AWsBcAFuAf8BdwKBAf8BgQKH
+        Af8BigGRAZQB/wGSAZkBnAH/AZsBogGlAf8BowGqAa0B/wGrAbEBtgH/Aa4BtAG5Af8BsQG6Ab4B/wG2
+        Ab4BxQH/AbkBwwHKAf8BvgHGAc0B/wHDAcsB0gH/AcoB0AHXAf8BzQHTAdoB/wHSAdYB2wH/AdQB2AHd
+        Af8B1AHaAd8B/wHWAdwB4QH/AdcB3QHiAf8B2QHdAeIB/wHZAd0B4gH/AdgB3AHhAf8B1AHXAdwB/wGv
+        AbEBsgH/ATsBOAE0Af8BLAEoASMB/wE+ATgBMQH/ATkBMwEsAf8BOwE1AS4B/wFAATkBMAH/AT8BOAEv
+        Af8BPQE2AS0B/wFZAVABRgH/AXcBcgFpAf8BIgEfARoB/wFPAU4BSgH/ASMBIAEcAf8BQAE8ATcB/wFM
+        AUMBOgH/AV4BVQFLAf8BWgFSAUUB/wFLAUUBOAH/AUoBRgE7Af8BoAGeAZYB/wHfAeAB3gH/Ad4B4AHh
+        Af8B3QHfAeAB/wHeAeAB4QH/Ad4B4AHhAf8B3gHgAeEB/wHdAeEB4gH/AdwB4AHhAf8B3gHgAeEB/wHe
+        AeAB4QH/Ad0B3wHgAf8B3QHfAeAB/wHeAeAB4QH/Ad0B3wHgAf8B3ALeAf8B3QLfAf8D4AH/A94B/wHf
+        Ad4B4AH/Ad8B3gHgAf8D3gH/A90B/wHbAt0B/wHaAtwB//8A/wD/AP8A/wAtAAHNAdYB2gH/AcsB1AHY
+        Af8ByQHRAdgB/wHHAdEB2AH/AccBzwHWAf8BxAHOAdUB/wHHAc4B1wH/AcYB0AHXAf8ByAHQAdcB/wHH
+        AdEB2AH/AckB0QHYAf8BxwHRAdgB/wHFAc4B1wH/AcMBzAHVAf8BwwHMAdYB/wHEAc0B1wH/AcUBzgHY
+        Af8BxQHOAdgB/wHGAc8B2QH/AccBzgHXAf8ByQHOAdcB/wHKAdAB1wH/AbEBtQG6Af8CgQGEAf8BOAE+
+        AUMB/wEqAS8BMgH/ASEBIwEkAf8BGwIdAf8DMgH/AzIB/wFRAlMB/wGSAZMBkQH/AZsBmQGRAf8BjgGM
+        AYIB/wGHAYQBgQH/AYUBgwGBAf8CgQF5Af8BdwF4AW8B/wFyAXMBagH/AWQBZgFgAf8BWQFdAVgB/wFe
+        AWQBXwH/AW4BcwFxAf8BgAKBAf8BhQGKAYsB/wGNApUB/wGYAZ0BoAH/AZ8BpAGnAf8BogGoAa0B/wGo
+        Aa4BswH/AawBtAG7Af8BsAG4Ab8B/wG1Ab0BxAH/AbsBwwHKAf8BwwHJAdAB/wHHAc0B1AH/AcsB0QHY
+        Af8BzgHUAdkB/wHPAdgB3AH/AdEB2gHeAf8B1AHaAd8B/wHZAd0B4gH/AdgB3AHhAf8B1gHcAeMB/wHS
+        AdgB3wH/AZMBlwGcAf8BLAEqASkB/wE6ATYBMQH/ATcBMQEsAf8BOAEyASsB/wE7ATMBLAH/AToBMwEq
+        Af8BOQEyASkB/wE8ATYBKwH/AUYBPQEzAf8BQwE+ATUB/wFEAUEBPQH/AWABXgFdAf8BKgEmASEB/wFJ
+        AUEBOgH/AU0BQwE5Af8BRQE8AS8B/wFDATsBLgH/AUkBQwE2Af8BRgFCATcB/wGJAYcBgQH/A+AB/wHe
+        AeAB4QH/Ad4B4AHhAf8B3gHgAeEB/wHdAd8B4AH/Ad0B3wHgAf8B3AHgAeEB/wHcAeAB4QH/Ad4B4AHh
+        Af8B3AHeAd8B/wHdAd8B4AH/Ad0B3wHgAf8B3AHeAd8B/wHcAd4B3wH/AdwC3gH/AdwC3gH/A94B/wPd
+        Af8B3gHdAd8B/wPdAf8D3QH/A94B/wHaAtwB/wHYAtoB//8A/wD/AP8A/wAtAAHKAdMB1wH/AcoB0wHX
+        Af8BxgHQAdcB/wHCAc0B1QH/AcAByQHSAf8BwAHLAdMB/wHBAcoB1AH/AcABywHTAf8BwwHMAdUB/wHC
+        Ac0B1QH/AcQBzQHWAf8BwwHOAdYB/wHBAcsB1QH/AcEBywHVAf8BwQHKAdcB/wHBAcoB1wH/AcABygHU
+        Af8BwgHMAdYB/wHCAc0B1QH/AcQBzQHWAf8BwwHMAdUB/wHDAcwB1QH/AcQBzQHWAf8BxAHNAdYB/wHD
+        AcsB0gH/AUMBSgFNAf8DOQH/AUgBRAFDAf8BOgE1ATQB/wE7ATYBMwH/AWUBYgFeAf8BqQGlAaAB/wHA
+        AboBrwH/AbwBtwGoAf8BqQGjAZYB/wGPAYsBgQH/AYkBhQGBAf8BhwGFAYEB/wKBAXYB/wF5AXcBbwH/
+        AXIBcwFqAf8BYgFlAVwB/wFZAVsBVQH/AWABZAFfAf8BbQFyAXAB/wF6AoEB/wGEAowB/wGOAZUBmAH/
+        AZYBnQGgAf8BnAGjAaYB/wGiAagBrQH/AacBsAG0Af8BrAG0AbsB/wGxAbkBwAH/AbYBvQHGAf8BugHC
+        AckB/wG/AccBzgH/AcUBzQHUAf8ByAHQAdcB/wHMAdQB2wH/AdAB1gHbAf8B0wHZAd4B/wHSAdgB3wH/
+        AdIB2AHfAf8B0AHWAd0B/wFyAXUBeQH/ATQBMQEtAf8BPQE3ATAB/wE3ATEBLAH/ATYBMAEpAf8BNwEv
+        ASgB/wE7ATQBKwH/AUMBOgExAf8BSAE/ATUB/wFIAUIBNwH/AUcBQQE6Af8BWAFXAVkB/wGaAZkBmwH/
+        ATQBLgEpAf8BSAE/ATYB/wFIAT8BNgH/AUEBOAEuAf8BQQE4AS4B/wFFAT8BNAH/AUABPAExAf8BmAGW
+        AY4B/wPeAf8B2wHeAeIB/wHcAd4B3wH/Ad0B3wHgAf8B3QHfAeAB/wHdAd8B4AH/Ad0B3wHgAf8B3QHf
+        AeAB/wHdAd4B4gH/AdwB3gHfAf8B3QHfAeAB/wHdAt8B/wHcAd4B3wH/Ad0B3wHgAf8B2wLdAf8B2wLd
+        Af8B3QHcAd4B/wHcAdsB3QH/A90B/wPdAf8D3AH/AdwB3QHbAf8D2QH/A9sB//8A/wD/AP8A/wAtAAHL
+        AdQB2AH/AcoB0wHXAf8ByAHSAdkB/wHEAc0B1gH/AcEBzAHUAf8BwQHLAdUB/wHBAcsB1QH/AcABygHU
+        Af8BwQHMAdQB/wHBAcwB1AH/AcIBzQHVAf8BwQHMAdQB/wHCAcwB1gH/AcIBzAHWAf8BwgHMAdYB/wHC
+        AcwB1gH/AcMBzQHXAf8BwwHNAdcB/wHEAc8B1wH/AcUB0AHYAf8BwwHNAdcB/wHEAc4B2AH/AcMBzQHX
+        Af8BwwHNAdcB/wHFAc4B1wH/AUwBUgFXAf8DOQH/AUMBPwE+Af8BQAE7ATgB/wFLAUUBQAH/AZMBiwGE
+        Af8BvQG2Aa0B/wG/AbgBqQH/AcABuAGnAf8BwQG4AaoB/wG+AbcBqAH/AagBogGVAf8BjgGKAYEB/wGL
+        AYcBgQH/AYgBhgGBAf8CgQF0Af8BgwGCAXoB/wKBAXQB/wFiAWMBWgH/AVkBXQFXAf8BZAFpAWcB/wFx
+        AXYBdQH/AYEBggGDAf8BiAGNAY4B/wGQAZcBmgH/AZcBnQGiAf8BnQGjAagB/wGjAakBrgH/AaUBrQG0
+        Af8BrQG1AbwB/wGxAbgBwQH/AbUBvQHEAf8BuwHDAcoB/wHBAcgB0QH/AcMBygHTAf8ByQHPAdYB/wHL
+        AdEB2AH/Ac0B0wHaAf8BzwHVAdwB/wHQAdYB3QH/AXoCgQH/AUABPQE5Af8BVgFQAUkB/wEyASwBJQH/
+        ATkBMwEsAf8BPQE3ATAB/wFAATgBMQH/AUIBOgEzAf8BRAE+ATcB/wFMAUkBQQH/AYcBgwGCAf8BzwHQ
+        AdQB/wGYAZcBmwH/ATYBMAErAf8BRgE9ATQB/wFDAToBMQH/AT8BNgEtAf8BPgE1ASsB/wFBATsBMAH/
+        AT0BOAEvAf8BrQGqAaUB/wHdAt8B/wHbAd4B4gH/AdwB3gHfAf8B3QHfAeAB/wHdAd8B4AH/Ad0B3wHg
+        Af8B3AHeAd8B/wHdAd8B4AH/Ad0B3gHiAf8B3QHfAeAB/wHdAd8B4AH/Ad0C3wH/AdwB3gHfAf8B3AHe
+        Ad8B/wHdAt8B/wHbAt0B/wHdAdwB3gH/AdwB2wHdAf8D3AH/A9wB/wPcAf8D3AH/A9sB/wPaAf//AP8A
+        /wD/AP8ALQAB0AHWAdsB/wHOAdQB2QH/AcsB0wHaAf8BygHSAdkB/wHFAc8B1gH/AcIBywHUAf8BwQHK
+        AdMB/wHDAcwB1QH/AcQBzQHXAf8BxAHNAdcB/wHBAcoB1AH/AcMBzAHWAf8BwQHKAdMB/wHDAcwB1QH/
+        AcIBywHUAf8BwwHMAdYB/wHDAcwB1gH/AcQBzQHXAf8BxAHOAdgB/wHEAc4B2AH/AcIBzAHWAf8BwwHN
+        AdcB/wHDAc0B1wH/AcIBzAHWAf8BwwHNAdcB/wGaAaEBqgH/ATcBOgE+Af8DOQH/ATsBNwE2Af8BggGB
+        AXkB/wG3Aa4BpAH/Ab4BtgGpAf8BvwG2AagB/wHCAbkBqwH/AcQBvAGrAf8BwwG7AaoB/wHCAbkBqwH/
+        Ab0BtgGnAf8BpQGfAZIB/wGOAYoBgQH/AY0BiQGBAf8BkwGRAYYB/wGJAYcBgQH/AZEBjwGFAf8BegF4
+        AXAB/wJiAVwB/wFeAV8BWwH/AWkBbAFqAf8BcwF4AXYB/wGBAYIBgwH/AYgBjQGQAf8BkAGWAZsB/wGX
+        AZ0BogH/AZ0BowGoAf8BowGpAbAB/wGpAa8BtgH/AasBswG6Af8BsAG4Ab8B/wG1AbwBxQH/AboBwQHK
+        Af8BvgHFAc4B/wHBAcgB0QH/AcUBzAHVAf8BxgHNAdYB/wHIAc8B2AH/AbIBtgG7Af8DRgH/AXEBbQFo
+        Af8BQAE6ATMB/wE9ATcBMAH/AT0BNwEwAf8BPwE5ATQB/wFJAUYBQgH/AYwBigGJAf8D0QH/AdgB3AHd
+        Af8B0gHVAd0B/wGFAYYBigH/ATcBMwEuAf8BRAE9ATQB/wFAAToBLwH/ATkBMwEoAf8BPgE1ASsB/wFC
+        ATwBMQH/AT4BPAEyAf8CvwG5Af8B2wLdAf8B2wHfAeAB/wHcAd4B3wH/Ad0B3wHgAf8B2gHeAd8B/wHb
+        Ad8B4AH/AdoB3gHfAf8B2gHeAd8B/wHYAdwB3QH/AdgB3AHdAf8B2wHdAd4B/wHbAd0B3gH/AdoB3AHd
+        Af8B2gHcAd0B/wHbAd0B3gH/AdoB3AHdAf8B2AHaAdsB/wHYAdoB2wH/AdkC2wH/AdkC2wH/AdkC2wH/
+        AdkC2wH/AdkC2wH/AdgC2gH//wD/AP8A/wD/AC0AAc8B1QHaAf8BzwHVAdoB/wHOAdQB2wH/Ac8B1QHc
+        Af8BzAHUAdsB/wHIAdIB2QH/AcYBzwHYAf8BxQHOAdcB/wHFAc4B2AH/AcMBzAHWAf8BwwHMAdYB/wHE
+        Ac0B1gH/AcYBzgHVAf8BvwHHAc4B/wG6AcIByQH/AbgBwQHKAf8BvAHFAc8B/wHBAcoB1AH/AcMBzQHX
+        Af8BwwHNAdcB/wHDAc0B1wH/AcQBzgHYAf8BwwHNAdcB/wHDAc0B1wH/AcMBzAHZAf8BxAHNAdcB/wGv
+        AbUBvAH/AWABYgFjAf8BZwFkAWAB/wGrAaUBngH/Ab4BtgGpAf8BuQGwAaIB/wG4Aa8BoQH/AbUBrAGe
+        Af8BvwG1AaQB/wHIAb4BrAH/AcUBuwGpAf8BwwG7AaoB/wHBAboBqwH/AbsBswGmAf8BogGcAY8B/wGQ
+        AYoBgQH/AY8BiQGBAf8BlAGQAYUB/wGqAaUBnAH/AZgBlgGMAf8BdwF1AW0B/wJgAVoB/wFeAWABWgH/
+        AWwBcAFrAf8BdwGAAYEB/wGBAYYBhwH/AYwBkQGUAf8BlAGbAZ4B/wGZAZ8BpAH/AaABpgGrAf8BpgGs
+        AbEB/wGpAa8BtgH/Aa0BtQG8Af8BsQG5AcAB/wG2Ab0BxgH/AbsBwgHLAf8BvwHGAc8B/wHCAckB0gH/
+        AcQBywHUAf8BxwHNAdQB/wGkAaYBpwH/AVABTgFNAf8BOAE1ATEB/wE8ATgBMwH/AVABTQFJAf8BmAGU
+        AZMB/wPTAf8B3AHeAd8B/wHaAd0B4QH/AdcB2wHgAf8B0gHYAd8B/wGAAoEB/wE3ATIBLwH/AUIBOwEy
+        Af8BPgE4AS0B/wE5ATMBKAH/AT8BNgEsAf8BQQE6ATEB/wFDAUABOAH/Ac8BzgHKAf8B3ALeAf8B2QHd
+        Ad4B/wHbAd0B3gH/AdwB3gHfAf8B2QHdAd4B/wHaAd4B3wH/AdkB3QHeAf8B2AHcAd0B/wHZAd0B3gH/
+        AdgB3AHdAf8B2AHaAdsB/wHaAdwB3QH/AdkB2wHcAf8B2gHcAd0B/wHYAdoB2wH/AdgB2gHbAf8B2QHb
+        AdwB/wHZAdsB3AH/AdkC2wH/AdgC2gH/AdgB2gHbAf8B1wHZAdoB/wHYAtoB/wHWAtgB//8A/wD/AP8A
+        /wAtAAHOAdUB2AH/Ac8B1gHZAf8B0wHXAdwB/wHPAdUB2gH/Ac4B1AHZAf8BygHTAdcB/wHKAdIB2QH/
+        AccBzwHWAf8BwgHLAdQB/wHDAcwB1QH/AcMBygHTAf8BxAHMAdMB/wG3Ab0BwgH/AaABpwGqAf8BnAGi
+        AacB/wGhAakBsAH/AakBsgG7Af8BsQG6AcQB/wG4AcEBywH/AcAByQHTAf8BwgHLAdUB/wHDAcwB1gH/
+        AcIBywHVAf8BwwHMAdYB/wHCAcwB1gH/AcIBywHVAf8BvwHGAc8B/wG2AbkBvQH/AacBpAGfAf8BvAG2
+        AasB/wG6AbIBpQH/AbcBrwGiAf8BrQGkAZYB/wGRAYkBegH/AYsBgQFxAf8BoAGVAYEB/wHBAbYBogH/
+        AckBvwGtAf8BxgG8AasB/wHDAboBrAH/AcMBugGsAf8BvAGzAaUB/wGiAZoBjQH/AY8BiQGBAf8BkAGM
+        AYEB/wGhAZ0BkgH/AaYBoQGYAf8BjgGMAYIB/wFzAXIBaAH/AWEBYgFYAf8BYwFkAWAB/wFxAXQBcgH/
+        AYACgQH/AYQBiQGKAf8BjgGTAZQB/wGYAZ0BoAH/AZ0BogGlAf8BpAGpAawB/wGnAa0BsgH/AawBsgG3
+        Af8BsAG2Ab0B/wG1AbsBwgH/AbkBvwHGAf8BvwHFAcwB/wHBAckB0AH/AcUBywHSAf8BywHPAdQB/wHP
+        AdIB1gH/AcQBxgHHAf8BxQHHAcgB/wHaAdwB3QH/AdsB3QHeAf8B3AHeAd8B/wHbAd4B4gH/AdkB3gHh
+        Af8B2AHdAeAB/wHWAdoB3wH/AYoBiwGPAf8BPQE2ATMB/wFDAToBMQH/AUABNwEtAf8BPgE1ASsB/wE9
+        ATYBLQH/AT8BOgExAf8BUwFQAUsB/wHbAdwB2AH/AdwC3gH/AdoB3gHfAf8B2QHdAd4B/wHYAdwB3QH/
+        AdsB3QHeAf8B2wHdAd4B/wHaAdsB3wH/AdsB3AHgAf8B2wHdAd4B/wHbAd0B3gH/AdoC3AH/AdsC3QH/
+        AdsB3QHeAf8B2gHcAd0B/wHaAtwB/wHZAtsB/wPbAf8D2wH/AdgC2gH/AdgC2gH/A9kB/wPaAf8D2AH/
+        A9kB//8A/wD/AP8A/wAtAAHQAdcB2gH/AdAB1wHaAf8B1AHYAd0B/wHVAdkB3gH/AdIB2AHdAf8B0QHX
+        AdwB/wHMAdQB2wH/AcoB0gHZAf8BxwHQAdkB/wHGAc8B2AH/AcUBzQHUAf8BuAG+AcMB/wGPAZQBlQH/
+        AW8BdAF1Af8BgAKBAf8BiAGOAZMB/wGUAZwBowH/AZ4BpQGuAf8BqAGxAboB/wGxAboBxAH/AbYBvwHJ
+        Af8BvQHGAdAB/wHDAcwB1gH/AcQBzQHXAf8BwQHLAdUB/wHAAckB0gH/AbsBwQHIAf8BowGlAaYB/wG0
+        AbEBqQH/AbkBswGoAf8BtgGuAaEB/wG1Aa0BoAH/AZcBjgGBAf8BtQGtAZwB/wGdAZMBgQH/AY0BggFw
+        Af8BjAGBAW8B/wGkAZkBhQH/AcMBtwGlAf8ByQG/Aa0B/wHHAb0BqwH/AcYBvAGrAf8BxQG8Aa4B/wG5
+        AbIBowH/AZ0BlwGKAf8BjAGGAYAB/wGQAYoBgQH/AZ4BmAGNAf8BqAGlAZcB/wGKAYgBgQH/AW4BbAFk
+        Af8BXgFgAVoB/wFjAWQBYAH/AXEBdAFyAf8DgQH/AYcBjAGLAf8BkgGXAZYB/wGaAZ4BnwH/AZ8BpAGn
+        Af8BpAGqAa8B/wGoAa4BswH/Aa0BswG4Af8BsgG4Ab8B/wG3Ab0BxAH/AboBwgHJAf8BvwHHAc4B/wHF
+        AcsB0gH/AcoB0AHXAf8BzgHUAdkB/wHSAdYB2wH/AdUB2gHdAf8B1wHcAd8B/wHZAdwB4AH/AdoB3QHh
+        Af8B2QHeAeEB/wHaAd8B4gH/AdgB3AHhAf8BxQHHAcgB/wFCAT0BPAH/AUMBPQE4Af8BUAFIAUEB/wF3
+        AXEBagH/AT4BOAExAf8BPwE7ATYB/wGnAaYBogH/Ad4B4QHfAf8B2wHfAeAB/wHaAd4B3wH/AdkB3QHe
+        Af8B3AHgAeEB/wHdAd8B4AH/Ad0B3wHgAf8B3QHeAeIB/wHcAd0B4QH/AdwB3gHfAf8B3AHeAd8B/wHc
+        At4B/wHbAt0B/wHbAd0B3gH/AdwB3gHfAf8B2wLdAf8B2QLbAf8D2wH/A9sB/wHZAtsB/wHZAtsB/wPa
+        Af8D3QH/A9kB/wPaAf//AP8A/wD/AP8ALQABzgHVAdgB/wHQAdcB2gH/Ac8B1QHaAf8BzgHUAdkB/wHN
+        AdMB2AH/AcwB0gHXAf8BygHSAdkB/wHHAc8B1gH/AcYB0AHXAf8BwwHNAdQB/wG6AcABxQH/AZ8BpAGn
+        Af8BaAFuAW0B/wFDAUgBRwH/AU8BVAFTAf8BYwFoAWkB/wF2AYABgQH/AYIBiAGNAf8BjgGWAZ0B/wGZ
+        AaABqQH/AaIBqwG1Af8BrQG2AcAB/wG3AcABygH/Ab4BxwHRAf8BvwHIAdEB/wG9AcUBzAH/AawBrgGv
+        Af8BrAGpAaUB/wG3AbIBqQH/AbYBrgGhAf8BugGxAaQB/wGdAZQBhwH/Aa0BpAGWAf8BxQG8Aa4B/wHK
+        AcABrwH/AbcBrQGbAf8BlQGLAYAB/wGMAYEBbwH/AYwBgQFvAf8BpAGZAYUB/wHEAbkBpQH/AckBvwGt
+        Af8BxgG8AasB/wHEAbsBrQH/AcUBvAGuAf8BuQGwAaIB/wGbAZMBhgH/AYgBggF3Af8BjQGHAYEB/wGc
+        AZgBjQH/AZEBjwGFAf8BcgFxAWcB/wFrAWoBYAH/AWABYQFYAf8BZgFoAWIB/wFzAXcBcgH/A4EB/wGG
+        AYsBigH/AZABlQGYAf8BmQGeAaEB/wGeAaMBpgH/AaQBqAGtAf8BpwGtAbQB/wGqAbIBuQH/AbEBtwG8
+        Af8BtwG9AcIB/wG8AcIBxwH/AcEBxwHMAf8BxQHLAdAB/wHLAdEB1gH/AdAB1AHZAf8B1AHYAd0B/wHV
+        AdoB3QH/AdgB3QHgAf8B2QHeAeEB/wHYAd0B4AH/AdgB3QHgAf8B2QHcAeAB/wGxAbABsgH/AVcCVQH/
+        ASwBKAEnAf8BLgEsASsB/wFSAVABTwH/Aa4BrAGrAf8B3gLgAf8B2wHfAeAB/wHaAd4B3wH/AdsB3gHi
+        Af8B2wHfAeAB/wHaAd4B3wH/AdwC3gH/AdsC3QH/AdoB3gHfAf8B2gHeAd8B/wHcAd4B3wH/AdwB3gHf
+        Af8B3AHeAd8B/wHeAeAB4QH/AdsB3QHeAf8B2wHdAd4B/wHaAdwB3QH/AdsB3QHeAf8B2AHaAdsB/wHZ
+        AdsB3AH/AdoC3AH/AdkC2wH/AdkC2wH/AdkC2wH/AdgC2gH/AdgC2gH//wD/AP8A/wD/AC0AAc8B1gHZ
+        Af8B0AHXAdoB/wHQAdYB2wH/AdAB1gHbAf8BzQHTAdgB/wHOAdQB2QH/AcoB0gHZAf8BxgHQAdcB/wHG
+        AdAB1wH/AZkBogGmAf8BTwFUAVcB/wFIAU0BTAH/AU0BUAFOAf8BUAFTAVEB/wE7AUABPwH/ATwBQQFA
+        Af8BSwFPAVAB/wFYAV0BXgH/AWkBbwF0Af8BgQGDAYoB/wGNAZQBnQH/AZoBowGsAf8BpwGwAbkB/wGy
+        AbkBwgH/AbUBvQHEAf8BsQG2AbkB/wGjAaIBngH/AbgBswGqAf8BtAGuAaMB/wG4AbABowH/AasBogGV
+        Af8BnwGWAYkB/wHCAbkBqwH/AcUBvAGuAf8ByAG9Aa8B/wHIAb4BrQH/AcYBvAGqAf8BqAGfAYsB/wGR
+        AYYBdAH/AYsBgQFuAf8BjwGEAXIB/wGpAZ0BiwH/AccBugGqAf8ByQG/Aa4B/wHJAb0BqwH/AccBvQGs
+        Af8BxAG7Aa0B/wG1Aa4BnwH/AZUBjgGBAf8BhAGBAXMB/wGGAYEBdwH/AYEBegFvAf8BdQF0AWYB/wJx
+        AWUB/wFoAWcBXQH/AmABWgH/AWkBawFlAf8BdwGAAXYB/wGBAYQBgwH/AYoBjgGPAf8BlQGZAZoB/wGa
+        AZ8BogH/AZ8BpQGqAf8BpAGqAa8B/wGrAbEBtgH/AbABtgG7Af8BtgG8AcEB/wG9AcMByAH/AcABxgHL
+        Af8BxAHKAc8B/wHIAc4B0wH/Ac4B0gHXAf8B0gHWAdsB/wHVAdoB3QH/AdcB3AHfAf8B1wHcAd8B/wHX
+        AdwB3wH/AdkB3AHgAf8B3AHdAeEB/wHdAdwB4AH/Ac0BzAHOAf8DzQH/AdkC2wH/AdoB3AHdAf8B3AHe
+        Ad8B/wHaAd4B3wH/AdkB3AHgAf8B2QHcAeAB/wHZAd0B3gH/AdkB3QHeAf8B2wLdAf8B2wLdAf8B2AHc
+        Ad0B/wHWAdoB2wH/AdkB2wHcAf8B2gHcAd0B/wHZAdsB3AH/AdkB2wHcAf8B2AHaAdsB/wHYAdoB2wH/
+        AdkB2wHcAf8B2AHaAdsB/wHYAdoB2wH/AdgB2gHbAf8B2ALaAf8B2ALaAf8B1wLZAf8B1gLYAf8B1gLY
+        Af8B1ALWAf//AP8A/wD/AP8ALQAB0AHVAdgB/wHQAdUB2AH/AcsB0QHWAf8BzAHSAdcB/wHLAdEB1gH/
+        AcoB0AHVAf8BxwHPAdYB/wHDAc0B1AH/AbQBvwHDAf8BNAI8Af8BGwIdAf8BKgErAScB/wIrASUB/wEr
+        ASwBKAH/ATkBPAE6Af8BPAI+Af8BMQE2ATUB/wEwATQBNQH/AToBPwFAAf8BTwFWAVkB/wFjAWwBcAH/
+        AXkBgQGEAf8BiAGQAZcB/wGQAZYBmwH/AZcBmwGcAf8BmAGZAZcB/wGyAa8BpwH/AbYBsAGlAf8BtwGv
+        AaIB/wG0AawBnwH/AZcBjgGBAf8BuQGwAaMB/wHHAbwBrgH/AcMBuQGoAf8BwgG3AakB/wHCAbcBqQH/
+        AcYBvAGrAf8BygHAAa8B/wG9AbMBogH/AZ4BlAGCAf8BjQGDAXMB/wGLAYEBbwH/AZABhQFzAf8BqwGg
+        AYwB/wHIAboBpwH/AcsBwAGsAf8ByQG8AawB/wHGAbwBqwH/AcYBvAGqAf8BswGrAZoB/wGSAYkBgQH/
+        AYIBgQFvAf8CgQFwAf8BeQF4AWoB/wF0AXIBZwH/AXABbgFkAf8BZwFmAVwB/wFkAWUBXAH/AW0BbgFq
+        Af8BeQGBAXoB/wGFAYoBiAH/AY4BlAGTAf8BlwGcAZ0B/wGaAaEBpAH/AaEBqAGrAf8BqAGvAbIB/wGu
+        AbIBtwH/Aa4BtAG5Af8BswG5Ab4B/wG4Ab4BwwH/AbwBwgHJAf8BwAHGAcsB/wHFAcsB0AH/AcoB0AHV
+        Af8B0AHVAdgB/wHUAdkB3AH/AdYB2wHeAf8B2gHfAeIB/wHcAd8B4wH/Ad8B4AHkAf8B4QHjAeQB/wHh
+        AeMB5AH/Ad0B4QHiAf8B3gHiAeMB/wHgAeIB4wH/Ad8B4QHiAf8B3wHhAeIB/wHeAeAB4QH/AdwB4AHh
+        Af8B2wHfAeAB/wHfAeEB4gH/Ad8B4QHiAf8B3wLhAf8B3wLhAf8B3AHeAd8B/wHcAd4B3wH/Ad0C3wH/
+        Ad0C3wH/A98B/wPeAf8D3gH/A94B/wPfAf8D3wH/Ad0C3wH/AdsC3QH/A90B/wPcAf8D2gH/A9oB//8A
+        /wD/AP8A/wAtAAHQAdUB2AH/Ac8B1gHZAf8BzgHUAdkB/wHOAdQB2QH/AcwB0gHXAf8ByQHRAdgB/wHF
+        Ac4B1wH/AcUBzQHUAf8BdQKBAf8BHAEhASAB/wEeARwBGwH/AS4BKwEnAf8BKwEoASMB/wEvASwBJwH/
+        AScBKAEmAf8BJQInAf8BMAIyAf8BNQE6ATkB/wEtATEBMgH/AS0BMgEzAf8BOAJAAf8BUAFXAVoB/wFd
+        AWQBZwH/AWEBZQFmAf8BegGAAXkB/wGnAaMBngH/AbcBsQGmAf8BtgGuAaEB/wG5AbEBpAH/AZoBkgGF
+        Af8BqwGiAZUB/wHDAboBrAH/AcQBugGpAf8BwwG5AagB/wHHAbwBrgH/AccBvAGuAf8BwQG2AagB/wHD
+        AbgBqgH/AcUBvQGsAf8BxQG9AawB/wG0AaoBmAH/AZYBjAGBAf8BjgGDAXEB/wGOAYEBbwH/AZMBhgFy
+        Af8BrgGgAY0B/wHIAbwBqgH/AcsBvwGtAf8ByQG+AaoB/wHHAb0BqwH/AcYBvAGrAf8BsAGoAZcB/wGM
+        AYUBeAH/AoEBbQH/AoEBbwH/AXoBdgFrAf8BcwFxAWYB/wJwAWQB/wFlAWMBWwH/AV4BYAFaAf8BaQFt
+        AWgB/wF2AYEBdwH/AYEBhgGFAf8BiwGRAZAB/wGTAZgBmQH/AZgBnwGiAf8BoQGlAaoB/wGnAasBsAH/
+        AaoBsAG1Af8BrgG0AbkB/wGxAbkBwAH/AbcBvwHGAf8BvgHEAckB/wHEAcoBzwH/AcwB0AHVAf8BzQHS
+        AdUB/wHQAdQB2QH/AdMB2AHbAf8B1QHYAdwB/wHXAdoB3gH/AdcB2gHeAf8B1wHbAdwB/wHZAdwB4AH/
+        AdkB3AHgAf8B2gHeAd8B/wHbAd0B3gH/AdsB3QHeAf8B2wHdAd4B/wHZAd0B3gH/AdoB3gHfAf8B2wHd
+        Ad4B/wHcAd4B3wH/AdwB3gHfAf8B3ALeAf8B3AHeAd8B/wHcAd4B3wH/AdwC3gH/Ad4C4AH/A98B/wPd
+        Af8D3QH/A90B/wPbAf8D2wH/AdkC2wH/AdcC2QH/A9gB/wPbAf8D2wH/A9oB//8A/wD/AP8A/wAtAAHP
+        AdYB2QH/Ac8B1gHZAf8BzwHVAdoB/wHLAdMB2gH/AckB0QHYAf8BxwHPAdYB/wHEAc0B1gH/AcEBxwHM
+        Af8BNQI3Af8BWgFYAVcB/wE1ATABLQH/ATUBMAEtAf8BMQEtASgB/wEuASsBJgH/ASQBIgEhAf8BIgEj
+        ASEB/wEZARoBGAH/ASQBJwElAf8BLAIuAf8BLwE0ATMB/wExATYBNQH/ATABNQE0Af8BNgE7AToB/wFR
+        AVIBUAH/AZMBkAGIAf8BuQGyAakB/wG2Aa0BowH/AbkBsAGmAf8BpwGfAZIB/wGdAZUBiAH/AcEBuAGq
+        Af8BwwG7AaoB/wHCAbgBpwH/AccBvQGsAf8BxwG8Aa4B/wHHAbwBrgH/AcYBvAGrAf8BxQG7AaoB/wG/
+        AbcBpgH/AcMBuwGqAf8ByAG+Aa0B/wHDAbkBqAH/AagBngGMAf8BkgGGAXYB/wGMAYEBbwH/AYsBgQFu
+        Af8BkgGEAXMB/wGyAaQBkQH/AcsBvQGqAf8BywHAAawB/wHKAb4BrAH/AccBvQGrAf8BxQG9AawB/wGs
+        AaQBkwH/AYsBhAF3Af8BgQF5AWwB/wGBAXoBbQH/AXkBdQFqAf8BdQFxAWYB/wFwAW4BZAH/AWUBYwFb
+        Af8BYQFkAVsB/wFuAW8BawH/AXgBgAF5Af8BgQGFAYQB/wGKAY8BkgH/AZEBlwGcAf8BlgGcAaEB/wGc
+        AaMBpgH/AaIBqAGtAf8BqAGuAbUB/wGsAbIBuQH/AbABuQG9Af8BtgG/AcMB/wG9AcMByAH/AcEBxwHM
+        Af8BxQHLAdIB/wHLAdEB1gH/AdIB1gHbAf8B1AHZAdwB/wHXAdwB3wH/AdkB3AHgAf8B2gHdAeEB/wHa
+        Ad0B4QH/AdsB3gHiAf8B2gHdAeEB/wHbAd4B4gH/AdsB3gHiAf8B2gHeAd8B/wHaAd4B3wH/AdkB3AHg
+        Af8B2QHdAd4B/wHYAdwB3QH/AdUB2QHaAf8B1wHZAdoB/wHYAdoB2wH/AdgB3AHdAf8B1QHZAdoB/wHX
+        AdkB2gH/AdcB2QHaAf8B2QHbAdwB/wHZAdsB3AH/AdkB2wHcAf8B2AHaAdsB/wHYAtoB/wHXAtkB/wHX
+        AdkB2gH/AdcB2QHaAf8B2ALaAf8B1gLYAf//AP8A/wD/AP8ALQABzQHUAdcB/wHNAdMB2AH/AckB0QHY
+        Af8ByAHQAdcB/wHFAc0B1AH/AcEBywHSAf8BvwHIAdEB/wGmAawBswH/ASACIgH/ATUBMQEwAf8BNQEw
+        AS0B/wE2AS8BLAH/ATMBLwEqAf8BOgE2ATEB/wE4ATUBMQH/ARwBGAEXAf8BGQEXARYB/wEmASQBIwH/
+        AScBKAEmAf8BIwIlAf8BJgIoAf8BLwEyATAB/wE4ATYBNQH/AXUBcgFtAf8BswGsAaMB/wG1AawBogH/
+        AbUBrAGiAf8BsgGpAZ8B/wGWAY4BgQH/AbcBsAGhAf8BwwG7AaoB/wHAAbgBpwH/AcUBuwGqAf8BxwG9
+        AawB/wHHAbwBrgH/AccBvAGuAf8BxwG9AawB/wHHAb0BrAH/AcQBvAGrAf8BwAG4AacB/wHFAbsBqgH/
+        AccBvQGsAf8ByAG+Aa0B/wG9AbMBogH/AaABlgGEAf8BkQGGAXQB/wGMAYEBbwH/AY4BgQFvAf8BlQGH
+        AXYB/wGyAaQBkQH/Ac0BvwGtAf8BywG/Aa0B/wHIAb4BrAH/AcYBvAGqAf8BxQG7AaoB/wGrAaIBlAH/
+        AYgBgQF0Af8BgQF5AWoB/wGBAXkBbAH/AXkBcwFoAf8BcQFvAWQB/wFuAW0BYwH/AWMBZAFbAf8BYQFj
+        AV0B/wFuAXEBbwH/AXkCgQH/AYEBhQGGAf8BjAGRAZQB/wGQAZcBmgH/AZgBnwGiAf8BngGkAakB/wGi
+        AagBrwH/AakBrwG0Af8BrAGyAbcB/wGxAbcBvgH/AbgBvgHFAf8BuwHBAcgB/wHBAccBzAH/AccBywHQ
+        Af8BywHPAdQB/wHPAdQB1wH/AdAB1QHYAf8B0wHWAdoB/wHVAdgB3AH/AdUB2AHcAf8B1wHaAd4B/wHX
+        AdoB3gH/AdcB2gHeAf8B1wHbAdwB/wHXAdsB3AH/AdcB2gHeAf8B1gHZAd0B/wHXAdsB3AH/AdcB2wHc
+        Af8B2QHbAdwB/wHZAdsB3AH/AdcB2wHcAf8B1wHbAdwB/wHYAdoB2wH/AdcB2QHaAf8B1wHZAdoB/wHX
+        AdkB2gH/AdcB2QHaAf8B1gHYAdkB/wHXAtkB/wHVAtcB/wHUAdYB1wH/AdQB1gHXAf8B0wLVAf8B0gLU
+        Af//AP8A/wD/AP8ALQABygHTAdcB/wHKAdMB1wH/AccBzwHWAf8BxgHNAdYB/wHDAcwB1QH/AcAByQHS
+        Af8BvwHIAdIB/wG1Ab0BxAH/AToBPQFBAf8DKwH/ATUBMAEvAf8BNgEvASwB/wEyASwBJwH/AUUBPwE6
+        Af8BXQFYAVUB/wEsAScBJAH/ATYBMQEuAf8BNgEzAS8B/wExAS8BLgH/ASkBKgEoAf8BJwEoASYB/wEr
+        ASkBKAH/AVYBUgFNAf8BnwGZAZIB/wG4AbEBqAH/AbYBrQGjAf8BugGxAacB/wGdAZQBigH/Aa0BpAGX
+        Af8BxAG7Aa0B/wHFAbsBqgH/AcYBvAGrAf8BxgG+Aa0B/wHHAb4BsAH/AcUBvAGuAf8BxwG+AbAB/wHI
+        Ab8BsQH/AccBvgGwAf8BxQG8Aa4B/wG/AbYBqAH/AckBwAGyAf8ByQHAAbIB/wHIAb8BsQH/AcoBwQGz
+        Af8ByAHAAa8B/wG1AasBmgH/AZgBjgGBAf8BjgGDAXEB/wGMAYEBbwH/AY8BggFuAf8BmgGMAYAB/wG3
+        AakBlgH/Ac0BwgGuAf8BygHAAa4B/wHKAcABrwH/AcgBvgGtAf8BxQG7AaoB/wGqAaABjwH/AYUBgQFw
+        Af8BggGBAW4B/wGIAYUBeQH/AoEBdAH/AXgBdgFrAf8BcgFxAWcB/wFjAWQBWwH/AWYBaAFiAf8BdAF3
+        AXUB/wOBAf8BgwGIAYkB/wGOAZMBlAH/AZIBmQGcAf8BnAGjAaYB/wGiAakBrAH/AasBsAGzAf8BsAG0
+        AbkB/wGyAbYBuwH/AbQBugG/Af8BuQG/AcQB/wG/AcMByAH/AcgBzAHRAf8BzAHQAdUB/wHNAdEB1gH/
+        AdQB2QHcAf8B1QHaAd0B/wHVAdoB3QH/AdcB3AHfAf8B2QHcAeEB/wHYAdsB3wH/AdkB3QHeAf8B1wHb
+        AdwB/wHXAdsB3AH/AdcB2wHcAf8B1QHZAdoB/wHVAdkB2gH/AdUB2QHaAf8B1QHZAdoB/wHVAdkB2gH/
+        AdUB2QHaAf8B1gHYAdkB/wHYAdoB2wH/AdgB2gHbAf8B1wHZAdoB/wHWAdgB2QH/AdYB2AHZAf8B1wLZ
+        Af8B1wLZAf8B1gHYAdkB/wHWAdgB2QH/AdQB1gHXAf8B1AHWAdcB//8A/wD/AP8A/wAtAAHJAdIB1gH/
+        AccB0AHUAf8BxQHNAdQB/wHDAcoB0wH/Ab8ByAHRAf8BvQHGAc8B/wG+AcgB0gH/Ab4BxwHQAf8BpgGs
+        AbEB/wFOAVEBVQH/ASoCKAH/AS4BKgEpAf8BMgEvASsB/wFNAUgBRQH/AUoBRQFCAf8BUQFMAUkB/wFN
+        AUgBRQH/AVsBVgFTAf8BTgFKAUkB/wFKAUgBRwH/ATEBLwEuAf8BUgFPAUsB/wGZAZMBjAH/AcMBvAGz
+        Af8BwAG5AbAB/wG7AbUBqgH/AbUBrAGiAf8BrgGmAZkB/wHNAcQBtwH/AcoBwQGzAf8BzAHDAbUB/wHN
+        AcQBtgH/AdABxwG5Af8BzgHFAbcB/wHKAcMBtAH/Ac4BxwG4Af8B1QHMAb4B/wHNAcQBtgH/AcMBugGs
+        Af8BxwG+AbAB/wHNAcQBtgH/AdEByAG6Af8B0QHIAboB/wHPAcYBuAH/Ac0BxAG2Af8B0gHJAbsB/wHG
+        AbwBqwH/AakBnwGNAf8BkwGHAXcB/wGWAYsBeQH/AZ8BkQGBAf8BqAGcAYoB/wGjAZkBhwH/AbwBsgGg
+        Af8B0wHHAbUB/wHTAcYBtgH/AcsBvwGtAf8ByQG/Aa0B/wHIAb4BrQH/AbUBrgGfAf8BkgGNAYEB/wGS
+        AYwBgQH/AZUBjwGCAf8BiAGEAYAB/wGDAYEBeQH/AoEBdwH/AoEBeAH/AXcBgAF2Af8BiwGQAY4B/wGK
+        AY8BjgH/AY8BlQGUAf8BnAGhAaIB/wGtAbIBswH/AagBrQGwAf8BsgG2AbsB/wGyAbYBuwH/AboBwQHE
+        Af8BugHBAcQB/wHCAcYBywH/AcMBxwHMAf8ByAHMAdEB/wHPAdMB2AH/Ac8B1AHXAf8B0wHYAdsB/wHW
+        AdsB3gH/AdgB3QHgAf8B2AHbAeAB/wHZAdwB4AH/AdsB3gHiAf8B2wHfAeAB/wHcAeAB4QH/AdwB4AHh
+        Af8B1wHbAdwB/wHVAdkB2gH/AdYB2gHbAf8B1AHYAdkB/wHUAdgB2QH/AdQB2AHZAf8B1wHZAdoB/wHX
+        AdkB2gH/AdcB2QHaAf8B1gHYAdkB/wHWAdgB2QH/AdcB2QHaAf8B1wLZAf8B1QLXAf8B1QHXAdgB/wHW
+        AdgB2QH/AdQB1gHXAf8B1AHWAdcB//8A/wD/AP8A/wAtAAHJAdIB1gH/AccB0AHUAf8BxQHNAdQB/wHD
+        AcsB0gH/AcAByQHSAf8BvQHIAdAB/wG/AcgB0gH/Ab4BxwHRAf8BvgHHAdAB/wHBAckB0AH/AaMBpwGs
+        Af8BVAFXAVsB/wEvATMBNAH/AygB/wEiAR4BHQH/AVMBUAFMAf8BTQFKAUYB/wFvAWwBaAH/AVUBUQFQ
+        Af8BTAFIAUcB/wFSAU8BSwH/AXkBdQFwAf8BvwG5AbIB/wHEAb0BtAH/AcEBvAGzAf8BvQG4Aa8B/wGm
+        AaABlQH/AcUBvwGyAf8B1AHMAb8B/wHIAcEBsgH/AdEBygG7Af8BygHCAbUB/wHRAckBvAH/AdIBygG9
+        Af8B1QHNAcAB/wHNAcUBuAH/AdcBzwHCAf8BzAHEAbcB/wHIAb8BsgH/AckBwAGzAf8B0AHIAbsB/wHY
+        AdABwwH/AdABxwG6Af8B2QHQAcMB/wHUAcsBvQH/Ac4BxQG3Af8B0gHJAbsB/wHOAcUBtwH/AckBvgGw
+        Af8BtAGpAZsB/wGfAZUBhAH/AbQBrAGbAf8BnAGSAYEB/wGcAZIBgQH/AaUBmQGHAf8BywG/Aa0B/wHU
+        AcgBtgH/AdEBxwG1Af8B1QHLAboB/wHNAcQBtgH/AdAByQG6Af8BsgGrAZwB/wGYAZABgwH/AZIBjAGB
+        Af8BmAGUAYkB/wGNAYwBggH/AZMBkgGIAf8CgQF4Af8BkgGUAY4B/wF6AYABdwH/AYMBhgGEAf8BjQGS
+        AZEB/wGqAa8BsAH/AZsBoAGhAf8BwAHFAcgB/wGoAa0BsAH/AbEBuAG7Af8BsgG5AbwB/wGzAbcBvAH/
+        AcIBxgHLAf8BugHAAcUB/wHGAcoBzwH/Ac0B0QHWAf8B0AHTAdgB/wHOAdIB1wH/AdwB4AHlAf8B1AHY
+        Ad0B/wHWAdsB3gH/AdcB3AHfAf8B2gHfAeAB/wHbAd8B4AH/Ad0B4QHiAf8B1wHaAd4B/wHWAdkB3QH/
+        AdYB2gHbAf8B1gHaAdsB/wHVAdkB2gH/AdQB2AHZAf8B1gHYAdkB/wHXAdkB2gH/A9cB/wPXAf8B1QLX
+        Af8B1QLXAf8B1QLXAf8B1ALWAf8B1AHWAdcB/wHRAdMB1AH/AdMC1QH/AdIC1AH//wD/AP8A/wD/AC0A
+        AcwB1QHZAf8ByAHRAdUB/wHFAc0B1AH/AcQBzAHTAf8BwQHKAdMB/wG/AcoB0gH/AcEBygHUAf8BwQHK
+        AdQB/wG/AckB0wH/Ab8ByAHRAf8BwAHJAdIB/wHDAcsB0gH/AaYBrAGxAf8BXgFjAWYB/wEeASABIQH/
+        A0YB/wNkAf8BSwFMAUoB/wFcAVoBWQH/AVQBUQFNAf8BhgGCAYEB/wGtAacBoAH/AcUBvgG1Af8BwwG8
+        AbMB/wHIAcMBugH/AbsBtwGsAf8BuAGyAacB/wHSAcoBvQH/AcoBwwG0Af8B1wHQAcEB/wHOAcYBuQH/
+        AcQBvAGvAf8B0AHIAbsB/wHMAcQBtwH/AcoBwgG1Af8B1gHOAcEB/wHSAcoBvQH/AcMBuwGuAf8B0QHI
+        AbsB/wHOAcUBuAH/Ac8BxwG6Af8B1QHNAcAB/wHQAccBugH/AdIByQG8Af8BxgG9Aa8B/wHTAcoBvAH/
+        AdEByAG6Af8B0AHHAbkB/wHRAcYBuAH/AdUBygG8Af8BwQG4AaoB/wG/AbYBqAH/AZ0BlQGEAf8BpwGd
+        AYwB/wGeAZEBgQH/Aa4BogGQAf8BpwGbAYkB/wHGAboBqAH/AdkBzwG+Af8B1gHMAbsB/wHHAb8BrgH/
+        AcUBvQGsAf8BxAG7Aa0B/wGnAZ8BkgH/AaUBnwGSAf8BnAGYAY0B/wGbAZkBjgH/AYoBiAGBAf8BnwGe
+        AZQB/wKBAXQB/wGDAYUBgQH/AYEBggGBAf8BkgGVAZMB/wGZAZ4BnQH/AaQBqAGpAf8BmQGeAZ8B/wGh
+        AaYBpwH/AaIBqQGsAf8BqwGwAbMB/wG6Ab4BwwH/AbEBtQG6Af8BuwG/AcQB/wHEAcgBzQH/AcEBxQHK
+        Af8BxgHKAc8B/wHVAdkB3gH/AcwB0AHVAf8B1QHZAd4B/wHTAdgB2wH/AdgB3QHeAf8B1wHbAdwB/wHa
+        Ad4B3wH/AdQB2AHZAf8B1QHZAdoB/wHVAdkB2gH/AdUB2QHaAf8B1QHZAdoB/wHVAdkB2gH/AdgB2gHb
+        Af8B2AHaAdsB/wHaAdkB2wH/A9sB/wHYAtoB/wHXAtkB/wHVAdcB2AH/AdYB2AHZAf8B1QHXAdgB/wHV
+        AdcB2AH/AdYC2AH/AdYC2AH//wD/AP8A/wD/AC0AAcsB0QHWAf8BygHQAdUB/wHFAc4B0gH/AcMBywHS
+        Af8BwQHKAdMB/wHBAcoB0wH/AcAByQHTAf8BwQHKAdQB/wHCAcsB1AH/AcIBywHUAf8BwgHLAdQB/wHE
+        Ac0B1gH/AcQBywHUAf8BuAHAAccB/wGkAaoBrwH/AYEBhgGJAf8BXAFfAWMB/wE5ATsBPAH/A0gB/wFQ
+        AU0BSQH/AZ4BmwGTAf8BwgG9AbQB/wG/AbgBrwH/AcMBvAGzAf8BsgGsAaEB/wGzAa0BogH/AcgBwAGz
+        Af8B0AHHAbkB/wHFAbwBrgH/AdEByQG4Af8BywHCAbQB/wHGAb0BrwH/AdAByQG6Af8B1QHOAb8B/wHZ
+        AdEBxAH/AcsBwwG2Af8B0gHKAb0B/wHMAcQBtwH/AdUBzAG/Af8BzQHEAbcB/wHPAcYBuQH/AdUBzAG/
+        Af8BzwHGAbgB/wHSAckBuwH/AccBvgGwAf8B1QHMAb4B/wHSAccBuQH/AcoBvwGxAf8ByQG+AbAB/wHO
+        AcMBtQH/Ac0BxAG2Af8B1gHNAb8B/wG4Aa8BoQH/AawBpAGTAf8BmgGQAYEB/wGdAZEBgQH/AZEBhgF0
+        Af8BkwGFAXQB/wGvAaQBkAH/AcUBuQGnAf8BzQHDAbEB/wHIAb4BrQH/AcwBwgGxAf8BzQHEAbYB/wHO
+        AccBuAH/AacBnwGSAf8BmwGVAYgB/wGRAYsBgQH/AZ4BmgGPAf8BhQGDAXoB/wGOAY0BgwH/AYABeQFx
+        Af8CgQGAAf8BgQGCAYEB/wGUAZcBlQH/AZEBlgGVAf8BkQGXAZYB/wGWAZwBmwH/AawBsAGxAf8BrAGx
+        AbQB/wGvAbQBtwH/AbwBwQHEAf8BuQG9AcIB/wHBAcUBygH/AcIBxgHLAf8ByQHPAdQB/wHKAc4B0wH/
+        AdIB1gHbAf8B1AHZAdwB/wHYAd0B4AH/AdkB3QHeAf8B2QHdAd4B/wHVAdkB2gH/AdYB2gHbAf8B2wHd
+        Ad4B/wHbAd0B3gH/AdkB3gHdAf8B2AHcAd0B/wHZAdsB3AH/AdcB2QHaAf8B1wHZAdoB/wHVAdcB2AH/
+        AdYB2AHZAf8B1gHYAdkB/wHTAdYB2gH/AdIB1gHXAf8B0wHVAdYB/wHTAdUB1gH/AdIB1AHVAf8B0gHU
+        AdUB//8A/wD/AP8A/wAtAAHKAdAB1QH/AckBzwHUAf8ByAHOAdMB/wHGAc8B0wH/AcUBzQHUAf8BwQHK
+        AdMB/wG/AcgB0QH/AcEBygHUAf8BwQHKAdMB/wHBAcoB0wH/AcIBywHUAf8BwgHLAdQB/wHBAcoB1AH/
+        AcAByQHTAf8BxAHLAdQB/wHGAc4B1QH/AbsBwQHIAf8BiQGMAZAB/wM9Af8BawFoAWMB/wG3AbIBqQH/
+        AbUBrwGkAf8BuAGyAacB/wGwAaoBnwH/AZgBkgGHAf8BwAG4AasB/wHEAbsBrQH/AcABuAGnAf8BxgG+
+        Aa0B/wHDAbsBqgH/AcYBvQGvAf8BwwG6AawB/wHPAcgBuQH/AdEBygG7Af8B1QHNAcAB/wHIAcABswH/
+        AdIBygG9Af8BywHDAbYB/wHTAcoBvQH/AdEByAG7Af8BzwHGAbkB/wHVAcwBvgH/Ac4BxQG3Af8B1gHN
+        Ab8B/wHRAcgBugH/Ac0BxAG2Af8B0gHHAbkB/wHGAbwBqwH/AccBvQGsAf8BygHAAa8B/wHTAcgBugH/
+        AcwBwwG1Af8BzQHCAbQB/wHOAcQBswH/AbcBrQGcAf8BlAGIAXgB/wGLAYEBbgH/AYsBgQFuAf8BngGQ
+        AYEB/wGaAY8BgQH/AbABpgGUAf8ByAG+AawB/wHUAcoBuAH/AdABxgG0Af8B2wHRAcAB/wHQAcYBtQH/
+        Ab4BtQGnAf8BqQGiAZMB/wGQAYkBgQH/AY0BhwGBAf8BkAGMAYEB/wGIAYMBgQH/AXgBdgFsAf8BeAF2
+        AW4B/wJ6AXQB/wF2AXoBdQH/AXkBgQF4Af8BgQGDAYEB/wGMAZEBkAH/AZ8BowGkAf8BowGoAakB/wGh
+        AaYBqQH/AasBsAGzAf8BsgG2AbsB/wGvAbUBugH/AbABtgG7Af8BuwG/AcQB/wHCAcYBywH/AcUBygHN
+        Af8BywHQAdMB/wHQAdMB1wH/Ac8B0wHUAf8B0QHVAdYB/wHTAdgB1wH/AdgB2gHbAf8B1gHYAdkB/wHU
+        AdkB2AH/AdYB2gHbAf8B0wHXAdgB/wHWAdgB2QH/AdQB1gHXAf8B1AHWAdcB/wHUAdUB2QH/AdUB1gHa
+        Af8B0gHVAdkB/wHRAdQB2AH/AdAB1AHVAf8B0gHUAdUB/wHRAdMB1AH/AdIB1AHVAf//AP8A/wD/AP8A
+        LQABywHRAdYB/wHKAdAB1QH/AcoB0AHVAf8BygHQAdUB/wHIAdEB1QH/AcYBzgHVAf8BxQHMAdUB/wHD
+        AcoB0wH/AcAByQHSAf8BwQHKAdMB/wHCAckB0gH/AcEByAHRAf8BvgHHAdEB/wHAAckB0wH/AcAByQHT
+        Af8BwwHKAdMB/wHBAcgB0QH/Ab8BwwHIAf8DpgH/AaEBnQGYAf8BswGsAaMB/wG0AawBnwH/AbUBrQGg
+        Af8BlQGNAYEB/wGsAaUBlgH/Ab8BtwGmAf8BvQG1AaQB/wG/AbUBpAH/AcIBuAGnAf8BwwG5AagB/wHB
+        AbkBqAH/AcIBugGpAf8BywHCAbQB/wHQAccBuQH/Ac8BxgG4Af8BxwG+AbAB/wHJAcABsgH/Ac0BxAG2
+        Af8B0QHGAbgB/wHSAccBuQH/Ac8BxgG4Af8BzgHFAbcB/wHQAcUBtwH/AdIBxwG5Af8B0gHIAbcB/wHQ
+        AcYBtQH/AcoBvQGtAf8ByAG7AasB/wHJAbwBrAH/AcwBwAGuAf8B0QHEAbQB/wHLAcEBsAH/AcgBuwGr
+        Af8ByAG7AasB/wHJAbwBrAH/AcEBtAGkAf8BqAGcAYoB/wGOAYQBdAH/AY0BgQFxAf8BmwGRAYEB/wGf
+        AZYBggH/AZ0BlAGBAf8BrgGjAY8B/wHGAbsBpwH/AdEBxQGzAf8ByQG9AasB/wHJAbwBrAH/Ac4BxAGz
+        Af8BvwG1AaMB/wGVAY0BgQH/AYUBgQFxAf8BhgGBAXUB/wKBAXIB/wF4AXYBbAH/AXMBcgFoAf8BZQFm
+        AV0B/wFiAWMBWgH/AW0BbwFpAf8BdwF6AXgB/wGBAYUBhAH/AYkBjwGOAf8BkQKZAf8BmgGfAaAB/wGf
+        AaQBpwH/AaIBqQGsAf8BpwGuAbEB/wGqAbABtQH/AbABtgG7Af8BtgG8AcEB/wG9AcIBxQH/AcMBxgHK
+        Af8BygHOAc8B/wHPAdMB1AH/AdIB1gHXAf8B1gHYAdkB/wHXAdkB2gH/AdUB2QHaAf8B0wHYAdkB/wHT
+        AdgB2QH/AdQB2AHZAf8B0wHXAdgB/wHSAdYB1wH/AdMB1QHWAf8B0wHVAdYB/wHRAdUB1gH/AdEB1QHW
+        Af8BzwHTAdQB/wHPAdMB1AH/Ac8B1AHTAf8BzwHUAdMB//8A/wD/AP8A/wAtAAHMAdIB1wH/AcsB0QHW
+        Af8BzgHSAdcB/wHNAdEB1gH/AcwB0gHXAf8ByQHSAdYB/wHHAc8B1gH/AcYBzQHWAf8BxgHNAdYB/wHG
+        Ac0B1gH/AcQBywHUAf8BwgHJAdIB/wG/AcgB0gH/Ab8ByAHSAf8BvwHIAdIB/wG/AcgB0gH/AbwBwwHM
+        Af8BtQG4Ab0B/wGhAZ8BngH/AbIBrAGlAf8BsAGqAZ8B/wG2Aa4BoQH/AZ0BlQGIAf8BnwGYAYkB/wG9
+        AbQBpgH/Ab4BtgGlAf8BvwG1AaMB/wHDAbkBpwH/AcIBuAGnAf8BwwG5AagB/wHBAbkBqAH/AcIBugGp
+        Af8BwwG6AawB/wHEAbsBrQH/Ab0BtAGmAf8BwgG6AakB/wHCAboBqQH/AcMBuwGqAf8BxAG6AakB/wHF
+        AbsBqgH/AcYBvAGrAf8BxgG8AasB/wHFAboBrAH/AcYBvAGrAf8BxgG8AasB/wHGAbwBqwH/AcgBuwGr
+        Af8ByAG7AasB/wHIAbwBqgH/AckBvQGrAf8BygG9Aa0B/wHJAbwBrAH/AckBvQGrAf8ByQG9AasB/wHI
+        AbsBqwH/AckBvAGsAf8BxwG9AasB/wG+AbQBogH/AaIBmAGGAf8BiwGBAXEB/wGKAYEBbwH/AYwBgwFx
+        Af8BjQGCAXAB/wGRAYQBcAH/AaABkgGBAf8BvgGwAZ0B/wHLAb0BqgH/AcsBvQGqAf8BxwG8AagB/wHE
+        AbsBpwH/AbcBrQGcAf8BmAGPAYEB/wGNAYUBegH/AYoBhAF5Af8CgQFvAf8BdwF1AWoB/wF0AXMBaQH/
+        AWcBaAFfAf8BYwFlAV8B/wFuAXIBbQH/AXkCgQH/AYEBhwGEAf8BiQGPAY4B/wGQAZUBlgH/AZcBnAGf
+        Af8BmwGiAaUB/wGgAacBqgH/AaYBrQGwAf8BqwGxAbYB/wG0AbkBvAH/Ab8BwgHGAf8BxQHJAcoB/wHL
+        Ac8B0AH/Ac8B0wHUAf8B0gHUAdUB/wHTAdUB1gH/AdIB1gHXAf8B0QHWAdcB/wHSAdcB1gH/AdEB1gHV
+        Af8B0QHVAdYB/wHSAdYB1wH/AdMB1QHWAf8B0gHUAdUB/wHRAdUB1gH/AdAB1AHVAf8B0QHVAdYB/wHP
+        AdMB1AH/AdAB1QHUAf8B0QHWAdUB//8A/wD/AP8A/wAtAAHPAdQB1wH/Ac8B1AHXAf8BzwHUAdcB/wHP
+        AdQB1wH/Ac8B0wHYAf8BywHRAdYB/wHKAdAB1QH/AccBzwHWAf8BxQHNAdQB/wHEAcwB0wH/AcQBywHU
+        Af8BwwHKAdMB/wHBAcoB0wH/Ab4ByQHRAf8BvgHHAdEB/wG+AcUBzgH/AbkBvwHGAf8BoAGiAaMB/wGu
+        AaoBpQH/AbABqgGfAf8BswGqAaAB/wGqAaIBlQH/AZUBjAGBAf8BuAGvAaEB/wHAAbUBpwH/AcIBuAGn
+        Af8BxgG8AasB/wHEAboBqQH/AcEBuQGoAf8BwQG5AagB/wHDAbkBqAH/AcQBugGpAf8BxQG7AaoB/wHA
+        AbYBpQH/AcMBuQGoAf8BxAG6AakB/wHDAbkBqAH/AcQBugGoAf8BxgG6AagB/wHGAbkBqQH/AcYBuQGp
+        Af8BxgG5AakB/wHHAboBqgH/AccBugGqAf8BxgG5AakB/wHIAbwBqgH/AccBvQGrAf8BxwG9AasB/wHH
+        Ab0BqwH/AcYBvAGqAf8ByQG9AasB/wHJAb0BqwH/AckBvQGrAf8ByQG9AasB/wHIAbsBqwH/AcgBuwGr
+        Af8ByAG8AaoB/wHJAb0BqwH/AckBvgGqAf8BvAGxAZ0B/wGcAZIBgQH/AYsBgQFxAf8BigGBAW4B/wGO
+        AYEBbwH/AY0BgQFsAf8BjgGBAWwB/wGhAZMBgQH/AcABsgGcAf8BygG9AacB/wHGAbsBpwH/AcUBugGm
+        Af8BxAG6AagB/wGyAaoBmQH/AZcBkAGBAf8BjwGKAYEB/wGJAYYBegH/AoEBcgH/AXgBdwFtAf8BcgFx
+        AWcB/wFlAWYBXQH/AWQBZgFgAf8BcAF0AW8B/wOBAf8BhQGKAYkB/wGQAZQBlQH/AZUBmgGdAf8BmgGf
+        AaIB/wGgAaUBpgH/AaYBqwGuAf8BsgG2AbcB/wG8AcABwQH/AccCyQH/Ac4C0AH/AdEC0wH/AdMC1QH/
+        AdQC1gH/AdYC2AH/AdUB2gHZAf8B1wHZAdoB/wHYAdoB2wH/AdcB2QHaAf8B2AHaAdsB/wHWAtgB/wHW
+        AtgB/wHVAtcB/wHVAtcB/wHUAdYB1wH/AdMB1QHWAf8B1ALWAf8B0gLUAf//AP8A/wD/AP8ALQABzwHU
+        AdcB/wHPAdQB1wH/Ac8B1AHXAf8BzwHTAdgB/wHPAdMB2AH/Ac8B0wHYAf8BzQHTAdgB/wHLAdEB1gH/
+        AcgB0AHXAf8BxwHPAdYB/wHFAcwB1QH/AcUBzAHVAf8BwQHKAdMB/wHAAckB0gH/Ab4BxwHQAf8BvAHC
+        AckB/wGoAasBrwH/AaUBowGiAf8BsAGqAaMB/wGxAagBngH/AbMBqwGeAf8BlAGNAYEB/wGtAaQBlwH/
+        Ab4BtQGnAf8BwQG3AaYB/wHAAbYBpQH/AcMBuQGoAf8ByAG+Aa0B/wHCAboBqQH/AcIBugGpAf8BwwG5
+        AagB/wHEAboBqQH/AcIBuAGnAf8BvgG0AaMB/wHDAbkBqAH/AcQBugGpAf8BwwG5AacB/wHEAboBqAH/
+        AcYBugGoAf8BxgG6AagB/wHGAbkBqQH/AcYBuQGpAf8BxwG6AaoB/wHIAbsBqwH/AcgBvAGqAf8ByAG8
+        AaoB/wHFAbsBqQH/AcYBvAGqAf8BxgG8AaoB/wHGAbwBqgH/AcgBvAGqAf8ByAG8AaoB/wHIAbwBqgH/
+        AcgBvAGqAf8ByAG7AasB/wHIAbsBqwH/AcgBvAGqAf8BxwG7AakB/wHKAbwBqQH/AcgBvQGpAf8BxwG7
+        AakB/wG1AasBmQH/AZoBjgGBAf8BjQGCAXAB/wGNAYEBbAH/AY4BgQFtAf8BjgGBAWwB/wGOAYEBbAH/
+        AaEBlAGBAf8BvwGyAZwB/wHJAbwBpgH/AcgBugGnAf8BxAG5AaUB/wHCAbgBpgH/AbABqAGXAf8BmAGR
+        AYIB/wGQAYoBgQH/AYgBhQF5Af8CgQFyAf8BegF4AW0B/wFwAXEBZwH/AWQBZQFcAf8BZAFmAWAB/wFz
+        AXQBcgH/A4EB/wGEAYkBiAH/AY4BkwGSAf8BmwGgAZ8B/wGlAaoBqQH/AbMCtQH/Ab8CwQH/AcgByQHH
+        Af8ByALKAf8BywLNAf8BzgLQAf8B0ALSAf8B0QLTAf8B0wLVAf8B0wHVAdYB/wHUAdYB1wH/AdQB1gHX
+        Af8B1ALWAf8B1ALWAf8B1QLXAf8B1ALWAf8B1ALWAf8B0wHVAdYB/wHSAdQB1QH/AdIC1AH/AdMC1QH/
+        /wD/AP8A/wD/AC0AAcwB0gHXAf8BywHRAdYB/wHNAdEB1gH/Ac4B0gHXAf8BzAHSAdcB/wHMAdIB1wH/
+        AcwB0gHXAf8BywHRAdYB/wHKAdAB1QH/AcoB0AHVAf8BxwHPAdYB/wHGAc4B1QH/AcQBzAHTAf8BxAHM
+        AdMB/wG+AcYBzQH/AbUBuQG+Af8BoAGhAZ8B/wGwAa0BpQH/AbABqQGgAf8BtQGtAaAB/wGcAZUBhgH/
+        AaABmQGIAf8BvAGzAaUB/wG/AbUBpAH/Ab0BtQGkAf8BvwG3AaYB/wHAAbYBpQH/AcABtgGlAf8BxAG6
+        AakB/wHIAb4BrQH/AcUBuwGqAf8BwwG5AagB/wG9AbMBogH/AcIBuAGnAf8BxQG4AagB/wHFAbgBqAH/
+        AcMBuQGoAf8BwwG5AagB/wHGAboBqAH/AcYBugGoAf8BxgG5AakB/wHHAboBqgH/AcgBuwGrAf8BxwG6
+        AaoB/wHGAboBqAH/AccBuwGpAf8BxwG6AaoB/wHIAbsBqwH/AccBuwGpAf8BxwG7AakB/wHHAbsBqQH/
+        AccBuwGpAf8ByQG+AaoB/wHIAb0BqQH/AcgBvAGqAf8ByAG8AaoB/wHIAbwBqgH/AcgBvAGqAf8ByAG8
+        AaoB/wHJAb0BqwH/AcgBvAGqAf8ByAG8AaoB/wHIAbwBqgH/AbQBqAGWAf8BmwGQAYEB/wGPAYQBcgH/
+        AY8BgQFwAf8BjQGBAWwB/wGNAYEBbAH/AY0BgQFsAf8BpgGWAYEB/wHDAbMBnAH/AcoBuwGoAf8BxwG5
+        AaYB/wHEAbgBpgH/AcMBuQGnAf8BsQGpAZgB/wGXAZABgQH/AZABigGBAf8BigGGAYEB/wKBAXMB/wF5
+        AXgBbgH/AXIBcAFoAf8BZQFjAVsB/wJnAWEB/wFyAXMBbwH/AYEBggGBAf8BlQGZAZQB/wGkAagBogH/
+        AbIBswGvAf8BvAG7AbcB/wHBAcABvAH/AcEBwgHAAf8BxQHGAcQB/wPJAf8DygH/AcsCzQH/Ac4C0AH/
+        AdAC0gH/AdEC0wH/AdIC1AH/AdMC1QH/AdMC1QH/AdIB1AHVAf8B0AHUAdUB/wHQAdQB1QH/AdEB0wHU
+        Af8B0QHTAdQB/wHQAdIB0wH/AdAB0gHTAf//AP8A/wD/AP8ALQABzAHSAdcB/wHLAdEB1gH/Ac0B0AHY
+        Af8BzgHRAdkB/wHNAdEB1gH/Ac0B0wHYAf8BywHRAdYB/wHLAdEB1gH/AcsB0QHWAf8BywHRAdYB/wHI
+        AdAB1wH/AcgB0AHXAf8ByAHQAdcB/wHHAc0B0gH/AcMBxwHMAf8BpgKoAf8BrgGrAaYB/wGuAaoBnwH/
+        AbABqgGfAf8BpgGeAZEB/wGWAY8BgQH/AbgBsAGfAf8BvAG0AaMB/wHAAbYBpQH/Ab4BtgGlAf8BvgG2
+        AaUB/wHBAbcBpgH/AcABtgGlAf8BwQG3AaYB/wHCAbgBpwH/AcYBvAGrAf8BxwG9AawB/wHCAbgBpwH/
+        AcMBuQGoAf8BxAG3AacB/wHFAbgBqAH/AcMBuQGoAf8BxAG6AakB/wHGAboBqAH/AccBuwGpAf8BxgG5
+        AakB/wHGAbkBqQH/AcYBuQGpAf8BxgG5AakB/wHFAbkBpwH/AccBuwGpAf8BxwG6AaoB/wHHAboBqgH/
+        AccBuwGpAf8BxwG7AakB/wHHAbsBqQH/AccBuwGpAf8ByAG9AakB/wHHAbwBqAH/AccBuwGpAf8BxwG7
+        AakB/wHHAbsBqQH/AcgBvAGqAf8BxwG7AakB/wHJAb0BqwH/AccBuwGpAf8ByAG8AaoB/wHHAbsBqQH/
+        AcgBvAGqAf8BxwG7AakB/wGyAagBlgH/AZsBkAGBAf8BkAGFAXMB/wGLAYEBbAH/AY0BgQFsAf8BjQGB
+        AWoB/wGPAYEBagH/AaUBlwGBAf8BwwG1AZ8B/wHIAboBpwH/AccBuQGmAf8BwwG4AaQB/wHCAbgBpgH/
+        Aa4BpgGVAf8BlwGQAYEB/wGRAYsBgQH/AYkBhgF6Af8CgQFyAf8BegF4AW4B/wFwAW8BZQH/AWoBawFi
+        Af8BggGDAYEB/wGbAZwBkwH/AawBrQGkAf8BtQG2Aa0B/wK6AbQB/wK+AbgB/wHCAcEBvQH/AcIBwwG/
+        Af8BxQHGAcQB/wPGAf8DygH/AcoCzAH/AcwCzgH/Ac8C0QH/AdEC0wH/AdMC1QH/AdQB1gHXAf8B0gHU
+        AdUB/wHQAdQB1QH/AdAB1AHVAf8B0gHUAdUB/wHSAdQB1QH/AdEB0wHUAf8B0AHSAdMB//8A/wD/AP8A
+        /wAtAAHOAdMB1gH/Ac4B0wHWAf8BzQHRAdYB/wHNAdEB1gH/Ac0B0QHWAf8BzQHRAdYB/wHMAdIB1wH/
+        AcoB0AHVAf8BywHRAdYB/wHLAdEB1gH/AcoB0AHXAf8BywHRAdgB/wHKAdAB1QH/AcYBywHOAf8BsQKz
+        Af8BqQGmAaIB/wGxAawBowH/Aa8BqQGeAf8BsAGnAZ0B/wGSAYoBgQH/Aa4BpQGXAf8BugGyAaEB/wG8
+        AbQBowH/Ab4BtgGlAf8BvgG2AaUB/wG+AbYBpQH/AcABtgGlAf8BwAG2AaUB/wHDAbYBpgH/AcMBtgGm
+        Af8BwAG2AaUB/wHAAbYBpQH/AcABtgGlAf8BwgG4AacB/wHEAbcBpwH/AcQBtwGnAf8BwwG5AagB/wHE
+        AboBqQH/AcQBugGpAf8BxAG6AakB/wHFAbkBpwH/AcUBuQGnAf8BxgG6AagB/wHGAboBqAH/AcYBuQGp
+        Af8BxwG6AaoB/wHHAbsBqQH/AcYBugGoAf8BxgG6AagB/wHGAboBqAH/AcgBugGoAf8ByQG7AakB/wHJ
+        AbsBqQH/AckBuwGpAf8BxwG7AakB/wHIAbwBqgH/AccBuwGpAf8BxwG7AakB/wHHAbsBqQH/AccBuwGp
+        Af8BxgG6AagB/wHGAboBqAH/AccBuQGnAf8BxgG6AagB/wHFAbkBpwH/AcgBvAGqAf8BxgG7AacB/wG0
+        AakBlQH/AZsBkAGBAf8BkQGGAXQB/wGQAYIBcQH/AY4BgQFvAf8BjAGBAWsB/wGOAYIBbAH/AakBmwGF
+        Af8BwwG1AZ8B/wHIAbsBpQH/AcYBuQGjAf8BxQG3AaQB/wHCAbYBpAH/Aa0BpQGUAf8BlwGQAYEB/wGS
+        AYwBgQH/AYgBhAGAAf8CgQFzAf8BgAF6AXAB/wGBAXoBcAH/AZIBkAGFAf8CqQGdAf8BrgGwAaQB/wGy
+        AbMBqgH/AbYBtwGuAf8CugG0Af8CvAG2Af8BvwG+AboB/wHAAcEBvwH/AcQBxQHDAf8BxwHIAcYB/wHG
+        AsgB/wHJAssB/wHMAs4B/wHMAs4B/wHOAtAB/wHQAtIB/wHPAdMB1AH/AdAB1AHVAf8B0gLUAf8B0QLT
+        Af8BzwHRAdIB/wHQAdIB0wH//wD/AP8A/wD/AC0AAc0B0gHVAf8BzgHTAdYB/wHOAdMB1gH/Ac4B0gHX
+        Af8BzwHTAdgB/wHOAdIB1wH/Ac4B0gHXAf8BywHRAdYB/wHKAdAB1QH/AcsB0QHWAf8BywHRAdYB/wHL
+        AdEB1gH/AcsB0AHTAf8BwAHFAcQB/wGkAaMBnwH/AbIBrAGlAf8BrgGoAZ0B/wGzAasBngH/AZgBkAGD
+        Af8BogGbAYwB/wG6AbIBoQH/AbwBtAGjAf8BvAG0AaMB/wG9AbUBpAH/Ab0BtQGkAf8BvAG0AaMB/wHA
+        AbYBpQH/AcABtgGlAf8BwgG1AaUB/wHCAbUBpQH/AcABtgGlAf8BwAG2AaUB/wHBAbcBpgH/AcEBtwGm
+        Af8BwwG2AaYB/wHFAbgBqAH/AcMBuQGoAf8BwwG5AagB/wHDAbkBqAH/AcMBuQGoAf8BxQG5AacB/wHG
+        AboBqAH/AcYBugGoAf8BxgG6AagB/wHGAbkBqQH/AcYBuQGpAf8BxgG6AagB/wHGAboBqAH/AcYBugGo
+        Af8BxgG6AagB/wHIAboBqAH/AcgBugGoAf8ByAG6AagB/wHIAboBqAH/AccBuwGpAf8BxwG7AakB/wHG
+        AboBqAH/AcYBugGoAf8BxgG6AagB/wHGAboBqAH/AcYBugGoAf8BxgG6AagB/wHHAbkBpwH/AckBuwGp
+        Af8BxQG5AacB/wHGAboBqAH/AcYBuwGnAf8ByAG9AakB/wHHAbwBqAH/AbMBqAGUAf8BnAGRAYEB/wGR
+        AYYBdAH/AY0BggFuAf8BjQGBAWwB/wGLAYEBagH/AY8BgQFsAf8BqQGbAYQB/wHGAbgBoQH/AckBuwGl
+        Af8BxgG5AaMB/wHEAbkBpQH/AcABtgGkAf8BqgGhAZMB/wGWAY4BgQH/AY8BjAGBAf8BiQGGAXoB/wGE
+        AYEBdwH/AYIBgQF1Af8BkAGPAYEB/wKoAZwB/wGrAaoBoAH/Aa8BsAGmAf8BsgGzAakB/wG2AbcBrgH/
+        ArkBswH/Ab0BvAG4Af8BvgG/AbsB/wHBAcIBwAH/A8MB/wHEAsYB/wHHAskB/wHKAswB/wHMAs4B/wHO
+        AtAB/wHOAdIB0wH/Ac0B0QHSAf8B0ALSAf8B0ALSAf8B0AHSAdMB/wHPAdEB0gH//wD/AP8A/wD/AC0A
+        Ac0B0gHVAf8BzgHTAdYB/wHOAdMB1gH/Ac4B0wHWAf8BzwHUAdcB/wHPAdQB1wH/Ac8B1AHXAf8BzwHU
+        AdcB/wHMAdMB1gH/Ac0B1AHXAf8BzwHUAdcB/wHNAdIB1QH/AckBzQHOAf8BqgGrAakB/wGwAa0BpQH/
+        Aa8BqQGeAf8BsAGnAZ0B/wGkAZwBjwH/AZgBjwGCAf8BtwGuAaAB/wG7AbQBowH/AbsBswGiAf8BvAGz
+        AaUB/wG+AbMBpQH/AbwBtAGjAf8BvQG1AaQB/wHAAbYBpQH/AcABtgGlAf8BvgG0AaMB/wHAAbYBpQH/
+        AcIBtwGpAf8BwAG1AacB/wHBAbcBpgH/AcEBtwGmAf8BwgG4AacB/wHDAbkBqAH/AcIBuAGnAf8BwwG5
+        AagB/wHEAbcBpwH/AcUBuAGoAf8BxQG5AacB/wHGAboBqAH/AcUBuQGnAf8BxQG5AacB/wHEAboBqAH/
+        AcQBugGoAf8BxgG6AagB/wHGAboBqAH/AcYBugGoAf8BxgG6AagB/wHIAboBpwH/AcgBugGnAf8BxgG6
+        AagB/wHGAboBqAH/AcYBugGoAf8BxwG7AakB/wHIAboBqAH/AccBuQGnAf8ByAG6AagB/wHGAboBqAH/
+        AcYBugGoAf8BxgG6AagB/wHHAbkBpwH/AccBuQGnAf8BxQG5AacB/wHFAbkBpwH/AcgBugGnAf8ByAG6
+        AacB/wHIAboBqAH/AckBuwGoAf8ByAG6AacB/wGxAaYBkgH/AZsBkAGBAf8BkgGHAXUB/wGOAYMBcQH/
+        AY4BgQFtAf8BjAGBAWkB/wGQAYIBbQH/Aa0BnwGIAf8BxQG3AaAB/wHHAboBpAH/AcQBtwGhAf8BxQG3
+        AaQB/wHAAbQBogH/AaUBnQGMAf8BlQGOAYEB/wGRAYsBgQH/AYoBhwGAAf8BhgGCAXkB/wGSAZABhQH/
+        AqMBlwH/AqcBmwH/AqwBoAH/AbABrwGlAf8BsQGyAakB/wK1Aa8B/wG4AbcBswH/AbkBugG2Af8BvgG/
+        Ab0B/wHCAcMBwQH/AcMCxQH/AcgCygH/AckBzQHOAf8BzAHQAdEB/wHNAdEB0gH/Ac4B0gHTAf8B0QHT
+        AdQB/wHQAdIB0wH/Ac8B0QHSAf8BzwHRAdIB//8A/wD/AP8A/wAtAAHNAdIB1QH/Ac4B0wHWAf8BzwHU
+        AdUB/wHOAdMB1AH/AcwB0wHWAf8BywHSAdUB/wHPAdQB1wH/Ac8B1AHXAf8BzAHTAdYB/wHNAdQB1wH/
+        Ac4B0wHWAf8BzAHQAdEB/wO+Af8BqQGmAaIB/wGzAawBowH/AbABpwGdAf8BrAGkAZcB/wGSAYoBgQH/
+        AbEBqAGaAf8BugGxAaMB/wG7AbMBogH/AbsBswGiAf8BvQGyAaQB/wG+AbQBowH/AbwBtAGjAf8BvQG1
+        AaQB/wG/AbUBpAH/Ab8BtQGkAf8BvwG1AaQB/wG/AbUBpAH/AcABtQGnAf8BwAG1AacB/wHAAbYBpQH/
+        AcEBtwGmAf8BwgG4AacB/wHCAbgBpwH/AcIBuAGnAf8BwgG4AacB/wHEAbcBpwH/AcUBuAGoAf8BxAG4
+        AaYB/wHFAbkBpwH/AcUBuQGnAf8BxQG5AacB/wHDAbkBpwH/AcMBuQGnAf8BxQG5AacB/wHFAbkBpwH/
+        AcYBugGoAf8BxgG6AagB/wHHAbkBpgH/AcgBugGnAf8BxgG6AagB/wHFAbkBpwH/AcYBugGoAf8BxwG7
+        AakB/wHHAbkBpwH/AccBuQGnAf8BxwG5AacB/wHHAbkBpwH/AcUBuQGnAf8BxQG5AacB/wHHAbkBpwH/
+        AcgBuAGnAf8ByAG6AagB/wHFAbkBpwH/AccBuQGmAf8BxwG5AaYB/wHHAbkBpwH/AccBuQGmAf8BxwG6
+        AaQB/wHJAbwBpgH/AcUBugGmAf8BtAGpAZUB/wGdAZIBgQH/AZUBiAF0Af8BkAGDAW8B/wGNAYEBawH/
+        AYwBgQFpAf8BkAGCAW0B/wGtAZ8BiAH/AckBuwGkAf8BxwG5AaIB/wHFAbcBoQH/AcIBtwGjAf8BvQGz
+        AaEB/wGlAZ0BjAH/AZUBjgGBAf8BkQGLAYEB/wGLAYgBgQH/AZkBmAGKAf8BogGhAZMB/wKkAZYB/wKn
+        AZsB/wGsAasBoQH/Aa0BrgGlAf8CsQGrAf8BtQG0AbAB/wG4AbkBtwH/AbsBvgG8Af8BwQLDAf8ByALK
+        Af8BygHOAc8B/wHMAdAB0QH/Ac0B0QHSAf8BzAHQAdEB/wHOAdAB0QH/Ac4B0AHRAf8BzgHQAdEB/wHN
+        Ac8B0AH//wD/AP8A/wD/AC0AAc0B0gHVAf8BzQHSAdUB/wHNAdIB1QH/AcwB0QHUAf8BzAHRAdQB/wHN
+        AdIB1QH/Ac0B0QHWAf8BzQHSAdUB/wHNAdIB1QH/Ac4B0wHWAf8BzgHRAdUB/wHJAcsBzAH/AaoBpwGj
+        Af8BsAGqAaMB/wGuAacBngH/AbEBqAGeAf8BlgGOAYEB/wGlAZ0BkAH/AbgBrwGhAf8BugGyAaEB/wG6
+        AbIBoQH/AbsBswGiAf8BvQGzAaIB/wG8AbIBoQH/Ab4BtAGjAf8BvwG1AaMB/wG/AbUBpAH/Ab8BtQGk
+        Af8BvwG1AaMB/wG+AbQBogH/AcIBtQGlAf8BwQG0AaQB/wHCAbUBpQH/AcMBtgGmAf8BwgG1AaUB/wHD
+        AbYBpgH/AcEBtwGmAf8BwgG4AacB/wHCAbcBqQH/AcIBuAGnAf8BxAG4AaYB/wHEAbkBpQH/AcQBuAGm
+        Af8BxAG4AaYB/wHCAbgBpgH/AcEBtwGlAf8BxQG5AacB/wHHAbkBpwH/AcUBuQGnAf8BxAG4AaYB/wHE
+        AbgBpgH/AcQBuAGmAf8BxQG5AacB/wHEAbgBpgH/AcYBuAGmAf8BxwG5AacB/wHFAbkBpwH/AcUBuQGn
+        Af8BxwG5AaYB/wHGAbgBpQH/AcYBuAGlAf8BxQG3AaQB/wHHAbcBpgH/AccBtwGmAf8BxgG4AaUB/wHG
+        AbgBpQH/AcYBuAGmAf8BxwG5AacB/wHIAboBpwH/AcYBuAGlAf8BxgG5AaMB/wHHAboBpAH/AccBugGk
+        Af8ByAG7AaUB/wHGAbkBowH/AbcBqgGUAf8BoQGUAYEB/wGTAYgBdAH/AY8BggFuAf8BjQGBAWwB/wGL
+        AYEBaAH/AZEBgwFuAf8BsAGgAYkB/wHLAbsBpAH/AcYBuAGiAf8BxAG3AaEB/wHDAbUBogH/AbsBrwGd
+        Af8BpAGaAYkB/wGVAY4BgQH/AZUBkAGBAf8BnQGaAYsB/wKfAY8B/wGiAaEBkwH/AaYBpQGXAf8CqgGe
+        Af8BrAGtAaMB/wKzAa0B/wG4AbkBtwH/Ab8CwQH/AcYByAHJAf8ByQHNAc4B/wHOAdAB0QH/Ac8B0QHS
+        Af8BzgHTAdIB/wHMAdEB0AH/Ac4B0AHRAf8BzwHRAdIB/wHOAtAB/wHNAs8B//8A/wD/AP8A/wAtAAHN
+        AdIB1QH/Ac0B0gHVAf8BzgHTAdYB/wHNAdIB1QH/Ac0B0gHVAf8BzgHTAdYB/wHOAdIB1wH/Ac4B0gHX
+        Af8BzgHTAdYB/wHMAdEB1AH/Ac0B0AHUAf8DsQH/AbABrQGlAf8BrgGoAZ0B/wGuAaUBmwH/AZ8BlgGM
+        Af8BnAGUAYcB/wG2Aa0BnwH/AbgBsAGfAf8BuAGwAZ8B/wG7AbMBogH/AboBsgGhAf8BvQGzAaIB/wG8
+        AbIBoQH/Ab0BswGhAf8BvgG0AaIB/wG+AbQBowH/Ab8BtQGkAf8BvwG1AaMB/wG/AbUBowH/AcEBtAGk
+        Af8BwQG0AaQB/wHDAbQBpAH/AcQBtQGlAf8BwgG1AaUB/wHCAbUBpQH/AcEBtwGmAf8BwQG3AaYB/wHA
+        AbUBpwH/AcIBuAGnAf8BxAG4AaYB/wHEAbkBpQH/AcQBuAGmAf8BxAG4AaYB/wHCAbgBpgH/AcMBtwGl
+        Af8BxgG4AaYB/wHGAbgBpgH/AcQBuAGmAf8BxAG4AaYB/wHEAbgBpgH/AcQBuAGmAf8BxgG6AagB/wHE
+        AbgBpgH/AcYBuAGmAf8BxgG4AaYB/wHGAbgBpgH/AcQBuAGmAf8BxgG4AaUB/wHGAbgBpQH/AcUBtwGk
+        Af8BxQG3AaQB/wHGAbYBpQH/AcYBtgGlAf8BxQG3AaQB/wHFAbcBpAH/AcUBtwGlAf8BxgG4AaYB/wHG
+        AbgBpQH/AcYBuAGlAf8BxgG5AaMB/wHGAbkBowH/AcYBuQGjAf8BxQG4AaIB/wHGAbkBowH/AccBugGk
+        Af8BxwG5AaYB/wG3AawBmAH/AaIBlwGDAf8BlgGJAXUB/wGQAYMBbwH/AY0BgQFqAf8BjAGBAWcB/wGS
+        AYIBbQH/AbEBowGMAf8BxgG4AaEB/wHFAbcBoAH/AcMBtQGfAf8BwAG1AZ8B/wG1AawBmAH/AZ8BmAGF
+        Af8BlAGNAYEB/wGZAZUBgwH/AaEBngGPAf8BpQGkAZYB/wGsAaoBnwH/AbEBsgGoAf8BuQG7AbUB/wHA
+        AcMBwQH/AcoCzAH/AcwB0AHRAf8BzgHSAdMB/wHRAdMB1AH/AdEB0wHUAf8B0gLUAf8B0ALSAf8B0ALS
+        Af8B0AHSAdMB/wHQAtIB/wHPAtEB//8A/wD/AP8A/wAtAAHLAdAB0wH/Ac4B0wHWAf8BywHQAdMB/wHM
+        AdEB1AH/AcwB0QHSAf8BzAHRAdQB/wHKAdAB1QH/AcoB0AHVAf8BygHQAdUB/wHMAdEB1AH/A8EB/wGq
+        AacBogH/AbQBrQGkAf8BsAGnAZ0B/wGrAaIBmAH/AZMBiwGBAf8BsQGoAZoB/wG4AbABnwH/AbgBsAGf
+        Af8BuQGxAaAB/wG5AbIBnwH/AbkBsgGfAf8BvAGyAaEB/wG8AbIBoQH/AbwBtQGiAf8BuwG0AaEB/wG9
+        AbMBogH/Ab0BswGiAf8BvgG0AaIB/wG+AbQBogH/Ab4BtAGjAf8BvwG1AaQB/wHCAbYBpAH/AcIBtgGk
+        Af8BwgG1AaUB/wHCAbUBpQH/AcABtgGlAf8BvwG1AaQB/wHDAbYBpgH/AcMBtgGmAf8BwwG3AaUB/wHD
+        AbcBpQH/AcQBuAGmAf8BwwG3AaUB/wHDAbcBpQH/AcMBtwGlAf8BxQG3AaUB/wHFAbcBpQH/AcQBtgGk
+        Af8BxQG3AaUB/wHGAbgBpQH/AcYBuAGlAf8BxwG5AaYB/wHGAbgBpQH/AcUBtQGkAf8BxQG3AaUB/wHF
+        AbcBpAH/AcUBtwGkAf8BxQG3AaUB/wHFAbcBpAH/AcUBtwGkAf8BxQG3AaQB/wHGAbgBpgH/AcUBtwGl
+        Af8BxgG3AaQB/wHGAbcBpAH/AcUBtwGlAf8BxQG3AaUB/wHFAbcBpAH/AccBuQGmAf8BxgG3AaQB/wHH
+        AbgBpQH/AcUBuAGiAf8BxQG4AaIB/wHFAbgBogH/AcUBuAGiAf8BxQG4AaIB/wHGAbkBowH/AcgBuwGl
+        Af8BvQGwAZoB/wGnAZoBhAH/AZcBigF2Af8BkAGDAW8B/wGMAYEBawH/AYsBgQFoAf8BkAGCAW0B/wGw
+        AaABiQH/AccBuAGeAf8BwgG1AZsB/wHAAbQBnAH/AcEBtAGeAf8BtwGsAZgB/wGdAZYBgwH/AZIBjgGB
+        Af8BlgGTAYUB/wGrAakBnwH/AbkBugGxAf8BwQHCAb4B/wHJAssB/wHOAdAB0QH/AdAB0QHVAf8B0AHR
+        AdUB/wHQAdIB0wH/AdAB0gHTAf8B0QLTAf8D0gH/A9IB/wPRAf8B0ALSAf8B0ALSAf//AP8A/wD/AP8A
+        LQABywHQAdMB/wHKAc8B0gH/AcsB0AHTAf8BzAHRAdQB/wHLAdAB0QH/Ac0B0gHVAf8BywHSAdUB/wHL
+        AdEB1gH/AcoB0AHVAf8ByQHNAc4B/wGqAacBowH/AbIBrQGkAf8BsQGoAZ4B/wGxAakBnAH/AZQBjAGB
+        Af8BqAGgAZMB/wG2Aa0BnwH/AbcBrwGeAf8BuAGwAZ8B/wG4AbABnwH/AbcBsQGeAf8BuQGyAZ8B/wG7
+        AbEBoAH/AbsBsQGgAf8BugGzAaAB/wG6AbMBoAH/Ab0BswGiAf8BvQGzAaIB/wG9AbMBoQH/Ab0BswGh
+        Af8BvgG0AaMB/wG+AbQBowH/AcABtAGiAf8BwQG1AaMB/wHBAbQBpAH/AcIBtQGlAf8BwAG2AaUB/wG/
+        AbUBpAH/AcIBtQGlAf8BwwG2AaYB/wHCAbYBpAH/AcIBtgGkAf8BwwG3AaUB/wHCAbYBpAH/AcMBtwGl
+        Af8BwwG3AaUB/wHFAbcBpQH/AcUBtwGlAf8BxQG3AaUB/wHFAbcBpQH/AcUBtwGkAf8BxQG3AaQB/wHF
+        AbcBpAH/AcUBtwGkAf8BxQG3AaUB/wHGAbgBpgH/AcUBtwGkAf8BxQG3AaQB/wHFAbcBpQH/AcUBtwGl
+        Af8BxQG3AaQB/wHFAbcBpAH/AcUBtwGkAf8BxQG3AaQB/wHGAbcBpAH/AcYBtwGkAf8BxQG3AaUB/wHF
+        AbcBpQH/AcUBtwGkAf8BxQG3AaQB/wHGAbcBpAH/AcYBtwGkAf8BxQG4AaIB/wHEAbcBoQH/AcUBuAGi
+        Af8BxQG4AaIB/wHFAbcBoQH/AcYBuAGiAf8BxQG5AaEB/wHFAbgBogH/AcYBuQGjAf8BvgGxAZsB/wGq
+        AZwBiQH/AZkBjAF4Af8BkAGEAW4B/wGMAYEBaQH/AYsBgQFmAf8BkgGDAWsB/wGuAaEBhwH/AcIBtQGb
+        Af8BxAG0AZ0B/wHAAbIBnAH/Ab4BswGfAf8BrwGoAZUB/wGbAZIBhAH/AZEBiwGBAf8BoAGeAZQB/wLD
+        Ab0B/wHRAdIB0AH/A9IB/wHRAdMB1AH/AdEB0wHUAf8B0gHUAdUB/wHRAdMB1AH/A9IB/wPUAf8D0wH/
+        A9MB/wHQAtIB/wHPAtEB//8A/wD/AP8A/wAtAAHHAc4B0QH/AccBzgHRAf8BygHPAdIB/wHMAdEB1AH/
+        AcwB0QHUAf8BzAHRAdQB/wHLAdIB1QH/AcoB0QHUAf8BywHQAdMB/wG5ArsB/wGwAaoBowH/AbEBqAGe
+        Af8BrwGnAZoB/wGdAZUBiAH/AZ4BlgGJAf8BtgGtAZ8B/wG2Aa4BnQH/AbcBrwGeAf8BuAGwAZ8B/wG4
+        AbABnwH/AbkBsgGfAf8BuAGxAZ4B/wG6AbABnwH/AbsBsQGgAf8BuQGxAaAB/wG5AbEBoAH/AbwBsgGh
+        Af8BvQGzAaIB/wG9AbMBogH/Ab0BswGiAf8BvQGzAaIB/wG+AbQBowH/Ab4BtAGjAf8BvwG1AaQB/wHB
+        AbQBpAH/AcEBtAGkAf8BvwG0AaYB/wHAAbUBpwH/AcIBtQGlAf8BwgG1AaUB/wHEAbYBpAH/AcQBtgGk
+        Af8BwgG2AaQB/wHCAbYBpAH/AcIBtgGkAf8BwgG2AaQB/wHDAbcBpQH/AcMBtwGlAf8BwgG2AaQB/wHD
+        AbcBpQH/AcQBtgGkAf8BxAG2AaQB/wHDAbcBpQH/AcMBtwGlAf8BwgG2AaQB/wHEAbYBpAH/AcQBtgGk
+        Af8BwwG1AaMB/wHEAbYBpAH/AcMBtQGjAf8BwQG2AaIB/wHDAbgBpAH/AcQBtgGjAf8BwwG1AaIB/wHE
+        AbYBowH/AcQBtgGjAf8BxAG2AaMB/wHFAbcBpAH/AcQBtgGjAf8BxAG2AaMB/wHEAbYBowH/AcUBtwGk
+        Af8BxQG3AaQB/wHFAbcBpAH/AcQBtgGjAf8BxQG4AaIB/wHEAbcBoQH/AcQBuAGgAf8BxQG3AaEB/wHF
+        AbcBoQH/AcMBtgGgAf8BwwG3AZ8B/wHEAbcBoQH/Ab4BsgGaAf8BrQGhAYkB/wGbAY8BeQH/AZIBhAFv
+        Af8BigGBAWcB/wGJAYEBZgH/AZIBhAFvAf8BsAGgAYkB/wHBAbMBnAH/AcABsgGbAf8BvgGxAZsB/wG/
+        AbEBngH/AbABpAGSAf8BmQGSAYEB/wGRAY4BgQH/AakBpwGdAf8CygHEAf8BzwLRAf8BzQHRAdIB/wHN
+        AdEB0gH/AcwB0AHRAf8BzQLPAf8BzwLRAf8D0AH/A88B/wHPAdABzgH/Ac4BzwHNAf//AP8A/wD/AP8A
+        LQAByAHPAdIB/wHHAc4B0QH/AcoBzwHSAf8BygHPAdIB/wHLAdAB0wH/AcoBzwHSAf8ByQHQAdMB/wHK
+        AdEB1AH/Ac0B0gHTAf8BsQG0AbIB/wGwAasBogH/AbEBqQGcAf8BqAGgAZMB/wGVAY0BgQH/AbMBqgGc
+        Af8BtQGsAZ4B/wG2Aa4BnQH/AbYBrgGdAf8BtwGvAZ4B/wG3Aa8BngH/AbcBsAGdAf8BuAGxAZ4B/wG6
+        AbABnwH/AboBsAGfAf8BuQGxAaAB/wG4AbABnwH/AbsBsQGgAf8BuwGxAaAB/wG8AbIBoQH/AbwBsgGh
+        Af8BvgG0AaMB/wG+AbQBowH/Ab4BtAGjAf8BvgG0AaMB/wHBAbQBpAH/AcEBtAGkAf8BvwG0AaYB/wHA
+        AbUBpwH/AcEBtAGkAf8BwQG0AaQB/wHDAbUBowH/AcQBtgGkAf8BwgG2AaQB/wHCAbYBpAH/AcIBtgGk
+        Af8BwQG1AaMB/wHCAbYBpAH/AcIBtgGkAf8BwgG2AaQB/wHCAbYBpAH/AcQBtgGkAf8BxAG2AaQB/wHE
+        AbYBpAH/AcIBtgGkAf8BwQG1AaMB/wHBAbUBowH/AcMBtQGjAf8BwwG1AaMB/wHEAbYBpAH/AcQBtgGk
+        Af8BwQG2AaIB/wHCAbcBowH/AcQBtgGjAf8BxAG2AaMB/wHEAbYBowH/AcQBtgGjAf8BxAG2AaMB/wHE
+        AbYBowH/AcQBtgGjAf8BxAG2AaMB/wHFAbcBpAH/AcUBtwGkAf8BxAG2AaMB/wHEAbYBowH/AcQBtgGj
+        Af8BwwG2AaAB/wHEAbcBoQH/AcMBtwGfAf8BxAG2AaAB/wHEAbYBoAH/AcQBtgGfAf8BwgG0AZ0B/wHC
+        AbQBnQH/AcIBtAGdAf8BwgG2AZ4B/wHAAbQBnAH/AbIBpAGOAf8BnwGRAYEB/wGSAYQBcAH/AY0BgQFr
+        Af8BiQGBAWYB/wGPAYEBbAH/AawBnwGFAf8BvwGxAZoB/wHBAbEBmgH/Ab0BrwGZAf8BugGvAZsB/wGq
+        AaMBkAH/AZgBkQGCAf8BmgGYAY4B/wHSAdMBzwH/Ac4B0wHSAf8BzQHRAdIB/wHNAdEB0gH/Ac8C0QH/
+        Ac8C0QH/Ac8C0QH/Ac8C0QH/Ac8C0QH/Ac4B0QHPAf//AP8A/wD/AP8ALQAByQHOAdEB/wHKAc8B0gH/
+        AckBzgHRAf8BywHQAdMB/wHKAc8B0gH/AcsB0AHTAf8BywHQAdMB/wHLAdAB0wH/Ac0B0QHSAf8BuwG+
+        AbwB/wGuAasBowH/AbABqgGfAf8BpAGcAY8B/wGtAaYBlwH/AbUBrAGeAf8BtgGtAZ8B/wG2Aa4BnQH/
+        AbUBrQGcAf8BtQGtAZwB/wG4Aa4BnQH/AbkBrwGeAf8BuQGvAZ4B/wG5Aa8BngH/AboBsAGfAf8BugGw
+        AZ8B/wG5Aa8BngH/AboBsAGfAf8BugGwAZ8B/wG9AbABoAH/Ab0BsAGgAf8BvQGzAaIB/wG9AbMBogH/
+        Ab8BswGhAf8BvwGzAaEB/wHAAbMBowH/AcABswGjAf8BwAGzAaMB/wHAAbMBowH/AcEBtAGkAf8BwQG0
+        AaQB/wHBAbUBowH/AcEBtQGjAf8BwQG1AaMB/wHBAbUBowH/AcEBtQGjAf8BwQG1AaMB/wHCAbYBpAH/
+        AcIBtgGkAf8BxAG2AaMB/wHEAbYBowH/AcQBtgGkAf8BwgG0AaIB/wHDAbUBogH/AcMBtQGiAf8BwwG1
+        AaMB/wHDAbUBowH/AcMBtQGiAf8BwgG0AaEB/wHDAbUBowH/AcIBtAGiAf8BwQG1AaMB/wHBAbUBowH/
+        AcMBtQGjAf8BwwG1AaIB/wHBAbYBogH/AcIBtwGjAf8BwwG1AaIB/wHEAbYBowH/AcQBtwGhAf8BwwG2
+        AaAB/wHDAbUBogH/AcMBtQGiAf8BxAG3AaEB/wHDAbYBoAH/AcQBtgGgAf8BxAG2AaAB/wHFAbcBoQH/
+        AcQBtgGgAf8BwwG1AZ8B/wHEAbYBoAH/AcQBtgGfAf8BwwG1AZ4B/wHDAbUBngH/AcIBtAGdAf8BwgG0
+        AZ0B/wHAAbIBmwH/AcEBswGcAf8BvgGwAZkB/wG2AakBkwH/AaUBmAGCAf8BlQGIAXQB/wGMAYEBagH/
+        AYgBgQFlAf8BjwGBAWwB/wGuAZ4BhwH/Ab8BsQGaAf8BvgGwAZkB/wG7Aa4BmAH/AbgBrQGZAf8BqAGh
+        AZIB/wLLAcUB/wHMAdEB0AH/AcwB0AHRAf8BywHQAdEB/wHLAdABzwH/AcsB0AHPAf8BywHPAdAB/wHL
+        AdABzwH/AcoBzwHOAf8BygHPAc4B//8A/wD/AP8A/wAtAAHIAc0B0AH/AcgBzQHQAf8ByQHOAdEB/wHK
+        Ac8B0gH/AcoBzwHSAf8BygHPAdIB/wHKAc8B0gH/AcoBzwHSAf8BzgHSAdMB/wHOAdEBzwH/AcsBygHG
+        Af8BvQG6AbIB/wGtAagBnwH/AbIBrAGhAf8BtAGsAZ8B/wG1AawBngH/AbQBrQGcAf8BtQGtAZwB/wG3
+        Aa0BnAH/AbcBrQGcAf8BuAGuAZ0B/wG4Aa4BnQH/AbkBrwGeAf8BuQGvAZ4B/wG5Aa8BngH/AbkBrwGe
+        Af8BuQGvAZ4B/wG6AbABnwH/Ab0BsAGgAf8BvQGwAaAB/wG8AbIBoQH/AbwBsgGhAf8BvgGyAaAB/wG+
+        AbIBoAH/Ab8BsgGiAf8BvwGyAaIB/wG/AbIBogH/AcABswGjAf8BwAGzAaMB/wHAAbMBowH/Ab8BswGh
+        Af8BwAG0AaIB/wG/AbMBoQH/AcEBtQGjAf8BwQG1AaMB/wHBAbUBowH/AcEBtQGjAf8BwQG1AaMB/wHD
+        AbUBogH/AcMBtQGiAf8BwwG1AaMB/wHCAbQBogH/AcMBtQGiAf8BwwG1AaIB/wHCAbQBogH/AcIBtAGi
+        Af8BwgG0AaEB/wHCAbQBoQH/AcIBtAGiAf8BwQGzAaEB/wHAAbQBogH/AcEBtQGjAf8BwgG0AaIB/wHD
+        AbUBowH/AcEBtgGiAf8BwQG2AaIB/wHDAbUBogH/AcMBtQGiAf8BwwG2AaAB/wHCAbUBnwH/AcMBtQGi
+        Af8BwwG1AaIB/wHDAbYBoAH/AcMBtgGgAf8BwwG1AZ8B/wHDAbUBnwH/AcIBtAGeAf8BwwG1AZ8B/wHD
+        AbUBnwH/AcQBtgGfAf8BxgG2AZ8B/wHFAbUBngH/AcEBswGcAf8BwQGzAZwB/wHBAbMBnAH/AcABsgGb
+        Af8BwAGyAZsB/wG+AbABmQH/Ab0BsAGaAf8BvgGxAZsB/wG6Aa0BlwH/Aa0BoAGKAf8BnAGOAXkB/wGO
+        AYEBawH/AYkBgQFmAf8BkAGCAW0B/wGsAZ4BhwH/AbkBrAGWAf8BuAGtAZkB/wGzAawBnQH/AssBxQH/
+        AcwB0QHQAf8BzAHQAdEB/wHMAdAB0QH/AcwB0QHQAf8BywHQAc8B/wHMAdAB0QH/AcsBzwHQAf8BygHP
+        Ac4B/wHLAdABzwH//wD/AP8A/wD/AC0AAcgBywHPAf8ByAHLAc8B/wHIAc0B0AH/AcgBzQHQAf8ByAHN
+        AdAB/wHIAc0B0AH/AckBzgHRAf8ByAHNAdAB/wHJAc4BzwH/AcwB0AHRAf8BywHQAc8B/wHNAs8B/wPM
+        Af8BvwG+AboB/wGxAa4BpgH/AbEBqwGeAf8BtAGtAZ4B/wG1Aa0BnAH/AbcBrQGcAf8BtwGtAZwB/wG5
+        Aa8BngH/AbgBrgGdAf8BtwGtAZwB/wG4Aa4BnQH/AbgBrwGhAf8BtgGtAZ8B/wG4Aa4BnQH/AbkBrwGe
+        Af8BvAGvAZ8B/wG8Aa8BnwH/AbwBsgGhAf8BvAGyAaEB/wG+AbIBoAH/Ab4BsgGgAf8BvgGxAaEB/wG+
+        AbEBoQH/AbwBsgGgAf8BvwGzAaEB/wG/AbIBogH/AcEBsgGiAf8BvwGzAaEB/wG/AbMBoQH/Ab8BswGh
+        Af8BvwGyAaIB/wHAAbQBogH/AcABtAGiAf8BwAG0AaIB/wHBAbUBowH/AcEBtgGiAf8BwAG1AaEB/wHA
+        AbQBogH/AcABtAGiAf8BwAG1AaEB/wHCAbQBoQH/AcIBtAGhAf8BwgG0AaEB/wG/AbQBoAH/AcABtQGh
+        Af8BwQGzAaAB/wHBAbMBoAH/AcEBswGgAf8BwgG0AaEB/wHCAbQBoQH/AcMBtQGiAf8BwgG0AaEB/wHB
+        AbMBoAH/AcIBtAGhAf8BwgG0AaEB/wHCAbQBoQH/AcIBtAGhAf8BwgG1AZ8B/wHCAbUBnwH/AcIBswGg
+        Af8BwwG0AaEB/wHDAbQBoQH/AcEBsgGfAf8BwgG0AZ4B/wHCAbQBngH/AcIBtAGdAf8BwwG1AZ4B/wHE
+        AbYBnwH/AcIBtAGdAf8BwgGyAZsB/wHCAbIBmwH/AcEBswGcAf8BvwGxAZoB/wG/AbEBmgH/Ab4BsAGZ
+        Af8BvQGvAZgB/wG+AbABmQH/Ab0BrwGYAf8BvQGvAZgB/wG7Aa0BlgH/AbQBpgGPAf8BowGVAYEB/wGR
+        AYUBbwH/AYwBgQFqAf8BsQGmAZIB/wG0Aa0BngH/AcgBxgG8Af8BzwHQAcwB/wHKAc8BzgH/AckBzQHO
+        Af8ByQHNAc4B/wHKAc8BzgH/AcgBzQHMAf8ByQHOAc0B/wHJAssB/wHKAswB/wHKAswB//8A/wD/AP8A
+        /wAtAAHIAcsBzwH/AcgBywHPAf8BxwHMAc8B/wHJAc4B0QH/AckBzgHRAf8ByAHNAdAB/wHKAc8B0gH/
+        AckBzgHRAf8ByQHOAdEB/wHLAdAB0QH/AcsB0AHTAf8BygHPAdIB/wHLAc4B0gH/Ac0BzwHQAf8BzgHP
+        AcsB/wG+AbwBtAH/AbIBrgGjAf8BsQGrAZ4B/wGzAawBnQH/AbQBqwGdAf8BtwGtAZwB/wG3Aa0BnAH/
+        AbgBrgGdAf8BuAGuAZ0B/wG2Aa0BnwH/AbYBrQGfAf8BuAGuAZ0B/wG5Aa8BngH/AbsBrgGeAf8BvAGv
+        AZ8B/wG7AbEBoAH/AbsBsQGgAf8BvQGxAZ8B/wG9AbEBnwH/Ab0BsAGgAf8BvgGxAaEB/wG8AbIBoAH/
+        AbsBsQGfAf8BvQGwAaAB/wG+AbEBoQH/Ab4BsgGgAf8BvwGzAaEB/wG/AbIBogH/Ab8BsgGiAf8BvwGz
+        AaEB/wG/AbMBoQH/Ab4BsgGgAf8BwAG0AaIB/wHAAbUBoQH/AcABtQGhAf8BvwGzAaEB/wHAAbQBogH/
+        AcABtQGhAf8BwAG1AaEB/wHBAbMBoAH/AcEBswGgAf8BvwG0AaAB/wG+AbMBnwH/AcABsgGfAf8BwAGy
+        AZ8B/wHBAbQBngH/AcEBtAGeAf8BwgG0AaEB/wHCAbQBoQH/AcIBtAGhAf8BwgG0AaEB/wHCAbQBoQH/
+        AcEBswGgAf8BwgG0AaEB/wHCAbQBoQH/AcEBtAGeAf8BwQG0AZ4B/wHCAbMBoAH/AcIBswGgAf8BwgGz
+        AaAB/wHCAbQBngH/AcIBtAGeAf8BwQGzAZwB/wHCAbQBnQH/AcMBtgGcAf8BwwG1AZ4B/wHBAbMBnAH/
+        AcIBsgGbAf8BwQGxAZoB/wHAAbIBmwH/Ab8BsQGaAf8BvwGxAZoB/wG+AbABmQH/Ab4BsAGZAf8BvQGv
+        AZgB/wG9AbABlgH/AbwBrwGVAf8BuwGtAZYB/wG6AawBlQH/AbgBqwGVAf8BtQGqAZQB/wGoAZ8BiwH/
+        AbYBrwGgAf8BzgHMAcIB/wHQAdEBzQH/Ac4B0QHPAf8BygHPAc4B/wHNAc8B0AH/Ac4B0AHRAf8BzQHS
+        AdEB/wHMAdEB0AH/Ac0CzwH/AcwCzgH/AcwCzgH/AcsCzQH//wD/AP8A/wD/AC0AAcUBygHNAf8BxgHL
+        Ac4B/wHGAcsBzAH/AccBzAHNAf8BxwHMAc8B/wHHAcwBzwH/AcgBywHQAf8ByAHNAdAB/wHHAcwBzwH/
+        AcgBzQHQAf8ByQHOAdEB/wHKAc0B0QH/AckBzgHRAf8ByQHOAdEB/wHKAc4BzwH/AcsB0AHPAf8BygHL
+        AccB/wK5AbMB/wGuAakBoAH/AbMBqwGeAf8BtAGrAZ0B/wG3Aa0BnAH/AbcBrQGcAf8BtwGtAZwB/wG4
+        Aa0BnwH/AbgBrQGfAf8BuAGuAZ0B/wG5Aa8BngH/AboBrQGdAf8BuwGuAZ4B/wG6AbABnwH/AboBsAGf
+        Af8BuwGxAaAB/wG6AbABnwH/AbwBrwGfAf8BvgGxAaEB/wG7AbEBoAH/AbwBsgGhAf8BuwGxAaAB/wG+
+        AbEBoQH/Ab4BsgGgAf8BvgGyAaAB/wG8AbIBoQH/AbwBsgGhAf8BvgGyAaAB/wG+AbIBoAH/Ab4BsgGg
+        Af8BvwGzAaEB/wG/AbMBoQH/Ab8BswGhAf8BwQGzAaEB/wHBAbMBoQH/AcEBswGgAf8BwQGzAaAB/wHC
+        AbQBoQH/AcEBswGgAf8BwAGyAZ8B/wHBAbMBoAH/AcABsgGfAf8BwAGyAZ8B/wHBAbMBoAH/AcEBswGg
+        Af8BwQGzAaEB/wHCAbQBogH/AcIBtAGhAf8BwgG0AaEB/wHBAbMBoAH/AcEBswGgAf8BwAGzAZ0B/wHB
+        AbQBngH/AcABswGdAf8BwAGzAZ0B/wHAAbMBnQH/AcEBtAGeAf8BwAGzAZ0B/wHAAbMBnQH/AcABtAGc
+        Af8BwQGzAZwB/wHBAbMBnAH/AcEBswGcAf8BwgG0AZ0B/wG/AbMBmwH/Ab8BsgGYAf8BvwGxAZoB/wG/
+        AbEBmgH/Ab4BsAGaAf8BvgGwAZoB/wG9Aa8BmQH/AbwBsAGYAf8BuwGvAZcB/wG7Aa8BlwH/AboBrgGW
+        Af8BugGsAZUB/wG5AasBlAH/AbcBqgGUAf8BswGpAZcB/wG3AbEBpAH/AdEBzwHHAf8BzgHPAc0B/wHO
+        AtAB/wHMAdEB0AH/AcwB0QHQAf8BzQHPAdAB/wHNAc8B0AH/AcsB0AHPAf8BywHQAc8B/wHNAc8B0AH/
+        Ac0BzwHQAf8BywHQAc8B/wHKAc8BzgH//wD/AP8A/wD/AC0AAcgBzQHQAf8BxwHMAc8B/wHIAc0BzgH/
+        AckBzgHPAf8ByAHNAdAB/wHIAc0B0AH/AckBzAHRAf8ByQHNAdIB/wHJAc4B0QH/AccBzgHRAf8BygHP
+        AdIB/wHKAc0B0QH/AckBzgHRAf8BygHPAdIB/wHIAc8B0gH/AcoBzwHSAf8BygHPAdAB/wHNAs8B/wHL
+        AcoBxgH/AboBtwGvAf8BsgGsAaEB/wG0AawBnwH/AbUBrAGeAf8BtQGsAZ4B/wG2AasBnQH/AbgBrQGf
+        Af8BtwGtAZwB/wG4Aa4BnQH/AboBrQGdAf8BugGtAZ0B/wG6AbABnwH/AbkBrwGeAf8BugGwAZ8B/wG7
+        AbEBoAH/AbsBrgGeAf8BvQGwAaAB/wG7AbEBoAH/AbsBsQGgAf8BuwGxAaAB/wG7AbEBoAH/Ab0BsQGf
+        Af8BvQGxAZ8B/wG7AbEBoAH/AbsBsQGgAf8BvQGxAZ8B/wG9AbEBnwH/Ab0BsQGfAf8BvQGxAZ8B/wG+
+        AbIBoAH/Ab0BsQGfAf8BwAGyAaAB/wHAAbIBoAH/AcABsgGfAf8BwAGyAZ8B/wHBAbMBoAH/AcEBswGg
+        Af8BwAGyAZ8B/wHAAbIBnwH/AcABsgGfAf8BwAGyAZ8B/wHAAbIBnwH/AcABsgGfAf8BwAGyAaAB/wHA
+        AbIBnwH/AcEBswGgAf8BwAGyAZ8B/wHAAbIBnwH/AcABsgGfAf8BvwGyAZwB/wHAAbMBnQH/AcABswGd
+        Af8BwAGzAZ0B/wHAAbMBnQH/Ab8BsgGcAf8BvwGyAZwB/wHAAbMBnQH/AcABtAGcAf8BwAG1AZoB/wHA
+        AbIBmwH/AcIBtAGdAf8BwAGyAZsB/wG+AbIBmgH/Ab8BsQGaAf8BvgGwAZkB/wG+AbABmgH/Ab0BrwGZ
+        Af8BvQGvAZkB/wG8Aa4BmAH/AbwBsAGYAf8BuwGvAZcB/wG7Aa8BlwH/AboBrgGWAf8BuQGsAZYB/wG2
+        AasBlQH/AbEBqgGXAf8BvQG3AaoB/wHSAc8BygH/AdAB0QHPAf8BzQLPAf8BywHPAdAB/wHKAc8BzgH/
+        AcoBzwHOAf8BzAHOAc8B/wHMAc4BzwH/AckBzgHNAf8ByQHOAc0B/wHJAcsBzAH/AcgBygHLAf8BxgHL
+        AcoB/wHHAcwBywH//wD/AP8A/wD/AC0AAcgBzQHQAf8ByAHNAdAB/wHJAc4B0QH/AcgBzQHQAf8ByQHO
+        AdEB/wHJAc4B0QH/AckBzAHQAf8ByQHOAdEB/wHJAc4B0QH/AccBzgHRAf8BywHQAdMB/wHKAc8B0gH/
+        AcoBzwHSAf8BygHPAdIB/wHKAc8B0gH/AcsB0AHTAf8BywHQAdMB/wHMAdAB0QH/Ac4B0AHRAf8D0AH/
+        AcsBygHGAf8BuAG1AbAB/wGwAasBogH/AbQBrAGfAf8BtQGsAZ4B/wG2AawBmwH/AbYBqwGdAf8BtwGs
+        AZ4B/wG3Aa0BnAH/AbgBrgGdAf8BuQGvAZ4B/wG5Aa8BngH/AbkBrwGeAf8BuQGvAZ4B/wG7Aa4BngH/
+        AbwBrwGfAf8BugGwAZ8B/wG7AbEBoAH/AboBsAGfAf8BugGwAZ8B/wG6AbABngH/AboBsAGeAf8BvAGv
+        AZ8B/wG8Aa8BnwH/AbwBsAGeAf8BvAGwAZ4B/wG8AbABngH/AbwBsAGeAf8BvAGxAZ0B/wG8AbEBnQH/
+        Ab4BsAGeAf8BvgGwAZ4B/wG8AbEBnQH/Ab0BsgGeAf8BvQGvAZwB/wG9Aa8BnAH/Ab0BrwGcAf8BvwGx
+        AZ4B/wG+AbABnQH/Ab0BrwGcAf8BvwGyAZwB/wG/AbIBnAH/Ab8BsQGeAf8BwQGzAaAB/wG/AbEBngH/
+        AcABswGdAf8BwAGyAZ8B/wG/AbEBngH/Ab8BsgGcAf8BvwGyAZwB/wHAAbIBnwH/Ab8BsQGeAf8BvgGx
+        AZsB/wG/AbIBnAH/AcABswGdAf8BvwGyAZwB/wG/AbMBmwH/Ab8BswGbAf8BwAGyAZwB/wHAAbIBnAH/
+        Ab8BsQGaAf8BvgGwAZkB/wG9Aa8BmAH/Ab0BrwGZAf8BvQGvAZkB/wG8Aa4BmAH/AbsBrQGWAf8BuwGt
+        AZYB/wG8Aa4BlwH/AbsBrQGWAf8BugGtAZMB/wG5Aa0BlQH/AbYBqwGXAf8BsgGqAZkB/wG/Ab0BswH/
+        AtEBywH/AcwBzwHNAf8BywLNAf8BygHOAc8B/wHJAc0BzgH/AckBzgHNAf8ByQHOAc0B/wHLAc0BzgH/
+        AcoBzAHNAf8ByAHNAcwB/wHGAcsBygH/AcgBygHLAf8ByQHLAcwB/wHGAcsBygH/AcYBywHKAf//AP8A
+        /wD/AP8ALQABxwHMAc8B/wHGAcsBzgH/AcYBywHOAf8ByAHNAdAB/wHHAcwBzwH/AckBzgHRAf8BygHN
+        AdEB/wHKAc0B0QH/AckBzgHRAf8BxwHOAdEB/wHJAc4B0QH/AckBzgHRAf8BywHQAdMB/wHKAc8B0gH/
+        AckBzgHRAf8ByAHNAdAB/wHJAc4B0QH/AcsB0AHTAf8BzAHPAdMB/wHLAc4B0gH/AcsBzwHQAf8BzwLR
+        Af8BygHJAcUB/wG6AbcBrwH/AbIBrAGhAf8BswGrAZ4B/wG0AasBngH/AbUBrAGeAf8BtwGsAZ4B/wG3
+        Aa0BnAH/AbgBrgGdAf8BuAGuAZ0B/wG4Aa4BnQH/AbkBrwGeAf8BugGtAZ0B/wG7Aa4BngH/AbkBrwGe
+        Af8BuQGvAZ4B/wG5Aa8BngH/AbkBrwGeAf8BuQGvAZ0B/wG5Aa8BnQH/AbsBrgGeAf8BuwGuAZ4B/wG7
+        Aa8BnQH/AboBrgGcAf8BuwGvAZ0B/wG7Aa8BnQH/AbsBsAGcAf8BuwGwAZwB/wG9Aa8BnQH/AbwBrgGc
+        Af8BugGvAZsB/wG5Aa4BmgH/AbsBrQGaAf8BvAGuAZsB/wG8Aa4BmwH/Ab0BrwGcAf8BvQGvAZwB/wG+
+        AbABnQH/Ab4BsQGbAf8BvgGxAZsB/wG+AbABnQH/Ab4BsAGdAf8BvgGwAZ0B/wG+AbABnQH/Ab4BsAGd
+        Af8BwAGyAZ8B/wG+AbEBmwH/AcABswGdAf8BvwGxAZ4B/wG+AbABnQH/Ab4BsQGbAf8BvgGxAZsB/wG+
+        AbEBmwH/Ab0BsAGaAf8BvQGwAZoB/wG9AbEBmQH/Ab4BsAGaAf8BvwGxAZsB/wG9Aa8BmAH/Ab0BrwGY
+        Af8BvQGvAZkB/wG8Aa4BmAH/AbwBrgGYAf8BvAGuAZgB/wG8Aa4BlwH/AbsBrQGWAf8BugGsAZUB/wG6
+        AawBlQH/AbgBrAGUAf8BuAGtAZcB/wG0AawBmwH/AcoBxgG7Af8B0wHSAc4B/wHPAtEB/wHMAdEB0AH/
+        AcsBzwHQAf8BzAHQAdEB/wHMAdAB0QH/Ac0B0gHRAf8BywHQAc8B/wHNAc8B0AH/AcwBzgHPAf8BywHQ
+        Ac8B/wHJAc4BzQH/AcsBzQHOAf8BywHNAc4B/wHKAswB/wHIAc0BzAH//wD/AP8A/wD/AC0AAcYBywHM
+        Af8BxgHLAcwB/wHHAcwBzwH/AcYBywHOAf8BxgHLAc4B/wHHAcwBzwH/AckBzQHOAf8BygHOAc8B/wHH
+        AcwBzwH/AckBzgHRAf8BxwHOAdEB/wHGAc0B0AH/AcgBzAHRAf8ByAHMAdEB/wHJAc4B0QH/AckBzgHR
+        Af8ByQHOAdEB/wHJAc4B0QH/AckBzgHRAf8ByQHOAdEB/wHJAc4B0QH/AcoBzgHPAf8BywHPAdAB/wHN
+        As8B/wHKAckBxQH/AbgBtQGwAf8BrwGqAaEB/wGzAaoBoAH/AbQBqwGdAf8BtgGsAZsB/wG3Aa0BnAH/
+        AbgBrgGcAf8BuAGuAZ0B/wG4Aa4BnQH/AbgBrgGdAf8BtwGtAZwB/wG4Aa4BnQH/AbgBrgGdAf8BugGt
+        AZ0B/wG7Aa4BngH/AboBrgGcAf8BuwGvAZ0B/wG6Aa0BnQH/AboBrQGdAf8BugGuAZwB/wG6Aa4BnAH/
+        AboBrgGcAf8BuQGtAZsB/wG6Aa4BnAH/AboBrgGcAf8BugGvAZsB/wG5Aa4BmgH/AbgBrQGZAf8BuAGt
+        AZkB/wG7Aa4BmAH/AbsBrgGYAf8BuwGtAZoB/wG8Aa4BmwH/AbwBrgGbAf8BvQGvAZwB/wG9Aa8BnAH/
+        Ab0BrwGcAf8BvQGvAZwB/wG+AbABnQH/Ab0BrwGcAf8BvgGwAZ0B/wG/AbABnQH/Ab8BsAGdAf8BvgGx
+        AZsB/wG9AbABmgH/Ab0BrwGcAf8BvQGvAZwB/wG+AbABmgH/Ab4BsAGaAf8BvQGvAZwB/wG9AbABmgH/
+        AbwBsQGbAf8BuwGuAZgB/wG+AbABmgH/Ab0BrwGZAf8BvAGuAZcB/wG7Aa4BlAH/AbsBrwGXAf8BvAGw
+        AZgB/wG7Aa0BlwH/AbsBrQGXAf8BugGsAZUB/wG6AawBlQH/AbkBrQGVAf8BuAGrAZUB/wG2AasBlwH/
+        AbMBrAGbAf8BywHJAb8B/wHQAdIBzAH/Ac0B0AHOAf8BzAHRAdAB/wHOAtAB/wHPAtEB/wHMAs4B/wHN
+        As8B/wHMAc4BzwH/AcwBzgHPAf8BzALOAf8BywLNAf8BywLNAf8BywLNAf8BywLNAf8BywLNAf8BygLM
+        Af8BzALOAf//AP8A/wD/AP8ALQABxQHKAcsB/wHFAcoBywH/AcUBygHNAf8BxgHLAc4B/wHGAcsBzgH/
+        AcYBywHOAf8ByAHMAc0B/wHIAcwBzQH/AccBzAHPAf8BxwHMAc8B/wHHAcwBzwH/AcUBzAHPAf8BxwHL
+        AdAB/wHIAcwB0QH/AckBzgHRAf8BxwHMAc8B/wHIAc0B0AH/AckBzgHRAf8ByAHNAdAB/wHIAc0B0AH/
+        AckBzgHRAf8ByAHNAdAB/wHJAc4B0QH/AckBzgHRAf8BygHOAc8B/wHLAs0B/wHJAcgBxAH/AbsBuAGw
+        Af8BsQGqAaEB/wGzAasBngH/AbQBqwGdAf8BtQGtAZwB/wG4Aa4BnQH/AbcBrQGcAf8BuAGuAZ0B/wG3
+        Aa0BnAH/AbcBrQGcAf8BtwGtAZwB/wG4AasBmwH/AbkBrAGcAf8BugGuAZwB/wG6Aa4BnAH/AboBrQGd
+        Af8BuQGsAZwB/wG6Aa4BnAH/AbkBrQGbAf8BuQGtAZsB/wG4AawBmgH/AbgBrAGaAf8BuQGtAZsB/wG7
+        Aa8BnQH/AbkBrgGaAf8BuAGtAZkB/wG4Aa0BmQH/AboBrAGZAf8BugGtAZcB/wG7Aa0BmgH/AbsBrQGa
+        Af8BuwGtAZoB/wG8Aa4BmwH/AbwBrgGbAf8BvAGuAZsB/wG8Aa4BmwH/AbwBrgGbAf8BvQGvAZ0B/wG9
+        Aa8BnQH/Ab4BrwGcAf8BvgGvAZwB/wG8Aa8BmQH/Ab0BsAGaAf8BvgGwAZ0B/wG9Aa8BnAH/Ab4BrwGc
+        Af8BvQGuAZsB/wG8Aa4BmwH/AbwBrwGZAf8BuQGuAZgB/wG8Aa8BmQH/Ab0BrwGZAf8BvAGuAZcB/wG7
+        Aa0BlgH/AbsBrgGUAf8BugGuAZYB/wG5Aa0BlQH/AboBrAGWAf8BuQGrAZUB/wG4AaoBkwH/AbkBqwGU
+        Af8BuQGsAZYB/wG0AaoBmAH/AbYBrwGgAf8BzwHNAcMB/wHRAdIBzgH/Ac8C0QH/AcwB0QHQAf8BzQHS
+        AdEB/wHPAtEB/wHOAtAB/wHNAs8B/wHNAs8B/wHNAc8B0AH/AcwBzgHPAf8BywLNAf8BywLNAf8BygLM
+        Af8BygLMAf8BygLMAf8BygLMAf8DywH/A8wB//8A/wD/AP8A/wAtAAHGAckBzQH/AcYByQHNAf8BxwHK
+        Ac4B/wHIAcsBzwH/AcgBywHPAf8ByQHMAdAB/wHIAcsBzwH/AckBzAHQAf8ByQHMAdAB/wHIAc0B0AH/
+        AcgBzQHQAf8ByQHOAdEB/wHIAc0B0AH/AckBzgHRAf8ByAHNAdAB/wHIAc0B0AH/AcgBzQHQAf8ByAHN
+        AdAB/wHJAcwB0AH/AckBzAHQAf8BxwHMAc8B/wHIAc0B0AH/AcgBzQHQAf8ByAHNAdAB/wHKAc8B0gH/
+        AcoBzgHPAf8ByQHNAc4B/wHMAs4B/wHKAcgBxwH/AbsBuAGzAf8BtAGtAaQB/wG0AawBnwH/AbUBrAGe
+        Af8BtwGsAZ4B/wG3Aa0BnAH/AbkBrAGcAf8BuAGtAZ8B/wG3AawBngH/AbcBrQGcAf8BtwGtAZwB/wG3
+        Aa0BnAH/AboBrQGdAf8BuQGsAZwB/wG7AawBnAH/AbgBrAGaAf8BuQGtAZsB/wG4AawBmgH/AbgBrAGa
+        Af8BuAGsAZoB/wG4AawBmgH/AbkBrQGbAf8BtwGrAZkB/wG5Aa0BmwH/AbcBrAGYAf8BuQGrAZgB/wG5
+        AasBmAH/AbgBrQGZAf8BuQGuAZoB/wG7Aa0BmgH/AbsBrQGaAf8BuwGtAZoB/wG7Aa0BmgH/AbwBrgGb
+        Af8BuwGtAZoB/wG8Aa4BmwH/Ab0BrwGcAf8BvAGuAZsB/wG8Aa4BmwH/AbwBrwGZAf8BuwGuAZgB/wG8
+        Aa8BmQH/AbwBrgGbAf8BvAGuAZsB/wG7Aa0BmgH/AbsBrQGaAf8BvAGvAZkB/wG7Aa4BmAH/AbsBrwGX
+        Af8BvAGuAZcB/wG7Aa0BlgH/AbkBrQGVAf8BugGuAZYB/wG5AawBlgH/AbgBqwGVAf8BuAGsAZQB/wG5
+        AasBlAH/AbgBqgGUAf8BuQGrAZUB/wGzAakBlwH/AbUBrwGiAf8BzQHKAcUB/wHNAc4BzAH/AcwCzgH/
+        AcoBzgHPAf8BygHOAc8B/wHKAc4BzwH/AckBzgHNAf8BygHPAc4B/wHJAc0BzgH/AcgBzAHNAf8ByAHN
+        AcwB/wHIAc0BzAH/AcgBzAHNAf8BxwHLAcwB/wHGAcsBygH/AcUBygHJAf8BxwHJAcoB/wHFAccByAH/
+        AccCyQH/AcYCyAH//wD/AP8A/wD/AC0AAcYByQHNAf8BxgHJAc0B/wHGAckBzQH/AccBygHOAf8BxwHK
+        Ac4B/wHHAcoBzgH/AccBygHOAf8ByQHMAdAB/wHJAcwB0AH/AckBzAHQAf8ByQHOAdEB/wHJAc4B0QH/
+        AckBzgHRAf8BygHPAdIB/wHIAc0B0AH/AckBzgHRAf8ByQHOAdEB/wHKAc8B0gH/AcoBzQHRAf8BygHN
+        AdEB/wHJAc4B0QH/AckBzgHRAf8BygHPAdIB/wHJAc4B0QH/AckBzgHRAf8ByAHNAdAB/wHIAc0B0AH/
+        AckBzAHQAf8ByAHMAc0B/wPMAf8BzQHKAcYB/wG/AbwBtAH/AbMBrgGlAf8BswGtAaIB/wG1AawBnwH/
+        AbUBrAGeAf8BuAGtAZ8B/wG3AawBngH/AbcBrAGeAf8BtwGtAZwB/wG3Aa0BnAH/AbcBrQGcAf8BuAGr
+        AZsB/wG4AasBmwH/AbcBqwGZAf8BuAGsAZoB/wG3AasBmQH/AbcBqwGZAf8BuAGsAZoB/wG4AawBmgH/
+        AbcBqgGaAf8BtwGqAZoB/wG3AasBmQH/AbcBqwGZAf8BuQGrAZgB/wG5AasBmAH/AbcBrAGYAf8BtwGs
+        AZgB/wG5AasBmAH/AboBrAGZAf8BugGsAZkB/wG6AawBmQH/AboBrAGZAf8BuwGtAZoB/wG6AawBmQH/
+        AbsBrQGaAf8BuwGtAZoB/wG7Aa0BmgH/AboBrQGXAf8BuwGuAZgB/wG7Aa4BmAH/AbsBrQGaAf8BuwGt
+        AZoB/wG7Aa0BmgH/AboBrQGXAf8BugGtAZcB/wG6Aa4BlgH/AboBrgGWAf8BugGsAZUB/wG6AawBlQH/
+        AboBrgGWAf8BuAGsAZQB/wG3AaoBlAH/AbgBqwGVAf8BtwGrAZMB/wG3AaoBlAH/AbYBqAGVAf8BsgGo
+        AZcB/wG5AbEBpAH/Ac8BzQHFAf8BzQHOAcwB/wHJAc0BzgH/AckBzQHOAf8ByAHMAc0B/wHIAcwBzQH/
+        AckBzQHOAf8ByQHOAc0B/wHIAc0BzAH/AckBzQHOAf8ByAHMAc0B/wHIAc0BzAH/AccBzAHLAf8BxwHL
+        AcwB/wHHAcsBzAH/AccBzAHLAf8BxQHKAckB/wHHAckBygH/AccByQHKAf8BxwLJAf8BxwLJAf//AP8A
+        /wD/AP8ALQABwgHHAcoB/wHEAckBzAH/AcMByAHLAf8BxAHJAcwB/wHFAcoBzQH/AcUBygHNAf8BxAHJ
+        AcwB/wHGAcsBzgH/AcYBywHOAf8BxQHKAc0B/wHGAcsBzgH/AccBzAHPAf8BxwHMAc8B/wHIAc0B0AH/
+        AckBzAHQAf8ByAHNAdAB/wHIAc0B0AH/AcgBzQHQAf8ByQHMAdAB/wHJAcwB0AH/AcgBzQHQAf8ByAHN
+        AdAB/wHKAc0B0QH/AcoBzQHRAf8BygHNAdEB/wHKAc0B0QH/AckBzAHQAf8ByQHMAdAB/wHKAc0B0QH/
+        AcoBzgHPAf8BywHNAc4B/wHMAs4B/wHMAc0BywH/AcEBwAG8Af8BtAGxAakB/wGzAawBowH/AbYBrgGh
+        Af8BtQGsAZ4B/wG1AawBngH/AbUBrQGcAf8BtgGsAZsB/wG3Aa0BmwH/AbgBqwGbAf8BuAGrAZsB/wG3
+        AasBmQH/AbUBqwGZAf8BtgGpAZkB/wG3AaoBmgH/AbcBqwGZAf8BtgGqAZgB/wG3AakBlwH/AbgBqgGY
+        Af8BuAGqAZgB/wG4AaoBmAH/AbgBqgGYAf8BuAGqAZgB/wG5AasBmAH/AbgBqgGXAf8BuQGrAZgB/wG4
+        AaoBlwH/AbcBqQGWAf8BuQGrAZgB/wG5AasBmAH/AbkBqwGYAf8BuQGsAZYB/wG6Aa0BlwH/AbkBqwGY
+        Af8BuwGtAZoB/wG6AawBmQH/AboBrAGZAf8BvAGtAZoB/wG6AasBmAH/AbkBqwGYAf8BugGtAZcB/wG6
+        AawBlgH/AbsBrQGXAf8BuQGsAZYB/wG4AasBlQH/AbcBqgGUAf8BuAGrAZUB/wG4AasBlQH/AbcBqgGU
+        Af8BtwGqAZQB/wG3AaoBlAH/AbUBqAGSAf8BtAGpAZUB/wGvAacBlgH/AboBtgGrAf8B0QHOAckB/wHM
+        Ac8BzQH/AcwCzgH/AcsBzwHQAf8BywHQAc8B/wHKAc8BzgH/AcoBzgHPAf8BywHPAdAB/wHLAdABzwH/
+        AckBzgHNAf8BywLNAf8BywLNAf8ByAHNAcwB/wHIAc0BzAH/AcgBzQHMAf8BxwHMAcsB/wHJAssB/wHH
+        AskB/wHEAckByAH/AcQByQHIAf8BxgLIAf8BxgLIAf//AP8A/wD/AP8ALQABwQHGAckB/wHBAcYByQH/
+        AcEBxgHJAf8BwgHHAcoB/wHDAcgBywH/AcMByAHLAf8BxAHJAcwB/wHEAckBzAH/AcUBygHNAf8BxgHL
+        Ac4B/wHGAcsBzgH/AcUBygHNAf8BxgHLAc4B/wHGAcsBzgH/AccBygHOAf8ByAHLAc8B/wHHAcwBzwH/
+        AcYBywHOAf8BxgHLAc4B/wHKAc0B0QH/AcgBzQHQAf8ByAHNAdAB/wHIAcsBzwH/AcgBywHPAf8ByQHM
+        AdAB/wHJAcwB0AH/AckBzAHQAf8ByAHNAdAB/wHGAcsBzgH/AccBzAHPAf8ByAHNAdAB/wHHAcwBzwH/
+        AccBywHMAf8BxwHMAcsB/wHKAcsByQH/AcMBwAG8Af8BuQGzAawB/wGyAasBogH/AbIBrAGhAf8BtAGs
+        AZ8B/wG0AasBnQH/AbYBrAGbAf8BtQGrAZoB/wG1AasBmgH/AbUBqwGaAf8BtAGqAZgB/wG2AakBmQH/
+        AbYBqQGZAf8BtgGqAZgB/wG2AaoBmAH/AbgBqgGYAf8BtwGpAZcB/wG3AakBlwH/AbcBqQGXAf8BtwGp
+        AZcB/wG3AakBlwH/AbcBqQGWAf8BtwGpAZYB/wG5AasBmAH/AbgBqgGXAf8BtwGpAZYB/wG4AaoBlwH/
+        AbkBqwGYAf8BuAGqAZcB/wG3AaoBlAH/AbgBqwGVAf8BuQGrAZgB/wG5AasBmAH/AbkBqwGYAf8BuQGr
+        AZgB/wG5AaoBlwH/AbkBqgGXAf8BuQGsAZYB/wG4AasBlQH/AbkBqwGVAf8BuQGrAZUB/wG4AasBlQH/
+        AbYBqQGTAf8BtwGqAZQB/wG3AaoBlAH/AbYBqQGTAf8BtgGpAZMB/wG2AakBkwH/AbYBqAGVAf8BtAGo
+        AZYB/wGvAacBlgH/AcABvAGxAf8CzwHJAf8BzAHPAc0B/wHKAc8BzgH/AcoBzgHPAf8BywHPAdAB/wHL
+        AdABzwH/AcoBzwHOAf8ByQHNAc4B/wHIAcwBzQH/AcgBzQHMAf8ByQHOAc0B/wHKAswB/wHKAswB/wHH
+        AcwBywH/AccBzAHLAf8BxwHMAcsB/wHHAcwBywH/AcgCygH/AcgCygH/AcUBygHJAf8BxQHKAckB/wHG
+        AsgB/wHGAsgB//8A/wD/AP8A/wAtAAHAAcUByAH/AcABxQHIAf8BwQHGAckB/wHBAcYByQH/AcIBxwHK
+        Af8BwgHHAcoB/wHCAccBygH/AcMByAHLAf8BxAHJAcwB/wHEAckBzAH/AcUBygHNAf8BxAHJAcwB/wHF
+        AcoBzQH/AcUBygHNAf8BxgHJAc0B/wHGAckBzQH/AcYBywHOAf8BxgHLAc4B/wHGAcoBzwH/AcUByQHO
+        Af8BxgHLAc4B/wHHAcwBzwH/AccBywHQAf8BxwHLAdAB/wHHAcwBzwH/AcYBywHOAf8BxgHLAc4B/wHH
+        AcwBzwH/AcgBzQHQAf8BxgHNAdAB/wHHAcwBzwH/AccBzAHPAf8BxgHLAcwB/wHGAcsBzAH/AccBywHM
+        Af8ByQHLAcwB/wHHAskB/wHEAcUBwQH/AboBtwGyAf8BrwGsAaQB/wGyAawBoQH/AbMBqwGeAf8BtQGq
+        AZwB/wG1AasBmgH/AbUBqwGaAf8BtAGqAZkB/wG2AakBmQH/AbUBqAGYAf8BtwGpAZcB/wG3AakBlwH/
+        AbUBqQGXAf8BtQGpAZcB/wG3AakBlgH/AbcBqQGWAf8BtgGoAZYB/wG2AagBlgH/AbcBqQGWAf8BtgGo
+        AZUB/wG3AaoBlAH/AbcBqgGUAf8BtwGpAZYB/wG3AakBlgH/AbcBqQGWAf8BtwGpAZYB/wG2AakBkwH/
+        AbgBqwGVAf8BuAGqAZcB/wG4AaoBlwH/AbgBqgGXAf8BtwGpAZYB/wG4AakBlgH/AbkBqgGXAf8BtwGp
+        AZYB/wG2AasBlwH/AbcBqgGUAf8BtgGpAZMB/wG2AakBkwH/AbYBqQGTAf8BtgGoAZIB/wG2AagBkgH/
+        AbYBqAGSAf8BtgGoAZIB/wG1AaYBkwH/AbIBpgGUAf8BrwGnAZoB/wHBAb8BtQH/Ac8BzgHKAf8BywLN
+        Af8BygHPAc4B/wHKAc4BzwH/AcoBzgHPAf8ByQHNAc4B/wHJAc0BzgH/AckBzQHOAf8ByQHOAc0B/wHI
+        Ac0BzAH/AcgBzQHMAf8ByAHNAcwB/wHKAcwBzQH/AcgBygHLAf8ByQLLAf8BxwLJAf8BxwLJAf8BxgLI
+        Af8BxgLIAf8BxgLIAf8BxgLIAf8BxQLHAf8BxALGAf8BxALGAf//AP8A/wD/AP8ALQABvgHDAcYB/wG+
+        AcMBxgH/Ab4BwwHGAf8BvwHEAccB/wHBAcYByQH/AcABxQHIAf8BwAHFAcgB/wHBAcYByQH/AcIBxwHK
+        Af8BwgHHAcoB/wHCAccBygH/AcMByAHLAf8BxAHJAcwB/wHDAcgBywH/AcQBxwHLAf8BxQHIAcwB/wHD
+        AcgBywH/AcMByAHLAf8BxQHJAc4B/wHEAcgBzQH/AcUBygHNAf8BxQHKAc0B/wHEAcgBzQH/AcQByAHN
+        Af8BxAHJAcwB/wHEAckBzAH/AcMByAHLAf8BxQHKAc0B/wHDAcoBzQH/AcMBygHNAf8BxQHKAc0B/wHF
+        AcoBzQH/AcUBygHLAf8BxQHKAc0B/wHFAcoBzQH/AcQByQHMAf8BxAHJAcwB/wHEAcgByQH/AccCyQH/
+        AcgBxwHDAf8BvgG7AbYB/wG1AbABpwH/AbABqQGgAf8BsgGpAZ8B/wGxAakBnAH/AbIBqQGbAf8BtAGp
+        AZsB/wG0AacBlwH/AbcBqAGYAf8BtwGpAZcB/wG1AakBlwH/AbUBqQGXAf8BtwGpAZYB/wG3AakBlgH/
+        AbYBqAGWAf8BtgGoAZYB/wG2AagBlQH/AbYBqAGVAf8BtgGpAZMB/wG2AakBkwH/AbcBqQGWAf8BtwGp
+        AZYB/wG3AakBlgH/AbYBqAGVAf8BtgGpAZMB/wG3AaoBlAH/AbYBqAGVAf8BtwGpAZYB/wG2AagBlQH/
+        AbYBqAGVAf8BtwGoAZUB/wG3AagBlQH/AbYBqAGVAf8BsgGnAZMB/wG1AagBkgH/AbUBqAGSAf8BtQGo
+        AZIB/wG0AacBkQH/AbUBpwGRAf8BtQGnAZEB/wG1AacBkQH/AbQBpgGTAf8BsgGlAZUB/wGxAagBmwH/
+        AccBxAG8Af8BzgHNAckB/wHLAs0B/wHIAcwBzQH/AckBzQHOAf8ByQHNAc4B/wHIAcwBzQH/AccBywHM
+        Af8BxwHLAcwB/wHIAcwBzQH/AccBzAHLAf8ByQHOAc0B/wHIAc0BzAH/AcYBywHKAf8ByAHKAcsB/wHJ
+        AcsBzAH/AckCywH/AcgCygH/AcgCygH/AcYCyAH/AccCyQH/AcYCyAH/AcYCyAH/AcQCxgH/AcUCxwH/
+        AcUCxwH//wD/AP8A/wD/AC0AAb8BxAHHAf8BvwHEAccB/wHAAcMBxwH/AcEBxAHIAf8BwAHFAcgB/wHA
+        AcUByAH/AcMBxgHKAf8BwwHGAcoB/wHCAccBygH/AcIBxwHKAf8BwgHHAcoB/wHDAcgBywH/AcIBxwHK
+        Af8BwwHIAcsB/wHFAcgBzAH/AcQBxwHLAf8BxQHKAc0B/wHEAckBzAH/AcEBxwHMAf8BxAHKAc8B/wHE
+        AckBzAH/AcQByQHMAf8BxAHIAc0B/wHEAcgBzQH/AcYBywHOAf8BxQHKAc0B/wHEAckBzAH/AcUBygHN
+        Af8BxQHKAc0B/wHEAckBzAH/AcQByQHMAf8BxAHJAcwB/wHFAcoBzQH/AcYBywHOAf8BxAHJAcwB/wHE
+        AckBzAH/AcQByQHMAf8BxAHJAcwB/wHFAckBygH/AcUByQHKAf8BxAHJAcgB/wHGAckBxwH/AcIBwAG/
+        Af8BtwGzAa4B/wGvAakBogH/AbEBqAGeAf8BsgGpAZwB/wG0AakBmwH/AbUBqAGYAf8BtAGnAZcB/wG1
+        AacBlQH/AbYBqAGWAf8BtwGpAZYB/wG1AacBlAH/AbYBqAGWAf8BtQGnAZUB/wG2AagBlQH/AbUBpwGU
+        Af8BtgGnAZQB/wG2AacBlAH/AbUBpwGUAf8BtQGnAZQB/wG1AacBlAH/AbYBqAGVAf8BtgGoAZUB/wG0
+        AaYBkwH/AbcBqAGVAf8BtwGoAZUB/wG2AagBkgH/AbcBqQGTAf8BtgGnAZQB/wG1AaYBkwH/AbQBpwGR
+        Af8BswGmAZAB/wG0AaYBkwH/AbMBpQGSAf8BtAGmAZAB/wG0AaYBkAH/AbQBpQGSAf8BtAGlAZIB/wGz
+        AaUBkgH/AbEBpQGTAf8BsQGrAaAB/wHJAcYBwQH/AcsBzAHKAf8BxgHLAcoB/wHGAcoBywH/AccBywHM
+        Af8BxwHLAcwB/wHIAcwBzQH/AcgBzAHNAf8BxwHLAcwB/wHIAcwBzQH/AcgBzAHNAf8BygLMAf8BygLM
+        Af8BxgHLAcoB/wHGAcsBygH/AcUByQHKAf8BxgHKAcsB/wHGAcsBygH/AcUBygHJAf8BxgLIAf8BxgLI
+        Af8BwwHIAccB/wHDAcgBxwH/AcQCxgH/AcQCxgH/AcEBxgHFAf8BwQHGAcUB//8A/wD/AP8A/wAtAAG/
+        AcQBxwH/Ab8BxAHHAf8BwQHEAcgB/wHCAcUByQH/AcEBxgHJAf8BwgHHAcoB/wHDAcYBygH/AcMBxgHK
+        Af8BwQHGAckB/wHDAcgBywH/AcIBxwHKAf8BwwHIAcsB/wHDAcgBywH/AcQByQHMAf8BxQHIAcwB/wHF
+        AcgBzAH/AcUBygHNAf8BwwHIAcsB/wHFAckBzgH/AcQByAHNAf8BxAHJAcwB/wHEAckBzAH/AcQByAHN
+        Af8BxAHIAc0B/wHFAcoBzQH/AcUBygHNAf8BxQHKAc0B/wHFAcoBzQH/AcQByQHMAf8BxQHKAc0B/wHE
+        AckBzAH/AcQByQHMAf8BwwHIAcsB/wHFAcoBzQH/AcQByQHMAf8BxAHJAcwB/wHDAcgBywH/AcMByAHL
+        Af8BwwHIAcsB/wHDAcgBywH/AcEByAHLAf8BwgHHAcoB/wHGAcgByQH/A8gB/wHHAcQBwAH/Ab4BugG1
+        Af8BtQGtAaYB/wGwAacBnQH/AbIBqQGcAf8BsgGpAZsB/wGzAaYBlgH/AbMBpwGVAf8BswGnAZUB/wG1
+        AacBlAH/AbQBpgGUAf8BtQGnAZUB/wG0AaYBkwH/AbQBpgGTAf8BtgGnAZQB/wG1AaYBkwH/AbQBpgGT
+        Af8BtAGmAZMB/wG0AaYBkwH/AbQBpgGTAf8BtAGmAZMB/wG1AacBlAH/AbUBpgGTAf8BtgGnAZQB/wG1
+        AacBkQH/AbQBpgGQAf8BtAGlAZIB/wG0AaUBkgH/AbMBpgGQAf8BswGmAZAB/wGzAaUBkgH/AbMBpQGS
+        Af8BtAGmAZAB/wGzAaQBkQH/AbMBpQGTAf8BsgGlAZUB/wGvAaUBlAH/AbcBsQGmAf8ByQHGAcEB/wHF
+        AcgBxgH/AcMBxwHIAf8BwgHHAcgB/wHDAccByAH/AcQByAHJAf8BxAHIAckB/wHEAcgByQH/AcQByAHJ
+        Af8BwwHHAcgB/wHDAccByAH/AcMBxwHIAf8BxQLHAf8BxgLIAf8BxAHJAcgB/wHDAcgBxwH/AcIBxgHH
+        Af8BwgHGAccB/wHAAcUBxAH/AcABxQHEAf8BwgLEAf8BwgLEAf8BvwHEAcMB/wG/AcQBwwH/AcECwwH/
+        AcACwgH/AcICxAH/Ab8BxAHDAf//AP8A/wD/AP8ALQABvAHBAcQB/wG8AcEBxAH/Ab0BwAHEAf8BvgHB
+        AcUB/wG+AcMBxgH/Ab8BxAHHAf8BwQHEAcgB/wHCAcUByQH/AcIBxQHJAf8BwwHGAcoB/wHDAcYBygH/
+        AcUByAHMAf8BwwHIAcsB/wHDAcgBywH/AcQByQHMAf8BxQHKAc0B/wHFAcoBzQH/AcUBygHNAf8BxQHK
+        Ac0B/wHFAcoBzQH/AcQByQHMAf8BwgHJAcwB/wHDAcgBywH/AcMByAHLAf8BwwHIAcsB/wHEAckBzAH/
+        AcQByQHMAf8BwwHIAcsB/wHDAcgBywH/AcUBygHNAf8BxQHKAc0B/wHEAckBzAH/AcQByQHMAf8BxAHJ
+        AcwB/wHEAckBzAH/AcQByQHMAf8BxAHJAcwB/wHEAckBzAH/AcQByAHNAf8BxQHJAc4B/wHCAccBygH/
+        AcMByAHLAf8BxAHHAcsB/wHDAccByAH/AcYByAHJAf8BxQLHAf8BxwHIAcYB/wHCAcEBvQH/AbgBtQGw
+        Af8BrwGqAaEB/wGvAacBmgH/Aa8BpgGYAf8BsQGnAZUB/wGzAacBlQH/AbIBpgGUAf8BtAGmAZQB/wG0
+        AaYBkwH/AbUBpgGTAf8BtAGlAZIB/wG1AaYBkwH/AbQBpgGTAf8BsgGnAZMB/wG1AacBlAH/AbQBpgGT
+        Af8BtAGmAZMB/wGzAaUBkgH/AbMBpQGSAf8BswGlAZIB/wGzAaUBkgH/AbMBpQGSAf8BswGlAY8B/wGz
+        AaUBjwH/AbIBpQGPAf8BsgGlAY8B/wGyAaUBjwH/AbIBpQGPAf8BsgGkAY4B/wGxAaMBkAH/AbABpAGS
+        Af8BrAGlAZYB/wG5AbYBrgH/AccByAHEAf8BxAHJAcgB/wHBAcYBxwH/AcMByAHJAf8BwwHIAckB/wHE
+        AckBzAH/AcIBxwHKAf8BwQHGAckB/wHCAcUByQH/AcIBxQHJAf8BxAHFAckB/wHDAccByAH/AcIBxgHH
+        Af8BwgHGAccB/wHBAcUBxgH/AcIBxgHHAf8BwgHGAccB/wHDAcUBxgH/AcQBxgHHAf8BwQHFAcYB/wHB
+        AcUBxgH/AcEBxQHGAf8BwQHFAcYB/wHBAcYBxQH/AcEBxgHFAf8BwAHFAcQB/wHBAsMB/wHAAcIBwwH/
+        AcABwgHDAf//AP8A/wD/AP8ALQABvQHCAcUB/wG8AcEBxAH/Ab8BwgHGAf8BvgHBAcUB/wG+AcMBxgH/
+        Ab8BxAHHAf8BvgHDAcYB/wHBAcQByAH/AcEBxAHIAf8BwQHEAcgB/wHBAcQByAH/AcEBxAHIAf8BwQHG
+        AckB/wHBAcYByQH/AcIBxwHKAf8BwgHHAcoB/wHCAccBygH/AcMByAHLAf8BxQHIAcwB/wHEAckBzAH/
+        AcMByAHLAf8BwQHIAcsB/wHEAckBzAH/AcQByQHMAf8BwwHIAcsB/wHFAcoBzQH/AcQByQHMAf8BxAHJ
+        AcwB/wHEAckBzAH/AcQByQHMAf8BxAHJAcwB/wHFAcoBzQH/AcUBygHNAf8BxQHKAc0B/wHEAckBzAH/
+        AcQByQHMAf8BxAHJAcwB/wHEAckBzAH/AcQByQHMAf8BxAHJAcwB/wHEAckBzAH/AcQByQHMAf8BxAHJ
+        AcwB/wHEAckBzAH/AcMByAHLAf8BxAHJAcwB/wHEAcgByQH/AcQByAHJAf8ByALKAf8ByAHHAcMB/wHD
+        AcABuAH/AbYBsQGoAf8BrQGnAZoB/wGtAaYBlwH/Aa4BpQGXAf8BsAGmAZUB/wGxAaUBkwH/AbMBpQGT
+        Af8BswGlAZIB/wGzAaUBkgH/AbIBpwGTAf8BsQGmAZIB/wGzAaUBkgH/AbIBpAGRAf8BsgGkAZEB/wGy
+        AaQBkQH/AbIBpAGRAf8BsgGkAZEB/wGyAaQBkQH/AbIBpAGRAf8BsgGkAY4B/wGyAaQBjgH/AbEBpAGO
+        Af8BsgGlAY8B/wGxAaQBjgH/AbEBpAGOAf8BsAGiAY8B/wGtAaMBkQH/Aa0BpgGXAf8BwAG+AbQB/wHF
+        AcYBxAH/AcEBxgHHAf8BwQHGAckB/wG/AcYByQH/AcABxQHGAf8BwQHGAccB/wHBAcYBxwH/AcEBxgHJ
+        Af8BwAHFAcgB/wHAAcUByAH/AcEBxAHIAf8BwQHEAcgB/wHCAcYBxwH/AcEBxQHGAf8BwQHFAcYB/wHC
+        AcYBxwH/AcEBxQHGAf8BvwHDAcQB/wHBAcMBxAH/Ab4BwgHDAf8BvQHBAcIB/wG8AcABwQH/Ab4BwgHD
+        Af8BvgHCAcMB/wG9AcIBwQH/Ab4BwwHCAf8BvgHDAcIB/wG9AcIBwQH/Ab4BwAHBAf8BvgHAAcEB//8A
+        /wD/AP8A/wAtAAG8Ab8BwwH/AbwBvwHDAf8BvQHAAcQB/wG9AcABxAH/Ab0BwgHFAf8BvgHDAcYB/wG+
+        AcMBxgH/Ab8BxAHHAf8BwQHGAckB/wG/AcQBxwH/AcEBxgHJAf8BwAHFAcgB/wHDAcYBygH/AcIBxQHJ
+        Af8BwgHFAckB/wHCAcUByQH/AcIBxwHKAf8BwgHHAcoB/wHCAccBygH/AcIBxwHKAf8BwgHHAcoB/wHD
+        AcgBywH/AcMByAHLAf8BxAHJAcwB/wHEAckBzAH/AcQByQHMAf8BwwHIAcsB/wHDAcgBywH/AcMByAHL
+        Af8BwwHIAcsB/wHEAckBzAH/AcQByQHMAf8BxAHJAcwB/wHEAckBzAH/AcQByQHMAf8BwwHIAcsB/wHF
+        AcgBzAH/AcUByAHMAf8BxAHJAcwB/wHEAckBzAH/AcMByAHLAf8BxAHJAcwB/wHDAcYBygH/AcQBxwHL
+        Af8BxAHIAckB/wHEAcgByQH/AcMByAHLAf8BwgHHAcoB/wHDAcgByQH/AcMBxwHIAf8BxgLIAf8ByAHJ
+        AccB/wHFAcYBwgH/ArwBtgH/AbQBrgGnAf8BqwGlAZoB/wGtAaQBlgH/Aa8BpQGUAf8BsAGkAZIB/wGw
+        AaQBkgH/AbABpAGSAf8BrwGjAZEB/wGxAaMBkAH/AbEBowGQAf8BsQGkAY4B/wGxAaQBjgH/AbIBpAGO
+        Af8BsgGkAY4B/wGwAaMBjQH/AbABowGNAf8BsAGjAY0B/wGwAaMBjQH/AbEBowGQAf8BsQGjAZAB/wGy
+        AaMBkAH/AbEBowGQAf8BrAGiAZAB/wGwAaoBnQH/AcUBwgG9Af8BxQHIAcYB/wHDAcgBxwH/AcEBxgHH
+        Af8BwQHGAckB/wHBAcYByQH/AcEBxgHHAf8BwgHHAcgB/wHCAccByAH/AcEBxgHHAf8BwQHGAccB/wHA
+        AcUByAH/AcABxQHIAf8BwAHFAcgB/wHAAcUBxgH/AcABxQHGAf8BwAHFAcYB/wHBAcYBxwH/AcEBxQHG
+        Af8BwAHEAcUB/wG/AcMBxAH/Ab8BwwHEAf8BwAHFAcQB/wG9AcMBwgH/Ab4BwgHDAf8BvgHCAcMB/wG9
+        AcIBwQH/Ab4BwwHCAf8BvQHCAcEB/wG9AcIBwQH/Ab0BwgHBAf8BvgHDAcIB//8A/wD/AP8A/wAtAAG7
+        Ab4BwgH/AbwBvwHDAf8BvAG/AcMB/wG9AcABxAH/AbwBwQHEAf8BvQHCAcUB/wG6AcEBxAH/AbwBwwHG
+        Af8BvgHDAcYB/wG/AcQBxwH/Ab8BxAHHAf8BvwHEAccB/wHBAcQByAH/AcIBxQHJAf8BwgHFAckB/wHD
+        AcYBygH/AcIBxwHKAf8BwwHIAcsB/wHCAccBygH/AcIBxwHKAf8BwQHGAckB/wHCAccBygH/AcIBxwHK
+        Af8BwwHIAcsB/wHCAccBygH/AcMByAHLAf8BwgHHAcoB/wHDAcgBywH/AcMByAHLAf8BwwHIAcsB/wHE
+        AckBzAH/AcIBxwHKAf8BwwHIAcsB/wHCAccBygH/AcMByAHLAf8BwwHIAcsB/wHEAccBywH/AcQBxwHL
+        Af8BwwHIAckB/wHDAcgByQH/AcMByAHLAf8BwwHGAcoB/wHEAccBywH/AcYBxwHLAf8BxAHIAckB/wHE
+        AcgByQH/AcMByAHLAf8BwwHIAcsB/wG/AcYByQH/AcIBxwHKAf8BwwHIAcsB/wHFAcgBzAH/AcQByAHJ
+        Af8BxgLIAf8BygHIAccB/wHIAcUBwAH/Ab4BvAGyAf8BtQGvAaQB/wGsAaQBlwH/AawBowGVAf8BrAGj
+        AZUB/wGtAaMBkgH/Aa8BowGRAf8BrwGjAZEB/wGvAaEBjgH/AbABowGNAf8BsAGiAYwB/wGxAaMBjQH/
+        Aa8BogGMAf8BrwGiAYwB/wGuAaEBiwH/Aa8BogGMAf8BrwGhAY4B/wGuAaMBjwH/Aa4BogGQAf8BqgGh
+        AZMB/wG1AbIBpAH/AckBxwG/Af8BxAHHAcUB/wHEAcgByQH/AcIBxwHIAf8BwgHHAcgB/wHBAcYByQH/
+        AcEBxgHJAf8BwAHFAcYB/wHBAcYBxwH/Ab8BxQHEAf8BwAHGAcUB/wHAAcUBxgH/AcABxQHGAf8BwAHF
+        AcgB/wHBAcYByQH/AcABxQHGAf8BvwHEAcUB/wHAAcUBxgH/Ab8BxAHFAf8BwAHEAcUB/wHAAcQBxQH/
+        Ab8BwwHEAf8BvgHCAcMB/wG8AcIBwQH/AbwBwgHBAf8BvgHCAcMB/wG9AcEBwgH/Ab8BxAHDAf8BvgHD
+        AcIB/wG+AcMBwgH/Ab0BwgHBAf8BvQHCAcEB/wG9AcIBwQH//wD/AP8A/wD/AC0AAbsBvgHCAf8BuwG+
+        AcIB/wG8Ab8BwwH/Ab0BwAHEAf8BvAHBAcQB/wG8AcEBxAH/Ab0BwgHFAf8BvQHCAcUB/wG9AcIBxQH/
+        Ab0BwgHFAf8BvwHEAccB/wG/AcQBxwH/Ab8BxAHHAf8BwAHFAcgB/wHAAcUByAH/AcABxQHIAf8BwQHG
+        AckB/wHBAcYByQH/AcEBxgHJAf8BwgHHAcoB/wHDAccByAH/AcQByAHJAf8BwwHIAcsB/wHCAccBygH/
+        AcQBxwHLAf8BxAHHAcsB/wHEAccBywH/AcMByAHLAf8BwwHIAcsB/wHDAcgBywH/AcMByAHLAf8BxQHI
+        AcwB/wHEAckBzAH/AcMByAHLAf8BxQHIAcwB/wHEAccBywH/AcIBxwHKAf8BxAHJAcwB/wHEAccBywH/
+        AcQBxwHLAf8BxQHIAcwB/wHFAcgBzAH/AcUByAHMAf8BxAHHAcsB/wHEAcgByQH/AcMBxwHIAf8BwwHI
+        AcsB/wHEAckBzAH/AcQByQHMAf8BwwHIAcsB/wHFAcoBzQH/AcMByAHLAf8BxAHIAckB/wHFAckBygH/
+        AccByQHKAf8BxgLIAf8ByQHKAcgB/wHIAckBxQH/AscBwQH/Ab0BuwGzAf8BsAGuAaQB/wGrAaUBmgH/
+        AaoBogGVAf8BrAGiAZEB/wGtAaEBjwH/Aa0BogGOAf8BrwGiAYwB/wGvAaIBjAH/Aa8BogGMAf8BrwGi
+        AYwB/wGvAaIBjAH/Aa4BoQGLAf8BrAGhAYsB/wGqAaABjgH/AaoBogGVAf8BvAG6AbAB/wHIAckBxQH/
+        AcYByQHHAf8BxAHJAcgB/wHFAckBygH/AcQByQHIAf8BxAHJAcgB/wHEAcgByQH/AcUByQHKAf8BxgHK
+        AcsB/wHEAcgByQH/AcMBxwHIAf8BwQHGAccB/wHBAcYBxwH/AcABxQHGAf8BvwHEAcUB/wHBAcUBxgH/
+        AcEBxQHGAf8BwgHGAccB/wHCAcYBxwH/AcQByAHJAf8BwQHHAcYB/wHAAcYBxQH/AcEBxgHFAf8BwAHF
+        AcQB/wHAAcUBxAH/Ab8BxAHDAf8BvwHEAcMB/wHAAcUBxAH/AcECwwH/AcECwwH/AcECwwH/AcACwgH/
+        Ab8CwQH/Ab8CwQH//wD/AP8A/wD/AC0AAbkBvAHAAf8BugG9AcEB/wG7Ab4BwgH/AbsBvgHCAf8BugG/
+        AcIB/wG6Ab8BwgH/AbsBwAHDAf8BuwHAAcMB/wG9AcIBxQH/AbwBwQHEAf8BvQHCAcUB/wG9AcIBxQH/
+        Ab4BwwHGAf8BvgHDAcYB/wG/AcQBxwH/Ab8BxAHHAf8BvwHEAccB/wHAAcUByAH/AcABxQHIAf8BwAHF
+        AcgB/wHBAcUBxgH/AcEBxQHGAf8BwQHGAckB/wHBAcYByQH/AcQBxwHLAf8BwgHFAckB/wHCAcUByQH/
+        AcMBxgHKAf8BwgHHAcoB/wHCAccBygH/AcIBxwHKAf8BwgHHAcoB/wHDAcgBywH/AcMByAHLAf8BxAHH
+        AcsB/wHDAcYBygH/AcIBxwHKAf8BwwHIAcsB/wHEAccBywH/AcQBxwHLAf8BxAHHAcsB/wHEAccBywH/
+        AcQBxwHLAf8BxgHJAc0B/wHFAckBygH/AcQByAHJAf8BwwHIAcsB/wHCAccBygH/AcIBxwHKAf8BwgHH
+        AcoB/wHDAcgBywH/AcMByAHLAf8BxQHJAcoB/wHEAcgByQH/AcQBxwHLAf8BxAHHAcsB/wHEAcgByQH/
+        AcYBygHLAf8BxwLJAf8ByAHLAckB/wHKAcsBxwH/AcwByQHEAf8BwQG+AbYB/wG4AbEBqAH/Aa4BpgGZ
+        Af8BqgGhAZMB/wGpAaEBkAH/AasBoQGPAf8BqgGgAY4B/wGpAZ8BjQH/AasBoAGMAf8BqQGfAY0B/wGn
+        AaABjQH/AaoBpQGWAf8BwwHBAbkB/wHIAckBxQH/AcQByQHIAf8BxAHJAcoB/wHDAccByAH/AcQByAHJ
+        Af8BxQHKAckB/wHDAcgBxwH/AcMBxwHIAf8BxAHIAckB/wHCAcYBxwH/AcMBxwHIAf8BwwHHAcgB/wHC
+        AcYBxwH/AcABxQHGAf8BvwHEAcUB/wHBAcUBxgH/AcEBxQHGAf8BwQHFAcYB/wHBAcUBxgH/AcMBxwHI
+        Af8BwQHFAcYB/wHAAcYBxQH/Ab4BxAHDAf8BvwHEAcMB/wG+AcMBwgH/Ab0BwgHBAf8BvQHCAcEB/wG+
+        AcMBwgH/Ab8BxAHDAf8BwALCAf8BwALCAf8BwALCAf8BwALCAf8BvwLBAf8BvQK/Af//AP8A/wD/AP8A
+        LQABtwG8Ab8B/wG4Ab0BwAH/AbgBvQHAAf8BuQG+AcEB/wG5Ab4BwQH/AboBvwHCAf8BugG/AcIB/wG6
+        Ab8BwgH/AbsBwAHDAf8BvAHBAcQB/wG+AcEBxQH/Ab4BwQHFAf8BvwHCAcYB/wG/AcIBxgH/AcABwwHH
+        Af8BwAHDAccB/wG/AcQBxwH/Ab8BxAHHAf8BwgHFAckB/wHCAcUByQH/AcEBxgHHAf8BwQHGAccB/wHD
+        AcYBygH/AcMBxgHKAf8BwgHHAcoB/wHBAcYByQH/AcQBxwHLAf8BwwHGAcoB/wHCAccBygH/AcIBxwHK
+        Af8BwwHIAcsB/wHCAccBygH/AcIBxwHKAf8BwQHGAckB/wHCAcUByQH/AcIBxQHJAf8BwgHHAcgB/wHC
+        AccByAH/AcIBxwHKAf8BwQHGAckB/wHCAccByAH/AcMByAHJAf8BwwHHAcgB/wHDAccByAH/AcMBxgHK
+        Af8BwwHGAcoB/wHDAccByAH/AcMBxgHKAf8BwQHGAckB/wHCAcYBywH/AcEBxgHJAf8BwQHGAckB/wHC
+        AccByAH/AcIBxwHIAf8BwQHGAckB/wHCAccBygH/AcIBxwHKAf8BwgHHAcoB/wHDAccByAH/AcUByQHK
+        Af8BxQHKAckB/wHFAscB/wPIAf8DyAH/AcoByAHHAf8BxgHDAb8B/wG5AbcBrwH/Aa4BrAGiAf8BpgGi
+        AZcB/wGjAZ0BkAH/AaUBngGPAf8BpQGdAZAB/wGrAakBnwH/AsUBvwH/AccByAHGAf8BxAHJAcgB/wHB
+        AcUBxgH/AcIBxwHKAf8BwwHHAcgB/wHDAccByAH/AcMBxwHIAf8BwwHHAcgB/wHCAcYBxwH/AcIBxgHH
+        Af8BwQHFAcYB/wHAAcQBxQH/AcABxAHFAf8BwAHEAcUB/wG/AcQBxQH/Ab4BwwHEAf8BwAHEAcUB/wG/
+        AcMBxAH/AcEBxgHFAf8BwQHGAcUB/wHBAcYBxQH/AcEBxgHFAf8BwAHEAcUB/wG/AcMBxAH/Ab0BwQHC
+        Af8BvgHCAcMB/wG9AcMBwgH/AbsBwQHAAf8BvQHCAcEB/wG9AcIBwQH/AbwBwQHAAf8BvAHBAcAB/wG8
+        AcEBwAH/AbwBwQHAAf8BvQK/Af8BvwLBAf//AP8A/wD/AP8ALQABtAG5AbwB/wG1AboBvQH/AbUBugG9
+        Af8BtgG7Ab4B/wG3AbwBvwH/AbcBvAG/Af8BuQG+AcEB/wG4Ab0BwAH/AbkBvgHBAf8BuQG+AcEB/wG8
+        Ab8BwwH/AbsBvgHCAf8BuwG+AcIB/wG9AcABxAH/Ab4BwQHFAf8BvQHAAcQB/wG9AcIBxQH/Ab0BwgHF
+        Af8BvgHBAcUB/wG/AcIBxgH/Ab4BwwHEAf8BvwHEAcUB/wHAAcMBxwH/AcEBxAHIAf8BvwHEAccB/wHA
+        AcUByAH/AcEBxAHIAf8BwQHEAcgB/wHAAcUByAH/AcEBxgHJAf8BwQHGAckB/wHBAcYByQH/Ab8BxgHJ
+        Af8BwQHGAckB/wHAAcUByAH/AcIBxgHHAf8BwQHGAccB/wHBAcYBxwH/AcEBxgHJAf8BwQHGAckB/wHC
+        AccByAH/AcEBxgHHAf8BwgHGAccB/wHCAcYBxwH/AcEBxAHIAf8BwwHGAcoB/wHCAcYBxwH/AcIBxQHJ
+        Af8BwQHGAckB/wHBAcYByQH/AcEBxgHJAf8BwQHGAckB/wHBAcYBxwH/AcABxQHGAf8BwAHFAcgB/wHB
+        AcYByQH/AcEBxgHJAf8BwQHGAckB/wHBAcQByAH/AcIBxQHJAf8BwQHGAccB/wHBAcYByQH/AcIBxQHJ
+        Af8BwQHEAcgB/wHBAcQByAH/AcQBxgHHAf8BxAHHAcUB/wHHAcgBxAH/AsYBwAH/AcMBwQG5Af8BuQG3
+        Aa0B/wG4AbUBrQH/AcUBxgHCAf8BxAHHAcUB/wHCAccBxgH/AcIBxgHHAf8BwQHGAckB/wHAAcUByAH/
+        AcEBxQHGAf8BwQHFAcYB/wHCAcYBxwH/AcEBxQHGAf8BwQHFAcYB/wHCAcYBxwH/AcEBxQHGAf8BwgHG
+        AccB/wHBAcUBxgH/AcIBxgHHAf8BwQHGAccB/wHBAcYBxwH/AcEBxQHGAf8BwgHGAccB/wHBAcYBxQH/
+        AcABxQHEAf8BwAHFAcQB/wHAAcUBxAH/Ab4BwgHDAf8BvgHCAcMB/wG9AcEBwgH/AbwBwAHBAf8BuwHB
+        AcAB/wG6AcABvwH/AbsBwAG/Af8BuQG+Ab0B/wG5Ab4BvQH/AboBvwG+Af8BuwHAAb8B/wG4Ab0BvAH/
+        AbgBvQG8Af8BtwG8AbsB//8A/wD/AP8A/wAtAAGzAbgBuwH/AbMBuAG7Af8BswG4AbsB/wG0AbkBvAH/
+        AbYBuwG+Af8BtgG7Ab4B/wG3AbwBvwH/AbgBvQHAAf8BuAG9AcAB/wG5Ab4BwQH/AbkBvAHAAf8BuwG+
+        AcIB/wG5Ab4BwQH/AbsBwAHDAf8BuwHAAcMB/wG7AcABwwH/AbsBwAHDAf8BvAHBAcQB/wG9AcIBxQH/
+        Ab4BwwHGAf8BvQHCAcUB/wG9AcIBxQH/Ab0BwgHFAf8BvgHDAcYB/wG+AcMBxgH/Ab4BwwHGAf8BvwHE
+        AccB/wHAAcUByAH/Ab8BxAHHAf8BwAHFAcgB/wG/AcQBxwH/Ab8BxAHHAf8BwAHFAcYB/wHAAcUBxgH/
+        AcABxQHGAf8BwAHFAcYB/wG/AcQBxQH/AcEBxgHJAf8BwAHFAcgB/wHAAcUByAH/AcEBxQHGAf8BwQHF
+        AcYB/wHBAcQByAH/AcABwwHHAf8BwAHFAcgB/wHAAcUByAH/AcABxQHIAf8BwAHFAcgB/wHBAcQByAH/
+        AcEBxAHIAf8BwQHEAcgB/wHBAcQByAH/AcEBxgHHAf8BwAHFAcYB/wHBAcYByQH/AcABxQHIAf8BwAHF
+        AcgB/wHAAcUByAH/AcABxQHIAf8BwAHFAcgB/wHBAcYByQH/AcABxQHIAf8BwQHGAckB/wHAAcUByAH/
+        AcABxQHIAf8BwQHFAcYB/wHBAcUBxgH/AcEBxgHFAf8BwQHGAcUB/wHDAsUB/wHFAcYBxAH/AcMBxgHE
+        Af8BwQHGAcUB/wHAAcUBxAH/AcABxAHFAf8BwQHFAcYB/wG/AcQBxwH/Ab8BxAHHAf8BwAHDAccB/wHB
+        AcQByAH/AcABxAHFAf8BvwHDAcQB/wG/AcMBxAH/AcABxAHFAf8BwgHEAcUB/wHCAcQBxQH/AcABxAHF
+        Af8BwAHEAcUB/wG+AcMBxAH/Ab4BwwHEAf8BvgHCAcMB/wG/AcMBxAH/Ab8BxAHDAf8BvQHCAcEB/wG9
+        AcEBwgH/Ab0BwQHCAf8BvwHBAcIB/wG9Ab8BwAH/AbsBvwHAAf8BuwG/AcAB/wG7AcABvwH/AbsBwAG+
+        Af8BuwHAAb8B/wG6Ab8BvgH/AbkBvgG9Af8BuAG9AbwB/wG4Ab0BvAH/AbgBvQG8Af8BuAG9AbwB/wG2
+        AbwBuwH//wD/AP8A/wD/AC0AAbIBtwG6Af8BsgG3AboB/wGzAbgBuwH/AbMBuAG7Af8BswG4AbsB/wG0
+        AbkBvAH/AbUBugG9Af8BtgG7Ab4B/wG2AbsBvgH/AbYBuwG+Af8BuAG7Ab8B/wG7Ab4BwgH/AbgBvQHA
+        Af8BuQG+AcEB/wG6Ab8BwgH/AbwBwQHEAf8BugG/AcIB/wG7AcABwwH/AbwBwQHEAf8BvAHBAcQB/wG8
+        AcEBxAH/AboBvwHCAf8BvAHBAcQB/wG9AcIBxQH/Ab0BwgHFAf8BvQHCAcUB/wG9AcIBxQH/Ab4BwwHG
+        Af8BvgHDAcYB/wG9AcIBxQH/Ab4BwwHGAf8BvgHDAcYB/wG/AcQBxQH/Ab8BxAHFAf8BvwHEAcUB/wG/
+        AcQBxQH/Ab4BwwHGAf8BvgHDAcYB/wG/AcQBxwH/Ab8BxAHHAf8BwAHEAcUB/wHAAcQBxQH/AcABwwHH
+        Af8BvwHCAcYB/wG+AcMBxgH/Ab4BwwHGAf8BvgHDAcYB/wG/AcQBxwH/AcABxAHFAf8BvwHDAcQB/wHA
+        AcMBxwH/AcABwwHHAf8BvwHEAcUB/wG/AcQBxQH/Ab4BwwHGAf8BvwHEAccB/wG/AcQBxwH/Ab0BwgHF
+        Af8BvwHEAccB/wG/AcQBxwH/Ab8BxAHHAf8BvgHDAcYB/wG/AcQBxwH/Ab8BxAHHAf8BvgHDAcYB/wG/
+        AcQBxwH/Ab0BwgHDAf8BvgHDAcQB/wHAAcUByAH/Ab8BxAHHAf8BwQHFAcYB/wHAAcQBxQH/Ab8BxAHF
+        Af8BvwHEAcUB/wG/AcMBxAH/Ab8BwwHEAf8BvQHCAcUB/wG9AcIBxQH/Ab4BwQHFAf8BvgHBAcUB/wG+
+        AcIBwwH/Ab4BwgHDAf8BvgHCAcMB/wHAAcQBxQH/AcABwgHDAf8BwAHCAcMB/wG+AcIBwwH/Ab0BwQHC
+        Af8BvQHCAcMB/wG9AcIBwwH/Ab4BwgHDAf8BvQHBAcIB/wG7AcABvwH/AbwBwQHAAf8BvQHBAcIB/wG7
+        Ab8BwAH/Ab4BwAHBAf8BvQG/AcAB/wG6Ab4BvwH/AbkBvgG9Af8BuQG+Ab0B/wG5Ab4BvAH/AbkBvgG9
+        Af8BuQG+Ab0B/wG5Ab4BvQH/AbgBvQG8Af8BtwG8AbsB/wG2AbsBugH/AbQBugG5Af8BtAG6AbkB//8A
+        /wD/AP8A/wAtAAFCAU0BPgcAAT4DAAEoAwABuAEBAgABUwMAAQEBAAEBBQABKAESFgAD//8A/wD/AP8A
+        /wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ADsACw==
+</value>
+  </data>
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAD+/v7/yMju/6ur5P+sq+X/rKvl/6yr5f+sq+X/q6rl/6yq5f+rquX/q6rl/6yq5f+sq+X/rKvl/6yr
+        5f+squX/rKrl/6yq5f+squX/rKrl/6yr5f+sq+X/q6vl/6ur5f+rquX/q6vl/6+v6P/X1/L/+Pj8//n5
+        /f/+/v7//v/+//7//v/+//7//v////7////+//7///7+/////v//////////////////////////////
+        ///////////////////+/v7/cnHU/ycnvP8oKL3/KCe9/ycmvf8nJr3/Jya9/ycmvf8nJr3/Jya9/ycm
+        vf8nJb7/JyW+/yclvv8nJb7/JyW+/yclvf8mJb3/Jia9/yclvf8nJb3/Jya9/yYlvf8nJb3/Jya9/yko
+        vv81M8H/QD/F/0tMyf+UlN3/tbbp/+vr+P/7/P3//v7+//3+/v/+/v7//v79//7+/v/+/v7/////////
+        ///////////////////////////////////+/v7/cnPV/ykovf8pKL7/KSi+/yknvv8pJ77/KCe+/ygn
+        vv8nJ77/KCe+/ycnwP8nKMD/JyfA/ygowP8oJ8D/KCfA/ygnwP8nJ8D/JyjA/ycnwP8nJ7//Jye//ygn
+        wP8oJ7//KCe+/ygovv8oKL7/KSi+/ykovv8mJbz/Kim9/zg4w/93ddX/xsbv//b2/P/+/v7//v7+//7+
+        /v/+/v7////////////////////////////////////////////+/v7/cnLW/yknvv8nKL7/Jyi//ycn
+        v/8nJ8D/JyjA/ycnwP8nJ8D/KCfA/ycnwP8nJ8D/JiXA/ycmwf8nJ8H/JyfB/ycnwP8mJ8D/JifA/ycn
+        wP8nJ8D/JyfA/ycnwP8nJ8D/JyjA/ycnv/8nKMD/Jye+/ygovf8oKL//KCi+/ykovf8pKL3/KCi8/1lY
+        zP+7u+r/+fn9//7+/v/+/v7///7+////////////////////////////////////////////cnLW/ygn
+        wP8nKMD/JyfA/ycnwP8nJ8D/JifA/yYmwP8mJsD/JybB/yYmwP8mJsD/JiXB/yYlwf8mJsH/JiXA/yYm
+        wf8mJsH/JibB/yYlwP8nJ8H/JibB/ycmwf8nJsH/JyfB/ycnwP8mJsD/JifA/ycnwP8oJ8D/KCjA/ygn
+        vv8pKL//KSi+/ygnvf8nKL3/ZGLP/+Dg9v/9/v7//f7+//7+/v//////////////////////////////
+        ////////cXLX/ycnwP8mJ8D/JibA/yYmwf8mJcD/JiXB/yYmwf8mJcH/JibC/yYlwf8mJcH/JiXC/yYl
+        wv8mJcL/JSTB/yYlwv8mJcL/JSXB/yYlwf8mJcH/JSXB/yYlwf8mJcH/JiXB/yYmwP8mJsD/JibA/ycn
+        wP8nKMD/JyjA/ygnv/8oJ7//KCe+/ykovf8pKL7/KCe9/z8+w/+xsef//Pz9//3+/v/+/v7//v7+////
+        ///////////////////+/v7/cXHX/ycmwf8mJsH/JiXB/yYlwv8mJcL/JSXC/yUlw/8kJcP/JCXD/yQl
+        w/8kJcP/JCXD/yQkw/8kJMP/IyXD/yQkxP8kJMP/JCTD/yQkw/8kJcL/JCXC/yQlwv8lJMH/JSXB/yYl
+        wf8mJsH/JibA/ycnwf8nJ8H/JyfA/ycnwP8oJ8D/KCfA/ygov/8oKL3/KCe+/ykovv8sK7//p6fl//7+
+        /v/+/v7//v7+///////////////////////+/v7/cXDX/yYlwf8lJcL/JSXD/yQlw/8kJMT/JCTD/yQk
+        xP8kJMT/JCPE/yMjxP8kI8T/JCPF/yMjxf8kI8X/JCPE/yMjxP8jI8X/JCPF/yQjxP8kI8T/JCPE/yQj
+        xP8kJMP/JCTD/yUlw/8lJcP/JSXC/yYlwv8mJcH/JiXB/ycmwf8nJsD/JyfA/yYnwP8nJ8D/KCi//ygo
+        vv8pKL//KCe9/62t5v/9/f7//v7+///+/v//////////////////////cHDX/yQlw/8kJcP/JCTE/yQk
+        xP8kI8T/IyPE/yMjxP8jIsX/IyPG/yMixv8jIsb/IyLG/yMixv8jI8b/IiPH/yIjxv8iIsb/IyLG/yMj
+        xv8jI8b/JCLG/yQixf8jI8X/IyPE/yQjxP8kJMP/JCTD/yQlw/8kJcL/JSXC/yUlwf8mJcL/JifA/yYm
+        wP8oJ8D/JybA/yknv/8oKL//KCi+/zU2w//Y2PT//f79//7+/v////////////////////7/b2/Y/yQj
+        xP8kJMT/IyPE/yQjxv8jIsb/IiLF/yIixv8iIsb/IiHG/yIix/8hIsf/ISHG/x4exv8eHcb/KCbI/zEw
+        yv8zMsv/OzvN/zs8zP88PM3/PTzN/zw8zf87PMz/PD3M/z08zP8+Pcz/Pj3M/z4+y/8+Psv/Pj7L/z8+
+        yv8+P8j/Pz/J/zo6x/8nJ8H/JyfA/ygmwP8oJ7//KCi+/ygnvv9jYs//9/b8//7+///+/v7///7+////
+        /////v//b2/Z/yMjxv8jI8b/IyPG/yIixv8hIsf/ISHG/yIhx/8hIsb/ISHI/yAfx/88PM7/Z2fZ/52d
+        5f/ExPD/1tb0/+Xl+P/p6fn/9vb8//f2/P/39vz/9/f8//f3/P/39/z/9/f8//f3/P/39/z/9/f8//f3
+        /P/39/z/9/f8//f3/P/29vz/9vb8/+Hh9v87O8f/JyXB/ycmwf8nJ8D/Jye//ygnv/8nJ7//tbXp//7+
+        /////v7///7+///+////////b2/a/yIixv8hIsb/ISLG/yEhxv8hIcf/IiDH/yAgyP8iIcn/WlrW/7Oz
+        7P/p6fn//Pz+//39/v/9/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+///+////////////////
+        //////////////////////////////7+/v/+/v7//v7+//z7/f+Eg9z/JSPB/yYlwf8nJsD/KCbB/yYm
+        v/8nJr//UFDM//r7/f/+/v7//v7+///+/v//////bm7b/yEhxv8hIcf/ISHH/yEhyP8gIMj/ICDJ/zMz
+        zf+rq+r/9vf8//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7///7+/v/+/v7//v7+///+
+        //////////////////////////////////////////////7+/v/+/v7//v7+//7+/v/W1vT/KyvE/yYl
+        wv8mJsH/JybC/yYnwP8nJ8D/KCnA/7q66//+/v7//v7+//7+////////bm3c/yAhyP8hIcj/ICDK/yAg
+        yf8eIMn/NjfQ/8vK8v/9/f7//v7+//7+/v//////////////////////////////////////////////
+        ///////////////////////////////////////////////////////////////////////////////+
+        /v/6+v3/Y2PU/yQkw/8mJcL/JiXB/yYmwP8mJsD/JyfB/2Fh0v/7+/3//v3+//7+/v//////bW3c/yAg
+        yf8gIMr/ICDJ/x8fy/8kIc3/w8Pw//3+/f/+/v7//v79//7+/v//////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////7+/v/+/v7/t7br/yMkxP8kJMP/JCXC/yUkwf8mJcD/JibA/zc2xf/k4/f//P7+//7+
+        /v///v//bW3d/yAfy/8fH8z/Hx/M/x4ezP9ta93//Pz9//7+/v/+/v7//v7+//7+/v//////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////7+/v/+/v7/8vL7/0ZGz/8jI8X/JCTE/yUlwv8mJcH/JibA/yAf
+        v/+7u+v//v7+//7+/v//////bWze/x8fzP8dHsv/Hh3M/yMiz//CwvH//v7+//7+/v//////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////////////////////7+/v/+/v7//v7+/5iY5P8iIsT/JCPE/yQk
+        w/8kJcL/JCXB/yUlwP9wcNb//v7+//7+/v//////bWvf/x4dzP8dHc3/HBzO/zg31P/09Pz//v7+//7+
+        /v//////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////////////////////////////////////7+/v/+/v7//f79/+Tk
+        9/81Nsv/IyLG/yQjxP8kJMP/JCXD/yUlwf9eXtH//P3+//7+/v/+////bGvf/x0dzv8cHM7/GxrP/1hX
+        3f/5+f3//v7+//7+/v//////////////////////////////////////////////////////////////
+        ///+/v7//v7+/////v///v7///7+///+///////////////+/////v////7////+//////////////7+
+        /v/+/v7//v7+//z9/v90dNv/IiHG/yQixv8jI8X/JCTE/yQlw/8xMsb/3t72//7+/v/+////a2rg/xwc
+        z/8bGtD/GRjQ/29u4f/8/P7//v7+///+////////////////////////////////////////////////
+        ///+/v7//v7+//7////+/v7//v7+//7+/v/+/v7//v7+//7////////////////+/////v////7////+
+        //////////7////+//////////////7//v/Ly/H/KCjJ/yQixv8jI8X/JCTE/yQkxP8lJML/1dbz//7+
+        /v//////amrg/xsa0f8aGtH/FxfR/3R04//8/P7//v7+///+////////////////////////////////
+        ///////////////////+/v7//v7+//7+/v/+/v7//v3+//7+/f/+/v7//v7+///+/v/////////+////
+        /v/////////////////////////////////+/v///v7///7+/v/39/z/X1/X/yEgx/8jIsb/IiPF/yMj
+        xP8kJMP/1tbz//7+/v//////amri/xoa0f8ZGdL/GBfT/2Be4f/6+v3//v7+//7+/v//////////////
+        /////////////////////////////////v/9/v7//f7+//3+/v/i4vn/p6fv/3p76P9jYuP/TUze/0lJ
+        3f9JSdz/SUnb/0pK2/9KS9v/S0va/0xL2f9NTNj/TkzY/05M2P9PTNf/Tk3W/09O1f9OTdT/ODfO/yEh
+        x/8hIsb/IiPG/yIjxf8jI8T/pqfn//7+/v//////aWni/xgZ0v8ZGdT/FxjT/0pK3v/5+P3//v7+//7+
+        /v////////////////////////////////////////////7+/v/+/v7//Pz+/6en8P8uLtz/FRXW/xYV
+        2P8WFtb/FhbW/xcW1v8YGNX/GBnU/xgZ0v8ZGdL/GhrR/xka0f8bG9D/HRvP/x0czv8dHc3/Hh7M/x8f
+        y/8gH8v/ICDK/yAhyP8hIcf/IiLG/yEjxf8jI8b/hobf//7+/v//////aWjj/xkY1P8YF9X/FhfW/yko
+        2f/v7/z//v7+///+///////////////////////////////////////////////+/v/+/v7/5uX7/ycn
+        3P8WFNn/FhXY/xYV2P8WFdf/FhbX/xYW1v8XFtX/FxfV/xcZ0/8ZGdP/GhnS/xoa0v8aG9H/GxvQ/x0c
+        z/8dHM7/Hh3N/x8ezP8gH8z/IB/K/x8gyP8gIcj/ISHH/yEixv8jJMb/cnHa//7+/v//////Z2fj/xYX
+        1P8XFtb/FhXX/x4d2f/Ly/X//v7+//7+/v//////////////////////////////////////////////
+        /v/+/v7/2Nj4/x4c3f8VFNr/FRTa/xUU2f8WFNj/FhXY/xYV2P8WFtj/FxbX/xcW1v8XF9X/FxjU/xkY
+        0/8ZGdL/GRrS/xob0P8cHM//HR3O/x0czP8fHsz/ICDM/yAgyv8hIcn/ICDI/yIhx/8jIcb/cG/a//7+
+        /v/+/v7/Z2fl/xcW1/8WFdj/FhXY/xUU2f+Zme7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7/6ej7/yQk3v8TE9z/ExLb/xQT2v8UE9r/FRTa/xYV2f8WFdj/FhbY/xcW
+        2P8XFtb/FxfW/xgY1P8ZGdL/GhrS/xob0f8bG9D/HBzP/x0dzv8dHcz/Hx7M/yAgzP8gIMr/ICHI/yAh
+        x/8iIsb/b27a///+/v/+/v7/Z2fl/xYV1/8WFdj/FRTY/xMT2f9bWuX//f3+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/+fn9/0lK5P8TEd7/ExLd/xMT3f8TE93/ExPb/xUT
+        2v8VFNn/FhTZ/xYV2P8WFdf/FxbX/xcX1f8XGdT/GBnS/xkZ0v8aGtH/GxvR/xwcz/8dHc7/Hh3N/x8f
+        zP8gIMv/ICDJ/yEhyP8hIcf/fX/e///+///+/v7/Zmbm/xYU2P8VFNr/FBPa/xMT3P8iI93/6Oj7//7+
+        /v/+/v7//f7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//f7+/4yM8P8REd7/ERDd/xMS
+        3f8TEt3/ExPc/xMT3P8TE9v/FRTa/xUU2f8WFdj/FhbX/xcX1v8XF9X/GBnU/xkZ0v8aGtL/GhvR/xsb
+        z/8dHM//HR3N/x8ezP8fH8v/ICDK/yAgyf8iIMj/jo7j///////+/v7/ZmXm/xUU2f8UE9r/ExPc/xMT
+        3f8ODd7/rq3z//z9/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/9rb
+        +v8bGuH/EA/f/xEQ3v8REN3/EhLd/xMS3f8TE93/FBPb/xQT2v8VFNn/FhXY/xYW1/8WFtb/FxfV/xgZ
+        1P8ZGdL/GhrR/xob0f8dG8//HRzO/x0czP8fHsz/ICDM/yAgyf8fIMf/zs/z/////v/+/v7/ZWXn/xMT
+        2/8SE9z/EhLd/xES3v8RDt7/Wlro//r6/f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//v7/v9bW+r/Dg3g/xAQ4P8QEN//EBDe/xEQ3f8SEt7/ExPc/xMT2/8UFNr/FhXZ/xYV
+        2P8WFdf/FxbW/xcX1f8YGdP/GRnS/xoa0f8bG9D/HBzP/x0czf8fHsz/IB/M/yAfy/8fIMn/1NX0///+
+        ///+/v7/ZmTn/xMT3P8SEt3/ERHe/xEQ3/8QEeD/Hx/i/9jY+f/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v+2tvb/EhHi/w8O4v8QD+H/EBDf/xAP3v8REd7/EhLd/xMT
+        3P8TE9r/FBTa/xYU2f8WFdj/FhbX/xcW1v8XGNT/GRnS/xoa0v8aG9L/HBzQ/x0dzv8dHcz/Hh7M/x4f
+        y/8rK8z/3d32//7+/v/+/v7/ZmTo/xMS3v8REd3/ERHe/xAQ3/8PD+D/DAzh/4eG8P/+/v7//f7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/x8f3/PDzo/w4O4v8PDuL/Dw/h/xAP
+        4P8QEN//EBHe/xES3f8TE9z/FBPb/xUU2v8WFdn/FhXY/xcW1/8XF9X/GBjU/xkZ0v8aGtL/GxvR/xwc
+        z/8dHM7/Hh3M/x8fyv9YV9j/+/v9//7+/v/+/v7/ZWTp/xIR3f8REN7/EBDg/w8P4P8ODuL/DQ7i/zEx
+        5//r6/v//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/lJPy/wwM
+        5P8ODuP/Dg7j/w8P4f8QEOD/EBDf/xAQ3v8REt3/ExLc/xMT2v8VFNn/FhXY/xYW2P8XFtb/FxjV/xkZ
+        0/8aGtL/GhrR/xsb0P8dHc//Hh3M/x4cy/9wcN3//f7+//7+/v/+/v7/ZWTp/xAQ3v8QEOD/Dw/g/w4P
+        4v8NDeP/DQ3j/w0O4/+pqPX//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/9/v7/4OH7/yMi5/8NDuP/DQ7k/w4O4/8PD+H/EA/g/xAQ3/8REN7/ExLd/xMT2/8VE9r/FRTZ/xYV
+        2P8WFtf/FxbW/xgZ1f8YGtP/GhrS/xsb0P8dHM//HRzO/xcWyv+9vu///v7+//3+/v/+/v7/ZWPq/w8P
+        3/8PD+D/Dg7i/w0O4/8ODeT/DAzl/wsL5f9JSu3/+Pj9//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//f3+/3R28P8LCeX/DQ3k/w4O4/8OD+L/Dw/g/xAP4P8QEN7/ExHe/xMT
+        3P8UE9v/FRTa/xUU2f8WFtj/FhXW/xgY1f8YGtP/GhnR/xob0v8cG8//HhzO/zIy0v/m5/n//f7+//7+
+        /v/+/v7/ZGTr/w8P4P8OD+H/Dg7j/w0N4/8MDOP/Cwzk/wsK5/8NDef/ysr5//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/9TT+f8SEeb/Cwzk/w0M4/8NDuP/Dg/i/w8P
+        4f8QEOD/ERDd/xMS3f8TE9z/FBPa/xYV2f8WFdj/FhXX/xcX1f8YGdP/GRnS/xoa0f8cGs//HBvN/3R0
+        4P/8/P7//v7+//7+/v/+/v7/Y2Pr/w8O4P8OD+P/DQ7j/wwN5P8MDOX/Cwvm/wsK5/8JCej/aWjx//v7
+        /f/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//z8/v9LTOz/Cgvk/wwM
+        5P8NDeT/DQ/j/w4O4f8REOH/EA/d/xER3v8TE93/ExPa/xUU2f8WFNf/FhbX/xcX1f8XGNT/GRnS/xoa
+        0v8dGtH/JCTR/9HP8//+/v7//v7+//7+/v//////Y2Pr/w4O4f8ODuP/DA3j/wsN5P8LC+b/Cgrm/wkK
+        6P8KCej/HRzr/+Xl/P/+/f7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v+trPb/DA3n/wsM5f8MDOT/DQ3j/w4O4v8PD+D/EBDe/xER3v8TEt7/ExPc/xUU2v8VFNj/FhbX/xcW
+        1v8XGNT/GBnT/xoa0v8ZGND/ZmXe//7+///+/v7//v7+/////v//////Y2Ls/w4O4v8NDeP/DQzj/wwM
+        5f8KCub/Cgno/wkJ6P8JCOn/Bwfp/4+O9f/8/f7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//3+/v/y8vz/NTTq/wsK5/8LDOX/DQ3j/w0O4v8NDuH/EBDg/xAQ3v8SEt3/ExPc/xQT
+        2v8WFNr/FhXY/xcW1/8XF9X/GBjU/xoZ0/8oKdT/2Nj3//7+///+/v7//v7+/////v//////YmLs/w4O
+        4/8MDOP/Cwzk/wsL5v8KCef/Cgno/wkJ6P8JCOn/CAfq/zIx7//u7/3//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//79/v/9/v7/jo70/wkJ5v8MDOX/DQ3k/w0N4/8ODuL/Dw/g/xAQ
+        3/8SEd7/ExPd/xMT2v8VFNn/FhXY/xYW1/8YF9X/GBjU/xka0v+bm+v//Pz+///+///+/v7//v7+////
+        ////////YmLs/w4O4/8MDOT/Cwzk/woL5v8KCuj/CQnp/wkI6f8JB+r/CQjr/wwK7P+vrvj//v7+//3+
+        /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/f/9/v7/3t/7/yAf6f8KC+X/DA3l/w4N
+        5P8ODuL/EA/g/xAQ3/8SEd7/ExLd/xMT2v8VFNn/FRTX/xYW1/8XFtX/GBbU/2Bg3//29/z//v7+///+
+        ////////////////////////YmLt/w4O4/8NDOT/Cwzl/woK5v8JCuj/CQrp/wgI6f8JCOr/Bwfs/wYF
+        7f9LSfL/+/z+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/9/v7/+/v+/2pr
+        8f8LC+f/Cwzl/w0N4/8NDuP/Dw/g/xAQ3/8REN7/ExLd/xQT2/8UFNr/FhXZ/xcW1/8WFdb/U1Tf//Dw
+        +//9/v7//f7+//7//v//////////////////////YmLt/w0N4/8NDOT/Cwvm/woK5/8JCuj/CQrp/wkH
+        6f8IB+r/Bgbs/wcG7f8REe7/zMz7//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+////
+        /////v7//v7+/8vL+f8QEOb/Cwzk/w0M5P8OD+P/Dw/h/xEQ4P8REN7/EhLd/xMT3P8UE9r/FBTZ/xwb
+        1/+LjOr/8fH8//7+/v/+/v7//v7+/////v/////////////////+/v7/YmLt/w0N4/8MC+T/Cwvl/woK
+        5/8JCuj/CQnp/wkI6v8JCOz/CAft/wYG7f8FBO3/cnL1//39/v/+/v7//v7+//7+/v/+/v7//v7+//7+
+        /v/+/v7//v7+///+///+/v7//v7+//j5/f9KSe3/Cwvk/w0M5P8OD+P/Dg7g/xEQ4P8SEd7/ERHd/xIT
+        3P8TEtn/PDvf/7i58v/8/P7//f79//3+/v/+/v7//v7+///////////////////////+/v7/YmLt/w0N
+        5P8MC+T/Cwvl/woK5v8JCuj/CQnp/wkH6v8JCOz/Bwbs/wYG7P8FBe3/Gxnv/+Tl/f/+/v7//v7+//7+
+        /v/+/v7//v7+//7+/v/+/v7//v7+/////////v7//v7+//7+/v+rrPX/Cwvl/w0M5P8OD+P/Dg7g/xAQ
+        4P8REN//EhDd/zg54f+envD/7u/8//3+/v/9/v7//f7+//7+/v/+/v7//v7+////////////////////
+        ///9/v7/YmLt/w4N4/8MDOT/Cwzl/woK5v8KCuj/CQnp/wkH6v8JB+v/CAfs/wYG7P8GBe//AwTu/5OT
+        +P/9/v7//f7+//3+/v/+/v7//v7+//7+/v/+/v7//v7+/////////v///v7+//7+/v/s7fz/LS3n/wsL
+        4/8LC+L/ERDh/yMi4v9hYen/srLz//Lx/P/+/v7//v7+//7//v/+/v///v7+//7+/v/+/v7//v7+////
+        ///////////////////+/v7/YWDt/wwM4v8KC+P/Cgrl/wkJ5v8JCej/CAfo/wgG6f8HBuv/Bgbs/wUF
+        7P8HBe3/BQTu/zc38v/w8f3//f7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/////////////v7+//7+
+        /v/9/f3/jY3y/0dJ6f+PkPH/r6/0/+np/P/6+v3//v7+//3+/v/+/v7/////////////////////////
+        ///////////////////////////////////9/v7/w8L4/6Gh8/+hofT/oaH0/6Gh9f+hofX/oaD1/6Gg
+        9v+hoPf/oaD3/6Gg9/+foPf/oKD4/6Kj+f/x8v3//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+////
+        /////////v7+//7+/v/9/v7/+/z+//r5/v/+/v7//f7+//79/v/+/v7//v7+//7+/v/+/v7//v7+////
+        //////////////////////////////////////////////////8AAAAAAAD8/QAAAAAAAPz9AAAAAAAA
+        /P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA
+        AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA
+        /P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA
+        AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA
+        /P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAA
+        AAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA/P0AAAAAAAD8/QAAAAAAAPz9AAAAAAAA
+        /P0=
+</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/SendTags_DL9230/obj/Debug/DL9230 RFID Reader(TCPIP).exe b/SendTags_DL9230/obj/Debug/DL9230 RFID Reader(TCPIP).exe
new file mode 100644
index 0000000000000000000000000000000000000000..81a09057f9d4af8f89ac4839d7e3e586be9c6730
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/DL9230 RFID Reader(TCPIP).exe differ
diff --git a/SendTags_DL9230/obj/Debug/DL9230 RFID Reader(TCPIP).pdb b/SendTags_DL9230/obj/Debug/DL9230 RFID Reader(TCPIP).pdb
new file mode 100644
index 0000000000000000000000000000000000000000..b67f029ef274f30774e1555906bf53d85d3b1f27
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/DL9230 RFID Reader(TCPIP).pdb differ
diff --git a/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.AssemblyReference.cache b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.AssemblyReference.cache
new file mode 100644
index 0000000000000000000000000000000000000000..9d803b43f6e0311402d589b7d0a75c5940bfa054
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.AssemblyReference.cache differ
diff --git a/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.CopyComplete b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.CopyComplete
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.CoreCompileInputs.cache b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000000000000000000000000000000000000..849b5d0b41424d5d910137b5e0732ee0ede197d4
--- /dev/null
+++ b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+21775ee66ff5663b84c60bcf731f03e3e1275e77
diff --git a/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.FileListAbsolute.txt b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3c1544e7ff0c0e42044ef361402a4015563264e3
--- /dev/null
+++ b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.FileListAbsolute.txt
@@ -0,0 +1,70 @@
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\ResolveAssemblyReference.cache
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.Form1.resources
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.frmmain.resources
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.Properties.Resources.resources
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\DL9230Demo.csproj.GenerateResource.Cache
+F:\项目\DL9230DEMO\Ethernet_data\bin\Debug\DL9230 RFID Reader.exe
+F:\项目\DL9230DEMO\Ethernet_data\bin\Debug\DL9230 RFID Reader.pdb
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\DL9230 RFID Reader.exe
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\DL9230 RFID Reader.pdb
+F:\项目\DL9230DEMO\DL9230 RFID Reader\bin\Debug\DL9230 RFID Reader.exe
+F:\项目\DL9230DEMO\DL9230 RFID Reader\bin\Debug\DL9230 RFID Reader.pdb
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\ResolveAssemblyReference.cache
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\Ethernet_data.Form3.resources
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\Ethernet_data.frmmain.resources
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\Ethernet_data.Properties.Resources.resources
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\DL9230Demo.csproj.GenerateResource.Cache
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\DL9230 RFID Reader.exe
+F:\项目\DL9230DEMO\DL9230 RFID Reader\obj\Debug\DL9230 RFID Reader.pdb
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\DL9230 RFID Reader.exe
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\DL9230 RFID Reader.pdb
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\ResolveAssemblyReference.cache
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\Ethernet_data.Form3.resources
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\Ethernet_data.frmmain.resources
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\Ethernet_data.Properties.Resources.resources
+F:\DL9230DEMO\DL9230 RFID Reader\obj\Debug\DL9230Demo.csproj.GenerateResource.Cache
+F:\DL9230DEMO\DL9230 RFID Reader\bin\Debug\DL9230 RFID Reader.exe
+F:\DL9230DEMO\DL9230 RFID Reader\bin\Debug\DL9230 RFID Reader.pdb
+F:\项目\DL9230DEMO\DL9230 RFID Reader(musi reader)\obj\Debug\DL9230 RFID Reader.exe
+F:\项目\DL9230DEMO\DL9230 RFID Reader(musi reader)\obj\Debug\DL9230 RFID Reader.pdb
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\bin\Debug\DL9230 RFID Reader(TCPIP).exe
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\bin\Debug\DL9230 RFID Reader(TCPIP).pdb
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\ResolveAssemblyReference.cache
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\Ethernet_data.Form3.resources
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\Ethernet_data.frmmain.resources
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\Ethernet_data.Properties.Resources.resources
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\DL9230Demo.csproj.GenerateResource.Cache
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\DL9230 RFID Reader(TCPIP).exe
+F:\项目\DL9230DEMO\DL9230 RFID Reader(multiReader)\obj\Debug\DL9230 RFID Reader(TCPIP).pdb
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\bin\Debug\DL9230 RFID Reader(TCPIP).exe
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\bin\Debug\DL9230 RFID Reader(TCPIP).pdb
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\Ethernet_data.Form3.resources
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\Ethernet_data.frmmain.resources
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\Ethernet_data.Properties.Resources.resources
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\DL9230Demo.csproj.GenerateResource.cache
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\DL9230Demo.csproj.CoreCompileInputs.cache
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\DL9230 RFID Reader(TCPIP).exe
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\DL9230 RFID Reader(TCPIP).pdb
+D:\MyData\mycode\deli\Multi-Reader Reading For DL9230_V3\Multi-Reader Reading For DL9230_V3.0.0.0\obj\Debug\DL9230Demo.csproj.CopyComplete
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\bin\Debug\DL9230 RFID Reader(TCPIP).exe
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\bin\Debug\DL9230 RFID Reader(TCPIP).pdb
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\DL9230Demo.csproj.AssemblyReference.cache
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\Ethernet_data.Form3.resources
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\Ethernet_data.frmmain.resources
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\Ethernet_data.Properties.Resources.resources
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\DL9230Demo.csproj.GenerateResource.cache
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\DL9230Demo.csproj.CoreCompileInputs.cache
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\DL9230Demo.csproj.CopyComplete
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\DL9230 RFID Reader(TCPIP).exe
+C:\Users\Marc\Cours\Objets communicants\Projet\Multi-Reader Reading For DL9230_V5.0.0.3\obj\Debug\DL9230 RFID Reader(TCPIP).pdb
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\bin\Debug\DL9230 RFID Reader(TCPIP).exe
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\bin\Debug\DL9230 RFID Reader(TCPIP).pdb
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\DL9230Demo.csproj.AssemblyReference.cache
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\Ethernet_data.Form3.resources
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\Ethernet_data.frmmain.resources
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\Ethernet_data.Properties.Resources.resources
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\DL9230Demo.csproj.GenerateResource.cache
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\DL9230Demo.csproj.CoreCompileInputs.cache
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\DL9230Demo.csproj.CopyComplete
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\DL9230 RFID Reader(TCPIP).exe
+C:\Users\Marc\Cours\Objets communicants\Projet\SendTags_DL9230\obj\Debug\DL9230 RFID Reader(TCPIP).pdb
diff --git a/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.GenerateResource.cache b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.GenerateResource.cache
new file mode 100644
index 0000000000000000000000000000000000000000..85a86927ba8f3eaf048fd8543af5b46b4e25ab7a
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/DL9230Demo.csproj.GenerateResource.cache differ
diff --git a/SendTags_DL9230/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/SendTags_DL9230/obj/Debug/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000000000000000000000000000000000000..d710c4ee14c788b1de05aaebd01163580b3dce0d
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/SendTags_DL9230/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/SendTags_DL9230/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000000000000000000000000000000000000..1d8926915f493a3e61b37d3d97a50c0cac51f01c
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/SendTags_DL9230/obj/Debug/Ethernet_data.Form2.resources b/SendTags_DL9230/obj/Debug/Ethernet_data.Form2.resources
new file mode 100644
index 0000000000000000000000000000000000000000..06c24d06c1cab750788146ce052b37770f3fa530
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/Ethernet_data.Form2.resources differ
diff --git a/SendTags_DL9230/obj/Debug/Ethernet_data.Form3.resources b/SendTags_DL9230/obj/Debug/Ethernet_data.Form3.resources
new file mode 100644
index 0000000000000000000000000000000000000000..06c24d06c1cab750788146ce052b37770f3fa530
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/Ethernet_data.Form3.resources differ
diff --git a/SendTags_DL9230/obj/Debug/Ethernet_data.Properties.Resources.resources b/SendTags_DL9230/obj/Debug/Ethernet_data.Properties.Resources.resources
new file mode 100644
index 0000000000000000000000000000000000000000..0d949c5e231ea0b6b3f447e149dfde7ed2491631
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/Ethernet_data.Properties.Resources.resources differ
diff --git a/SendTags_DL9230/obj/Debug/Ethernet_data.csproj.FileListAbsolute.txt b/SendTags_DL9230/obj/Debug/Ethernet_data.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e9cc07f66f5e350703a01a38195e6869baefd7d3
--- /dev/null
+++ b/SendTags_DL9230/obj/Debug/Ethernet_data.csproj.FileListAbsolute.txt
@@ -0,0 +1,33 @@
+C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\Ethernet_data\obj\Debug\ResolveAssemblyReference.cache
+C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\Ethernet_data\obj\Debug\server.resources
+C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\Ethernet_data\obj\Debug\Ethernet_data.Properties.Resources.resources
+C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\Ethernet_data\obj\Debug\Ethernet_data.csproj.GenerateResource.Cache
+C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\Ethernet_data\obj\Debug\Ethernet_data.Form1.resources
+C:\Documents and Settings\Administrator\Local Settings\Application Data\Temporary Projects\Ethernet_data\obj\Debug\Ethernet_data.Form2.resources
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\ResolveAssemblyReference.cache
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.Properties.Resources.resources
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.csproj.GenerateResource.Cache
+E:\test\Ethernet_data\Ethernet_data\bin\Debug\Ethernet_data.exe
+E:\test\Ethernet_data\Ethernet_data\bin\Debug\Ethernet_data.pdb
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.exe
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.pdb
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.frmmain.resources
+E:\test\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.Form1.resources
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.exe
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.pdb
+F:\项目\Ethernet_data\Ethernet_data\bin\Debug\Ethernet_data.exe
+F:\项目\Ethernet_data\Ethernet_data\bin\Debug\Ethernet_data.pdb
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\ResolveAssemblyReference.cache
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.Form1.resources
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.frmmain.resources
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.Properties.Resources.resources
+F:\项目\Ethernet_data\Ethernet_data\obj\Debug\Ethernet_data.csproj.GenerateResource.Cache
+F:\项目\DL9230DEMO\Ethernet_data\bin\Debug\Ethernet_data.exe
+F:\项目\DL9230DEMO\Ethernet_data\bin\Debug\Ethernet_data.pdb
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\ResolveAssemblyReference.cache
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.Form1.resources
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.frmmain.resources
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.Properties.Resources.resources
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.csproj.GenerateResource.Cache
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.exe
+F:\项目\DL9230DEMO\Ethernet_data\obj\Debug\Ethernet_data.pdb
diff --git a/SendTags_DL9230/obj/Debug/Ethernet_data.csproj.GenerateResource.Cache b/SendTags_DL9230/obj/Debug/Ethernet_data.csproj.GenerateResource.Cache
new file mode 100644
index 0000000000000000000000000000000000000000..7909dc2a81a3447ead66db216dc7e2743f8e74b0
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/Ethernet_data.csproj.GenerateResource.Cache differ
diff --git a/SendTags_DL9230/obj/Debug/Ethernet_data.frmmain.resources b/SendTags_DL9230/obj/Debug/Ethernet_data.frmmain.resources
new file mode 100644
index 0000000000000000000000000000000000000000..51fd552e804dae3243da17cd3d257ca30d753764
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/Ethernet_data.frmmain.resources differ
diff --git a/SendTags_DL9230/obj/Debug/server.resources b/SendTags_DL9230/obj/Debug/server.resources
new file mode 100644
index 0000000000000000000000000000000000000000..06c24d06c1cab750788146ce052b37770f3fa530
Binary files /dev/null and b/SendTags_DL9230/obj/Debug/server.resources differ
diff --git a/api/__pycache__/api.cpython-310.pyc b/api/__pycache__/api.cpython-310.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d63c3bbc38c46041f4b61e7f008c30d35a531b53
Binary files /dev/null and b/api/__pycache__/api.cpython-310.pyc differ
diff --git a/api/__pycache__/api.cpython-39.pyc b/api/__pycache__/api.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f3465a9d8c5b097675337eee4d3be7a2c4852149
Binary files /dev/null and b/api/__pycache__/api.cpython-39.pyc differ
diff --git a/api/api.py b/api/api.py
new file mode 100644
index 0000000000000000000000000000000000000000..d27aab4a8100a454e67f497a89b8607888f1a040
--- /dev/null
+++ b/api/api.py
@@ -0,0 +1,159 @@
+from fastapi import FastAPI, UploadFile, File, Form
+from fastapi.middleware.cors import CORSMiddleware
+from pydantic import BaseModel
+
+from starlette.responses import StreamingResponse, Response
+from databases import Database
+
+database = Database("sqlite:///db.db")
+
+app = FastAPI()
+
+currentTagId = [""]*1
+raceStarted = [False]
+
+origins = ["*"]
+
+app.add_middleware(
+    CORSMiddleware,
+    allow_origins=origins,
+    allow_credentials=True,
+    allow_methods=["*"],
+    allow_headers=["*"],
+)
+
+class Team(BaseModel):
+    tag_id:             str
+    team_name:          str
+
+class Passage(BaseModel):
+    timestamp:          str
+    tag_id:             str
+    
+class Tag(BaseModel):
+    tag_id:             str
+    timestamp:          str
+
+@app.on_event("startup")
+async def database_connect():
+    await database.connect()
+
+@app.on_event("shutdown")
+async def database_diconnect():
+    await database.diconnect()
+
+
+#register Tag
+@app.post("/registerTag")#tested
+async def put_tag(body: Team):
+    print("body",body)
+    query = "INSERT INTO Team (tag_id, team_name) VALUEs('{}','{}')".format(body.tag_id,body.team_name)
+    res = await database.execute(query=query)
+    return {"code": 200, "status": "ok"}
+    
+@app.get("/team")#tested
+async def get_team(teamName: str):
+    query = "select * from Team where team_name='{}'".format(teamName)
+    teams = await database.fetch_all(query=query)
+    if(len(teams)>0):
+        return  {"code": 200, "status": "ok", "data": teams[0]}
+    else:
+        return  {"code": 404, "status": "error", "desc": "Not found"}
+
+@app.get("/teams")#tested
+async def get_teams():
+    query = "select * from Team"
+    teams = await database.fetch_all(query=query)
+    return  {"code": 200, "status": "ok", "data": teams}
+
+
+@app.get("/teamByTagId")#tested
+async def get_team(tagId: str):
+    query = "select * from Team where tag_id='{}'".format(tagId)
+    teams = await database.fetch_all(query=query)
+    if(len(teams)>0):
+        return  {"code": 200, "status": "ok", "data": teams[0]}
+    else:
+        return  {"code": 404, "status": "error", "desc": "Not found"}
+
+
+#passage
+""""
+@app.post("/passage")#tested
+async def put_passage(body: Passage):
+    query = "INSERT INTO Passage (timestamp, tag_id) VALUES ('{}','{}')".format(body.timestamp,body.tag_id)
+    res = await database.execute(query=query)
+    return {"code": 200, "status": "ok"}
+"""
+@app.get("/passagesByTeam")#tested
+async def get_passage(teamName: str):
+    query = "select P.timestamp, P.tag_id, T.team_name from Passage P join Team T on P.tag_id=T.tag_id where T.team_name='{}'".format(teamName)
+    passages = await database.fetch_all(query=query)
+    return  {"code": 200, "status": "ok", "data": passages}
+
+@app.get("/passagesByTag")#tested
+async def get_passage(tagId: str):
+    query = "select P.timestamp, P.tag_id, T.team_name from Passage P join Team T on P.tag_id=T.tag_id where tag_id='{}'".format(tagId)
+    passages = await database.fetch_all(query=query)
+    return  {"code": 200, "status": "ok", "data": passages}
+
+@app.get("/passages")#tested
+async def get_passages():
+    query = "select P.timestamp, P.tag_id, T.team_name from Passage P join Team T on P.tag_id=T.tag_id"
+    passages = await database.fetch_all(query=query)
+    return  {"code": 200, "status": "ok", "data": passages}
+
+
+
+@app.get("/LastTagDetected")#tested
+async def get_scannedTagId():
+    if (len(currentTagId[0]) > 0):
+        res = currentTagId[0]
+        currentTagId[0] = ""
+        return  {"code": 200, "status": "ok", "data": res}
+    else:
+        return  {"code": 404, "status": "error", "desc": "Not found: the most probable cause of this error is that no tag has been scanned"}
+"""
+@app.post("/LastTagDetected")#tested
+async def put_passage(tagId: str):
+    currentTagId[0] = tagId
+    return  {"code": 200, "status": "ok"}
+"""
+addedTags = [""]*1
+
+@app.post("/raceContol")
+async def raceContol(status: bool):
+    raceStarted[0] = status
+    if(status):
+        query = "select tag_id from Team"
+        print(await database.fetch_all(query=query))
+    print("raceContol",raceStarted[0])
+    return  {"code": 200, "status": "ok"}
+
+@app.get("/isRaceStarted")
+async def raceContol():
+    print(raceStarted[0])
+    #print(teamsInRace)
+    return  {"code": 200, "status": "ok", "data":raceStarted[0]}
+    
+
+@app.post("/detectedTags")#tested
+async def put_detected_tags(body: list[Tag]):
+    print(body)
+    if(raceStarted[0]):
+        for tag in body:
+            #test if we already added this tagid
+            if(tag.tag_id not in addedTags):
+                #test if a team has this tag_id
+                addedTags.append(tag.tag_id)
+                query = "INSERT INTO Passage (timestamp, tag_id) VALUES ('{}','{}')".format(tag.timestamp,tag.tag_id)
+                res = await database.execute(query=query)
+            else:
+                print("already added"+tag.tag_id)
+        return  {"code": 200, "status": "ok"}
+        
+    else:#tested
+        currentTagId[0] = body[0].tag_id
+        return  {"code": 200, "status": "ok"}
+
+
diff --git a/api/db.db b/api/db.db
new file mode 100644
index 0000000000000000000000000000000000000000..c84176031f9fdc62c4ca1a21640f28937dd4d1bd
Binary files /dev/null and b/api/db.db differ
diff --git a/api/object_comm.sql b/api/object_comm.sql
new file mode 100644
index 0000000000000000000000000000000000000000..3b3b463b9d65a17dc83e3ee161a29b4d7f78a3ec
--- /dev/null
+++ b/api/object_comm.sql
@@ -0,0 +1,42 @@
+.mode column
+.headers on
+PRAGMA foreign_keys = ON;
+PRAGMA strict = ON;
+
+/*
+CREATE TABLE Participant (
+    participant_id  INTEGER NOT NULL PRIMARY KEY
+    name            TEXT NOT NULL,
+    forname         TEXT NOT NULL,
+    team_name       TEXT NOT NULL,
+    FOREIGN KEY (team_name) REFERENCES Team(team_name)
+) STRICT;
+
+CREATE TABLE Team (
+    team_name       TEXT NOT NULL PRIMARY KEY,
+) STRICT;
+
+*/
+CREATE TABLE Team (
+    tag_id          TEXT NOT NULL PRIMARY KEY,
+    team_name       TEXT NOT NULL,
+    UNIQUE (team_name)
+) STRICT;
+
+INSERT INTO Team (tag_id, team_name) VALUES
+('tag_id_1','team_name 1'),
+('tag_id_2','team_name 2'),
+('tag_id_3','team_name 3');
+
+
+CREATE TABLE Passage (
+    timestamp       TEXT NOT NULL,
+    tag_id          TEXT NOT NULL,
+    /*...*/
+    FOREIGN KEY (tag_id) REFERENCES Team(tag_id)
+) STRICT;
+
+INSERT INTO Passage (timestamp, tag_id) VALUES
+('10:49/02/12/2022','tag_id_1'),
+('10:49/02/12/2022','tag_id_2'),
+('10:49/02/12/2022','tag_id_3');
diff --git a/api/objetComm.postman_collection.json b/api/objetComm.postman_collection.json
new file mode 100644
index 0000000000000000000000000000000000000000..65da2f077716709cc116d05e092daedb9a2ad9dc
--- /dev/null
+++ b/api/objetComm.postman_collection.json
@@ -0,0 +1,209 @@
+{
+	"info": {
+		"_postman_id": "b8443684-b40f-42a3-ba2c-0744c38e19c7",
+		"name": "objetComm",
+		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
+	},
+	"item": [
+		{
+			"name": "team",
+			"request": {
+				"method": "GET",
+				"header": [],
+				"url": {
+					"raw": "http://localhost:8000/team?teamName=team_name 1",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"team"
+					],
+					"query": [
+						{
+							"key": "teamName",
+							"value": "team_name 1"
+						}
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "registerTag",
+			"request": {
+				"method": "POST",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "{\n    \"tag_id\": \"test_tag_id\",\n    \"team_name\": \"test_team_name\"\n}   ",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "http://localhost:8000/registerTag?tag_id",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"registerTag"
+					],
+					"query": [
+						{
+							"key": "tag_id",
+							"value": null
+						}
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "passage",
+			"request": {
+				"method": "POST",
+				"header": [],
+				"body": {
+					"mode": "raw",
+					"raw": "{\n    \"timestamp\": \"test_team_name\",\n    \"tag_id\": \"test_tag_id\"\n}   ",
+					"options": {
+						"raw": {
+							"language": "json"
+						}
+					}
+				},
+				"url": {
+					"raw": "http://localhost:8000/passage",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"passage"
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "teams",
+			"request": {
+				"method": "GET",
+				"header": [],
+				"url": {
+					"raw": "http://localhost:8000/teams",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"teams"
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "teamByTagId",
+			"request": {
+				"method": "GET",
+				"header": [],
+				"url": {
+					"raw": "http://localhost:8000/teamByTagId?tagId=tag_id_1",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"teamByTagId"
+					],
+					"query": [
+						{
+							"key": "tagId",
+							"value": "tag_id_1"
+						}
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "passagesByTeam",
+			"request": {
+				"method": "GET",
+				"header": [],
+				"url": {
+					"raw": "http://localhost:8000/passages_by_team?teamName=team_name 1",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"passages_by_team"
+					],
+					"query": [
+						{
+							"key": "teamName",
+							"value": "team_name 1"
+						}
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "passagesByTag",
+			"request": {
+				"method": "GET",
+				"header": [],
+				"url": {
+					"raw": "http://localhost:8000/passagesByTag?tagId=tag_id_1",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"passagesByTag"
+					],
+					"query": [
+						{
+							"key": "tagId",
+							"value": "tag_id_1"
+						}
+					]
+				}
+			},
+			"response": []
+		},
+		{
+			"name": "passages",
+			"request": {
+				"method": "GET",
+				"header": [],
+				"url": {
+					"raw": "http://localhost:8000/passages",
+					"protocol": "http",
+					"host": [
+						"localhost"
+					],
+					"port": "8000",
+					"path": [
+						"passages"
+					]
+				}
+			},
+			"response": []
+		}
+	]
+}
\ No newline at end of file
diff --git a/api/websocket.py b/api/websocket.py
new file mode 100644
index 0000000000000000000000000000000000000000..685cea0bced5f31cf494e2ea393a82b747137c09
--- /dev/null
+++ b/api/websocket.py
@@ -0,0 +1,38 @@
+# Import the library
+import socketio
+
+# Create a new Socket.IO server
+sio = socketio.Server()
+
+# Register an event handler for the 'connect' event
+@sio.on('connect')
+def on_connect(sid, environ):
+    print('Client connected:', sid)
+
+# Register an event handler for the 'disconnect' event
+@sio.on('disconnect')
+def on_disconnect(sid):
+    print('Client disconnected:', sid)
+
+# Start the Socket.IO server
+sio.start_server(3000)
+
+"""
+<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
+
+
+// Create a new Socket.IO client
+const socket = io('http://localhost:3000');
+
+// Register an event handler for the 'connect' event
+socket.on('connect', function() {
+    console.log('Connected to server');
+});
+
+// Register an event handler for the 'disconnect' event
+socket.on('disconnect', function() {
+    console.log('Disconnected from server');
+});
+
+
+"""
\ No newline at end of file