C#,windows應用,自動更新、文件更新

文件或目錄更新示例:

會根據配置文件中的MD5值,和本地文件進行對比,若有變動則更新。


1、更新指定文件:

SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "easyIcon.exe", true);

 2、更新指定目錄:

SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "png/", false, true);

 MD5.txt文件生成工具: getMD5.exe


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SciTools
{
	/// 文件或目錄更新示例:
	/// 1、更新指定文件:SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "easyIcon.exe", true);
	/// 2、更新指定目錄:SciTools.UpdateTool.updateFiles("https://scimence.gitee.io/easyicon/MD5.txt", "png/", false, true);
	/// MD5.txt文件生成工具: https://scimence.gitee.io/update/tools/getMD5.exe
	
    /// <summary>
    /// SciTools.UpdateTool.AutoUpdate();            // 應用自動檢測更新;
    /// 
    /// 更新原理:
    /// 根據ToolUrl_MD5獲取當前應用線上的md5信息,
    /// 通過Update.exe判斷當前應用的MD5值與線上的md5信息是否相同,
    /// 若不同,則結束當前進程,從ToolUrl_MD5中解析當前應用網絡路徑,下載並啓動。Update.exe自刪除。
    /// 
    /// 依賴工具類:
    /// SciTools.WebTool.cs;                https://gitee.com/scimence/sciTools/raw/master/CS/WebTool.cs
    /// SciTools.EncoderTool_Alphabet.cs;   https://gitee.com/scimence/sciTools/raw/master/CS/EncoderTool_Alphabet.cs 
    /// </summary>
    public class UpdateTool
    {
        // 當前命名空間名稱
        private static string NAMESPACE = GetNamespace(Assembly.GetEntryAssembly());
        //private static string NAMESPACE = "ChannelDemoTool";

        /// <summary>
        /// 獲取Assembly所在的命名空間名稱
        /// </summary>
        private static string GetNamespace(Assembly asssembly)
        {
            string Namespace = "";
            Type[] types = asssembly.GetTypes();
            if (types != null && types.Length > 0)
            {
                Namespace = types[0].Namespace;
            }
            return Namespace;
        }

        /// <summary>
        /// 獲取當前運行路徑
        /// </summary>
        public static string curDir()
        {
            return AppDomain.CurrentDomain.BaseDirectory;
        }

        /// <summary>
        /// 檢測目錄是否存在,若不存在則創建
        /// </summary>
        public static void checkDir(string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
        }

        /// <summary>
        /// 保存Byte數組爲文件
        /// </summary>
        public static void SaveFile(Byte[] array, string path, bool repalce = false)
        {
            if (repalce && System.IO.File.Exists(path)) System.IO.File.Delete(path);    // 若目標文件存在,則替換
            if (!System.IO.File.Exists(path))
            {
                // 創建輸出流
                System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create);

                //將byte數組寫入文件中
                fs.Write(array, 0, array.Length);
                fs.Close();
            }
        }

        /// <summary>
        /// 爲arg添加引號
        /// </summary>
        private static string AddQuotation(string arg)
        {
            if (arg.EndsWith("\\") && !arg.EndsWith("\\\\")) arg += "\\";
            arg = "\"" + arg + "\"";

            return arg;
        }

        /// <summary>
        /// 獲取Resource資源
        /// </summary>
        private static byte[] getResource(string name)
        {
            string Namespace = Assembly.GetEntryAssembly().GetTypes()[0].Namespace;
            System.Resources.ResourceManager rm = new System.Resources.ResourceManager(Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());
            byte[] bytes = (byte[])rm.GetObject(name);

            return bytes;
        }


        /// <summary>
        /// 獲取Updata.exe文件內容
        /// </summary>
        private static byte[] getUpdataData()
        {
            //string file = @"C:\Users\wangzhongyuan\Documents\visual studio 2012\Projects\GifTool\GifTool\Resources\Update.data";
            //string data = Encoder.getFileData(file);

            byte[] bytes = EncoderTool_Alphabet.ToBytes(data);
            return bytes;
        }

        // "%~dp0Update.exe" "[CONFIG]https://git.oschina.net/joymeng/channelDemo/raw/master/MD5.txt" "E:\tmp2\Update_Files\\" "渠道計費包\0000001\\"
        /// <summary>
        /// 調用Update.exe,更新以perfix爲前綴的配置文件
		/// 
		/// RESTART標識更新後,是否打開文件
		/// 若本地perfix目錄下的其他文件需要保留,則KEEPOTHER=true
        /// </summary>
        public static void updateFiles(string url, string perfix, bool RESTART = false, bool KEEPOTHER = false)
        {
            string update_EXE = curDir() + "Update.exe";

            //byte[] bytes = getResource("Update");
            byte[] bytes = getUpdataData();

            if (!File.Exists(update_EXE)) SaveFile(bytes, update_EXE, false);
            else if (!updateIsRunning()) SaveFile(bytes, update_EXE, true);   // 更新Update.exe

            string path = curDir();
            url = AddQuotation("[CONFIG]" + url);
            path = AddQuotation(path);
            perfix = AddQuotation(perfix);
            update_EXE = AddQuotation(update_EXE);

            // 調用更新插件執行軟件更新邏輯
            String arg = url + " " + path + " " + perfix;
            if (RESTART) arg += " " + "RESTART";
			if (KEEPOTHER) arg += " " + "false";
            System.Diagnostics.Process.Start(update_EXE, arg);

            autoDeletUpdateExe();   // 更新後刪除update.exe
        }

        private static Timer timer = null;
        private static void autoDeletUpdateExe(object sender = null, EventArgs e = null)
        {
            string update_EXE = curDir() + "Update.exe";
            if (!File.Exists(update_EXE)) return;

            if (!updateIsRunning())
            {
                File.Delete(update_EXE);

                if (timer != null)
                {
                    timer.Stop();
                    timer = null;
                }
            }
            else
            {
                if (timer == null)
                {
                    timer = new Timer();
                    timer.Interval = 700;
                    timer.Tick += new System.EventHandler(autoDeletUpdateExe);
                    timer.Start();
                }
            }
        }

        /// <summary>
        /// 應用自更新,也可更新MD5.txt中配置的任意文件
        /// </summary>
        /// <param name="ToolUrl_MD5">工具MD5信息文件的url地址</param>
        /// <param name="perfix_EXE">當前待更新的應用名稱</param>
        public static void AutoUpdate(string ToolUrl_MD5 = "", string perfix_EXE = "")
        {
            if (ToolUrl_MD5.Equals("")) ToolUrl_MD5 = "https://git.oschina.net/scimence/" + NAMESPACE + "/raw/master/MD5.txt";
            if (perfix_EXE.Equals("")) perfix_EXE = NAMESPACE /*+ ".exe"*/;

            updateFiles(ToolUrl_MD5, perfix_EXE, true);
        }

        /// <summary>
        /// 獲取指定網址中的配置信息
        /// </summary>
        /// <param name="configUrl">配置信息對應網址</param>
        /// <param name="key">配置節點名</param>
        public static String GetWebConfig(string key = "", string configUrl = "")
        {
            if (configUrl.Equals("")) configUrl = "https://git.oschina.net/scimence/" + NAMESPACE + "/raw/master/config.txt";
            if (key.Equals("")) return "";

            return WebTool.getWebData(configUrl, key);
        }

        /// <summary>
        /// 打開本地路徑
        /// </summary>
        public static void openChannelDir(string channelDir)
        {
            string localDir = curDir() + channelDir.Replace("/", "\\");
            checkDir(localDir);

            if (Directory.Exists(localDir))
            {
                System.Diagnostics.Process.Start("explorer.exe", "/e, " + localDir);
            }
        }

        // 判斷當前是有更新任務正在執行
        public static bool updateIsRunning()
        {
            // 獲取Update.exe後臺進程
            System.Diagnostics.Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("Update");

            // 無更新進程Update.exe,表示更新完成
            return (processes1 != null && processes1.Length != 0);
        }

        // Update.exe文件
        private static string data = "enfkjaaaadaaaaaaaeaaaaaappppaaaaliaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaobplkaoaaleajmncbliabemmncbfegigjhdcahahcgpghhcgbgncagdgbgogogphecagcgfcahchfgocagjgocaeeepfdcagngpgegfcoananakceaaaaaaaaaaaaaafaefaaaaemabadaajojfjofjaaaaaaaaaaaaaaaaoaaaacabalabalaaaaemaaaaaaaiaaaaaaaaaaaaaogkaaaaaacaaaaaaaiaaaaaaaaaeaaaaacaaaaaaaacaaaaaeaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaamaaaaaaaacaaaaaaaaaaaaacaaeaifaaaabaaaaabaaaaaaaaabaaaaabaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaamagjaaaaelaaaaaaaaiaaaaakaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakaaaaaamaaaaaaiigiaaaabmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaicaaaaaeiaaaaaaaaaaaaaaaaaaaaaacohegfhiheaaaaaabeekaaaaaacaaaaaaaemaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaagacohchdhcgdaaaaaakaafaaaaaaiaaaaaaaagaaaaaaeoaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeacohcgfgmgpgdaaaaamaaaaaaaakaaaaaaaacaaaaaafeaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapagjaaaaaaaaaaaaeiaaaaaaacaaafaajidnaaaapackaaaaabaaaaaaceaaaaagoadmaaaaliaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabddaaeaaebaaaaaaabaaaabbaahoafaaaaaebepoabbgpoabamaicnbmhoaeaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaafaaaaaehoafaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaacaacnaaaaaaacaaaabbaabgciabaaaaagakaccibcaaaaakbgpoabanajcnbcaaacciadaaaaagalahbpcacibeaaaaagakaaagamclaaaickaaaaaabddaacaadoaaaaaaadaaaabbaabgciabaaaaagakaccibcaaaaakbgpoabanajcncdaaaccibdaaaaakhdbeaaaaakalahgpbfaaaaakakahgpbgaaaaakaaahgpbhaaaaakaaaaagamclaaaickaaaabddaafaamiaaaaaaaeaaaabbaabggkakadbggkpoabbgpoabamaicnakaaacakagaldikmaaaaaaaaadbpbpgkpoabbgpoabamaicncfaaacbhgkfpcibiaaaaakbgpoabamaicnalaacaaaaaaaiagoakaaclafaabggkakaaagalclhjaaadbggkdcaladbpbpgkpoacbgpoabclabbgaaamaicnacaaaaaaaaachoahaaaaaebpbpgkadfjnejgfpcibiaaaaakbgpoabamaicncgaaachoagaaaaaebpbpgkadbhgkfifjnejgfphoahaaaaaeadnejgfkcaaaaaaaiagogaakaaclbkaaachoagaaaaaebpbpgkadfjnejgfphoahaaaaaeadnejgfkakaaagalclaaahckbddaafaaklaaaaaaaeaaaabbaabggkakadbggkpoabbgpoabamaicnakaaacakagaldiipaaaaaaaaadbpbpgkpoabbgpoabamaicncfaaaccaaaaaaaiagofpcibiaaaaakbgpoabamaicnahaabhgkakaaclafaabggkakaaagalclfmaaadbggkdcaladbpbpgkpoacbgpoabclabbgaaamaicnacaaaaaaaaaccapopppphpgkfphoahaaaaaeadnejgflakaccaaaaaaaiagofpcibiaaaaakbgpoabamaicnbhaaagcaaaaaaaeagkhoahaaaaaeadbhgkfjnejgflgaakaaagalclaaahckaabddaaeaaboaaaaaaafaaaabbaabggkakacadciaeaaaaagacbpcagkadfjciafaaaaaggaakagalclaaahckaaaabddaadaankaaaaaaagaaaabbaabggkakbggkalbggkambggkanbggkbdaebggkbdafaccaaaaaaaiagofpanadcaaaaaaaiagofpbdaeaccaaaaaaaeagkfpaladcaaaaaaaeagkfpamaccappppppdpgkfpadcappppppdpgkfpfibdafahaifpcibiaaaaakbgpoabbdahbbahcnbeaabbafcaaaaaaaiagogbajgbbbaegbbdafaaclfnahaigacibiaaaaakbgpoabbdahbbahcnebaabbafcaaaaaaaeagkfpcibiaaaaakbgpoabbdahbbahcnbeaabbafcaaaaaaamagogbajgbbbaegbbdafaaclbcaabbafcaaaaaaaeagkgbajgbbbaegbbdafaaaaclalaabbafajgbbbaegbbdafaabbafakagbdagclaabbagckaaaabddaadaabdaaaaaaafaaaabbaabggkakacadfpacggaefpgaakagalclaaahckaabddaadaabdaaaaaaafaaaabbaabggkakacaefpadaeggfpgaakagalclaaahckaabddaacaabaaaaaaaafaaaabbaabggkakacadgbaegbakagalclaaahckbddaadaabbaaaaaaafaaaabbaabggkakadacaegggagbakagalclaaahcknkaaacacemadaeafciaiaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafciajaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafciakaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffcknkaaacacemadaeafcialaaaaagaoaeciahaaaaagaoagciahaaaaagciahaaaaagffacacemaoafciagaaaaagffacacemadciahaaaaagffckaaaaaabddaafaamdaaaaaaahaaaabbaabeakbgalbgambeanbgbdaebgbdafbgbdagcibdaaaaakacgpbjaaaaakbdahbbahiogjalahbofibpeaflbhfibpbafkamaiinbnaaaaabanbgbdaebgbdafclcnaabbafbkflbdagbbafbkfnbofkbdaeajbbagajbbagjgbbahbbafjbgobbaegkciaeaaaaaggajpbbafbhfibdafaabbafahpoaebdajbbajcnmibbafbkflbdagbbafbkfnbofkbdaeajbbagajbbagjgcaiaaaaaaagkbbaegkciaeaaaaaggajpajaibifjahgkbjgkciaeaaaaagjpajaibhfjahgkbpbngkciafaaaaagjpajakagbdaiclaabbaickaabddaaeaaiaaaaaaaajaaaabbaabgciabaaaaagakbggkalbgambganbgamclfiaaacaibofkgkciafaaaaaghoagaaaaaebnjgfpalblciabaaaaagahcibcaaaaagcibkaaaaakgpblaaaaakbifjanagblciabaaaaagahcibcaaaaagcibkaaaaakajbgdcadajclabbgaagpbmaaaaakcibkaaaaakakaaaibhfiamaibjpoacbgpoabbdafbbafcnjlagbdaeclaabbaeckbddaacaaddaaaaaaakaaaabbaabgciabaaaaagakclbkaaacbpbagkfncibdaaaaagagcibkaaaaakakacbpbagkflbaaaaaacbggkpoacamaicnnnagalclaaahckaabddaacaaidaaaaaaalaaaabbaabgciabaaaaagakacamaibpapgkdacjaibpakgkdcfnaibpakgkfjgjefagaaaaaaacaaaaaaalaaaaaabeaaaaaabnaaaaaacgaaaaaadaaaaaaacldibhciabaaaaagakcldjbmciabaaaaagakcldabnciabaaaaagakclchbociabaaaaagakclbobpajciabaaaaagakclbebpakciabaaaaagakclakapaacibnaaaaakakclaaagalclaaahckaabddaahaagiaiaaaaamaaaabbaabgciabaaaaagakbgalclekaahoagaaaaaeahcdaaaaaaaaaaaaaaeaahbhfigmciboaaaaakcdaaaaaaaaaaaapadpfjcibpaaaaakjphoahaaaaaeahcdaaaaaaaaaaaaaaeaahgmciboaaaaakcibpaaaaakjpaaahbhfialahbpbopoacbgpoabbdanbbancnkibeambganbggkbdaebggkbdafbggkbdagbggkbdahbggkbdaibggkbdajbggkbdakbggkbdalaccibaaaaaagamcaabcdefghgkbdaicaijklmnopgobdajcaponmlkjigobdakcahgfedcbagkbdalbgandiehahaaaaaabbaibdaebbajbdafbbakbdagbbalbdahbcaibbajbbakbbalaiajjgbngkcahikegknhgociamaaaaagaabcalbbaibbajbbakaiajbhfijgbpamgkcafglhmhoigociamaaaaagaabcakbbalbbaibbajaiajbifijgbpbbgkcanlhacacegkciamaaaaagaabcajbbakbbalbbaiaiajbjfijgbpbggkcaoomolnmbgociamaaaaagaabcaibbajbbakbbalaiajbkfijgbngkcakpaphmpfgociamaaaaagaabcalbbaibbajbbakaiajblfijgbpamgkcackmgihehgkciamaaaaagaabcakbbalbbaibbajaiajbmfijgbpbbgkcabdegdakigociamaaaaagaabcajbbakbbalbbaiaiajbnfijgbpbggkcaabjfegpngociamaaaaagaabcaibbajbbakbbalaiajbofijgbngkcanijiiagjgkciamaaaaagaabcalbbaibbajbbakaiajbpajfijgbpamgkcakppheeilgociamaaaaagaabcakbbalbbaibbajaiajbpakfijgbpbbgkcalbflppppgociamaaaaagaabcajbbakbbalbbaiaiajbpalfijgbpbggkcalonhfmijgociamaaaaagaabcaibbajbbakbbalaiajbpamfijgbngkcaccbbjaglgkciamaaaaagaabcalbbaibbajbbakaiajbpanfijgbpamgkcajdhbjipngociamaaaaagaabcakbbalbbaibbajaiajbpaofijgbpbbgkcaioedhjkggociamaaaaagaabcajbbakbbalbbaiaiajbpapfijgbpbggkcacbaileejgkciamaaaaagaabcaibbajbbakbbalaiajbhfijgblgkcagccfbopggocianaaaaagaabcalbbaibbajbbakaiajbmfijgbpajgkcaealdeamagocianaaaaagaabcakbbalbbaibbajaiajbpalfijgbpaogkcafbfkfocggkcianaaaaagaabcajbbakbbalbbaiaiajjgbpbegkcakkmhlgojgocianaaaaagaabcaibbajbbakbbalaiajblfijgblgkcafnbacpnggocianaaaaagaabcalbbaibbajbbakaiajbpakfijgbpajgkcafdbeeeacgkcianaaaaagaabcakbbalbbaibbajaiajbpapfijgbpaogkcaibogkbnigocianaaaaagaabcajbbakbbalbbaiaiajbkfijgbpbegkcamiplndohgocianaaaaagaabcaibbajbbakbbalaiajbpajfijgblgkcaogmnobcbgkcianaaaaagaabcalbbaibbajbbakaiajbpaofijgbpajgkcangahdhmdgocianaaaaagaabcakbbalbbaibbajaiajbjfijgbpaogkcaihannfpegocianaaaaagaabcajbbakbbalbbaiaiajbofijgbpbegkcaonbefkefgkcianaaaaagaabcaibbajbbakbbalaiajbpanfijgblgkcaafojodkjgocianaaaaagaabcalbbaibbajbbakaiajbifijgbpajgkcapikdoppmgocianaaaaagaabcakbbalbbaibbajaiajbnfijgbpaogkcanjacgpghgkcianaaaaagaabcajbbakbbalbbaiaiajbpamfijgbpbegkcaikemckingocianaaaaagaabcaibbajbbakbbalaiajblfijgbkgkcaecdjpkppgociaoaaaaagaabcalbbaibbajbbakaiajbofijgbpalgkcaibpghbihgociaoaaaaagaabcakbbalbbaibbajaiajbpalfijgbpbagkcaccgbjngngkciaoaaaaagaabcajbbakbbalbbaiaiajbpaofijgbpbhgkcaamdiofpngociaoaaaaagaabcaibbajbbakbbalaiajbhfijgbkgkcaeeoklokegociaoaaaaagaabcalbbaibbajbbakaiajbkfijgbpalgkcakjmpnoelgkciaoaaaaagaabcakbbalbbaibbajaiajbnfijgbpbagkcagaelllpggociaoaaaaagaabcajbbakbbalbbaiaiajbpakfijgbpbhgkcahalmlplogociaoaaaaagaabcaibbajbbakbbalaiajbpanfijgbkgkcamghojlcigkciaoaaaaagaabcalbbaibbajbbakaiajjgbpalgkcapkchkbokgociaoaaaaagaabcakbbalbbaibbajaiajbjfijgbpbagkcaifdaopnegociaoaaaaagaabcajbbakbbalbbaiaiajbmfijgbpbhgkcaafbniiaegkciaoaaaaagaabcaibbajbbakbbalaiajbpajfijgbkgkcadjnanenjgociaoaaaaagaabcalbbaibbajbbakaiajbpamfijgbpalgkcaofjjnloggociaoaaaaagaabcakbbalbbaibbajaiajbpapfijgbpbagkcapihmkcbpgkciaoaaaaagaabcajbbakbbalbbaiaiajbifijgbpbhgkcagffgkmmegociaoaaaaagaabcaibbajbbakbbalaiajjgbmgkcaeecccjpegociapaaaaagaabcalbbaibbajbbakaiajbnfijgbpakgkcajhppckedgkciapaaaaagaabcakbbalbbaibbajaiajbpaofijgbpapgkcakhcdjeklgociapaaaaagaabcajbbakbbalbbaiaiajblfijgbpbfgkcadjkajdpmgociapaaaaagaabcaibbajbbakbbalaiajbpamfijgbmgkcamdfjflgfgkciapaaaaagaabcalbbaibbajbbakaiajbjfijgbpakgkcajcmmamipgociapaaaaagaabcakbbalbbaibbajaiajbpakfijgbpapgkcahnpeopppgociapaaaaagaabcajbbakbbalbbaiaiajbhfijgbpbfgkcanbfnieifgociapaaaaagaabcaibbajbbakbbalaiajbofijgbmgkcaephokigpgkciapaaaaagaabcalbbaibbajbbakaiajbpapfijgbpakgkcaoaogcmpogociapaaaaagaabcakbbalbbaibbajaiajbmfijgbpapgkcabeedabkdgociapaaaaagaabcajbbakbbalbbaiaiajbpanfijgbpbfgkcakbbbaieogkciapaaaaagaabcaibbajbbakbbalaiajbkfijgbmgkcaichofdphgociapaaaaagaabcalbbaibbajbbakaiajbpalfijgbpakgkcadfpcdklngociapaaaaagaabcakbbalbbaibbajaiajbifijgbpapgkcallncnhckgkciapaaaaagaabcajbbakbbalbbaiaiajbpajfijgbpbfgkcajbndigolgociapaaaaagaabbaibbaeciahaaaaagbdaibbajbbafciahaaaaagbdajbbakbbagciahaaaaagbdakbbalbbahciahaaaaagbdalaaajbpbafianajaiiogjpoaebdanbbandkkkpippppadbpcapoabbgpoabbdanbbancnclaabbaicibbaaaaagbbajcibbaaaaagbbakcibbaaaaagbbalcibbaaaaagcicaaaaaakgpcbaaaaakakaaclblaabbajcibbaaaaagbbakcibbaaaaagcibkaaaaakgpcbaaaaakakaaagbdamclaabbamckkghcabaaaahaiaaeaaaaaebeiaafaaaaaebpbpinbnaaaaabiaagaaaaaebpbpinbnaaaaabiaahaaaaaeckboacciccaaaaakckaaaabddaaeaafcaaaaaaanaaaabbaaacgpblaaaaakbiflinbpaaaaabakacgpcdaaaaakalbgamclbkaaahaijdahaibhfijdcibiaaaaaganagaibiflajjmaaaibifiamaiahiogjpoaebdafbbafcnnkciceaaaaakaggpcfaaaaakbdaeclaabbaeckaaaabddaadaabdaaaaaaaoaaaabbaaacbpgbfjbpbafkadbpgbfjfincakclaaagckboacciccaaaaakckaabddaaeaaebaaaaaaabaaaabbaahoajaaaaaebepoabbgpoabamaicnbmhoaiaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaajaaaaaehoajaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaabaabaaaaaaaapaaaabbaabgcibkaaaaagakagcibnaaaaagaackbddaacaadgaaaaaabaaaaabbaaaccibcaaaaakcmbgacgpcbaaaaakbhcibkaaaaaggpcgaaaaakbgpoabclabbhaaalahcnbaaaaccichaaaaakakagcibnaaaaagaaaackaaaabldaacaadmaaaaaabbaaaabbaaacciciaaaaakakaaaganbgbdaeclboajbbaejkalaaaaahgpcjaaaaakaaaanoafamaaaanoaaaaaabbaebhfibdaebbaeajiogjpoaebdafbbafcnnfckabbaaaaaaaaabgaaalcbaaafccaaaaabbddaacaacpaaaaaabcaaaabbaacickaaaaakalbcabacciclaaaaakalbcabcicmaaaaakakclaacickaaaaakalbcabcicmaaaaakagpoaeamaicnomckaabddaacaacpaaaaaabdaaaabbaaaccibcaaaaakbgpoabamaicnaiaccichaaaaakbaaaacciciaaaaakakagcmaiagiogjbgpoacclabbgaaalclaaahckeghcoaaaaahaiaaiaaaaaebeiaajaaaaaeckboacciccaaaaakckaaaaaabddaaeaaebaaaaaaabaaaabbaahoalaaaaaebepoabbgpoabamaicnbmhoakaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaalaaaaaehoalaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabddaacaagpaaaaaabeaaaabbaahdcnaaaaakakaccmalaciogjbgpoacbgpoabclabbhaaanajcnejaaaaacbdaebgbdafcldcbbaebbafjkalaaahbpamciccaaaaaggpcoaaaaakbgpoabanajcnaibhiaamaaaaaeclaiagahgpcpaaaaakaaaabbafbhfibdafbbafbbaeiogjpoaeanajcnmcaaaggpdaaaaaakamclaaaickaabddaafaaclabaaaabfaaaabbaaaccicdaaaaagbaaabpapciccaaaaagakbpapciccaaaaagalbpapciccaaaaagambpapciccaaaaaganaciogjbgpoacbgpoabbdaebbaecnboacbgjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakakaciogjbhpoacbgpoabbdaebbaecnboacbhjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakalaciogjbipoacbgpoabbdaebbaecnboacbijkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakamaciogjbjpoacbgpoabbdaebbaecnboacbjjkgpdcaaaaakbhinbgaaaaabbdafbbafbgbpccjnbbafgpddaaaaakanagbmciccaaaaaggpdeaaaaakbgpoabbdaebbaecncpaaagbmciccaaaaaggpblaaaaakgpbmaaaaakakagahaiajbpbiciccaaaaaggpcoaaaaakbgpoabciciaaaaagaaaaclajagahaicicfaaaaagaackaabldaadaahoabaaaabgaaaabbaaadhcdaabaahagpcoaaaaakbgpoabanajcnajbpapciccaaaaagbaabaehcdaabaahagpcoaaaaakbgpoabanajcnajbpapciccaaaaagbaacaaacbpapciccaaaaaggpcoaaaaakanajdkchabaaaaaaadbpapciccaaaaaggpcoaaaaakbgpoabanajcnbocidfaaaaakgpdgaaaaakbpbjciccaaaaagaccidhaaaaakcidiaaaaakbaabadcibcaaaaakbgpoabanajcnelaaadciacaaaaagakagaegpcoaaaaakanajcndaaaadcibpaaaaagbgpoabanajcnbiaaadcibmaaaaagaacdaaaaaaaaaahakheaciboaaaaagaaaaadcidjaaaaakaaaaclafnnkiaaaaaaaaclahadcicgaaaaagaahddkaaaaakaladbpbkciccaaaaaggpcgaaaaakbgpoabanajcnenaaahacgpdlaaaaakamaibpblciccaaaaaggpdmaaaaakcmapaibpbmciccaaaaaggpdmaaaaakclabbhaaanajcnbfaibpblciccaaaaagbpbmciccaaaaaggpdnaaaaakamaiadcichaaaaagcgaaclajahacadgpdoaaaaakaahoamaaaaaebgpoabanajcnbiaacdaaaaaaaaaaeajpeaciboaaaaagaaadcidpaaaaakcgaaaaaanoafcgaaaanoaaaaaackaaaaebbmaaaaaaaaaaaadhaaaaaadpabaaaahgabaaaaafaaaaaaabaaaaabbddaabaabkaaaaaabaaaaabbaaaccieaaaaaakakagciebaaaaakalahcnahagciecaaaaakcgckaaaabddaadaackaaaaaabhaaaabbaaadbgciceaaaaakhdedaaaaakakagacgpeeaaaaakaaaggpefaaaaakaaaggpegaaaaakaaadalclaaahckaaaabldaaeaakmadaaaabiaaaabbaaadhcdaabaahagpcoaaaaakbgpoabbdapbbapcnajbpapciccaaaaagbaabaehcdaabaahagpcoaaaaakbgpoabbdapbbapcnajbpapciccaaaaagbaacacbpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdiffadaaaaadbpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnbicidfaaaaakgpdgaaaaakbpbjciccaaaaagcibkaaaaakbaabbpapciccaaaaagakaebpbnciccaaaaaggpdmaaaaakbgpoabbdapbbapcncpaaaebpbnciccaaaaaggpehaaaaakalaeahbpbnciccaaaaaggpblaaaaakfigpbmaaaaakakaebgahgpeiaaaaakbaacaaaccicmaaaaagamaibpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdiliacaaaaaibpbociccaaaaagbhcicnaaaaaggpdcaaaaakanaibpbpciccaaaaagbgcicnaaaaaggpdcaaaaakbdaebbaebpbmciccaaaaagbpblciccaaaaaggpdnaaaaakbhinbgaaaaabbdbabbbabgbpakjnbbbagpbbaaaaakbdafhdcnaaaaakbdagaabbafbdbbbgbdbcdigjabaaaabbbbbbbcjkbdahaabbahgpdcaaaaakbhinbgaaaaabbdbabbbabgbpcjjnbbbagpejaaaaakbdaibbaibpapciccaaaaaggpcoaaaaakbgpoabbdapbbapcnafdicbabaaaaaebpajciccaaaaaggpdmaaaaakbgpoabbdapbbapcnbgaebpajciccaaaaagbpcaciccaaaaaggpdnaaaaakbaacaebpapciccaaaaaggpcoaaaaakcnakbbaiaegpdeaaaaakclabbhaabdapbbapcnafdimpaaaaaabpapciccaaaaagbdajbbaibpcbciccaaaaaggpdmaaaaakbgpoabbdapbbapcnciaabbaibpcbciccaaaaaggpekaaaaakalbbaiahbhfigpbmaaaaakbdajbbaibgahgpeiaaaaakbdaiaaadbbaibpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdakagbpapciccaaaaaggpcoaaaaakbdapbbapcnceadbbaiaeaggpdnaaaaakbpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdakajbbaicibkaaaaakbbakbbajcicfaaaaagaaafcmalbbagbbakgpelaaaaakclabbhaabdapbbapcnakbbagbbakgpcpaaaaakaaaabbbcbhfibdbcbbbcbbbbiogjpoaebdapbbapdkigpoppppafbgpoabbdapbbapdkmbaaaaaaaaadaebpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdalagbpapciccaaaaaggpcoaaaaakbdapbbapcnbmadagbpcaciccaaaaagbpajciccaaaaaggpdnaaaaakcibkaaaaakbdalbbalcicjaaaaagbdambbambhinbgaaaaabbdbabbbabgbpdljnbbbagpbbaaaaakbdanaabbanbdbbbgbdbccldkbbbbbbbcjkbdaoaaaabbagbbaogpelaaaaakbdapbbapcnbcaabbaocibmaaaaagaabbaocidjaaaaakaaaaaanoafcgaaaanoaaaaaabbbcbhfibdbcbbbcbbbbiogjpoaebdapbbapcnliaabgciemaaaaakaackabbaaaaaaaaagdadcfiiadafabaaaaabbddaadaapaaaaaaabjaaaabbaabpapciccaaaaaghdenaaaaakakacciebaaaaakbgpoabbdahbbahdkmdaaaaaaaaaccieoaaaaakalaaahbdaibgbdajcldcbbaibbajjkamagaggpepaaaaakcmajbpccciccaaaaagclahbpapciccaaaaagaaaicibkaaaaakgpfaaaaaakcgbbajbhfibdajbbajbbaiiogjpoaebdahbbahcnmaaccifbaaaaakanaaajbdaibgbdajclfdbbaibbajjkbdaeaabbaecicjaaaaagbdafbbafbpapciccaaaaaggpcoaaaaakbdahbbahcnchagaggpepaaaaakcmajbpccciccaaaaagclahbpapciccaaaaagaabbafcibkaaaaakgpfaaaaaakcgaabbajbhfibdajbbajbbaiiogjpoaebdahbbahcnjpaaaggpfcaaaaakbdagclaabbagckfohcdcabaahaiaakaaaaaebeiaalaaaaaebgiaamaaaaaeckbddaaeaaebaaaaaaabaaaabbaahoaoaaaaaebepoabbgpoabamaicnbmhoanaaaaaebhinbgaaaaabanajbgbpcejnajgpbbaaaaakiaaoaaaaaehoaoaaaaaeacjkakagcibhaaaaagakagalclaaahckaaaaaabldaacaacoaaaaaabkaaaabbaaaahddkaaaaakakagciceaaaaakgpfdaaaaakaaagacgpdlaaaaakalahamnoalcgaabjciclaaaaagamnoaaaaaickaaaaabbaaaaaaaaaabaabpcaaaalccaaaaabbldaaeaafjaaaaaablaaaabbaaaaadbkciclaaaaagcibkaaaaakakblciclaaaaagaecnadadclagbjciclaaaaagaacibkaaaaakalacaggpehaaaaakaggpblaaaaakfiamacahaigpfeaaaaakanacaiajaifjgpeiaaaaakbdaenoahcgaaacbdaenoaaaabbaeckaaaaaaabbaaaaaaaaaabaaeneoaaahccaaaaabeghcabaoaahaiaanaaaaaebeiaaoaaaaaeckboacciccaaaaakckckacciccaaaaakaaaaaackaaaaaabddaacaadpaaaaaabmaaaabbaahoapaaaaaebecifiaaaaakbgpoabamaicnccaahcdkapaahanaahaaaaaccifjaaaaakgpfkaaaaakhdflaaaaakakagiaapaaaaaeaahoapaaaaaealclaaahckaabddaabaaalaaaaaabnaaaabbaahobaaaaaaeakclaaagckccaaaciabaaaaaaeckbddaabaaalaaaaaaboaaaabbaahobbaaaaaeakclaaagckfghddfaaaaagcifnaaaaakheaiaaaaaciabbaaaaaeckboaccifoaaaaakckaaaaaaleaaaaaamomkoploabaaaaaajbaaaaaagmfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofcgfhdgphfhcgdgffcgfgbgegfhccmcagnhdgdgphcgmgjgccmcafggfhchdgjgpgodndecodacodacodacmcaedhfgmhehfhcgfdngogfhfhehcgbgmcmcafahfgcgmgjgdelgfhjfegpglgfgodngcdhdhgbdfgddfdgdbdjdddegfdadidjcdfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofchfgohegjgngffcgfhdgphfhcgdgffdgfheacaaaaaaaaaaaaaaaaaaaaaafaebeefaebeefaleaaaaaaecfdekecabaaabaaaaaaaaaaamaaaaaahgdecodacodddadddbdjaaaaaaaaafaagmaaaaaabialaaaacdhoaaaaiealaaaabialaaaacdfdhehcgjgoghhdaaaaaaaajmbgaaaaheapaaaacdfffdaabacgaaaabaaaaaaacdehffejeeaaaaaacacgaaaanaaeaaaacdecgmgpgcaaaaaaaaaaaaaaacaaaaabfhbnkcajajabaaaaaapkcfddaabgaaaaabaaaaaadgaaaaaaaiaaaaaabbaaaaaadgaaaaaaffaaaaaafoaaaaaaaiaaaaaabgaaaaaaboaaaaaaacaaaaaaadaaaaaaaeaaaaaaabaaaaaaabaaaaaaacaaaaaaabaaaaaaaaaaakaaabaaaaaaaaaaagaaiaaahjaaakaajmaaihaaagaabbadaaadagaaecadcnadagaalmaekcaeagaaohaenfaeagaapoaenfaeagaablafnfaeagaadkafnfaeagaafdafnfaeagaagmafnfaeagaaihafnfaeagaakcafnfaeagaankafllafagaaooafllafagaapmafnfaeagaabfagnfaeagaaefagdcagelaafjagaaaaagaaiiaggiagagaakiaggiagagaamgaghjaaagaamlaghjaaagaaocagniagagaapkagooagagaaadahniagagaabaahniagagaaddahhjaaagaaeoahhjaaagaahjahhjaaagaajjahhjaaagaamgahniagakaaohahdcagagaaahaihjaaagaabbaihjaaagaafhaidmaiagaahbaihjaaagaajeaihjaaakaaoaainfaiagaacoajniagagaadiajniagagaafgajniagagaagdajniagagaajaajhjaaagaakbajooagakaapdajnlajagaaakakdcagagaachakgiagagaafcakhjaaagaafhakhjaaagaahlaknfaeakaakhakjbakakaamaakjbakakaanfakihaaaaaaaaaaabaaaaaaaaaaabaaabaaabaabaaabfaabjaaafaaabaaabaaabaabaaacaaabjaaafaaaiaabhaaabaabaaaclaabjaaafaaaiaabkaaiaabbaaadhaabjaaafaaakaaccaaaaaabaaadpaabjaaafaaanaaclaaaaaabaaaelaaffaaafaaapaadaaaaaabbaaaghaaffaaajaabbaadeaafbialeaaakaafbiamdaaakaafbiandaaakaabbaaocaabmaabbaapbaabpaabbaacbabcnaabbaaclabcnaabbaanlabbmaabbaaokabbpaabbaadmacbmaabbaaelacbpaabbaaggachiaabbaalpacbmaabbaamoacbpaabbaacbadkeaabbaaeoadkiaabbaajcadmgaafacaaaaaaaaajbaaababcdaaabaakacaaaaaaaaajgaaamabciaaacaanmcaaaaaaaaajgaabeabciaaadaacicbaaaaaaaajbaadfabdbaaaeaapmcbaaaaaaaajbaadmabdbaaagaaleccaaaaaaaajbaaedabdbaaaiaaoaccaaaaaaaajbaaeoabdbaaakaamicdaaaaaaaajbaafkabdhaaamaaoicdaaaaaaaajbaagaabdhaaapaaaiceaaaaaaaajbaaggabdhaabcaaceceaaaaaaaajbaagmabdhaabfaaebceaaaaaaaajbaahcabdoaabiaahiceaaaaaaaajbaahjabdoaabpaakpceaaaaaaaajbaaiaabdoaacgaaogceaaaaaaaajbaaihabdoaacnaacacfaaaaaaaajbaaioabekaadeaapacfaaaaaaaajbaakbabfaaadfaahmcgaaaaaaaajbaaklabfaaadgaalmcgaaaaaaaajbaalbabfaaadhaaemchaaaaaaaajgaalhabffaadiaaokcpaaaaaaaaigbilpabflaadkaamacpaaaaaaaajbbijcahgfaadkaapecpaaaaaaaajgaamfabciaadkaafedaaaaaaaaajbaaneabfpaadlaahddaaaaaaaaaigbilpabflaadnaahmdaaaaaaaaajbaapkabcdaadnaammdaaaaaaaaajgaaafacgfaadoaaoidaaaaaaaaajgaaakacgjaadoaacmdbaaaaaaaajgaabjacgjaadpaaiedbaaaaaaaajgaacfacgoaaeaaamadbaaaaaaaajgaaclachdaaebaaandcaaaaaaaaigbilpabflaaecaapldbaaaaaaaajbbijcahgfaaecaabidcaaaaaaaajbaaflaccdaaecaagidcaaaaaaaajbaagoachlaaedaaoedcaaaaaaaajbaahkacicaaeeaabmdeaaaaaaaajgaahpaciiaaefaamedfaaaaaaaajbaaikacgjaaeiaaomdfaaaaaaaajgaajjacipaaejaacedgaaaaaaaajgaakcacjfaaelaaomdjaaaaaaaajgaaldacciaaepaaoidkaaaaaaaajbbijcahgfaafaaaaadlaaaaaaaajbaanoaccdaafaaafadlaaaaaaaajgaaojacciaafbaajmdlaaaaaaaajgaapeacjnaafcaacgdmaaaaaaaaigbilpabflaaffaabedmaaaaaaaajbbijcahgfaaffaacodmaaaaaaaaidbilpabflaaffaadmdmaaaaaaaajdaifoadkmaaffaaiidmaaaaaaaajdaihcadlbaaffaajpdmaaaaaaaajdaihoadlgaaffaakidmaaaaaaaajgaikcadmkaafgaanfdmaaaaaaaaigbilpabflaafgaalpdmaaaaaaaajbbijcahgfaafgaaaaaaabaalgadaaaaabaalpadaaaaabaalpadaaaaabaamiadaaaaacaampadaaaaabaamiadaaaaacaampadaaaaabaamiadaaaaacaampadaaaaabaankadaaaaacaannadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaoaadaaaaacaaocadaaaaadaaoeadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaaogadaaaaacaaoiadaaaaadaaokadaaaaaeaaomadaaaaafaaoaadaaaaagaaooadaaaaahaapaadaaaaabaapdadaaaaabaamiadaaaaabaapmadaaaaabaaaaaeaaaaabaapdadaaaaacaaaeaeaaaaabaaakaeaaaaabaaapaeaaaaacaabcaeaaaaabaabfaeaaaaabaaboaeaaaaabaacgaeaaaaabaadcaeaaaaabaacgaeaaaaabaadpaeaaaaabaaeiaeaaaaabaaeiaeaaaaabaaenaebabaacaalpadbabaadaafbaeaaaaabaalpadaaaaabaaakaeaaaaacaalpadaaaaabaaffaebabaacaafpaebabaadaaghaebabaaeaagoaeaaaaabaahlaeaaaaabaaiaaeaaaaabaaenaeaaaaabaaakaeaaaaacaaijaeaaaaadaajcaeaaaaabaajmaecjaalpabngaadbaalpabngaadjaalpabngaaebaalpabngaaejaalpabngaafbaalpabngaafjaalpabngaagbaalpabngaagjaalpabngaahbaalpabnlaahjaalpabngaaibaalpabngaaijaalpabngaajbaalpaboaaakbaalpabogaakjaalpabflaaljaancagolaambaaohaghdaamjaakcadababnbaalpabagabnjaablahanabnjaacfahflaanjaaclahflaaobaadlahbjabmjaaefahdeabljaafeahipaaljaaflahelabljaaggahepabojaahaahanabpbaahoahgjabobaaicahgpabljaafeahheabljaaikahanabajaalpabflaaljaajoahioabmjaakkahababmjaaldahjdabljaalnahkmabababmlahciaaajabopahlgabajabacaiflaabjabbkainbabbjabccainhabbjabdcainoabamaalpabflaaljaafoaikmabamaagfaipkabamaagjaiaaaccjablpabflaaljaaieaianabljaaieaiblacljaaijaikmabdbabjoaiclacdbablaaianabababmcaiciaaljaafeahdbacmbaamoaigjaadjablpabflaadjabokaidiacljaapjaikmabljaaacajdnacdjabakajedacajabbhajejacababbnajciaaebabohaghdaaebabegajfjacfbablpabgaacfjabgoajngaafjabcfahflaafjabclahflaaljaaheajgpacljaaggahheacljaahmajblacljaaieajgpacamaapjaihkacgbabjmajiaacgjablpabngaaebabkpajkeacgjabflahelabgjabliajkkacebablpajkeacajaahaahanabdjabmoajmdacljaaheajnbachbablpabedachjablpabflaaibablpabflaaajaaecakcaadijabgjakcgadijabieakcpadbjaalpabdfadkbablpabekadlbabocakljadbbaalpabflaaaiaaaeaaanaaaiaaaiaabcaaaiaaamaabhaaaoaabjabaaaaaoaabnabaaaaaoaadbabaaaaaoaadfabaaaaacaadjabneaacjaaodacfbadcoaablaabgaecoaacdaadeaecoaaclaadkaecoaaidaalbaecoaaedaadeaecoaahlaakiaecoaabdaaakaecoaaddaaakaecoaadlaaeiaecoaaalaamcadcoaafdaadeaecoaaflaagiaecoaaglaajcaecoaahdaajpaeejaaodacfbadodaaklacnpacodaaldacbgacodaallacbgacadabklacfkadadabllacbgaciaaeilabbgacpcaapkaabbabboabceabcjabdkabakaafeabfnabgdabhmabjjabkeabkiablbabloabocabokabagaccbacfaacgiacifaclbacmjacnhacdnadefadleadahaaabaaaiaaadaaaaaabbadlmaaaaaaikadmbaaaaaakoadmpaaacaadbaaadaaacaadcaaafaaabaaddaaafaaacaadeaaahaapdabaeiaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaabaahaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaabaahjaaaaaaaaaaaaaaaaaaabaaaaaaopakaaaaaaaaaaaaaadmengpgehfgmgfdoaaffhagegbhegfcogfhigfaaahpnooaaffhagegbhegfaapocibncjbobpcmbcbcbcaaakcmcjbnbpcncnaocjcjcgaaakcmcjcbcmblchaabbbpbmanbpcococdcicbcnaaambpcncjcpcmbnbpcnaaffhagegbhegfcofahcgphagfhchegjgfhdaafdgfhehegjgoghhdaagnhdgdgphcgmgjgcaafdhjhdhegfgnaaepgcgkgfgdheaafdhjhdhegfgncoedgpgogggjghhfhcgbhegjgpgoaaebhahagmgjgdgbhegjgpgofdgfhehegjgoghhdecgbhdgfaapladaoanbjaoajbjpkbjplbdaopoaaplbdaopoanbjaoajbjpkbjbbajampnaapladaoanbjaoajbjpkbjbbajampnaaancocmcdcicbpnblcoblcnokojolaaancocmcdcicbpnblcoblcnokojolpkaapnbpbncjbobpdcokojojaappcdcgbpahpnooaacacdcgbpaocjancocmcdcicbaachbjcgajciplcdcocnaachbjcgolakcjdbbpcmaaagancccdcacoaaamancccdcacoaaamcjcoblcobpagbpcacoaapkboboapcicncdcbcibpboaachbooobjppaachbooobjabaachbooobjacaachbooobjadaachbooobjppppaachbooobjababaachbooobjacacaachbooobjadadaapmcjcidabpcmcoaocjbbcjcmbopkcmcmblddaabbcjcmboaocjacbpdcaaaocjacbpdcaacocjccbpdcaapocibncmddckcoaacogdhegphcaapnbpbncjbobppkcgckccblbmbpcoaaaocjplddcobpaaancocmcdcicbpnblcoblcnokojomaaancocmcdcicbpnblcoblcnokojompkaapnbpbncjbobpdcokojokaacobpcncoaacfcdcgcgakcmcjbnbpcncnpodcbpaacfcdcgcgakcmcjbnbpcncnaabobpcgblddaaakcmcjbnbpcncnadcnamcpcicicdcicbaaancocmcdcicbpnblcoblcnokojonaaancocmcdcicbpnblcoblcnokojonpkaapnbpbncjbobpdcokojolaaampoanaopkamaoaapkciblcgddcnbppkcmcbcnaaahblcdciaacpckboblcobpppcdcgbpaabnccbpbncfpncdcmbpbncocjcmddaaanbldabpppcdcgbpaacpckboblcobpadcicibpcmppcdcgbpcnaacbbpcopkcgcgppcdcgbpcnaaancocmcdcicbpnblcoblcnokojooaaancocmcdcicbpnblcoblcnokojoopkaapnbpbncjbobpdcokojomaacbbpcobbbpbmpnblcoblaacbbpcoaicjbobppnblcoblaafdhjhdhegfgncofcgfhdgphfhcgdgfhdaafcgfhdgphfhcgdgfengbgogbghgfhcaacmbpcncjcpcmbnbpahblciaafdhjhdhegfgncoehgmgpgcgbgmgjhkgbhegjgpgoaaedhfgmhehfhcgfejgogggpaacmbpcncjcpcmbnbppmcpcgcocpcmbpaacbbpcobjambpcncjcpcmbnbpahblciblcbbpcmaacbbpcobjpmcpcgcocpcmbpaacnbpcobjpmcpcgcocpcmbpaapmcpcgcocpcmbpaagegfgggbhfgmheejgohdhegbgogdgfaaghgfhefpeegfgggbhfgmheaaeegfgggbhfgmheaacdcibobpdcokojomaacacdcgbpakblcoccaacgbablcgcpbpaacdancccdcacoplcdcocnaacgbcaacgbdaadcaaddaadeaablaabmaabnaaboaacnaablbnaacnahbpcncnblcbbpaabobpbnaaccbpdcaacncoddckbpaaboblcoblaablokaablolaacdcibobpdcokojonaabpdcbpppcdcgbpaackcmcjbnbpcncnaiblchbpaaahcdcgcgcdcnbpbncjcibocnaacdcibobpdcokojooaablcmcbcnaacpcmcgaachboooaabncjcicacdcbapcmcgaabocdcmakblcoccaackbpcmcacddcaabobpcgbpcoajcmcoccbpcmcnaackblcoccaacdcibobpdcokojopaacicjbobpaiblchbpaacacdciblcgaicjbobpaadablcgcpbpaafdhjhdhegfgncofchfgohegjgngfcofggfhchdgjgpgogjgoghaafegbhcghgfheeghcgbgngfhhgphcglebhehehcgjgchfhegfaafdhjhdhegfgncofcgfgggmgfgdhegjgpgoaaebhdhdgfgngcgmhjfegjhegmgfebhehehcgjgchfhegfaaebhdhdgfgngcgmhjeegfhdgdhcgjhahegjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgpgogggjghhfhcgbhegjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgpgnhagbgohjebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfahcgpgehfgdheebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedgphahjhcgjghgiheebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfehcgbgegfgngbhcglebhehehcgjgchfhegfaaebhdhdgfgngcgmhjedhfgmhehfhcgfebhehehcgjgchfhegfaafdhjhdhegfgncofchfgohegjgngfcoejgohegfhcgphafdgfhchggjgdgfhdaaedgpgnfggjhdgjgcgmgfebhehehcgjgchfhegfaaehhfgjgeebhehehcgjgchfhegfaaebhdhdgfgngcgmhjfggfhchdgjgpgoebhehehcgjgchfhegfaaebhdhdgfgngcgmhjeggjgmgffggfhchdgjgpgoebhehehcgjgchfhegfaafdhjhdhegfgncoeegjgbghgogphdhegjgdhdaaeegfgchfghghgbgcgmgfebhehehcgjgchfhegfaaeegfgchfghghgjgoghengpgegfhdaafdhjhdhegfgncofchfgohegjgngfcoedgpgnhagjgmgfhcfdgfhchggjgdgfhdaaedgpgnhagjgmgbhegjgpgofcgfgmgbhigbhegjgpgohdebhehehcgjgchfhegfaafchfgohegjgngfedgpgnhagbhegjgcgjgmgjhehjebhehehcgjgchfhegfaaedgigbhcaafdhehcgjgoghaafdhagmgjheaafdhjhdhegfgncoejepaaeggjgmgfaaefhigjhdhehdaafdhjhdhegfgncofegfhiheaaefgogdgpgegjgoghaafdhehcgfgbgnfcgfgbgegfhcaafegfhihefcgfgbgegfhcaafcgfgbgefegpefgogeaaedgmgphdgfaaeegjhdhagphdgfaaedgpgohggfhcheaafegpecgpgpgmgfgbgoaaehgfheechjhegfhdaaejgohedgdeaaedgpgogdgbheaaghgfhefpemgfgoghhegiaafdhfgchdhehcgjgoghaafegpfdhehcgjgoghaaengbhegiaafagphhaafegpejgohedgdeaafegpemgphhgfhcaacogdgdhegphcaaechjhegfaafegpedgigbhcebhchcgbhjaaghgfhefpfffeegdiaaehgfhefdhehcgjgoghaaefgogehdfhgjhegiaafagbhegiaaehgfheeggjgmgfeogbgngffhgjhegigphfheefhihegfgohdgjgpgoaafahcgpgdgfhdhdaaehgfhefahcgpgdgfhdhdgfhdechjeogbgngfaaelgjgmgmaaefhigdgfhahegjgpgoaaeegbhegffegjgngfaaghgfhefpeogphhaaebgegeengjgmgmgjhdgfgdgpgogehdaaghgfhefpfegjgdglhdaafdhjhdhegfgncoedgpgmgmgfgdhegjgpgohdcoehgfgogfhcgjgdaaemgjhdhegadbaaefhbhfgbgmhdaaebgegeaafegpebhchcgbhjaafdfeebfegihcgfgbgeebhehehcgjgchfhegfaafehcgjgnaafdhegbhchehdfhgjhegiaaebhahaeegpgngbgjgoaaghgfhefpedhfhchcgfgoheeegpgngbgjgoaaghgfhefpecgbhdgfeegjhcgfgdhegphchjaaehgfheeggjgmgfeogbgngfaaeegfgmgfhegfaafdhjhdhegfgncoeogfheaafhgfgcedgmgjgfgoheaaeegphhgogmgpgbgefdhehcgjgoghaaedgpgohegbgjgohdaafcgfhagmgbgdgfaaeegphhgogmgpgbgeeggjgmgfaafdhegbhcheaaehgfheeegjhcgfgdhegphchjeogbgngfaaeegjhcgfgdhegphchjaaeegjhcgfgdhegphchjejgogggpaaedhcgfgbhegfeegjhcgfgdhegphchjaafdhehcgfgbgnfhhcgjhegfhcaafegfhihefhhcgjhegfhcaafhhcgjhegfaaejgogegfhiepggaafehcgjgnefgogeaaemgbhdheejgogegfhiepggaaefgohggjhcgpgogngfgoheaaefhigjheaafdhehcgjgoghechfgjgmgegfhcaaehgfheeggjgmgfhdaaebhahagfgogeaaehgfheeegjhcgfgdhegphcgjgfhdaahdgfhefpefgogdgpgegjgoghaafdhjhdhegfgncoedgpgegfeegpgncoedgpgnhagjgmgfhcaaehgfgogfhcgbhegfgeedgpgegfebhehehcgjgchfhegfaaeegfgchfghghgfhceogpgoffhdgfhcedgpgegfebhehehcgjgchfhegfaaedgpgnhagjgmgfhcehgfgogfhcgbhegfgeebhehehcgjgchfhegfaafcgfgggfhcgfgogdgfefhbhfgbgmhdaafehjhagfaafchfgohegjgngffehjhagfeigbgogegmgfaaehgfhefehjhagfeghcgpgneigbgogegmgfaaebhdhdgfgngcgmhjaaghgfhefpebhdhdgfgngcgmhjaafdhjhdhegfgncoedgpgnhagpgogfgoheengpgegfgmaaefgegjhegphcechcgphhhdgbgcgmgfebhehehcgjgchfhegfaaefgegjhegphcechcgphhhdgbgcgmgffdhegbhegfaafdgfhehegjgoghhdecgbhdgfaafdhjgogdgihcgpgogjhkgfgeaaffhagegbhegfcofahcgphagfhchegjgfhdcofcgfhdgphfhcgdgfhdcohcgfhdgphfhcgdgfhdaaaaaaaaaaiannceaaghaagcaaceaaghaagcaaghaagdaaghaageaaceaaghaagoaaghaaggaagiaageaagiaageaaghaagcaaghaagiaaghaaggaagdaagbaaghaagfaaghaagkaaghaagiaaghaaggaagiaageaagiaagfaaceaaghaagcaaghaagdaaghaageaaghaagfaaghaaggaaghaaghaaghaagiaaghaagjaaghaagkaaghaaglaaghaagmaaghaagnaaghaagoaaghaagpaaghaahaaagiaagbaagiaagcaagiaagdaagiaageaagiaagfaagiaaggaagiaaghaagiaagiaagiaagjaagiaagkaagiaaglaaceaageaagbaaceaaghaagdaaceaaghaageaaceaaghaagfaaceaaghaaggaaceaaghaaghaaaaepgfaageaaghaagjaaghaagcaagiaagdaaghaagiaaghaaggaagfaagoaaghaahaaaghaagfaagiaaggaaghaagnaaghaaggaaggaahaaaggaaghaageaagfaaceaagdaagpaaghaaggaagiaagjaaghaaggaaaaabaaimmngdaaggaagiaagpaaghaagfaagiaagbaageaagbaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagdaagpaaghaaggaagiaagjaaghaaggaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaahaaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaageaagbaageaagbaageaagbaageaagbaageaagbaageaagbaageaagcaaggaagnaaggaagnaaceaagiaagfaaghaahaaaghaahaaaghaagnaagiaageaaggaagnaaggaagnaaceaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagdaagpaaghaaggaagiaagjaaghaaggaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaceaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaahaaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagdaagbaaceaaggaagnaaggaagnaaceaaggaagnaaggaagnaaggaagnaaggaagnaaceaaggaagnaagdaagdaaceaaggaagdaagfaaggaaggaageaaggaagfaagfaagcaaggaagdaaggaagfaaceaagfaagfaageaaglaaggaagnaaggaagnaagiaageaaghaageaaghaagkaaggaagnaaggaagnaaggaaghaaghaagkaagiaageaagiaaggaaghaagcaaghaagnaagdaagbaaggaageaagiaagfaagiaaggaaghaagfaaghaagkaaghaahaaagdaagbaageaagdaageaagbaageaagbaageaagjaaggaagnaaggaagnaaggaagbaagiaagdaaghaahaaaghaaglaaghaaggaaghaageaagiaagfaagiaageaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaagnaaggaagnaaghaagdaaghaagkaaghaagpaaggaagnaaggaagnaagfaagfaaghaaggaaghaagdaagiaaggaaghaagiaaggaagnaaggaagnaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaaggaagnaaggaagnaaghaagcaagiaagbaaghaagmaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaagiaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaagdaagpaagiaagfaagiaagjaagiaagfaaceaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaaggaagnaageaagbaageaagbaageaagbaageaagbaageaagjaageaagfaageaageaaggaagnaaggaagnaagdaagoaageaagpaagpaaghaagmaagjaaglaagbaagpaagkaagjaagcaagkaageaagpaagjaaglaagpaaglaagcaagpaagjaagmaagfaagmaagkaagpaaggaagjaagnaagjaaggaaggaagnaaggaagnaageaagcaageaagbaageaagbaageaagbaageaagbaageaagjaageaagfaageaageaaggaagnaaggaagnaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaaghaaglaaghaahaaagiaagkaaghaagoaaghaaggaaghaagpaaghaagiaagdaahaaaghaaggaaghaagoaagiaagbaagiaagfaagiaagkaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaagfaagoaagfaagfaageaaggaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaaggaageaaglaaggaagnaaggaagnaagiaagfaaghaagoaagiaagbaageaagdaaggaagnaaggaagnaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaageaagdaaggaagnaaggaagnaaceaaghaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaaggaagmaagfaageaagfaahaaagfaagpaagfaaghaagfaagkaagfaagiaaggaagoaaghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaaghaaglaaghaahaaagiaagkaaghaagoaaghaaggaaghaagpaaghaagiaagdaahaaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaagdaahaaagiaagdaaghaagcaagiaagiaagdaahaaaghaagoaaghaagcaagiaageaagiaagfaaghaaggaagiaagdaagdaahaaagfaagoaagfaagfaageaaggaagdaagpaagiaagfaagiaagjaagiaagfaaceaagfaagfaageaaglaaggaagnaaggaagnaagiaageaaghaageaaghaagkaaggaagnaaggaagnaaggaaghaaghaagkaagiaageaagiaaggaaghaagcaaghaagnaagdaagbaaggaageaagiaagfaagiaaggaaghaagfaaghaagkaaghaahaaagdaagbaageaagdaageaagbaageaagbaageaagjaaggaagnaaggaagnaaggaagbaagiaagdaaghaahaaaghaaglaaghaaggaaghaageaagiaagfaagiaageaaggaagnaaggaagnaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaaggaagnaaggaagnaaghaagdaaghaagkaaghaagpaaggaagnaaggaagnaagfaagfaaghaaggaaghaagdaagiaaggaaghaagiaaggaagnaaggaagnaaceaagfaageaaghaagjaaghaagcaaghaagpaaghaagpaaghaaggaaghaagnaagfaagfaaghaaggaaghaagoaaghaahaaaggaagfaaghaahaaaghaahaaaghaagnaagdaagpaaghaaggaagiaagjaaghaaggaaceaaghaaghaaghaagcaaghaagnaagiaageaaghaaggaaceaaggaaggaagiaagbaaghaagfaaghaagcaagiaagfaaghaaggaaggaahaaagfaaghaaghaagkaaghaagnaaghaaggaagiaageaaggaagnaaggaagnaaceaagdaagpaagiaagfaagiaagjaagiaagfaaceaaggaagnaaghaagpaaceaaggaagnaagiaagdaaggaagnaaghaagpaaceaagdaagoaageaagpaaceaagpaaghaagkaagnaagjaagoaagpaaggaagjaaglaaglaagcaagpaaggaagkaagkaaglaagjaagpaagjaagmaaggaagjaagfaagpaaghaagmaaglaagkaagbaagpaagiaagkaagmaaglaagpaagpaaggaagmaagoaagkaaggaaceaagpaaggaagmaagpaagjaaggaagpaaghaagkaagmaagmaagfaagpaaghaagkaaghaagmaagbaagpaaghaagkaaghaagjaagiaagpaagfaagmaagmaagmaaghaaceaagdaahaaaceaagdaagjaaceaageaagmaaaaibdhghaagjaagiaagfaagiaagfaagiaagbaagiaageaageaaglaagdaahaaagdaahaaaghaagiaaghaagkaagiaagfaagdaagpaaghaahaaagiaageaaghaageaaghaagjaaghaagkaaghaagpaaghaagcaagdaagpaaghaagpaaghaaggaagiaagfaagdaahaaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaagdaahaaaghaaggaaghaagcaagiaageaagiaagkaagfaagkaaghaageaaghaahaaaghaagpaagdaahaaagiaagiaaghaagkaaghaagmaaghaagkaagiaageaagdaahaaagfaahaaaghaagpaaghaagnaaghaagkaaghaagpaaghaaggaaggaageaaghaaggaagiaagdaaghaagkaaghaagcaaghaagnaaceaagiaageaaghaageaaghaagkaaghaagoaaghaaggaaghaagpaaghaageaaghaaggaaceaagfaagpaaghaagcaaghaagoaaghaaggaageaagcaaceaaceaagdaagjaaceaagdaagkaaaadhffaahaaageaagbaaheaagfaacoaafaaahcaagpaahaaagfaahcaaheaagjaagfaahdaacoaafcaagfaahdaagpaahfaahcaagdaagfaahdaaaaaaaabnolpgapgdldjjenjajfdkblildjmcpaaaailhhkfmfgbjdeoaijacagaiaeaiaaaaaaaeaeaaaaaaaecaaaaaaaacagaoadagbnaoaeaaabaoaiaeaaabaoaoadagbnakafaaacakakakagaaadakakakakalaaahabbaakakakakakakakafaaabbnakaoaeaaabaoakafaaacaoaoaiadcaaaabafaaacafadadadaaaaabaeaaababaoaeaaababanaeaaabacaoacagacagaaabbnaobnaoafaaababbnaoagaaadabaoaoaoafaaacaoaoaoahaaaeabaoaoaoacagaaadaoaoaoacadagbcanadagbcbbaeaaaabcanaeaaaabcbbafaaababbcbbaeaiaabcanaeaiaabcbbadagbccaaeaaaabccaaeaiaabccaababaecaababaoaecaababacafcaababbbenaecaababaiagcaabbnaobnadahahaeaoaoacbnadagahaeaoaoaoacaeaaaabcgfagcaacabaobcgfadcaaaaoahahaeaobcgjaoacaeaaabacakafahadakakacaeahacakakakahaiakakakakakakakacafcaabbnafaobaahakbnakaiaibnakaiaiaibnafbnakacadcaaaaiaecaabaoaiaiahagaoakaiaiaoacafahadaoaoacafahadaoaoakafaaacanananaeaaabakanahaaaeaoaoaoaoaobbahaoaoaibnakaiakakakakakakakakaoacaecaaabnadafcaabaobnafakahagbnafbnadaiafaoacadahabafadahabaoaecaabacaoaeahacaoacahaaabbnbciaifaobcahagbnbciaifbciaifbciaijbnbciaifaiacafaaaabbiainagcaabbbiainanadcaaaakahahadakbbiainacaiahadbnbciaifacacagbfbciajbabaoafcaababbdaaafcaaabnbdaaapahagbfbciajbabaoaobnaoacbnaoaiaeabaaaaaaafcaabaobnadajahagaoaoaoaoacbnadafaaaabciajjagaaadaoaoaoaoaecaabaoaoafcaacaoaoaoafcaacabaoaoagaaabbciaifaoaiahaeaobciajnaoacagaaabbciakfaoahcaadabaoacbcgfagahacbciakjaoaecaabaiaoafcaacaoaiaiafcaabacbdaaaeaaababaiboahbdaoaiaoaoaobnaobfbciajbabaoaoaoaoaoaoaobnaoaoacbnadbnaoaiafaaabbnaoaoagcaabbcialfaobbahakbcialfbnaoaobnaoaoaoaoacbnaoaiafcaababbcgfahahadbciajnaoaoafcaacaiaoaiahahafaoaoaiaiaoeaabaaddfdhjhdhegfgncofcgfhdgphfhcgdgfhdcofegpgpgmhdcofdhehcgpgoghgmhjfehjhagfgefcgfhdgphfhcgdgfechfgjgmgegfhcahdecodacodacodaaaaaafaaacacbmbmaiaaabbciamfbbiamjafcaaabciamnahcaacabaobciamnahahadbcanbcanacaeahabbcbbagcaababbbianfaiabaaacaaaaaaaaaafjabaaelengjgdhcgphdgpgghecofggjhdhfgbgmfdhehfgegjgpcoefgegjhegphchdcofdgfhehegjgoghhdeegfhdgjghgogfhccofdgfhehegjgoghhdfdgjgoghgmgfeggjgmgfehgfgogfhcgbhegphcaidbdbcodacodacodaaaaaaeahabbccaaiaaabbcianjbcianjehabaabkcoeoeffeeghcgbgngfhhgphcglcmfggfhchdgjgpgodnhgdecodaabaafeaobeeghcgbgngfhhgphcgleegjhdhagmgbhjeogbgngfbacoeoeffecaeghcgbgngfhhgphcglcadealabaaagffhagegbhegfaaaabnabaabiogjgihoelllgogjlleogjglaoiloifofikkjoflhkfofiflhaaaaafabaaaaaaaaanabaaaifdgdgjgngfgogdgfaaaabpabaabkedgphahjhcgjghgihecamckjcafdgdgjgngfgogdgfcadcdadbdhaaaacjabaacededgdgdadedhdddccndhgcdagccndedidggecndjdbdddfcngddgdedfggggdddggegddjdiaaaaamabaaahdccodacodacodaaaaaaiabaaahabaaaaaaaaaiabaaaiaaaaaaaaaaboabaaabaafeacbgfhhcgbhaeogpgoefhigdgfhahegjgpgofegihcgphhhdabaaaaaaaajojfjofjaaaaaaaaacaaaaaabmabaaaakegiaaaakeekaaaafcfdeefdjnebjceadkgjfbeflchpfhdlegpiimlbabaaaaaagfdkfmehgjheeegjhcfmffhagegbhegffmffhagegbhegfdcfmffhagegbhegffmgpgcgkfmeegfgchfghfmffhagegbhegfcohagegcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoigjaaaaaaaaaaaaaaaaaaaapogjaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapagjaaaaaaaaaaaaaaaafpedgphcefhigfengbgjgoaagnhdgdgphcgfgfcogegmgmaaaaaaaaaappcfaacaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaabaaaaaaacaaaaaiabiaaaaaadiaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaafaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaaaaaagiaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaajaaaaaaakaiaaaaabaadaaaaaaaaaaaaaaaaaaaalaidaaaaokabaaaaaaaaaaaaaaaaaaaabaaddeaaaaaafgaafdaafpaafgaaefaafcaafdaaejaaepaaeoaafpaaejaaeoaaegaaepaaaaaaaaaalnaeoppoaaaaabaaaaaaacaaaaaaaaaaaaaaacaaaaaaaaaadpaaaaaaaaaaaaaaaeaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeaaaaaaabaafgaagbaahcaaegaagjaagmaagfaaejaagoaaggaagpaaaaaaaaaaceaaaeaaaaaafeaahcaagbaagoaahdaagmaagbaaheaagjaagpaagoaaaaaaaaaaaaaalaaehaacaaaaabaafdaaheaahcaagjaagoaaghaaegaagjaagmaagfaaejaagoaaggaagpaaaaaaemacaaaaabaadaaadaaadaaadaaadaaadeaagcaadaaaaaaacmaaajaaabaaedaagpaagnaagnaagfaagoaaheaahdaaaaaaihgfpgeopegglagfifipkjfcoffnhhfbaaaaaaaadeaaajaaabaaedaagpaagnaahaaagbaagoaahjaaeoaagbaagnaagfaaaaaaaaaafdaagdaagjaagnaagfaagoaagdaagfaaaaaaaaaadiaaahaaabaaegaagjaagmaagfaaeeaagfaahdaagdaahcaagjaahaaaheaagjaagpaagoaaaaaaaaaaffaahaaageaagbaaheaagfaaaaaaaaaadaaaaiaaabaaegaagjaagmaagfaafgaagfaahcaahdaagjaagpaagoaaaaaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaadiaaalaaabaaejaagoaaheaagfaahcaagoaagbaagmaaeoaagbaagnaagfaaaaaaffaahaaageaagbaaheaagfaacoaagfaahiaagfaaaaaaaaaafiaabkaaabaaemaagfaaghaagbaagmaaedaagpaahaaahjaahcaagjaaghaagiaaheaaaaaaedaagpaahaaahjaahcaagjaaghaagiaaheaacaaakjaacaaafdaagdaagjaagnaagfaagoaagdaagfaacaaadcaadaaadbaadhaaaaaaeaaaalaaabaaepaahcaagjaaghaagjaagoaagbaagmaaegaagjaagmaagfaagoaagbaagnaagfaaaaaaffaahaaageaagbaaheaagfaacoaagfaahiaagfaaaaaaaaaadaaaahaaabaafaaahcaagpaageaahfaagdaaheaaeoaagbaagnaagfaaaaaaaaaaffaahaaageaagbaaheaagfaaaaaaaaaadeaaaiaaabaafaaahcaagpaageaahfaagdaaheaafgaagfaahcaahdaagjaagpaagoaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaadiaaaiaaabaaebaahdaahdaagfaagnaagcaagmaahjaacaaafgaagfaahcaahdaagjaagpaagoaaaaaadcaacoaadaaacoaadaaacoaadaaaaaaaoplllpdmdphigngmcahggfhchdgjgpgodnccdbcodacccagfgogdgpgegjgoghdnccfffeegcndicccahdhegbgogegbgmgpgogfdncchjgfhdccdpdoanakdmgbhdhdgfgngcgmhjcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgdbcccagngbgogjgggfhdhefggfhchdgjgpgodnccdbcodaccdoanakcacadmgbhdhdgfgngcgmhjejgegfgohegjhehjcahggfhchdgjgpgodnccdbcodacodacodacccagogbgngfdnccenhjebhahagmgjgdgbhegjgpgocogbhahacccpdoanakcacadmhehchfhdheejgogggpcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgdcccdoanakcacacacadmhdgfgdhfhcgjhehjdoanakcacacacacacadmhcgfhbhfgfhdhegfgefahcgjhggjgmgfghgfhdcahigngmgohddncchfhcgodkhdgdgigfgngbhdcngngjgdhcgphdgpgghecngdgpgndkgbhdgncohgddccdoanakcacacacacacacacadmhcgfhbhfgfhdhegfgeefhigfgdhfhegjgpgoemgfhggfgmcagmgfhggfgmdnccgbhdejgohggpglgfhccccahfgjebgdgdgfhdhddnccgggbgmhdgfcccpdoanakcacacacacacadmcphcgfhbhfgfhdhegfgefahcgjhggjgmgfghgfhddoanakcacacacadmcphdgfgdhfhcgjhehjdoanakcacadmcphehchfhdheejgogggpdoanakdmcpgbhdhdgfgngcgmhjdoanakaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaamaaaaaabadkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
		
    }


}

示例demo
示例源碼

開源地址:https://gitee.com/scimence/UpdateDemo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章