diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97b222f --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +backup +lib +*.exe \ No newline at end of file diff --git a/LICENSE b/LICENSE index 261eeb9..ab6490b 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2021 WSL GUI Tool team Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..be6cb0b --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# WSL GUI tool + +Windows Subsystem for Linux 2 is amazing feature of Windows that allow you run native Linux application. For more details, please read [WSL Official documentation](https://docs.microsoft.com/windows/wsl/about). + +WSL GUI Tool allow you to manage WSL features with GUI and not by command line. + +You can: + * start/stop a distribution + * rename distribution + * change flag of distribution + * edit default environment variables + +## Installation + +Just download executable file in release github section. + +## Screenshot + +![Main window](images/screenshot/mainwindow.png) + +![Distribution properties window](images/screenshot/distributionproperties.png) + +## How to build? + +You need install [Lazarus 2.0.12](https://www.lazarus-ide.org/) (fpc-3.2.0-win64) and Windows 10 64 bits. diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..e8fed7c --- /dev/null +++ b/TODO.md @@ -0,0 +1,23 @@ +# Global config + +Change default WSL version +Set distribution as default +Minimize on systray +Set default folder to run distribution +Set default shell (powershell, cmd,...) to run distribution +Parameter to timer to refresh screen + +# One distribution + +Set WSL version for one distribution +Add run WSL with command and a specific user +Export distribution +Import distribution +Unregister distribution + +# Misc + +Add timer to auto-reload WSL distribution when main window is displayed +Add sort TListView +Edit \.wslconfig file (https://docs.microsoft.com/en-us/windows/wsl/wsl-config#wsl-2-settings) +Save save & position of main window diff --git a/aboutwindow.lfm b/aboutwindow.lfm new file mode 100644 index 0000000..0f21d68 --- /dev/null +++ b/aboutwindow.lfm @@ -0,0 +1,471 @@ +object FormAbout: TFormAbout + Left = 379 + Height = 569 + Top = 171 + Width = 568 + BorderStyle = bsDialog + Caption = 'About WSL GUI Tool' + ClientHeight = 569 + ClientWidth = 568 + DesignTimePPI = 120 + OnShow = FormShow + Position = poOwnerFormCenter + ShowInTaskBar = stNever + LCLVersion = '2.0.12.0' + object ImageLogo: TImage + Left = 156 + Height = 190 + Top = 16 + Width = 256 + AutoSize = True + Picture.Data = { + 1754506F727461626C654E6574776F726B47726170686963352E000089504E47 + 0D0A1A0A0000000D4948445200000100000000BE0806000000DAC5D1D7000000 + 017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048 + 597300000EC300000EC301C76FA86400002DCA49444154785EED9D077814D5DA + C7CFCCECA613A4138AB4908400A1AC28A0DED841511405AEDEAB14DBBD9F7AED + D8BDA858B0828A8A5DB08B5C454451B120D294A0B440E85DE90412B2D9DD99F9 + E67F7236A4CCB6D99DCDCEEEF93D4FC89CD9CD92B2E73D6F7F05C2E1588CCEF9 + 8E1345D173BAA4C844220A399C9C759524DA06D9446DADDD13884C14D14E14C1 + 465C95CE6F1ABBF7BD2B1391C86212519253176C2E5AB89DBD54C2C3050027A6 + C97238D29ABB5CC9E5296D9EB197EF3A535465A212922E10A125C1554808DA57 + A87BB5377DB93B299324B98F9E54263555B7AFFAE5107B42C2C105002726E970 + EAB0FE2987379FA35D0E111577FFD0377B7078A454B728BB1F91047972717171 + 19BB9D307001C08929B2FB9ED945553D33ECCE0339DA9B33DDAC8D5F17552587 + 34B3619292D1E4ED8DBFCEDFC96EC73D5C00706286BCBCFCBB157BCA44C953C1 + EE441F8F94725024EE4125AB572F63B7E21A2E00380D4E97FC3ED9AA68FB3D59 + 2E4BD39662D5DD86435555577946A7A2B4A4D241258B161D65B7E39206FF6573 + 129BEEDDBB77B1ABAE05DAE6CFD09631F17E14042129E3D8F601CAD1CAB9EC56 + DCC235004E8391939393278A529120109CFC31896CCF5890424E387FE5CAEFCA + D9ADB8826B009C06212F2F2F4BDBFC3FC5F2E60792BBFCF48376E127B68C3BB8 + 06C0893A393D1C79A25CB154206A26BB15D3A8AAEAD63E0D58B76E5D51D59DF8 + 816B009CA8D2A2704486C79EBAC02A9B1F0882605745DBF727169CDE89DD8A1B + B800E0449526FBD68D4E761E68CE96964154E5C69AC9F20B5BC60D12FBCCE198 + 8EC3E14893DD95EF6B972754DDB11636A522BD69A79E070EECDAF21BBB6579B8 + 06C0891A07852633B54F1DAB56D643501551AD38724587C2C21476CBF27001C0 + 891AC9157F0D669796C5E63976AAEDA8DC9D2D2D0F17009CA8D0B57B9F270445 + 662B2BA312D175EC1DB6B03C5C00704CA75DFFF39A4A8AFB62B6B43C36B922A3 + 73C180966C6969B800E0984E8AB3DC4104A11B5BC60142C724F9C8596C6169B8 + 00E0988ECD798008AA87ADE2019554D89A7CE87038ECEC8665E10280633EB6D4 + D7D855DC90E63EC8AEAC0D17001CF3919DEDD955FCA0AAA434A9F5256C6559B8 + 00E0980A1C80F15A70221ED97913BBB42C5C00704CC5EE72BDAD7D8ACB8C5351 + AE6457D6850B008EA924BBE2B7E1AE2CA59C9AD577C8E96C6949B800E0988A20 + BBD855FC6153DD5266E54E4B6B375C0070E21A411088289AF4365715423C4EB6 + B026BC2108C734DA9CF6F79CF4239B17DADC65512FFF6DD5AA15193E7C382A10 + 892449C4E97492850B1792CF3EFB8C1C3D1AB93E9F8AA29C59525262D98E415C + 00704CA34BDFD31CB6CAA3CB44C5B71980133A2929899ED2D8A4AA1ADE1C8096 + 2D5B9251A34691B163C7D2D7AE8BDBED264F3EF924993D7B7644048133BDADBA + 65D93C9801D119601061B800E098465ECFBE0E22BB9609AA7E1150D3A64DC9ED + B7DF4E7AF7EE4D37EB9E3D7BC8134F3C41366EDC684810B469D386BCF3CE3BA4 + 6DDBB6BA9BDF8B2CCB64C3860D64F4E8D1610B01D99646D6AF2A828D614901C0 + 1B82704CA379ABAC364495AFC744BEBA0C1C3890BCFCF2CBE4E4934F264D9A34 + A11FEDDAB523C3860DA31B74D5AA5550AFD9B30383CDFFC61B6F90134F3CD1EF + E607D0369A376F4EFAF7EF4FBEFDF65B5259693C9C07E1B67FDFBE87D9D27270 + 01C0318D2A01E0A92700FAF6ED4B264D9A44D5F5BAD86C3672CA29A750BBFDB7 + DF7E0B4A13B0DBED64F2E4C9A4478F1EEC4E70E0FF4F4D4DA5BE01A3A60744CD + FEFDD615003C0AC0311134D3AD0DECFDFFFBBFFFA327BE2F70425F79E595A4A0 + A080DDF1CF45175D444E3AE924B60A1E680A975F7E3919306000BB63044B6AFE + D57001C0892AFDFAF5A3EA7F20D2D3D3C9840913A8C0F0475A5A1AB9F0C20BA9 + C66004681C175F7C31FD6C94D4FEA3DAB04BCBC1050027AADC70C30D016D742F + 70E6053A9D11EE43A84F0FA8F530233EF8E00372E0C00176B73E7FFBDBDF48B3 + 66CDD82A74048FF325766939B800E0440D78FDE1ACABCBB163C7485959FDD1FC + 29292954B5F797C873E9A597521F405DE0DD87A971CD35D790C71F7F9C5C70C1 + 05E4C71F7FD4B5F53333336924C22836C1BA660017001C13C1C63C7EDAB76FDF + 9E64646006E87110F2BBFEFAEBC9B5D75E4B7EF8E10776F738A79D769A4FF51C + 9AC45967E937E679F4D147C982050B88C7E3A1D1040884FBEFBF9FAC5EBD9A3D + A336F02318253339388D2616E10280133570FAC366F7525A5A4A4FE8E5CB9793 + 952B57925B6EB9855ED7A46BD7AEBA273C807FA071E3C66C751C8410BFFCF2CB + 7AA7FDE1C387C9F4E9D375C38B8820046B9AD445F21C6357D6830B008E69D018 + 408D4D880D5B73937DF1C517B56C73C4FF5F7BED35E2721DCF1CF4C6ECF5484E + 4ED6350FA64E9DEA33AC376FDE3C5D0180EFCBA8235092AD5B0FC00500C734DC + F634A288BE37D5D6AD5BEB6DC6A2A222B27FFF7EB6AAA251A346ECAA367A9E7F + 9CF2DBB76F67ABFA20E967C58A156C551B7FBE067F889E0A76653DB800E09886 + 27A599AC8A49D5C90038E1BDC036870950173804CBCB6B8FE2F7150AC46BD43D + E9F19A478E1C612B7DD6AF5FCFAE6AE34B6B0884205BB7E12917001CD3D8BD68 + D61F364FD9D76C49D5FD9A69B77A363736216A02BCD7252525D5EBBA54545490 + 3973E6901D3B76546F5E0899505288BDE0EB21500CA1D44F78B20A5C0070A2C6 + AE5DBBAA4F77D8DB08BFE90141B16CD93272C51557903163C6D00ABE9C9C1C72 + FEF9E7933BEEB883460C905084A8027C0623478EA4E140088383070377EBD50B + 45422B30223828C6148798C0BAF10B8E25E8D6ADDB2CEDD3505CC39B8F4D8AA2 + 1F80E21DE4F0D7DD78DAD750FF0072002EB9E4121AA3CFCACA628F1E07A7FDA6 + 4D9BC8BA75EB6851CFCF3FFF4CC38CC829F0759AC3CE5FBA7429CD34AC094284 + E81560048F3D63D68695BF59B24330D70038510327F9D75F575B04E4BCF3CEAB + 1516F4021BFEC1071F2453A64CA1A7BEDEE60770024233183A742815246FBFFD + 36E9D8B1A3DFB460640DA200A8263025962C59C2560610ACBB8DB800E0984A5D + EDF8DD77DF25870E55350A45E9EED5575F4DAFBDE0D4876680931F1A03128590 + 2004EF7E4D60B3C39B8F531F61439814D8DC1002AFBEFA2A350FEA820224F41F + A8EBEDC76BD48D3C84824A8CD71134345C00704C45116B27F1C046FFE8A38FAA + D5FEBFFFFDEFA47BF7EEF4D446D61F1A7A74E8D0813E76DB6DB7917FFEF39FE4 + E38F3FA6FE839A40C59F397326CDF88396E0DDC0C80D408F013C868AC29A1A01 + B206EB861461467CF5D557543B318A22595700701F00C754BA16F49B65739751 + 1F8017D4042009089F5F7AE9257A6AA342F0A9A79EA2F9FF5ED6AE5D4B4FFABC + BC3C9F31FA3FFFFC93ECDBB78F74EEDCB95E9A31C063C80B78E595576861101C + 8FF9F9F9B44E00BE854F3FFD943CFCF0C3B54294A1E2CC68376BCB6FDF59D207 + C00500C754B27B9F3ACB5E79B09600009D3A75A2CEC03FFEF883FCE31FFF2037 + DF7CB3E154DC60816FE1934F3E21F3E7CF276BD6ACA10D41A03920F7201C9C99 + 1D676D59FA3577027238F5F09109082FFF962D5BC8FBEFBF4F6EBAE926D3373F + C0E98F10227C04D040A0018473F27BA96BE658092E0038E6A2B3AFA1CE0F1932 + 84BCF5D65B243B3BDBAFD7DE0C107980F63171E2441A3DC8CDCD658F18C3CA9B + 880B008EB9D489C723FE7ECF3DF790C71E7BAC3A1FA021292C2CA4BE87162D5A + B03B0670D7EF656015B800E0988AE839DE761BF1F7471E79847AE77D95F84683 + EFBEFB8E260F7941C9F1B871E3D82A746C15BEBB0DC53A5C00704C45528EDBD8 + A79F7E3A4DFE41730EBD4220B3F1E60EE879FDD189B86E8250B04832AF05E070 + 7C703CCD17E137D8FB48DBBDFBEEBB6BD5FD4703B404C3498FFC82BA763FBE2F + A302C0CA7001C0318D6603873652055B75370FEFA9DBAB572F9AC38F669DDE2A + 3E334198EFC5175FA4BD01EFBBEF3E5A3854B7F9078A940C6B25A2D4BCD5B9E7 + D62E2EB0085C00704CE304E7C11C5510AA7B8063D32303109E7F38DE9084F3FA + EBAFB347CD61E7CE9DB413F12FBFFC429381CE38E30CDD9023F2030C870445E1 + D4F43D659DD8CA527001C0310DBBBB948ECEF2B278F162BA21419F3E7D682460 + EEDCB9E4CD37DF345E8BEF0314F8C0D440C35138F9906D88CF7AA0DE60C68C19 + 6C153A82EC2649AEAAFA06ABC1330139A6919797E7D04EDB656C49C158B069D3 + A655C7FE21101E78E0019AC68B0801D283C301A7381C7D18328ABA80871E7A88 + A609FB4A25C644620809A41DA31EC0A85FC299DAAA64CBF29FF2D8D232443703 + 83935064B6E97A934D719ECE9694BFFEFA8B16F66018078400B2F3D0B31F29C1 + 480CC2800E54F2F9DAB0BEC0C6458A2F1A8460D61F9A84DC79E79DB4A1A8AF2C + C3BD7BF792BBEEBA8BD60A3CFBECB3B4B3D0EEDDBBD9A3A121792A32F7EFDFF7 + 285B5A062E0038A6D1A279D3D9A2AAD40BF8633437DA7FA3000889411004A804 + C42CC0A79F7E9ACEEEEFD2A50BADDC43BE80AF0D8C4D8FEA42341981F6809EFF + D75D771DB9EAAAAB68C4C19710819680131F05411002F047A0C3D0E6CD9BC9EF + BFFFCE9E151A0251C5C627764B3DF4E7F679EC9625E02600C7343413A05CDBBC + F53A7EA0C9274E666CFE51A346D59ACD076FFC37DF7C434F7314EFA03B101A82 + C07E874A8FCD8B131BA7F5B66DDBA8098131DFF8401970A0D6DEE83188F262D4 + 02A0F7C0BDF7DE5B5D7E0C4182B5517F84DB9EB142B1772CDC5C3423FA490E06 + E10280630A5D0B064CB2B90FDFA25DD67B8FA1271FD4FD975F7E996E743804D1 + 01A866E71FD8E368ED05471E9C8728FB05D00610AF872F014945682AE26B3E80 + 1754FC4158A0F008E601FC0C103C975D7659AD8EC3701C224A80442523A88248 + CA92DB14EEFCFDBB9FD9AD98870B008E29E4E5E5BF2208EABFD9B21668000247 + 208A7220009E7CF2497AB23FF3CC33A467CF9EEC59E183D784F7FFF3CF3FA702 + 008266D8B0613423D1D7B0119805F89E8CE24C6AF2D796158BF47B98C5203C0C + C88938390527775225FBF56C590F6800DE5A0014E3201F00F7468F1E4DDB7F61 + E38603928B162D5A442B0E21682054106E84308000F0B5F9013A1085438AEB90 + 3DBB67CF86AF720A122E003891C77998888ACBE77B0B9BBDA6AD0E4D000D40A1 + 7E2345D868775E807E83E8F0FB9FFFFC874613D0620CF9061835EE0D3DFA032D + C4C20C453653C58C9F5A155823339047013811A779EBB6EB0555D1DD00B0E131 + F31FC53735812D3E68D020DAFC13197BD8C86805A6D735580F3C1FBDFDD05C04 + 6DC0D06108213E84157D4511F4803F01110A980C46916467D314C1B968FFDE3D + 1BD8AD98850B004E44D1D4FF6B44B96284B6E57435009CFC23468CA0EDBCF580 + 271F1B1F0E426C68E4F14385C726AE5937806BA4152352F0DC73CFD10F3C1FAF + 3D61C204FA3AA1E612007C7F082DC2591816AADA7BFFFE7D537155752336E14E + 404EC4C8CF1F91E411377C28C99597B25BF580071F79F788F3FB03A13ED8EFDE + 96E0100A68DA01FBDD1BFFC7298D7020547D24160D1F3E3CE0EB06032613A183 + 70389D828122DA5F2F59B3128E50832387CC870B004EC480F34FF2946F26AAEF + F73B1A71A22C3718B51CA73C547B840051CC837020363FEEC34E3FFBECB3A929 + 8134E2C68D1BB3AF8A0CFFFAD7BFC882050BD8CA2802293D21F77FBB177F7619 + BB11737001C08918B93D7A6F14E54ABF47F085175E4833EF621D082938120DCF + 0B6468FAFF0ED9663B63C3AA559BD9AD988247013811A14BAFFE37097265C092 + 584CFCB1026818E26B24592868276C7B45485B5175197B7001C08908A2E27951 + 7B87FB7D3F21F51761362B80CD0FBF432448721FC9E8D6ADFBCD6C19537001C0 + 099BAE0527FF62F3548DFDF6071C74BE4682C71AF051A079692821447FA8447D + AE6B4FC7156C19337001C0090BED9474D8DC477BB0A55FA056EB8DEF8A55E060 + 44AD412440B5A0A8B8DF6F3F6028EA2362062E003886E9DCEFFC93545BCA52ED + 322817FC45175DC4AEAC03C696454A0BD00480907E78C3E00E1D3A1C1F80D8C0 + 7001C03144EBD3FE992FBA4AE789726550C964C8E843318ED540C970DD89C2E1 + A08992C1C9E98DE7B26583C30500C710271CFCFD62BBEB50D0C1779CA4C1E4E2 + C71A7004A2A5582491544F61E782811F3B1CD737F850412E003821325ECCE9DE + EB1941551F63370282FC7AE4F95B11A8FFE83214595492E4291DE9742E6CCD6E + 34185C00704222EBE4E58F686AEC1DDA65D08631DA807BBBEE5811B42B8BF4F7 + 2FA80A928C8A72737323D700C1005C007082A667CF9E4D328F6EBE415442EB9C + EB70382CE5FDAF0B7A17A04F40A49C813568A1DA531675E855D860C9115C0070 + 8222CBE1487311FB3722519AB05B41814D3376EC58B6B22E106248648A3492EC + CA4852CADF63CBA8C305002728EC42B365A2A7A21F5B060D3AFEA000C8EAC019 + 8856666660F3940FC8CDEFF12FB68C2A5C00700292D7A377615AF98E908D60D4 + D6A344D704D539EAE067C09C01233D0682401454656AE77EE73EC8D651830B00 + 4E401422FEA06DE1E05AF3D4006DB83008345E401D43EFDEBDD9AA3EE1A43A0B + 4425A2F3D0C36D4FB9A880DD8A0A5C0070FCD2AD5BB7B725B9C2D0FB045D79D0 + 922B5E800FE0DC73CFD5D502A021A0A721DA99191502764FB9905EB6631A5B46 + 052E00383EE9DCA7F031ED9D3D862D43029D7F504F1F6F6088895EF311342941 + 3353CC1A447B73A3D9839252D9BB439FBFBDC196A6C30500479776FDFBA7DA2B + 0FDEA3BDB3D99DDAF81BD905860E1D4A9A3409296060094E38E1043A4C540FB4 + 29839F006DCDD1E51842D008A99507466477EF1B7E6FB320E00280538F0EFD2E + 689D5EEE5A2EAA1EDDF707DED8E3C68D232929FA352DB80F75D88AA9BFC18089 + 44BE221B6861F6F0C30FD36BA34E43415532059B7D115B9A0A17009C7AA41CDB + D94FF43875BB61E0D4479D3CBAF56294961E68D279EAA9A7B255FCD1BA756B1A + DEF40526208F1F3F9E362A450D84A1EEC4AE23CDBBF6ECF31052AFD92D53E002 + 80538B0E03865D4E54F97FB49B9D0EAD5AB522E79C730E79F7DD77D99DDA4040 + A0377FA0219D56063FE3B5D75E4B6B1C7C818EC54F3CF1041D35E62F72E0074D + 6C08E33BF4FAC9D40E2A5C0070AAC9CECE4E4E295D3F525415DDDD8B93EC861B + 6EA0DD7261EFEAD1A953273AF823DE81960387A02F3F089C82682CFABFFFFD8F + 364185EF2054444F0549914B7F604B53E00280534D5252527B415587B1653D50 + 1B8FC218CCD9C31BBC2E1010E8FA6B46CA6C2C8209C3FE1C9DF81D611E21CC25 + F8038C6845A25C999DDBBDFB196C1971B800E0503A9C32A8A3ACAABF2221450F + 8CEE42410C06756CDAB489DDAD0D0A7EE0FDF7171D8827D027009386FD014D09 + D38FD10D0979110668248B69F3B2B307FBB637C2800B000E25B57CCF559ACDE9 + F3381B3870201DD13575EA54DDD31F20ED17833F1309444302693C9854FCE597 + 5F92471E79C4907664F7944924EDC8F36C1951F86C400EC9CFCF6FAA6DE9B9A8 + 51D7036F5A64B821D1C5D7EC7C24C7C0E965E5B25F2320248AE121BFFEFA2BBB + A3CF9E3D7BA880446BB4A54B97FA14A2BE101567A3CC366D3E39B4674FE0F6CB + 21C035804467C4084921E24C41F1B01BF539F3CC33E91BF7E38F3FF6F9C645D8 + 0FB3FB1211A8F7817EF6B56BD792152B569061C386194A8FD68CAADC24971272 + 356620B80048703A6D3D78B9F6F6F2E964823D7FCD35D7500D0063B7F5C07390 + 1B6024DE1D0FA0E8093502FE8096F0F8E38F530D0973078DF84904917C894F55 + ABC8C005408263939D5304D5F7E9EF4DE985E7DF17706E198C75C70DB7DE7A2B + 1D58EA8F9D3B77525F0022250897868C2A63FE62448B85B80048603A9F74CE2D + B68A833E03D4B0EB715AC1898591D97A20EDF7F6DB6F67ABC40526D21557F81F + FC032D00538EE137400E81A13461D9353037B74FC43CAD5C002428F985851949 + E57FE957B530FAF5EB479B6122EBCFD7945C4406BA76EDCA56890B54FAB3CE3A + 2B6015208429EA05A0591989080844EDA2D8487FB60C1B2E001214CFC1D2D305 + 41CD674B5D60D76FD8B081AC5BB78EDDA9CFE5975FEEB32828D1E8D6AD5BC0E1 + 27478E1C21BFFDF61B4DA90E9443E00B51953F619761C3054082220BF6CF898F + B01FC8C9C9A1997F2FBCF0824FCF3F12615019C7390E7C0181AA20DF79E71DFA + 1969D528AB0E1551754BD97DCF789D2DC3820B8004A4F549E74F4C7297F97CE7 + 793DFF5055376EDCC8EED606CF817F205E4B7E8D8261A281B4803FFFFC939496 + 9652A721662618C156B12722D5565C002418279E36A44966C56EC4AC7C869310 + D3866D8F945FBC59F54049AC1567FD990D9C81C89BF0E7E02B2B2BA366009CAC + F9F97EAD30DF08B631F9F98EB0471773019060241FF93347B321FBB2A52EA874 + C349565C5C4CDC6E37BB5B1B38FE10FFE6D4073901FEFC22F89D2224082D0A66 + 96A16880EA214732DA7CC49686E10220C110557588A0CA6CA58F3744F5C5175F + B03BB5C163FFFEF7BFE91B98539F76EDDAF9CD8B804F0561554456E04341A195 + 1132CAB71BB31F6AC0054002913B706823D1E3BA0B1B17196950E3A182A2CA0F + 0D3C2FBBEC32AAFA0F1932843E1F6F5284B5D0F8A2E629852416C3AA6B8270E3 + 8D37FA1590A80D8000404E40A004225FA8AADC2C6BC0F05BD8D2105C8427105D + 1D856FF6E8D0ECEAF3070FA6EDAABCF1FBEDDBB753871F04023EBC6FDCF2F272 + B27FFF7EB279F366FA1CB4BA5AB87021B9E4924BE8B82FAE01F806BF2BB403C3 + 673D2040DF7BEF3D6A2ADC7BEFBD64D6AC59EC91D09005FBF8F5C52B1F61CB90 + E17FC10461B5AA26D94A4A3E68D3A6CD658845A3AA0FC53DC8EF77B95CF43482 + 471F4D2B109A42924A5656161D898584200CC5C09BD5AB1118095F2512E80C7C + F7DD7793AFBEFA8ADDA90D7C2CA8AE840680AE410F3CF0007B243464417C617D + 71FEED84CCF06FD7F9800B8004419695E9070E1EB8EAA52953C837DF7C43C350 + A180D31EC92BE80B3066CC18C3E1AB44E2830F3EA005407A599470B44200206A + B06CD932327AF4E8904B84812CA510A790DE74FBAA5F0EB15B21C17D0071CEB4 + A53B9B156D3FEA5CBD7AD59563B437D98C193342DEFC006F4EA8B338ADE03358 + B3660D7B84E38BC19AA9E52B4F023E15AF09058DCA68135549AE248D49E87F4F + 2F5C00C4399714B49A927C645BF2ADB7DE2A6CD9B2C5D0295397A3478F92FBEF + BFDF6763504E1570EE41D5D70339005E010073CAB849A59223296D27B345C870 + 0110E7A4DBC501E8E2EBCB1965146408A2B30DC73F175C7001BBAA0D0689D63C + F5C371A8263BF7192E0EE20220CE1145C167255F38E0353FF9E493886814F10C + 7A25E825FA60B250A4D2A8258FFE809660E00220CE51B40D6A56B80E95825C00 + F8076640DD383F04020480F7EF828881C7E3BB294B608CFF0DB8008873DCB24A + 33CDCC10027CF307061B1DD1939AC0F3DFAB572FB622340C8B0FA378045BA7A6 + 8EA1C3D93224B800887356FFE58CA8BA591384B2CCD22EE205E453A06C3A3333 + B3FA778562AB9A999428B80A47988A82604F172B0DB563E60220CE699C2C9DDD + A3470FC3F9E6BEC09B1919815C0004E6A1871E22DF7EFB2DCDA284DFE4C1071F + 648F54F1C71F7FB02B6360984B0AD12FDA0A04170071CEBFEFBCFF46E4EE23EC + 1449A0D6C6F304E048826C3F6800980F0861DCBF7F6DA7FDAA55ABD895310445 + 26A45CBF63732084DCEE05C7BC4E04C872AF22E2BDAE794F8FEAC75532A3A478 + D5685C7AE95030A04FB252B13050F519D0FBBF6BE21153C8A6BC8E8DC88CE329 + 8FE9FD46FEA74DC5862745D5A3FBFDEABD8E2F5441D8BD7EF5CA7AE96DB9DD7B + 966BAF23F87B1DBDFFC7C8F711E86B02BD8EF7F19ACFCB484B4BF9F8C3F785AF + BFFE9ABCFCF2CBEC6E78C0898562174CBE45980B7504E1824DF2DA6BAFC55D86 + 21547BA7D3499D7CD09610EFAF3B55B8B2B292760B9E3E7D3AADBB8053305414 + 41185B525C5CD56A2804846EF9F9AAF65DB265587CB476EDDA5A6D51BBF4ECEB + B0795CCB4462284DB9161E29856C68966927F3E757BB4BD31D97DDD6B662FD73 + 929FB6D6C123EC5ABBB6B81D5B54D3AD5B37C4D0B0A72C0936EB3DF7DC439B54 + 8C1C3932229B15E5C28F3EFA28F52BE034436D41B8C031F6FEFBEF93DCDC5C76 + C7FA40B547FB2F244C6193E36F81CD8F36EB7DFBF6A5D597F8B9BDE0F7585454 + 44264E9C4876ECD8C1EE0687510160BE0910A1ADA327A2B8FD1218C4EB51D70F + F573D0A04161DBEC78E306D3F72E91C1698F8D8F9A09D8FEC8F5879A8FC94018 + 21865A0C6C729850E80BB864C9122A98612640507FFAE9A7E4AAABAE0A71A4B8 + B1BF8765F69060DD43B8C141DE3E544CA8EDFEC65907025581CF3EFB6CBDB016 + A73628F279EEB9E7FC86F6601A402BF8E9A79FC8F5D75F4F3B304F9A34895454 + 54D08A4B5412C22440356640049128F6E39A4428982F0022625DE065EABF50E4 + F3DBE213BCD930DA0B39FC93274F0E5908406B40CFFBA79E7A8A6FFE00A0DF1F + AA004349ECC17351A7F1FAEBAFD3A94128B83A76EC18F5874008C054D0CB26F4 + A20A12915342D1168E631913400F4DEEB12B4E20F6EEDD4B1B4FE044C114DF40 + 032CBC40D587EFE0E9A79FA62A2A4FFEF1CFAE5DBBC8FAF5EBD92A749013307E + FC785A71B97CF9729A4780B0215AB0F932BB149528656E9BA138A06534003D13 + 40B18E051313C00685CD899EFF98F613689E1F66FD4368C08988E62150FFCDA8 + 2B882730F9275C21892800D2AC611AC0318AD7BBF6DA6BA976A087A4BA37EE5D + 3EE77DB60C09737790B1DC048E89C0CB0C7B136FAA575F7D95DC71C71DB40D18 + BAFDE0848197BA79F3E634C907CE28380EEFBAEB2EBAF9619F727C03471E9C7E + 91026600CC2E986F081F423330325ADC1F963E42F9F91F3AD8F8BB77EF26A346 + 8D2253A64CA10D40E1B47AFEF9E7C9840913A8AA8F8D8F6B440F30FAEBBBEFBE + A3A712CFFAD3071BF58D37DEA0C341A1654512F807E01B9833670E15D23005EA + A248C647B3597A0F716DD4387008A229E545175D445355B1B931DB0E19833871 + 0A0B0BA930804DEB85DBFFF541775F4C518273158D53CD00BFF7B7DE7A8B7672 + 4223D7BA69DDCE9496869D0EE60A00B3FB467215202CF0C642E75FC4A531E60B + DE66C4AE61EF2379A56E461AD7006A034D0ABF379CFAF08D60C807CC29334043 + 17FC7FC898ACDB3D28B372F728761932E66FA108BD67F4C2807CFF470E0803BC + 89FD9DF27A8F25AA5080DA7FDB6DB7518F3FFC2670D821F9C7AC5466EFDF0769 + C535A73579A434524A8CD779F03DC4091A24AED48D02F81318F1CC9B6FBE4956 + AF5E4DAF91B587242BC4EA91C96706103208E5AE5CB9B2F6B836C5F3E6F6A6D2 + 51B60A19CB0800FD3020279ACC9D3B973A0EF1464C64A08ACF9C39930A3FD442 + 4013F0AAE50E87C314AD08035A2064108DA9297445554E77949519FE0F2D2300 + F44D002E02A2094E7F78BB91A4026190A891014447305005E3D5B0F96BFE0E90 + 2989FC894802CD02215A3411C507D6DEFF53DB039797553857E7F4EA3792DE08 + 11F305408434449E08141BE0F4416400B901F7DD771F350B1209D8E0DEE49C82 + 82827AB9FA100A18BB1629109541F115A20C28E7860686102D7C0E98429C9696 + AA69014A8EE42AFB58FB5E2E675F1634E6EE20B31381B802D060203E3D7BF66C + BA2112899F7FFEB9BAFC195193BA1E799CD408ADC25B1F2E6826FAE28B2FD230 + E3D9679F4D4E3BED342A5C860D1B466EB9E516F2CC33CF90B7DF7E9BB61C631A + C1344D085C4ABF3848CC1500F8DD444843D43301B804E0441B78FD21FC70D2E3 + 04D60329D6975E1AD23EAC077A06A2410A428BBECC2C081F4C73FEE8A38FA82F + 427B5E92208833DB9D7CC135EC2901315F03889809A087754C0055FB093C824D + FBB047F443D63E6A821308052491FCF055849268C0DC59B76E1D55FFD1DACBD7 + C604C80FE8DEBD3B5B050F040BB22F71B2073B821D5F03E76055FF0095A4976F + 1FD5A1707450E98116EA08944ADA346B649F6FD18E4032118BF6D95A3E6BB471 + 832F1A89C786A7BB0E6BC78D4A1D4498F31FA8C8275450B38E18774DEF73A4B1 + 424720E4FA43FD461404157A48FDF5C7A64D9BC8CD37DF4C4B7D83E18C33CE20 + 575F7D353DF58DF0E1871FD24E4D0A0E1A29BDEFC6958B7F670FF9C47C01206B + 0220889E8081704B2964639D96608D340190651101A06D9E2FB4D3E362B60C8B + 0E270DEE9356BE2D43B6A77E20B92BB2B45B126C4E14F9C061E4EF6432C2CE9D + 3BE99BFDC08103EC4EE4B18200C0C63FE79C73A82084530E767920905189D319 + E3D821406A0A51A8F0881AC09108C10D5B3E1C6D0BA9C8A8F1C0F779CCDEF49A + 6D2B17BEC51EF289657468DD284082B9003A9C32E4A9BCEE3DBF4F76FEF9B3B6 + FC59DBFC105852BB76ED68371933363FC0EBA32740A283FA09D8FF1056C156E5 + C191F7D8638F9169D3A651B51EE3C2A13DA0C0075A151A7EBCF0C20B34C73F5C + 53AB6DDBB6B4D41B24A9CE37E845002C2300749D80D6710118263FBF302337BF + E7D0EC1E7D2AD38E6C1E27289EB324D9958137215A74210E8D4A317887CDD8FC + 5EE089C60995C8E01407D0B6422DCBC53050CC09449935B429F403ECD3A74F44 + 6B072040BC7E039BE718FD1C088B9B00C3341360A355BA02CF6ED9B26548AEE1 + F572D60D9987D6DC282AB226D68FFF8D9068825013DE542811AD0B048157D5AC + 79ED0B5FCFF10A143C86E413EDEF4BA64E9D6AA86D7520AC6002A0310A9280F0 + 7BFFFCF3CF63D239BA75EB565AE28DBF59796697C7B72FFDF27EF6902E967202 + 6E68D688B7056F202068D033000D2AE0DC8A34561000D082162F5E4C6D76F4ED + 8B55A05DC0DFA008B6E9756775D4C5FC30A09924980FA0A1C12645EF809A73ED + 13096FBD3F42A3B10C4C0B201025858C18E1574DB1B415EDA7512AC72410DB4E + D49160700002C4DD63196F829222A58CECB8717F3DADB62696DE425C01883E30 + 05106E8CF4B0D1580749405EDF47AC0B80ACAC2CFAF7913C15C4A3AA1DD96D5D + CC1500B593D43871023400389A1209744EF20A006CB058064D49AAA20B2A9154 + 7966D55D7DCCD7004C749F710BA0E1409B6AC4B813056800DE4849B029BA0D05 + FE2EA85404A9AEFDB6EC930B7D9A01E6EEA108D60270628B134F3CD1B4EE37B1 + 081A727A7D00A1CDEC6B18D0EE1D668076FE3696CA0F5ECB6ED7C37C1320821A + 4021FBCC6978100347496AA2F802D091C7DB8ACB0A020029C6480B462E87A8C8 + FFCDCBCBD3B5D92CA3452313B02A0FAB26DC0DD8906080885E22523C82419F5E + 13004D3AACC075D75DC7F22A548108E2CC9C6EBDEBD5A2982F00226402E82912 + BC2310275A602A125AA2E144C58C442B80F98F685EDAA953276DFFA8C982A87E + DE66C025B5E68B99BF83226602E8BC1057003851026DC011054008D09B226D05 + 30091AC95BF8BE45C545328E6C79C8E17054C7E72CA301E8160371385100AA3F + A6F6E2332AEEFC8DEA8E455034366EDC389AC129292EC741250D9582548A99FB + 934430155857E6720B80130570F2A30600A0EDB7151D9F43870E25E79D771EBD + 4EAE3C342AB7CF409ACC60EE16E289409C3800DE7F544242F5476F04AB690000 + 8345D09D08A5CC02AA735DE5B45F80F93F4984CC253D03802B000D8F95EC61A3 + A01330A200D8442805B62AC8DDF08606555539AF43C1803E96D943FA1D81B817 + B0A1F186C6E299193366D0CFF0FEC304B032300590C720A91E29D57548B0D021 + 5AFF8D6645558C632DE0FD474F44803E0091E8F7DF90B46CD9926A02A052CAE8 + 6F991D9400078D2589771300B63FC68001B4EBB63AE865E0CD635024FB4BBC2D + 7835FA1D8134A9FF91F6C9CFBB1C3234902912D273B43D258CC0C6C289D3B1A3 + DF6ACE80A0A5379258C205197F6864595705C6400AEFA49C7088D58E401802FA + DFFFFE976E9CAFBFFE3AE45E80B106341A74365AB16205396A6FFE9DB902204F + 130082892DC1FA6802A0D25C01106DB24F1E9C693FBAAD14A1A689132792C183 + 07B3478C8136D698661B2E892600E0DBC06619316204EDB387A6AB68890647A0 + 95C178F13163C6D0916EDACFE830D7048870315022E076552CC0679C38E822CB + 893E88FB63DCD6F9E79F4F373FB431B4EDB6FAE6DFBC79334D08C2E65704698B + C79EB9D75C01607639B0B9DF7DD469D77F786A6AE53E9A3D71CA29A72454BD7D + 2C8072DF9292123AFEFC89279EA0158000958F919CF81B6D20D08A8B8BE944E1 + 1D3B761055908844949336AEFA75A7F91A002768EC957BCF21A2D40D270E4644 + 71A2071A7E62AC16DA9D414DF6D6FE03E4D1F7EAD58BADAC053A193DFDF4D334 + FE0F531063C3CA525A4DD504C2213C1E311F80DB96E15124FBC592EB700D8353 + EA26AACA076204AA7664319988B2D3218B62F58B1D965A5DD954DE774724E60E + E8F900BAE4E7676B4A5FD41AC06936198E99E711DEC429846A2E5C7BABD0F001 + 69EEBDF6DEF7F51CF0EEBBEFD28936E162B60F0079EA189A813A766F6E81F7E7 + 02F879F4EEEB3D071F38B5F59EE305CFC17D7CC6A9F8C30F3F509BDFFB7FD4A4 + 458B16D417E07D9D9A5F8B0FFC5FF8FE71C2C60A18498604268C25C335FD5E09 + D961B7D97AADCACB3B4266CCA09B26924E405D6D3F922E80BAAF1F59F7427D01 + 9093DF63BEA4CAD6D5FD2288D902C0EA203FA0A8A888AD1A0EB42EC3DF69DEBC + 7964E3C68D55820F82919031AADD3EBF64C58AADECA994889A00D890753F2289 + 99AFCDE158159CEEBB76EDA2198B28F879E59557C8FAF5EB89AC6A5AA2685F5C + 9AD6F9EA75C5C5D3EA6E7E10676E340E27B1408E076CFCD1A347D3BA7F242D41 + 20B8525BA88A2DFD74B97D9B33772FFBF26DF6F47A7001C0E144086CBC6881D1 + 5F984F885025A60CC3C1276BDB59116C0B8FA5B57F60D3F29FC5F52B97FEB271 + EEDC4AF625BA7001C0E14408AFE3D54CE0E0857D0F27F1030F3C40F6EEDDABD9 + F782EA496956A10869BD0FDB7A0DDA56F4ED63ECE901E10280C3B10818CA8A4D + 8F91F048505214952852F2D2B2CC4EE337FCFE4BDA8635BFAED8B3F2BD72F6F4 + A0E00280C389719093F0E38F3FD2DC9059B366512D40156DBB555B8A8364A69D + BB73E99C09ECA921C305008713C3203761D2A449B49B0F75F08936E211939F5B + B76655DB75AB962F2F59B428AC240F2E00389C1805F915B7DF7E3B99366D5AD5 + A94F84ADAE94A41336E477BD8B3D256CB800E070621084F750B8B360C1029ACC + E34A69BA4114D2076C2E2A2AF566F145022E003861110DCF77A251565646EEBC + F34EEFE6AFA8486BBDA03239AB5771F16F7FB1A7440C2E00389C1802B9046FBD + F516CDE307C7323B6DDB5AF4E3DF762EF934FCAE2E3A7001C0098B6826BFC43B + 683F0E7BFFB5D75ED36C7E4DED4F6AB2AEA2EC583FF6B0297001C0E1C40010A4 + 683F3679F2646AF32BA27D9F76AF705FF1FC32F61453E00280C36960E0F07BE9 + A597683F02CC1F5004DB7A4975E76D5EB9782F7B8A697001C0E1342088F323D4 + 07B59F9EFC52D23E89C8038A8B8B0FB2A7980A17001C4E03B164C9123276EC58 + 327FFE7C9AEDE7B2A5AE738B693DA2B5F90117009CA040220AF2CF51775E5A5A + 4A1B4FE04DCB9D80A183029E279F7C92DC78E38D64D5AA5568D65151D6A873C9 + 11B951BF68A8FD351172F3F3C7687F5DB64C5C44513CB676EDDA4FD89292935F + 3058902B5BB36542E1C968759BBDE24081A01E6FA5853658E88FD7BE7D7BD2BC + 7973DA05E7FBEFBFA7DE6B7F2852B266D78A134457F96676CB520882CDA624A5 + BE2EB9ABEA6CF073A3F10666EF7BB1DBEDB448C71FE8CF377DFA74327BF66CB2 + 6DDB362A3C655B2A1194CAA1256BD6CC664F8B2A3C8B83A38BC371BDBDB4F407 + B1A269CEAB1965DB7235412011D1D64F50829BC1A08876ED8DEDFEB53C254B51 + 938F9DB573C912D4A5D76ECC6721DAF739FBEFE9957F8DD37E0F0E243F75EEDC + 996E78B40B471F43F4048480AC0934247416C6C79C3973C8679F7D46FB3362E3 + E3F7A3C9D64F15779B2B376EF45FB36F265C007082C2E170D80FBBD3CEB255C2 + 3CF5104F72B31C45B2BF206AA722B404554A22A2A762AC283BFFD47683F6780B + B2A94B8B79914C5B6D68B2B3B393C59446EF4972E570A229EED8F0D8FC98DE04 + CD085A111AB91E3E7C9836E284830F7305D1AC03C2A00A8138D35A1F5255E58A + AD8DD4EF6B0EBA6908B800E084C178EDC87B985D532C7BC28780905350D051F4 + C82FA982344854DC81FD6882486429698FA6112D3F9CD963EE9EC51F4DD1EEC6 + C4EF8A0B000EC720D90503FAD85C87848AF476CB522AFE12044DB5D7FE41D59E + B6B30464F29164E7FEFEAACDE62E6FD4A574C7A2CF37B12F8D1108F97F374670 + 0615B220920000000049454E44AE426082 + } + end + object LabelTitle: TLabel + Left = 176 + Height = 45 + Top = 267 + Width = 209 + Caption = 'WSL GUI Tool' + Font.CharSet = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -33 + Font.Name = 'Segoe UI' + Font.Pitch = fpVariable + Font.Quality = fqDraft + Font.Style = [fsBold] + ParentColor = False + ParentFont = False + end + object LabelVersion: TLabel + Left = 200 + Height = 31 + Top = 328 + Width = 130 + Caption = 'LabelVersion' + Font.CharSet = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -23 + Font.Name = 'Segoe UI' + Font.Pitch = fpVariable + Font.Quality = fqDraft + ParentColor = False + ParentFont = False + end + object LabelCopyright: TLabel + Left = 80 + Height = 31 + Top = 480 + Width = 396 + Caption = 'Copyright © 2021 Wsl Gui Tool project.' + Font.CharSet = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -23 + Font.Name = 'Segoe UI' + Font.Pitch = fpVariable + Font.Quality = fqDraft + ParentColor = False + ParentFont = False + end + object LabelLogo: TLabel + Left = 88 + Height = 31 + Top = 376 + Width = 294 + Caption = 'Logo Copyright © Microfsoft' + Font.CharSet = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -23 + Font.Name = 'Segoe UI' + Font.Pitch = fpVariable + Font.Quality = fqDraft + ParentColor = False + ParentFont = False + end + object LabelIcons: TLabel + Left = 88 + Height = 31 + Top = 408 + Width = 306 + Caption = 'Icons Copyright © icons8.com' + Font.CharSet = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -23 + Font.Name = 'Segoe UI' + Font.Pitch = fpVariable + Font.Quality = fqDraft + ParentColor = False + ParentFont = False + end +end diff --git a/aboutwindow.pas b/aboutwindow.pas new file mode 100644 index 0000000..0aa001d --- /dev/null +++ b/aboutwindow.pas @@ -0,0 +1,56 @@ +unit aboutwindow; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, + ApplicationInfo; + +type + + { TFormAbout } + + TFormAbout = class(TForm) + ImageLogo: TImage; + LabelLogo: TLabel; + LabelIcons: TLabel; + LabelVersion: TLabel; + LabelTitle: TLabel; + LabelCopyright: TLabel; + procedure FormShow(Sender: TObject); + private + + public + + end; + +var + FormAbout: TFormAbout; + +implementation + +{$R *.lfm} + +{ TFormAbout } + +procedure TFormAbout.FormShow(Sender: TObject); +var + f: TForm; +begin + f := TForm(Sender); + + ImageLogo.Left := (f.Width - ImageLogo.Width) div 2; + LabelTitle.Left := (f.Width - LabelTitle.Width) div 2; + LabelVersion.Left := (f.Width - LabelVersion.Width) div 2; + LabelLogo.Left := (f.Width - LabelLogo.Width) div 2; + LabelIcons.Left := (f.Width - LabelIcons.Width) div 2; + + LabelCopyright.Left := (f.Width - LabelCopyright.Width) div 2; + + LabelVersion.Caption := 'Version ' + GetAppVersionStr; +end; + +end. + diff --git a/applicationinfo.pas b/applicationinfo.pas new file mode 100644 index 0000000..05f426f --- /dev/null +++ b/applicationinfo.pas @@ -0,0 +1,49 @@ +unit applicationinfo; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Windows; + + +function GetAppVersionStr: string; + +implementation + +function GetAppVersionStr: string; +var + Exe: string; + Size: DWord; + Buffer: PChar; + FixedFileInfo: PVSFixedFileInfo; +begin + Result := '?.?.?.?'; + Exe := ParamStr(0); + Size := 0; + + Size := GetFileVersionInfoSize(PChar(Exe), Size); + + if Size > 0 then + try + Buffer := AllocMem(Size); + + GetFileVersionInfo(PChar(Exe),0, Size, Buffer); + + if VerQueryValue(Buffer, '\', FixedFileInfo, Size) + then begin + Result := Format('%d.%d.%d.%d', + [LongRec(FixedFileInfo^.dwFileVersionMS).Hi, //major + LongRec(FixedFileInfo^.dwFileVersionMS).Lo, //minor + LongRec(FixedFileInfo^.dwFileVersionLS).Hi, //release + LongRec(FixedFileInfo^.dwFileVersionLS).Lo]) //build + end; + finally + FreeMem(Buffer, Size); + end; + +end; + +end. + diff --git a/distributionpropertieswindow.lfm b/distributionpropertieswindow.lfm new file mode 100644 index 0000000..aaf3364 --- /dev/null +++ b/distributionpropertieswindow.lfm @@ -0,0 +1,454 @@ +object FormDistributionProperties: TFormDistributionProperties + Left = 365 + Height = 496 + Top = 180 + Width = 581 + Caption = 'Distribution properties' + ClientHeight = 496 + ClientWidth = 581 + DesignTimePPI = 120 + LCLVersion = '2.0.12.0' + object PanelButtons: TPanel + Left = 0 + Height = 71 + Top = 425 + Width = 581 + Align = alBottom + AutoSize = True + BevelOuter = bvNone + BorderWidth = 20 + ClientHeight = 71 + ClientWidth = 581 + TabOrder = 0 + object PanelButtonOk: TPanel + Left = 20 + Height = 31 + Top = 20 + Width = 94 + Align = alLeft + AutoSize = True + BevelOuter = bvNone + ClientHeight = 31 + ClientWidth = 94 + TabOrder = 0 + object ButtonSave: TButton + Left = 0 + Height = 31 + Top = 0 + Width = 94 + Caption = '&Save' + Enabled = False + OnClick = ButtonSaveClick + TabOrder = 0 + end + end + object PanelButtonReset: TPanel + Left = 373 + Height = 31 + Top = 20 + Width = 94 + Align = alRight + AutoSize = True + BevelOuter = bvNone + ClientHeight = 31 + ClientWidth = 94 + TabOrder = 1 + object ButtonReset: TButton + Left = 0 + Height = 31 + Top = 0 + Width = 94 + Caption = '&Reset' + OnClick = ButtonResetClick + TabOrder = 0 + end + end + object PanelButtonCancel: TPanel + Left = 467 + Height = 31 + Top = 20 + Width = 94 + Align = alRight + AutoSize = True + BevelOuter = bvNone + ClientHeight = 31 + ClientWidth = 94 + TabOrder = 2 + object ButtonCancel: TButton + Left = 0 + Height = 31 + Top = 0 + Width = 94 + Caption = '&Cancel' + ModalResult = 2 + TabOrder = 0 + end + end + end + object PanelUpper: TPanel + Left = 20 + Height = 274 + Top = 20 + Width = 541 + Align = alTop + AutoSize = True + BorderSpacing.Left = 20 + BorderSpacing.Top = 20 + BorderSpacing.Right = 20 + BevelOuter = bvNone + ClientHeight = 274 + ClientWidth = 541 + TabOrder = 1 + object GroupBoxFlags: TGroupBox + Left = 0 + Height = 64 + Top = 210 + Width = 541 + Align = alTop + Caption = 'Flags:' + ClientHeight = 39 + ClientWidth = 537 + TabOrder = 0 + object CheckBoxInterop: TCheckBox + Left = 8 + Height = 24 + Top = 8 + Width = 72 + Caption = 'Interop' + OnChange = CheckWslConfigChange + TabOrder = 0 + end + object CheckBoxAppendNtPath: TCheckBox + Left = 176 + Height = 24 + Top = 8 + Width = 134 + Caption = 'Append NT path' + OnChange = CheckWslConfigChange + TabOrder = 1 + end + object CheckBoxDriveMounting: TCheckBox + Left = 392 + Height = 24 + Top = 8 + Width = 127 + Caption = 'Drive mounting' + OnChange = CheckWslConfigChange + TabOrder = 2 + end + end + object LabelName: TLabel + Left = 0 + Height = 20 + Top = 0 + Width = 541 + Align = alTop + Caption = 'Name:' + ParentColor = False + end + object EditName: TEdit + Left = 0 + Height = 28 + Top = 20 + Width = 541 + Align = alTop + OnChange = EditNameChange + OnKeyPress = EditNameKeyPress + TabOrder = 1 + Text = 'EditName' + end + object PanelSeparatorName: TPanel + Left = 0 + Height = 20 + Top = 48 + Width = 541 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + end + object LabelVersion: TLabel + Left = 0 + Height = 20 + Top = 68 + Width = 541 + Align = alTop + Caption = 'Version:' + ParentColor = False + end + object PanelVersion: TPanel + Left = 0 + Height = 28 + Top = 88 + Width = 541 + Align = alTop + AutoSize = True + BevelOuter = bvNone + ClientHeight = 28 + ClientWidth = 541 + TabOrder = 3 + object ComboBoxVersion: TComboBox + Left = 0 + Height = 28 + Top = 0 + Width = 125 + Enabled = False + ItemHeight = 20 + ItemIndex = 0 + Items.Strings = ( + '1' + '2' + ) + TabOrder = 0 + Text = '1' + end + end + object PanelSeparatorVersion: TPanel + Left = 0 + Height = 20 + Top = 190 + Width = 541 + Align = alTop + BevelOuter = bvNone + TabOrder = 4 + end + object PanelUserID: TPanel + Left = 0 + Height = 54 + Top = 136 + Width = 541 + Align = alTop + AutoSize = True + BevelOuter = bvSpace + ClientHeight = 54 + ClientWidth = 541 + TabOrder = 5 + object Label1: TLabel + Left = 100 + Height = 1 + Top = 33 + Width = 1 + ParentColor = False + end + object LabelUserID: TLabel + Left = 4 + Height = 20 + Top = 1 + Width = 51 + Caption = 'User ID:' + ParentColor = False + end + object EditUserID: TMaskEdit + Left = 1 + Height = 28 + Top = 25 + Width = 100 + CharCase = ecNormal + MaxLength = 10 + TabOrder = 0 + EditMask = '9999999990;1; ' + Text = ' ' + SpaceChar = ' ' + end + end + object PanelSeparatorVersion1: TPanel + Left = 0 + Height = 20 + Top = 116 + Width = 541 + Align = alTop + BevelOuter = bvNone + TabOrder = 6 + end + end + object PanelEnv: TPanel + Left = 20 + Height = 111 + Top = 314 + Width = 541 + Align = alClient + BorderSpacing.Left = 20 + BorderSpacing.Top = 20 + BorderSpacing.Right = 20 + BevelOuter = bvNone + ClientHeight = 111 + ClientWidth = 541 + TabOrder = 2 + object LabelEnv: TLabel + Left = 0 + Height = 20 + Top = 0 + Width = 541 + Align = alTop + Caption = 'Environment variables:' + ParentColor = False + end + object Panel1: TPanel + Left = 0 + Height = 28 + Top = 20 + Width = 541 + Align = alTop + AutoSize = True + BevelOuter = bvNone + ClientHeight = 28 + ClientWidth = 541 + TabOrder = 0 + object SpeedButtonAdd: TSpeedButton + Left = 0 + Height = 28 + Top = 0 + Width = 29 + Enabled = False + Flat = True + Images = ImageListEnv + ImageIndex = 0 + OnClick = SpeedButtonAddClick + end + object SpeedButtonDelete: TSpeedButton + Left = 34 + Height = 28 + Top = 0 + Width = 29 + Enabled = False + Flat = True + Images = ImageListEnv + ImageIndex = 1 + OnClick = SpeedButtonDeleteClick + end + object SpeedButtonDuplicate: TSpeedButton + Left = 72 + Height = 28 + Top = 0 + Width = 29 + Enabled = False + Flat = True + Images = ImageListEnv + ImageIndex = 2 + OnClick = SpeedButtonDuplicateClick + end + end + object ValueListEditorEnv: TValueListEditor + Left = 0 + Height = 63 + Top = 48 + Width = 541 + Align = alClient + FixedCols = 0 + Flat = True + RowCount = 2 + TabOrder = 1 + OnEnter = ValueListEditorEnvEnter + OnExit = ValueListEditorEnvExit + OnSetEditText = ValueListEditorEnvSetEditText + KeyOptions = [keyEdit, keyAdd, keyDelete, keyUnique] + Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goAutoAddRows, goAlwaysShowEditor, goThumbTracking] + ColWidths = ( + 80 + 460 + ) + end + end + object ImageListEnv: TImageList + Left = 364 + Top = 131 + Bitmap = { + 4C6903000000100000001000000000000000000000000000000000000000083F + 0235187F0A9C107F02DC117F03FD117F03FD107F03DC19810B9B0A3F04340000 + 000000000000000000000000000000000000000000000720030C0F7F01A30E7F + 00FF117F04C8165F0A770A3F034F0A3F034F0F5F0878118003CA0E7F00FF1681 + 069F0921060A000000000000000000000000061F020D0D7F00C90F7F01E8115E + 0A47000000000000000000000000000000000000000000000000105F0A490F7F + 01E80F7E02C1091F060A00000000000000000F7F01A5108003E7031F001F0000 + 0000000000000000000000000000000000000000000000000000000000000660 + 02220F7F01E8127F019A00000000073E00380E7F00FF12630B44000000000000 + 0000000000000000000015430E15174410160000000000000000000000000000 + 0000105C04490E7F00FD0C40073217820BA1148107C600000000000000000000 + 00000000000000000000238416AF0E7F00A00000000000000000000000000000 + 000000000000107F03C817820D98117F03E41462087300000000000000000000 + 00000000000000000000238416AF0E7F00A00000000000000000000000000000 + 0000000000000D5F037A0F7F01D90F7F01FF0B3E054C0000000000000000093F + 000F248619AF248519AF148107E3138006E1248519AF248518AF0940000C0000 + 000000000000083F02520F7F01F8117E03FF0A3E034E0000000000000000093F + 000F0E7F00A00E7F00A0128005E10E7F01DC0E7F00A00E7F00A00940000C0000 + 000000000000083F0150107F02FD107F03E0125F077400000000000000000000 + 00000000000000000000238416AF0E7F00A00000000000000000000000000000 + 000000000000125F08790E7F01DE117D019E128004C400000000000000000000 + 00000000000000000000228416AF0E7F00A00000000000000000000000000000 + 000000400000118004C50F7F019B073F00360E7F00FF13640C44000000000000 + 000000000000000000000940000C0940000C0000000000000000000000000000 + 0000135D08490E7F00FF0A3E0335000000001B830EA70F7F01E6031F001F0000 + 000000000000000000000000000000000000000000000000000000000000037F + 00200F7F02E8128002A00000000000000000051F010C138106CB0E7F00E31964 + 134700000000000000000000000000000000000000000040000010630A4A1080 + 02E60D7F00C6081F050B000000000000000000000000041F020D18820BA50E7F + 00FF117F03C3115F0674073F004E073E004E12620B76107E03C40E7F00FF117F + 019E0820050B000000000000000000000000000000000000000000000000073F + 00381A810D9E107F02E20F7F01FD0E7F01FC0F7F02DF107F029B0A3E04350000 + 0000000000000000000000000000808080000000000000000000262626010D0D + 0DC6010101FF010101FF030303FB1E1E1E590000000000000000000000000000 + 0000000000000000000080808000858585260101014C0101014C292929590000 + 00FF787878FF8B8B8BFF3B3B3BFF1D1D1DBF0101014C0101014C0202024C1C1C + 1C040000000000000000808080008F8F8F70010101FD0D0D0DEC111111E41111 + 11E4111111E4111111E4111111E4111111E4111111E4060606F80A0A0AF13030 + 300C00000000000000008080800080808000010101E61414144C000000000000 + 00000000000000000000000000000000000000000000161616BA010101780000 + 000000000000000000008080800080808000010101E61414144C101010482727 + 2743080808220E0E0E692F2F2F010F0F0F7D05050511161616BA010101780000 + 000000000000000000008080800080808000010101E61414144C141414960000 + 008201010145020202D700000000000000FA00000028161616BA010101780000 + 000000000000000000008080800080808000010101E61414144C141414960000 + 008201010145020202D700000000000000FA00000028161616BA010101780000 + 000000000000000000008080800080808000010101E61414144C141414960000 + 008201010145020202D700000000010101F70707071F161616BA010101780000 + 000000000000000000008080800080808000010101E61414144C141414960000 + 008201010145020202D72A2A2A030D0D0D590000000033333388010101780000 + 000000000000000000008080800080808000010101E61414144C141414960000 + 008201010145020202D7000000000000703B0404E8DB2828DE3A0B0B0B270000 + 00000101BB2E0303EDD08383F04180808000010101E61414144C222222862929 + 29760808083D111111C1000000000202752A0303F8EB0101F8EC0101B83A0101 + BB2F0101FBE20202F8F68282F33680808000020202E61414144C000000000000 + 0000000000000000000000000000000000000303B8370202F8EA0101F8ED0101 + FBE20101F8F60202B84480808000808080000B0B0BCF353535AE1010107F1010 + 107F1010107F1010107F1010107F1010107F0D0D0D350404F45B0000FFFF0000 + FFFF0303F0720000000080808000808080003737372F101010AC000000B30000 + 00B3000000B3000000B3000000B31D1D1D941818D1360202FBE30202F8F50101 + F9E60202F8EE0101B83B80808000808080000000000000000000000000000000 + 0000000000000000000000000000020278250101FAE30101F8F50202B8420202 + B9340202F9E70101F8EF4141F83C808080000000000000000000000000000000 + 0000000000000000000000000000010171500202F8F40202B842000000000000 + 00000202B9330202ECD90202FC75000000000000000000000051000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000000000000000000051000000FB0101 + 014C0000004A0000004A0000004A0000004A0000004A0000004A0000004A0000 + 004A0000004A0E0E0E91000000FF00000051000000510101018C000000FC0101 + 0152000000510000005100000051000000510000005100000051000000510000 + 00510000001916161664000000FF000000FF000000FB000000F9000000F90000 + 00F9000000F9000000F9000000F9000000F9000000F9000000F9000000F90000 + 00FF0000005116161664000000FF000000FF1515156400000000000000000000 + 00000000000000000000000000000000000000000000000000002F2F2F010000 + 00FE0000005116161664000000FF000000FF1616166400000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00FE0000005116161664000000FF000000FF1616166400000000000000000000 + 000031220903794A10613C250825000000000000000000000000000000000000 + 00FE0000005116161664000000FF000000FF1616166400000000000000000000 + 000064431A09F19621FF794A1063000000000000000000000000000000000000 + 00FE0000005116161664000000FF000000FF16161664000000003C240A04794B + 1064AB6C1D6BF29621FFB67018A0794B10653C25082400000000000000000000 + 00FE0000005116161664000000FF000000FF1616166400000000794D110EF396 + 21FFF39621FFF39621FFF39621FFF39621FF794B105F00000000000000000000 + 00FE0000005116161664000000FF000000FF161616640000000040000000784C + 100DA86B2017F29621FFB771196B7A4D120E3C25070400000000000000000000 + 00FE0000005116161664000000FF000000FF1616166400000000000000000000 + 000064431A09F19621FF794A1062000000000000000000000000000000000000 + 00FE0101015315151564000000FF000000FF1616166400000000000000000000 + 000040000000794C100B3B240903000000000000000000000000000000000000 + 00FE000000FE000000FE000000FF000000FF1616166400000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00FE0101018B0000005100000051000000FF0E0E0E910000004A0000004A0000 + 004A0000004A0000004A0000004A0000004A0000004A0000004A0202024C0000 + 00FE000000510000000000000000000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000510000000000000000 + } + end +end diff --git a/distributionpropertieswindow.pas b/distributionpropertieswindow.pas new file mode 100644 index 0000000..99e8f95 --- /dev/null +++ b/distributionpropertieswindow.pas @@ -0,0 +1,339 @@ +unit distributionpropertieswindow; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ValEdit, + ExtCtrls, Buttons, WslRegistry, WslApi, fgl, Grids, MaskEdit, + // For MB_xxxx dialog flags + LCLType; + +type + TMapStrings = specialize TFPGMap; + + { TFormDistributionProperties } + + TFormDistributionProperties = class(TForm) + ButtonCancel: TButton; + ButtonSave: TButton; + ButtonReset: TButton; + CheckBoxDriveMounting: TCheckBox; + CheckBoxInterop: TCheckBox; + CheckBoxAppendNtPath: TCheckBox; + ComboBoxVersion: TComboBox; + EditName: TEdit; + GroupBoxFlags: TGroupBox; + ImageListEnv: TImageList; + Label1: TLabel; + LabelUserID: TLabel; + LabelVersion: TLabel; + LabelName: TLabel; + LabelEnv: TLabel; + EditUserID: TMaskEdit; + Panel1: TPanel; + PanelUserID: TPanel; + PanelButtonCancel: TPanel; + PanelSeparatorVersion: TPanel; + PanelSeparatorVersion1: TPanel; + PanelVersion: TPanel; + PanelSeparatorName: TPanel; + PanelUpper: TPanel; + PanelEnv: TPanel; + PanelButtonOk: TPanel; + PanelButtonReset: TPanel; + PanelButtons: TPanel; + SpeedButtonAdd: TSpeedButton; + SpeedButtonDuplicate: TSpeedButton; + SpeedButtonDelete: TSpeedButton; + ValueListEditorEnv: TValueListEditor; + procedure ButtonResetClick(Sender: TObject); + procedure ButtonSaveClick(Sender: TObject); + procedure CheckWslConfigChange(Sender: TObject); + procedure EditNameChange(Sender: TObject); + procedure EditNameKeyPress(Sender: TObject; var Key: char); + procedure SpeedButtonAddClick(Sender: TObject); + procedure SpeedButtonDeleteClick(Sender: TObject); + procedure SpeedButtonDuplicateClick(Sender: TObject); + procedure ValueListEditorEnvEnter(Sender: TObject); + procedure ValueListEditorEnvExit(Sender: TObject); + procedure ValueListEditorEnvSetEditText(Sender: TObject; ACol, + ARow: Integer; const Value: string); + private + WslDistribution: TWslRegistryDistribution; + procedure InitScreen(); + public + constructor Create(AOwner: TComponent; DistributionName: string; DistributionVersion: integer); overload; + destructor destroy; override; + end; + +var + FormDistributionProperties: TFormDistributionProperties; + +implementation + +{$R *.lfm} + +function ConvertStringListToMap(Data: TStrings): TMapStrings; +var + i: integer; + CurrentData: array of string; +begin + Result := TMapStrings.Create; + + for i := 0 to Data.Count -1 do + begin + CurrentData := Data[i].Split('=', 2); + + Result.Add(CurrentData[0], CurrentData[1]); + end; +end; + +function CompareEnvData(Data1: TStrings; Data2: TStrings): boolean; +var + Map1: TMapStrings; + Map2: TMapStrings; + i: integer; + CurrentKey: string; + Map1CurrentValue: string; + Map2CurrentValue: string; +begin + Result := Data1.Count = Data2.Count; + + if Result + then begin + Map1 := ConvertStringListToMap(Data1); + Map2 := ConvertStringListToMap(Data2); + + for i := 0 to Map1.Count - 1 do + begin + CurrentKey := Map1.Keys[i]; + + Map1.TryGetData(CurrentKey, Map1CurrentValue); + + if Map2.TryGetData(CurrentKey, Map2CurrentValue) + then begin + if Map1CurrentValue <> Map2CurrentValue + then begin + Result := false; + break; + end; + end else begin + Result := false; + break; + end; + end; + + Map1.Free; + Map2.Free; + end; +end; + +procedure TFormDistributionProperties.InitScreen(); +var + i: integer; +begin + if WslDistribution = nil + then begin + EditName.Text := ''; + EditName.Enabled := false; + ComboBoxVersion.Enabled := false; + ValueListEditorEnv.Enabled := false; + + CheckBoxInterop.Enabled := false; + CheckBoxAppendNtPath.Enabled := false; + CheckBoxDriveMounting.Enabled := false; + + ButtonSave.Enabled := false; + end else begin + EditName.Text := WslDistribution.Name; + ComboBoxVersion.ItemIndex := WslDistribution.Version - 1; + EditUserID.Text := IntToStr(WslDistribution.DefaultUID); + + ValueListEditorEnv.Strings.Clear; + + for i := 0 to WslDistribution.Env.Count - 1 do + begin + ValueListEditorEnv.Strings.Add(WslDistribution.Env.Strings[i]); + end; + + CheckBoxInterop.Checked := (WslDistribution.Flags and WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP) > 0; + CheckBoxAppendNtPath.Checked := (WslDistribution.Flags and WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH) > 0; + CheckBoxDriveMounting.Checked := (WslDistribution.Flags and WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING) > 0; + + CheckWslConfigChange(Self); + end; +end; + +procedure TFormDistributionProperties.SpeedButtonDeleteClick(Sender: TObject); +begin + ValueListEditorEnv.DeleteRow( + ValueListEditorEnv.Row); +end; + +procedure TFormDistributionProperties.SpeedButtonDuplicateClick(Sender: TObject + ); +begin + ValueListEditorEnv.Strings.Add( + ValueListEditorEnv.Strings[ValueListEditorEnv.Row - 1]); +end; + +procedure TFormDistributionProperties.ValueListEditorEnvEnter(Sender: TObject); +begin + SpeedButtonAdd.Enabled := true; + SpeedButtonDelete.Enabled := true; + SpeedButtonDuplicate.Enabled := true; +end; + +procedure TFormDistributionProperties.ValueListEditorEnvExit(Sender: TObject); +begin + SpeedButtonAdd.Enabled := false; + SpeedButtonDelete.Enabled := false; + SpeedButtonDuplicate.Enabled := false; +end; + +procedure TFormDistributionProperties.ValueListEditorEnvSetEditText( + Sender: TObject; ACol, ARow: Integer; const Value: string); +begin + CheckWslConfigChange(Self); +end; + +procedure TFormDistributionProperties.SpeedButtonAddClick(Sender: TObject); +begin + ValueListEditorEnv.Strings.Add( + Format('=', [ValueListEditorEnv.Row])); +end; + +procedure TFormDistributionProperties.CheckWslConfigChange(Sender: TObject); +var + IdenticalName: boolean; + IdenticalVersion: boolean; + IdenticalInterop: boolean; + IdenticalAppendNtPath: boolean; + IdenticalDriveMounting: boolean; +begin + IdenticalName := Trim(EditName.Text) = WslDistribution.Name; + IdenticalVersion := (ComboBoxVersion.ItemIndex + 1) = WslDistribution.Version; + IdenticalInterop := CheckBoxInterop.Checked = ((WslDistribution.Flags and WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP) > 0); + IdenticalAppendNtPath := CheckBoxAppendNtPath.Checked = ((WslDistribution.Flags and WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH) > 0); + IdenticalDriveMounting := CheckBoxDriveMounting.Checked = ((WslDistribution.Flags and WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING) > 0); + + ButtonSave.Enabled := not ( + IdenticalName and + IdenticalVersion and + IdenticalInterop and + IdenticalAppendNtPath and + IdenticalDriveMounting and + CompareEnvData(ValueListEditorEnv.Strings, WslDistribution.Env) + ); +end; + +procedure TFormDistributionProperties.EditNameChange(Sender: TObject); +begin + CheckWslConfigChange(Sender); +end; + +procedure TFormDistributionProperties.EditNameKeyPress(Sender: TObject; + var Key: char); +begin + // #8 is Backspace + if not (Key in [#8, '0'..'9', 'a'..'z', 'A'..'Z', '_']) + then begin + Key := #0; + end; +end; + +procedure TFormDistributionProperties.ButtonResetClick(Sender: TObject); +begin + InitScreen(); +end; + +procedure TFormDistributionProperties.ButtonSaveClick(Sender: TObject); +var + Flags: LongWord; +begin + Flags := WslDistribution.Flags; + + if CheckBoxInterop.Checked + then begin + Flags := Flags or WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP; + end else begin + Flags := Flags and( not WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP); + end; + + if CheckBoxAppendNtPath.Checked + then begin + Flags := Flags or WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH; + end else begin + Flags := Flags and( not WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH); + end; + + if CheckBoxDriveMounting.Checked + then begin + Flags := Flags or WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING; + end else begin + Flags := Flags and( not WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING); + end; + + if (Trim(EditName.Text) <> WslDistribution.Name) and + (Application.MessageBox('Wsl distribution name change! Are you sur ?', 'Caution!', MB_YESNO + MB_ICONWARNING) = mrNo) + then begin + exit; + end; + + WslDistribution.DefaultUID := StrToInt(Trim(EditUserID.Text)); + WslDistribution.Flags := Flags; + WslDistribution.Name := Trim(EditName.Text); + + SaveDistributionToRegistry(WslDistribution); + + Self.ModalResult := mrOK; + Self.Close(); + + {if WslSetConfigurationOfDistribution( + WslDistribution.Name, + StrToInt( + Trim(EditUserID.Text)), + Flags) + then begin + // Now save env var in registry + if CompareEnvData(ValueListEditorEnv.Strings, WslDistribution.Env) = false + then begin + + end; + + Self.ModalResult := mrOK; + Self.Close(); + end else begin + Application.MessageBox('Cannot save config!', 'Error', MB_OK + MB_ICONERROR); + end;} +end; + +Constructor TFormDistributionProperties.Create(AOwner: TComponent; DistributionName: string; DistributionVersion: integer); +begin + inherited Create(AOwner); + + WslDistribution := LoadWslOneDistributionFromRegistryByName(DistributionName); + + // Fucking bug https://github.com/microsoft/WSL/issues/6924 + if DistributionVersion = 1 + then begin + WslDistribution.Version := DistributionVersion; + end; + + InitScreen(); +end; + +destructor TFormDistributionProperties.Destroy; +begin + if WslDistribution <> nil + then begin + WslDistribution.Free; + end; + + inherited; +end; + +end. + diff --git a/images/about_icon.png b/images/about_icon.png new file mode 100644 index 0000000..66fbe92 Binary files /dev/null and b/images/about_icon.png differ diff --git a/images/add_icon.png b/images/add_icon.png new file mode 100644 index 0000000..df89eab Binary files /dev/null and b/images/add_icon.png differ diff --git a/images/application_properties_icon.png b/images/application_properties_icon.png new file mode 100644 index 0000000..0af69b0 Binary files /dev/null and b/images/application_properties_icon.png differ diff --git a/images/delete_icon.png b/images/delete_icon.png new file mode 100644 index 0000000..4d89f75 Binary files /dev/null and b/images/delete_icon.png differ diff --git a/images/duplicate_icon.png b/images/duplicate_icon.png new file mode 100644 index 0000000..3bd8953 Binary files /dev/null and b/images/duplicate_icon.png differ diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000..db891ab Binary files /dev/null and b/images/logo.png differ diff --git a/images/properties_icon.png b/images/properties_icon.png new file mode 100644 index 0000000..500163f Binary files /dev/null and b/images/properties_icon.png differ diff --git a/images/running_icon.png b/images/running_icon.png new file mode 100644 index 0000000..1d52c3c Binary files /dev/null and b/images/running_icon.png differ diff --git a/images/screenshot/distributionproperties.png b/images/screenshot/distributionproperties.png new file mode 100644 index 0000000..8a4c0aa Binary files /dev/null and b/images/screenshot/distributionproperties.png differ diff --git a/images/screenshot/mainwindow.png b/images/screenshot/mainwindow.png new file mode 100644 index 0000000..b1d0d31 Binary files /dev/null and b/images/screenshot/mainwindow.png differ diff --git a/images/start_icon.png b/images/start_icon.png new file mode 100644 index 0000000..aff35ca Binary files /dev/null and b/images/start_icon.png differ diff --git a/images/stop_icon.png b/images/stop_icon.png new file mode 100644 index 0000000..3b46daf Binary files /dev/null and b/images/stop_icon.png differ diff --git a/images/stopped_icon.png b/images/stopped_icon.png new file mode 100644 index 0000000..f00e239 Binary files /dev/null and b/images/stopped_icon.png differ diff --git a/mainwindow.lfm b/mainwindow.lfm new file mode 100644 index 0000000..6fe481c --- /dev/null +++ b/mainwindow.lfm @@ -0,0 +1,4335 @@ +object WslGuiToolMainWindow: TWslGuiToolMainWindow + Left = 478 + Height = 441 + Top = 285 + Width = 572 + Caption = 'WSL GUI Tool' + ClientHeight = 441 + ClientWidth = 572 + DesignTimePPI = 120 + Icon.Data = { + 47AC01000000010006000000000001002000D926000066000000808000000100 + 2000280801003F270000404000000100200028420000672F0100303000000100 + 2000A82500008F7101002020000001002000A810000037970100101000000100 + 200068040000DFA7010089504E470D0A1A0A0000000D49484452000001000000 + 010008060000005C72A866000026A049444154789CED9D099814D5B5C749DEF3 + 6551DF7BFABE2C1A6064A697EAAA5EA6BB6761868161DF1741D6804B70816840 + 71C105898A0B60148D415C092E316804C5487049C0A0281151438C02CA26882B + 31228A8240BDFE1756DBD35D55DD5DDD3DB7ABFBFFFBBEF385383D3DD5D5F7FC + EBDE73CF3DA74D1B420821841042082184104208218410420821841042082184 + 1042082184104208218410420821841042082184104208218410420821841042 + 082184104208218410420821841042082184104208218410420821A543A51C6D + EFF287C67A65FF585996C71E1FEEF164BB681FB5436D4FD515EDA6BAA35DD4AA + DA1E6A87BA3EEA4F42CD4FE23578ADCB1F195B19EDD45EF4F5134232E4B868F4 + FB8140E098CADA3EF3634EBCC5E7F36D917CBE0F7C3E598DFD3B4B93D5C3BFEB + DBE20AD56F8909C3B1ED034DC788FE8C8490242A3A0DEDE8554297C76CB53D67 + CFCCDCFEC87EAF2F70794C0C8E12FD9909297B5C916E5555E1CEAF483EF9B342 + 3A7EB24992EF638F1C9CEEAA6B6E2BFA1E10529648927CB127106935A7379E11 + 84FFE5F5FB6B44DF0B42CA862A39ECAAF4D7EE8939E04191CEFFCD6C40DAD7AE + A6DF0BDEC6C6A345DF1B424A1A4551AA249FF29E68A74F315951DD81E8F3A2EF + 0F21258BC7E3893D6C7D9F0B77760BF3046B9F0D067B1D29FA5E115252C43CFF + B898F3BF2FDAC1D39BACB68DF67E49F4FD22A464F0F8A331DF97778B77EECC2C + 2656FB6316157DDF08713C3F681E715465B8E923D14E9DAD7965FF27ED839D3B + 88BE7F84381A8F1C3847B433DBB513AABBEE147DFF08712CD168F4FB3147DA2A + DA91ED9A242B073D75DDCF117D1F0971241D6A7A3E21DA89733577A066554573 + F37745DF4B421C87A4F8853B70EE26AB559126060409C906B7129E29DE79F334 + 0BF0475E137D3F09710C6D3BF63E56F2F9DF10EDB879B4AD95C1861F8ABEAF84 + 38025775A75E921C10EDB4793459951465B4E8FB4A88239024A99778A7CDAF55 + 849AD468347A84E87B4B48D123F9C35B453B6CDE4D962900846482E4F31D10EE + B0053057C38011A2EF2D21450D0280BE1215008F125A29FAFE1252D47488747D + 4CB4A316CA2449A200106285E40F95AC00B895EA03C7450674167D8F09295A62 + 8E52B20280AA415E25D455F43D26A468112D00B22CAB8AA214ECFDBD5E6F57D1 + F79890A2E4F8A6511E77B056C8D9FFAE5DBBAA73E7CE5557AF5EADAE59B3467D + F6D967D5993367AA7575751400425A031C9A894D91D33EA1ABABABD54824A2FD + 3B57876C6E6E56E7CF9FAF1E3A74483562FFFEFDEAD5575F9D3721E850D3F350 + ECA37E4BF4BD26A4E8900291A8249B9F00ECD4A993BA78F16275F3E6CDEA962D + 5BB4A7F5E0C1836D0B418F1E3DD41D3B76983ABFCE810307D4F5EBD7E745043C + 81A8DA860240482A560270FAE9A7AB3B77EE4C71CE2FBEF842BDF1C61BD56030 + 98B5F36FDDBAD5D2F193F9C73FFEA1D6D7D7E7240092AC50000831E2B000A406 + E0C68E1DAB7EFCF1C7A68E79F0E041F5F6DB6FCF387807B1F8DBDFFE9695F303 + CC14EEBFFFFE1C83843205801023A44020450042A190BA6AD5AAB4CEF9D9679F + A963C68CC9C809A74D9BA64DEBEDF0D5575FA9679C71464EB380361400425231 + 1200385BBA35BACEA64D9B34C1B072BE6834AAC50E72E1F1C71F570301FBC795 + BFD7F1949F88BED784141D4602F0CA2BAF64EC9888074C9C38D1D2F9FAF7EFAF + 45F68D80D0600BF081071E5077EDDA65FA7776EFDEAD6D1BDA1580EFD78C5C22 + FA5E135274240B00A2FEEFBFFF7E8A037EFEF9E7EA9E3D7B0C9DF3EEBBEFB65C + A3E3E7467CFAE9A7EA840913B4273B7E1F11FF152B5698CE3ECE3BEF3CDB02F0 + DFB5232800842493BC0B307AF4686D6D9FC85B6FBDA50505478D1AA52E5FBE3C + C531376CD860BA0CC07621B60F8D983A756ACA766243438316F937027FDBAE00 + B46DE20C8090149205E0FCF3CF6FF104FEE4934FD42E5DBAC47FEEF7FBD5975F + 7EB985636247A0A6A6C6D0F19040F4AF7FFD2BC599E1E466B904175E78A1F69E + C97CF0C107B6F30F2A3A0EA40010924C1504C0F7CDF4FD924B2E69E174F7DD77 + 5FCAF41ED3F67DFBF6B5785DDFBE7D0D1D0F7BF8FFFEF7BF539CF9ECB3CF3675 + 56880622FFC97CF8E18759E71EE85659DB9302404832ED234D514F422A70B200 + CC983123C599F0B44F4E101A316284A1E3353636A60800FEFFC081032D1D76ED + DAB586020071B02300AE70270A0021C91CDF38A4DA1DA8DDAF3BCA45175D1477 + 383C852FB8E002C375FD9B6FBED9C239112330723C04F692138AB66DDBD66259 + 6164BFFFFDEF0D0520DD96A399B983F51400428CF0251C071E3F7EBCFAE5975F + C60500EB7123877AEEB9E7B4D7205E802060CF9E3D0D5F87083F32F9B66FDF1E + 8F2DE05C41535353D602801880DD8C40B73F420120C4884401E8D3A74F8BA09D + D11200B664C912F5A5975ED276063A76ECA89DF01B3264881644C4B61FCE0A9C + 72CA295A0E40E7CE9DB5D79C78E289EAD2A54BB5DF4B27007FFDEB5F530400A2 + 63C7F93501502800841892280008B2E1B49ECE5D77DD65F8D41D366C98763CF8 + ACB3CE52972D5BA6BEFBEEBB290E0B90FEBB71E346F5B1C71E53CF39E71C6D46 + 80AD3EABAC3EFCBDE4AD4870D96597D91780602D058010237C491581EEBCF3CE + B8D3BDFDF6DB6A6D6D6D8A4361CAFFE8A38F9A66F819812505827B383F6015CC + C3CC21791B70EFDEBD6AF7EEDDED0B40883100420C9192040053F6C4C0DD6DB7 + DDD6C2994E3EF9642D90A783442124E92447FBB1E6FFFBDFFFAEAE5CB9B2C5B6 + 21620C2FBEF8A2DABB77EF1447C5AE017E2799279F7CD2F61620CC15E22E0021 + 867894600B01C0147CDEBC79F1A730C460F8F0E15A12D099679ED9E2E98CF45C + 44FAB114F8E73FFFD9C269313B983E7DBADAAB572FEDE9FDD1471FB5F839528B + AFBDF65AB55FBF7EDA7BE36F5F7EF9E55A9030112C23264F9E6CDBF961959166 + 0A002146C4D6C72945417126400F06A26E1F4EF44D9A34493BFC93C81B6FBCA1 + BEFEFAEB86997B3A880FAC5BB7CEF42C01B6F7B0344001123CE5112084A0BCFA + EAABDACF1F7EF8E1B840D8B50EB5BD28008418E1AAEE64581518117C38229EF0 + 37DF7C73C647847301A7FE10781C376E9C1A0E87B55D09884F2ECEAF09407D3F + 0A002146B822CD860280841F4CDFB1C6B75BCCC32E387D88DD888B2FBED876F6 + 5FA255340CA6001062842B9A2A008803202B30714B5014C809400E414E33000A + 0021C6B8422D9700C8F547F65E365B7C8506A9C7E9D2872D05A0A63B05801023 + 12770190DC83C41ED13CFDF4D35A59F0445016CCAE00B89510058010237C3E25 + 2E00E79E7BAEB6DE47B51ED402686DF4DC01EC42246F2B62B700026547002449 + A6001062842F2111E88E3BEED09C6DD1A24586E7FE0B0D128A1078C4DF4FAE09 + 806D4908030580903CF17F8D838F96E4C0F3BAA320010820F28F74DF050B16B4 + CAF61FA2FEB7DC728BD63CE499679E31FC9B385168371F20F61957FDA857AF23 + 45DF6F428A8AC3BD01BF49B1C5F97F3DA907D581070C18109F15140AEC349C7A + EAA9EAC8912353EA0C2472C30D37D88E0148FEA05A196CF08BBEDF841415C955 + 81918B8F03403A588F0F1D3A543BE26B54A62B1770C0E7A9A79ED25281AFB9E6 + 1A6D166006662439B70893240A002189C49C229AEC28A8EE9398F8A33FA1719C + D7A8C067B6E0BD515814E70BF0B7E0DC56A9C4483FC601246C4FDAAD08A46D05 + 46BA6E107DBF09292A62D3E26B931D051980A80D981800C4BF511C04B5FF10A8 + B3331BC07BE077510E1C29C6D8D64BF73EA80284D7223680DE82382A6C7B06E0 + 53F689BEDF8414151E25F8B991B32013F0B4D34ED31C30F1C98DC33F7872FFF4 + A73FD50EEBA070875590104E8FEDBB871E7A483DE9A493B41C7FC416920F1525 + 83BF856D409C054047205411C2DFC9250E10B3435591CEB344DF73428A86D812 + C0500030D5C65377F0E0C1295B7270FAC58B176B47742112B367CFD6CA87A3FF + 1F9C1BCE8A9FE300D1942953B459034A843DFFFCF319CD1C5063F0AAABAED20E + 01612B32B1F6004A8AE5D223D015ACFD7B6574C4FF88BEEF8408C71D6CB8094F + 45234781F3231888C338A8E7F7F39FFF3CA5EC175285512BE0C1071FD4128810 + C587A14E208401DB7A706604FBACD6F800B5027024188281D387E83380C2A0C9 + 7908782FFCDCF6324056D4B6E15E5D44DF7B42842349F26D668E8269BE1E95C7 + 611C44EA51C1C7AC6D975D30D5C7F15F6C37628F1FC1BE471E7924A5784822E9 + 9A91A60D06861ADF137DEF09118A2758D7C1AB840E9A3909A6F7898781200678 + AAE38C3E0279B91E0FC67A1E4B02ACF151000441C777DE7927A3F7CDA53AF0D7 + B6CB1508B415FD1D10220C8FC7D3C1CA4966CD9A9512DCC3DA1F53746CC7A14A + 8F5DB06CB8F4D24BB5BCFE33CE3843DDB46953DA254222D896B49B12AC5B55A8 + 61D38F82CC0C24658A57097E68E61CD806C4FADD0C04FD3013983973A6E554DD + C8F11150445970A4196367C0CE4C024545111CCC7116A04AFED000D1DF0321AD + 4E6CFA7FBAE4F37D65E61888B223DA6E0696065806203888293C528511ACC353 + 1C8699030CFF8683A35A308A7FE2B5D85D8080246E2FDAE1DE7BEFB5DD29382E + 003EE5F5D8EDF8B6E8EF839056439647FC97C75FBDD8CA313035C7B43C1DD825 + 407210F6E951B66BF4E8D15AE1506CE14D9B364DDB39405D41080AFE17CB8A4C + DE371376EDDA95539970DD6233A13BDB500448B980E09F4FB6EEAF87365F999E + 00C4EB901E8CA49DDB6FBF5D4B1946E30F88015A80231F00C1BD42D416408660 + AE02E0F3C9EAF10D43178BFE5E086915BCFEEA4DE99C22B1437031B362C50ADB + CD425B2E057CDBDD8140A5E8EF8690825215EAF88BD86037DDFAD30DDB734E60 + E7CE9DA65D89B3B5AA60FD9ED82DFA96E8EF889082E10ED4A475046CF1C1B19C + 00961FBFF8C52FF22200874D3957F4774448417007EB5665E20448E335EBE053 + 8CE08460AEBB01DF2C05E483EE40748CE8EF8A90BCF2F599FF4F3271825FFEF2 + 97A27D3A6B706E205FB300AF123CD4AE61306702A434A8ACED57E3F5571FC8D4 + 017092CF69E02462BE6601876702BE272A2A2ABE2BFABB2324277EDC34567685 + 1A337AF2C370FCB6B55B80E503D428C8B55C58B279E4E05F457F7F84E48424CB + 976633E87166DF89201888DC837C0A00F2032A838D0F45A3671D21FA7B24244B + AEF8B64709DDE03339EB6F64C8E44B6EC4E1249013905F01385C3B40519476A2 + BF4D42B2E2B8BA41D77895EC8A67E2FCBF93A2FFC9E07C423E838109F6A1D7EB + 0D88FE4E09C9884020708CD7A77C9CED40C7C93EA78386A6F90C06C6E301FED0 + 9E8A50F309A2BF5B422C392E1AFDBE37105993ED0087D3BCFFFEFBA2FD376710 + 0CACADAD2DC42C4075076A5689FE7E09B1A47D4DEF37EC0C6E9CDA6B8DF65F85 + 069F01558B0A2100313BE895FD13447FC7841822F9AB9B259FCFB0C2AF95E1A8 + 2ECEF6970A0864E6E380909149D819A8ED355DF4774D480A1E7F24ED211F2343 + E00C67EB4B05942D43B721B3CF3B70E0C09C72065C819A433FA91F1414FD7D13 + 1227363017D81DD04E4CFD4DC73DF7DC63380B40AC038D45D0BB201711F028D5 + AF8AFECE09D1A80C375FEBB319F946E59F6C6AFA39059420439353A3CF8C62A2 + 2FBCF08256593897FE0215E12E778BFEEE4999D3B663C7EF79E580E9D41F25B3 + ACB6C5AEBCF24A47A6FE66026601669F1BE2805E076BD6ACD144D08E0048B2B2 + DBA544AA448F0152A654D4F6FFB13710596FF574C7BEB8D90047555F3841A982 + 2E46286D66767FBA75EBA60900BA0FD90D1ABA43F51F881E07A44CF12AC141C8 + 57371A9878EACF993347ABD66B3678D1F3CF4E875FA7802D41C437AC1C18DD8E + 50AF10158B6D8AC04177207C2552AF458F07524654340C1DED9515D3B2DE78BA + A185173AEE9809C4D34F3F2DDA470BCEF6EDDBB5330E66F709F7E19C73CED1FA + 1558ED1C58596C16A656849AFF57F498206582CBE5FA4ECCF91F311B907892A1 + 6BCFADB7DE6ABAFE471F3E27E7FD67C315575C611907C1CFEEBEFB6EAD0C1A1A + 96D812017FF52BA2C70529136203D625994CFD6128CBFDDE7BEFA983060D3215 + 88DB6EBBAD2432FF3261F3E6CD69DB88E1E76FBDF59656C2DC66EBF14FBD8AD2 + 55F4D820254E457D9F13BC3E9FE9411F74DDC1D4FE81071E307DEA61FFDB2945 + 3FF3051A8FA67362F428C489C2D34F3FDDD62CC015A83DE072F5FD8EE831424A + 18C95F3DDD2CF007434E3F9EFE9D3B77367DCDAF7EF52BD1FED8EAA07109AA1D + 5B393004136DC9218EE95E6B2A02C1C6DB458F1152A2C406E8B192623E3DD5CB + 795BADFDD1CBAF144EFDD901CB9E7447855113011D8C1013B0B32B20F97C1B2A + 83C11F8A1E2BA4D41831E23F24D9FF8CD5E043371F64C075E9D2C5F435175C70 + 41566DB84B096CF759E505C0E0F42B57AED4660C56F7D15204243F3B0E93FCD2 + A1B6C75849367FFAE3C9B661C306F5BAEBAEB37CCDABAFBE2ADA0F8572CD35D7 + A47560743046A763AB388AA5C97EB50D3B0C917CE28E74FAB7D5A043900BEDB6 + AD9E5A38275FEEE0A460BA1D01CC02B01BB07BF76E6DBBD4CE2CC0EBAFBE4FF4 + 98212542654DCF73AD061BD6F55BB76E551F7DF451D3752BD27E911854EE60EB + 73EEDCB9691D78CA9429DA8EC09D77DE693316206FF27AC3C78B1E3BC4E1C8CD + CD47493EFFEB56836DD2A449DAC01E366C98E96B4E39E514F58B2FBE10ED7F45 + 01CA86A53B0588AD52CCA81030B57B62D0AD8487891E3FC4E17802D5FD7CB2F5 + 13E8C5175F54376EDC68B95E5DB66C9968BF2B2A264C9890D681972E5DAABD16 + 81535BCB00397840F4F8210EA72A58BBCF6A900D1932448BEA239FDDEC3558C7 + 96EA915FBBAC5FBF5EF5FBFD960E8C2D41804C421CABB62302AE48D7BB448F21 + E2507E5CD36F96CFA2B1079EF87FFCE31FB5725E885C5BBD86B4E4F3CF3F574F + 3EF9644BE745B0103901D85AB55A5E5999E4F32D103D8E880369DF34E0188F12 + 7AD96A70614F1BC13F2C01CC9E50DDBB775777ECD821DADF8A92DFFEF6B79601 + 3EA455FFF9CF7FD6E22B975F7EB93D01900331118EB6173D9E88C3700723F592 + 6C3D451D376E9C36FD5FB06081E96BB0D62D97433FD90261443354AB1916EE2D + 58B26489EDA2216DEB06BD207A3C1187E10D8467A41B5838F20B860E1D6AF873 + 0CD8724FFC4947BA833F28200A91DDBB77AFB6956A6B16A0843E143D9E8883F0 + 360E3EDAE753BEC413085D6E50DCE3A4934ED2B2D8E6CD9BA74D47478E1CA90D + 4A80E41F6C55A1F045E2530AE5AF91D146CC417560ABDD13A457EB55937AF4E8 + 614B00BCB2FFE0710DC3CF153DAE884370479BE70F1D364C4B42417A2F9E4030 + ACF7316051EB2E715A8FECB66DDBB669DD71510873D6AC595A2D80F9F3E773FA + 9F069C9C84C09A392F8457CF9FC8E448B19979E4E02F458F2BE200FEA9AAFF15 + 73FA459F7EFAA9767805F9E8A8DD874A3558AF621A8A537FC8FEC3915F34F5F8 + D9CF7EA6CE9E3D5B13802D5BB66802816A3FC86423D6607BD46A9F1FBB2BFA4C + 0BE9C1F60540F9759B3623FE43F4F82245CEC18387EEFBF0A38FB4325670F26C + 071AA6B378A24D9B364DAB7043D20391350BF0F5EEDD5BDB32042FBDF492EDCE + C31E7F586D1F683A46F4F82245CABD2FBEF37F2F6FDFF3E5BA75EB0EF5EFDF3F + 2F2DAE1117409F3C620D8EFE9A6DA36286A5CF007096C26E42108AB8A06DBBE8 + 71468A94DD5F7CB510CE6AB51EB563C814C40027D620606A74FF468D1A158F01 + 207BD06ADB309D55D4F6BD57F4382345CA810307B7A1624D3E9D1F86A92DCF01 + A407BB2B46F7EFB2CB2E8BEF024000EC960AD3960181E846D1E38C1429870E1D + DA86525EF9160018EA007037C09AB56BD71AC6016EBEF9E6F8BDCB550062CB00 + 0A0031E6C0C183DBCC9E42B91A72DACBB50C58A660F724B9902A04016DC374B0 + 44B36A329281510088315FEC3FB00D8528F311FC4B3634C2A40058835C0A9CFE + 4BBC6F48C27AFDF5D7E3AF49973494CEDC7260FFB1D1C1C3458F355284BCB4FD + B36D38B567B32985A52190C525407AA64E9DAA1502D19D1CBB3189FCE94F7FCA + E97BF02A41B55D6D9FD3448F355284BCF9C117559886E6126536320CE6850B17 + 0A72296781ED3ED401C4F1DFD75E7B4D5DBD7A758B9FA381682EDF054ABABB6B + BB9F267AAC9122A4FBC9E7CFC120C3F1DD7C0A00B615D12093E4CEE8D1A373FC + 3E642C034EB3354062D387BD5E25A099F4F5FF26FE3BF1BF1959FCE77220652F + B222D810F6F8AB2D7FDFEA6F275A55A0762F6AD827BEFF91B52327B9FD61D3EB + 4D77ED89E6F1073719DF9FC0E719DF832C3E8F9D7B90E97524BE2E5A5B7F68D3 + A64DEA6F7EF39BBC393F8258082C02B4C1466661AE064129C50C432C91300340 + 0A36D2A8BFFCF2CB94D7E0BF2D5AB4484BCD4E574DC8741920CBF604C097BFE0 + D0C2E4F7AE0A44A25E9FBD0F946C314757DB3437FF670B01889E34C56351D33E + 4B157DC7F0FE5854CE7182C159EFBFFF7E2DFF1F41BB7CBC270EAFE8A5C0B0B6 + CDC77B628982034AA5048E4C9F7BEEB95A85209CB2C4931E0D56CF3BEF3CF5BE + FBEE8BA702EB60998073174813CEF6FE15AF00A4293E91A9B90C04E0680A4046 + 3662C4082D1A7DD55557E5BC1B805EF7892DC02800A920C107053F50F9C7ECF3 + E27BC0D61F7A2E2226F0F1C71FC77F1FB3053462C9A6A5B8D7EE12C02902E0F6 + 472800360D83EDC1071FD46AFCA56B5E616528019EDCFF8F0290CA1FFEF087AC + 765DF05AEC0CCC9933277E3E00DBAB58129915656961B2A2BA43F5452A00795A + 0218CD00B804C8DCF43A7F387996ED52000282EAC046CD3F29002DC13AFFC413 + 4FB47D1F10ACC5F160BC8FFE7E28D46255364C52826A65BDCD6D40A7CC008C97 + 004329005918D6A0185068529969530A04A5AEBCF24AEDC9044BDEF7A700B404 + 9F21D76516EE3902822FBFFCB276BF517D09415CB300A1470E1EFC6164C0D8E2 + 1480BC05015397009C01646F0848A15A0D1A7E8C1933C6F2B528558533ED8852 + 634D7BF5D557A7F401A000B4041581F3F55DE19E20808BFB8F9383169583ECA7 + 02175400240A40B1199E4E706C381B824D4813C6161C2A02E10983C01472D72F + BDF4522D71057183C993276B3FC309360A803908E4E5BEA7DFD2101FB8E9A69B + B4FB0E11686A6A327A5D790A008380F60D4B00449A311B40938A679F7D566B02 + 8A7AF5E85D870177EFBDF7AA3D7BF68CFF0EAA01510052C176DE5D77DD65DA44 + 255783683FF6D863DADFFADDEF7E97F273AF3F5C9E027064980290EBC0C23154 + EC4B3FF7DC739A03AE59B3465BF363B72079CDC919402A088CE2A96FB7B67FA6 + 86022C106A346B49DE5EACA8E9F378710A0063008E31880106B155008B338096 + ECDCB953734CFD3320BE92EFCA4BBAE13EA3FB30CA8725D70EC8A92498B37701 + 2800AD694633003B05468DCC690280693FB2FB70ED889B609D8EBDFB33CF3CB3 + 20F75EAFC388195AE20CC0ED8FE656149402A01B05209DA1CC757249F0729D01 + DC72CB2DF1D9D28D37DE18BF2F28F451887B8FC02CD284936B3BB8E5D0DDC97E + 519202C0258078C31201D96A0812EA94A30060EA8FC42A5C377A2724E646607B + B510C557CC2CB6C45E18BB774794BC003011A8380C831B3B034F3CF184B61C28 + C725008AACEAEDD5B0264F0481BAC49D937C18841701596C09C25AC66A64D52B + 2B1B3DA1DA91C529000C0296A46120A2D28DDDC696C9E6140148DC8B4703D0E4 + 25114471C68C1979BBCF10586C31FEE52F7FD1766A90C5F9C8238F684545919F + 9158E84592A4D1C52500DC06A465684E1180A79E7A2ADEC4C3AC2C3A8E014722 + 919CEF09B6627176C3ACEC1AC40733900103066833829800EC8BD9B0E2118002 + 2F018E0C7309502AE61401404EBE3EFDD7EBFA1B818ECBB9DC0F340F4D2C1C6A + 05CE778C1F3F5E1FC76ADBBAFEA7178700E47506602400CE99014887CB36C52C + 9857F3C82D5B4A61AD887DE27C9ADD2A35A52600C8C9C7A9485C2F827FC95BA2 + 897CF4D14729D5803331080BEA36204D3B1B90B6ADD70FF02AFE9515CDA77E57 + BC00E43906D0ECE01880C7A7AC3D26D06DCC31819E79B5F6A1C6C5507DFC0DAC + CBD1FA1B7BC5F9B4EBAFBFBEE0916D27080072FDF5E87F625D7F33508A0DE7FC + 33BD07280E8229BF5D704DDA524009AAAE6043B838048079009AC5D6668F65F4 + 856440454DDF70EC3D3B7B82911DB1FF3D80F7C79A135B748528D3BD63C70EB3 + 4328652500D8FE84C8624684A05C26A07F2212A8B09E4F1651C4127AF5EAA54E + 9A34497DF3CD372D671499F0F6DB6FC705AA22D8697C4683C92902E0F420603E + 04A0A27EC0F5921258EEF187F624BE370611A2C385ACD18FC4977217003CD171 + ADC8CA43A02FDBDF451E3F0E5CE149BD6AD52AAD21080E63E50B08889E89E80E + 440F6534A89C22004EAF0864570064B9F928AF1C181CFBFCFB921D0625BA30E5 + 4FDE8A2A04487D45B4B99C0560FEFCF9DAB5E2295BAC25D19192FCF53D2D7D01 + 705822D01F11C3C8C68E6B1A3DD9AB0436EA6B7CDD709E1FFBC08F3FFEB8767C + 37D9303D35FAB79999BD06FF5DFFD9F2E5CBD5B973E7162C20E80401B8F8E28B + B56B45CBEF5CA7EB850265DFF4A546FBFA81D78A17002602958421E1073503CC + FADDE76A4E10007DAB0D853A8B19BDE6A351AF8ED615002602958C4100D0EA1A + 56883E834E10003DC577DCB871A22FC5127DAB52929587929BE9949400386917 + C0E9A60B005261274E9C98F7F777820074EDDA55BB567CFE6266C99225DA757A + 0251F58470B78A9215002E015ACF74010088605B35BDB063C52E004802C2915C + 5CEB85175E28FA722CF9A66A90ACB6ADEEDA2C4E00180328194B140080BDED7C + BE7FB10B00F6F3F5B535CEFF1733B856BD3E6145A8F32EB102C0CE402561C902 + 8096E3B974194AB662178077DF7D379E6A8BA3D0C5CE45175DA45DABE4F37DE2 + AA6B6E2B4600180328194B16006C83A1634DBEDEBFD80560FDFAF55A9E3EAE15 + BDFC8A1D142BD597695E2570A51801C8F30C20F92C0005A0F52C5900000EBCE4 + 2B1650EC0280B3F8A8FD876B851838012C550EE704C88724491AE06801288144 + 20479B9100807229098644285DECB01C70023851A83717957CF2971E5FF590D6 + 1780421E07E60CA0D5ACDC0560E9D2A55AFE039EA868B5EE147082513F91E855 + 42EAF10D270E74E40C80894062ADDC05002DBFE1FC38088473114E0247BAF5F8 + 854709AD6D5144D4293300E38A401480D6B27216009CB2FCF5AF7FAD5D27A6D4 + 4886721A10303D83B343B8335284BF557801287445202E015ACDCA590050FA4B + 6FFA89525F6800E23490C884BE0EF80C526C56EE0D371EEFA819000540AC95B3 + 00ECDDBB570B00620970CF3DF788BE1CDBA060885EACD4AB8496B58E00B02250 + 4998990094435F80279F7C327E0FB01DE864708C1C4216F39B0315281BE61401 + 300E02721BB0B5AC9C6700A8FF8F6B442110CC069C0C3238F594664992220E12 + 00CE00445AB90A0022FE7A5EFD840913445F4ECE600B538F6774506ACE768C00 + B8140A80482BD725003EB3BE6E7EE69967445F4E5E38EBACB3B4CF135B02A80E + 0A028A290B1E9B263D18B387CC4DB6F899ADD7FC01D78375DAB061C3D4F3CF3F + 3F27CB47871A2B0128F519C0A2458BE28D4076EDDA25FA727206331A7D06D036 + D8F969076D038A49046A6D5C757DFF1BD783A8733E4E9DA17E2005207BB0F78F + E972BF7EFDB4EBC3F41F5B694E67DDBA75F17E8E0E8B01948700545437AFC3F5 + 20508373DDB94201C81E9C7444E96EBD0008660037DC7083E8CBCA99CD9B37AB + BD7BF7D63E53CC2FB7B802756D9D3D03688525406BD2B6E3F0EF493EF90D5CCF + 942953F2F2A553003207093FB88651A346B5A87B887F239DD6A940D0D067501F + 0B48048A89DAB1DAA073520CA0D405A043B8CB2049397CE0E4B5D75ECBCB974F + 01C80C24C95C71C5155A2FC4E46B4321907DFBF609BBB65CC03266E6CC99F136 + E2DE98BFB48DF4B8AD4DBE53815D81DAAF2AAB1BFBBB65B9FA1B0B8CF1FA94BC + BCBF47A9D6D62C89EFFF8340B71BF2B5C43012802A5976C59CB1BAB52C761D93 + 712D8AA2A8D75D779DD689F6D65B6FD5FE1735F9F16F74E8D1FFBFFE6FB3D7C0 + 7078C5090280A7ECF4E9D3B5CFA05FBBFEB9F4CF66F4DF8D5E83CF6FF61ADDF0 + 1AFDF553A74ED51CDFACFF61972E5D5ABC4FE2EFEA7FEB8E3BEE10E0DEE660F9 + 882E4468E9A67F2EC9E7DB1EBBCFC7B4A8149CC71900FE408AE5EBBD8DDE3F9F + EF6D24001ED9BF32BF7FC3B956680170BA61B7A51840A012C23464C810ED41A2 + 5D1F1A86CAF2A9DE50E8849469673E05C0D94601B0320A80B5891400EC58BCF3 + CE3BDA893FCC56E24F7C1CFA51822F1C5F33F067A6EB4E0A806E14002BA30058 + 9B2801406AF2ECD9B3B5584FE212A62AD2E5902758DFE4EADBF73BA6CE4F0148 + 340A80955100AC0D0250C8EECCC9A0D20FD6F87A3B7018E2615E39B0AA22DA7B + 9AA5D353008C8C02606514006B6BAD1900B6F4D0AC15094AFA1A5FF2C987DCE1 + A6BD6EA52EF4A3E0B82333767E0A40A25100AC8C02606DAD21009B366D522FB9 + E492840ECDB2EAF557FFAD6DFD80E959393D05C0C82800564601B0B6420A0012 + 9456AC58A105F8F4BF2729819D522012F136361E6DDBF92900894601B0320A80 + B5154A007078E7FAEBAF8F3FF59128E656AA6FCCC9E92900464601B0320A80B5 + 15420076EFDEAD1D424A58EB6FAD8C46FF276DCB6F0A801DA300581905C0DAF2 + 2D00D8DEC3B97D7D6BAF2ADCE94D59AEFD71DE1C9F02906C14002B2B744110A7 + 5B3E0560CF9E3DEAD9679FADBDAF24497B4F88767B1607C5F2EEFC148044A300 + 581905C0DAF225007A0F027DCDDFBEAEDFFA82383E0520D9280056C62580B5E5 + 4300F6EFDFAF2E58B0E0EB35BFAC56851AD7FF406E3E8A02D02A4601B0320A80 + B5E52A0078F22F5CB830A1A577E8C3CA60C30F0BEAFC148044A300581905C0DA + 72110004FC70824F8FF67BE5C0C678C10E0A406B1905C0CA2800D6665700B0CF + 3F71E2C4780522AF3FF461AB393F0520D12800564601B0363B02B07AF56A75E4 + C891F1F7A80A44D6B7CAB49F02606414002B0B06835A896C9C3BFFE4934FB4C2 + 134851CD57C521A75B3602F0C1071FA8B366CD8A976C977CBEBDEDEA066C2878 + C0CF08AF2C9FE6F57ACBDE625FC4C8540108F6157D5DA2AC2ADA659D24B72CE7 + 86352A9EF8C3870FD7A6AD285C0A6148E71C5E7FB5EA0E446688FE4C764D9294 + 333CC19A16CE8E43393887AFDB9C3973D23A3EEAF3CD9B374F3BC9A727F87802 + 11D5AB28835ADDF109B1221A3DEB0897CBF59D9FD4F5BFC72B2BAB634FA935C8 + 43CFF489E8558278B2BDD82EDC7D75DB8E1D91C4F26DD19F2917DA857B8C8A09 + E25A7C3638EFC08103D5E5CB97ABDBB76FD70A861AB50CC70CE9BDF7DED30ABC + E2890FF1D41D1FF7C7E30B3EEC72A529D8414831108D468FA80A76EEE3F52A31 + F3F6A90A364EEA106E56ABFC35AA4B89A855C18EAA5B0EE189D927F644EB5315 + E9DA27AF39EB450004D1E30F3F8C3D7A7D46D4BD7B7775FCF8F1EAE4C993D519 + 3366A837DD7493565D78D2A4495A5351F4154C2C318EDFED10EDFEF109B83F49 + 55AE09711857E0A99E68E5C0B73CC16087D86C6059EC297E30A319516C29E509 + 84DFF72AFE653F6A183DB94DF9DC2B424A1757B0218C52F515D19E87508E4B42 + 097CAD02AFA24A8A5FAD0C6B9D85EAA54020D2AEF1C42AD1D74B082184104208 + 2184104208218410420821841042082184104208218410420821841042082184 + 1042082184104208218410420821841042082184104208218410420821841042 + 0821841042082184104208C992FF07D820CCF2A359B7E10000000049454E44AE + 4260822800000080000000000100000100200000000000000001006400000064 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000003F2A2A0C3F32214C2B29278029292780332D25803131271A54 + 381C090000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000043 + 3528132A2A2A243C2F215C332B2381372E22582A2A2A24433528130000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000022C2A27732B2A29EC3E3E3EFF515151FF585858FF494949FF323232FF2C + 2B27E73C30239743351A13000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302E2E2E16000000002A2A2A122A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A30332F2677302B25D92A + 2A29F2373737FF4B4B4BFF2A2A2AFF292929FF292929FF2A2928F2322B24B42C + 2C28392A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A + 2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302A2A2A302929293130 + 2C26C82C2C2CFF838383FFBBBBBBFFE2E2E2FFFFFFFFFFFEFEFEFFEEEEEEFFAD + ADADFF4D4D4DFF2B2928EA302D27550000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF76 + 7676FFF5F5F5FFFCFCFCFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFAFAFAFFA0A0A0FF343434FD372E22AF2A2A2A06000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFD5D5D5FF454545FF2B2A27B5333333050000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E8E8FF494949FF312B27B65555000300 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF313131FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0FF3A3A3AFF3B3022A47F + 7F00020000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3D3D3FF393939FF2E + 2B27B43333330500000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDEDEFF54 + 5454FF2B2928E32F2B2846555555030000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 + F6F6FF979797FF323232FF302B27D13B30264955550003000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF989898FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFE7E7E7FF7A7A7AFF31302FFF2E2B27CF3D30234F7F7F000200 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A72000000002C2A2761292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF999999FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E3E3FF7D7D7DFF343333FF2E2B27C92F + 2F272000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF312B257B2A2A2A18302B252F2A2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF30 + 2B258D2A2A2A18432F144B2B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000038381C092A2A2A182A + 2A2A182A2A2A182A2A2A182A2A2A182A2A2A182A2A2A182A2A2A182A2A2A182A + 2A2A182A2A2A182A2A2A182A2A2A182F2B263B2B2A2AFFBBBBBBFFCACACAFFCA + CACAFFC9C9C9FFC9C9C9FFCACACAFFC9C9C9FFC9C9C9FFC9C9C9FF333333FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF6D6D6DFFC9C9C9FFCACACAFFC9C9C9FFC9 + C9C9FFCACACAFFC9C9C9FFCACACAFFC9C9C9FFC9C9C9FFCACACAFFCACACAFFC9 + C9C9FFC9C9C9FFC9C9C9FFC2C2C2FF707070FF2C2C2CFF292929FF323232FFC8 + C8C8FFC9C9C9FFC9C9C9FFC9C9C9FFE6E6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7FF787878FF2B + 2B2BF8342D236B000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A7200000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000007F7F00022D2A26E9A6A6A6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF363636FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFCBCBCBFF4E4E4EFF2A2A2AFFD5 + D5D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFBD + BDBDFF313130FF2D2926432A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000272727542A + 2A2A552A2A2A552A2A2A552A2A2A552A2A2A552A2A2A552A2A2A552A2A2A552A + 2A2A552A2A2A552A2A2A552A2A2A552A2A2A55292929AE595959FFB9B9B9FFB9 + B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FFB9B9B9FF323232FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFF525252FFA0 + A0A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF949494FF2E2A26BB2A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2A28FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2B23820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8FFF5E + 5E5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFACACACFF2E2B25DA2A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2A28FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000050310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C6FF31 + 3131FFEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF757575FF2B2926982A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D25820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFF37 + 3737FFC8C8C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 + D3D3FF2C2C2BFF312C27342A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 + 6464FF9D9D9DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2FF4D + 4D4DFF312C259C000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000050350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 + 7373FF8B8B8BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFF6D6D6DFF2B + 2928D150351A13000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFFD9D9D9FF2B2B2BFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 + 8080FF7C7C7CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9A9A9FF2A2A29DF28 + 28281300000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFFFFFFFFF6F6F6FFF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 + 9292FF666666FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFF444444FF342C247E00 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7F + 7F7FFFC9C9C9FF2B2B2BFF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D + 9D9DFF4C4C4CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDEDEFF2D2C2AFF3F351F1800 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF7C + 7C7CFF5C5C5CFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 + A9A9FF404040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9A9A9FF2A2929D20000000100 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2A28FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000050350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A2A5A7F7F7F027F7F7F027F7F7F027F7F7F027F7F7F02573D1A1D2B29278D2B + 2A28FE303030FF757575FFC3C3C3FFDDDDDDFFDDDDDDFFDDDDDDFFDDDDDDFFDD + DDDDFFDDDDDDFFDDDDDDFFDDDDDDFFDDDDDDFFDDDDDDFFDDDDDDFFDDDDDDFFA4 + A4A4FF2A2A2AFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 + C5C5FF373737FFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF707070FF312C27A10000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2A28FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF28 + 2828590000000000000000000000000000000000000000000000000000000048 + 3A1D23302C26782B2A28C8303030FEA0A0A0FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8FF48 + 4848FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 + F1F1FF2E2E2EFFE2E2E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9D9D9FF83 + 8383FF6A6A6AFF7A7A7AFFA6A6A6FFF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FF3E3E3EFF372E22580000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D25820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2D + 2923C9332A20AC332A20AC332A20AC332A20AC332A20AC332A20AC332A20AC33 + 2A20AC332A20AC332A20AC2D2A25EB2A2A2AFF717171FF7F7F7FFF7F7F7FFF7F + 7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF6D6D6DFF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 + F9F9FF3F3F3FFFC1C1C1FFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C7FF313131FF29 + 2929FF292929FF292929FF292929FF393939FFA0A0A0FFFCFCFCFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3B3B3FF2B2A28F04836240E0000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000050310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF696969FF848484FFFFFFFFFFFFFFFFFFF3F3F3FF424242FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF636363FFF2F2F2FFFF + FFFFFFFFFFFFFFFEFEFEFFC4C4C4FF373737FE312C256D000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000050350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF303030FF969696FF2F2F2FFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFB2B2B2FF3B3B3BFFF3F3F3FFFFFFFFFFADADADFF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF4A4A4AFF76 + 7676FF727272FF545454FF2C2B2BF62A2A286B00000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2A28FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF3C + 3C3CFFDCDCDCFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF9F9F9FF494949FF858585FFFEFEFEFF757575FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF53 + 5353FF464646FF292929FF2E2B27530000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2AFF292929FF292929FF292929FF52 + 5252FFFEFEFEFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFCCCCCCFF343434FF858585FF3E3E3EFF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF86 + 8686FF808080FF292929FF2E2B27880000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054310D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF444444FF9F9F9FFFC3C3C3FFBCBCBCFF818181FF303030FF52 + 5252FFFEFEFEFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFCDCDCDFF4E4E4EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FFBC + BCBCFF717171FF292929FF312B26E30000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003127271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF32 + 2D25820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF6C6C6CFFBFBFBFFF4C4C4CFF2C2C2CFF303030FF757575FFBEBEBEFF72 + 7272FFFEFEFEFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFF525252FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF2C2C2CFF969696FFD9 + D9D9FF2E2E2EFF292929FF292929EC0000000000000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2928FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000050350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF68 + 6868FFAEAEAEFF2C2C2CFF292929FF292929FF292929FF292929FF404040FFD0 + D0D0FFFFFFFFFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF919191FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF515151FFC3C3C3FFDADADAFF45 + 4545FF292929FF292929FF2C2A28FF4B361B2F00000000000000000000000000 + 00000000000000000000002A2A29FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A54000000003131271A2B2A28FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2D23820000000054350D392B2A28FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A720000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF343434FFC2 + C2C2FF2E2E2EFF292929FF292929FF292929FF292929FF292929FF292929FF36 + 3636FFCBCBCBFFFFFFFFFF303030FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF868686FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9FF494949FF292929FF29 + 2929FF292929FF2B2B2BFF626262FFB1B1B1FFFAFAFAFFA6A6A6FF333333FF29 + 2929FF292929FF292929FF2A2929FF352F253000000000000000000000000000 + 00000000000000000000002B2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A + 2928FB2A2928FB2A2928FB2A2928FB2B2B28520000000032321E192C2927FB2A + 2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB34 + 2C247F0000000056360D382C2A26FB2A2928FB2A2928FB2A2928FB2A2928FB2A + 2928FB2A2928FB2A2928FB2A2928FB2D2B287000000000000000002A2928FA2A + 2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A + 2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A + 2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB2A2928FB787877FF77 + 7777FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF3D3D3DFFE4E4E4FF383838FF313131FF313131FF313131FF313131FF31 + 3131FF313131FF313131FF313131FF8A8A8AFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3FFB0B0B0FFA5 + A5A5FFB2B2B2FFE5E5E5FFFDFDFDFFBBBBBBFF565656FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2A2A3000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000D5CFC9AC32 + 3232FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF7D7D7DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFF8 + F8F8FFE6E6E6FFFFFFFFFFB7B7B7FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2A2A29FF3A2F253000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000CCC7C1F02A + 2A2AFF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF393939FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFFF2D + 2D2DFF343434FFF5F5F5FFE0E0E0FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2B2A27FE4932162D00000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000C5C5C5F029 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF3B3B3BFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF858585FF29 + 2929FF2A2A2AFFCDCDCDFFEAEAEAFF2E2E2EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929EC0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000D3D3D2E12F + 2F2FFF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF878787FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D4D4DFF29 + 2929FF292929FFB1B1B1FFEBEBEBFF2E2E2EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF312B27DE0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000EFE0C943BA + BAB9E8434343FF292929FF292929FF292929FF292929FF292929FF292929FF2F + 2F2FFF6D6D6DFFF4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4E4E4FF2B2B2BFF29 + 2929FF292929FF9E9E9EFFE7E7E7FF2B2B2BFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2E2B27880000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000091 + 8B8554B1B1B0FFB2B2B2FF929292FF868686FF9D9D9DFFA7A7A7FFB9B9B9FFBB + BBBBFFB6B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A6A6FF292929FF29 + 2929FF292929FFA2A2A2FFC9C9C9FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2C2824450000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000055 + 5555032B2A29DE323232FF4A4A4AFF595959FF888888FFA3A3A3FF2E2E2EFF2A + 2A2AFF323232FFF2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF616161FF292929FF29 + 2929FF292929FFBEBEBEFF9A9A9AFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF2B2928F951361B1C0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000002F2C2685292929FF292929FF292929FF3B3B3BFFD1D1D1FF2A2A2AFF29 + 2929FF292929FFA3A3A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0FF2C2C2CFF292929FF29 + 2929FF2B2B2BFFD6D6D6FF606060FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF342D25B9000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000004B3416222C2A27FD292929FF292929FF292929FFBBBBBBFF414141FF29 + 2929FF292929FF545454FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF959595FF292929FF292929FF29 + 2929FF383838FFEFEFEFFF353535FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF332D264F000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002C2A288A292929FF292929FF292929FF626262FF959595FF29 + 2929FF292929FF292929FFC3C3C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5FF3C3C3CFF292929FF292929FF29 + 2929FF7F7F7FFFA4A4A4FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF2B2A27D300000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000004836241C2D2B28FB292929FF292929FF2D2D2DFFBCBCBCFF2F + 2F2FFF292929FF292929FF636363FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0B0B0FF292929FF292929FF292929FF2A + 2A2AFFC2C2C2FF4E4E4EFF292929FF292929FF292929FF292929FF292929FF29 + 2929FF2D2A286600000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000312B2787292929FF292929FF292929FF686868FF77 + 7777FF292929FF292929FF292929FFD0D0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF8F8F8FF454545FF292929FF292929FF292929FF57 + 5757FFB2B2B2FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2929D20000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000333333052B2A29DF292929FF292929FF2C2C2CFFB3 + B3B3FF2E2E2EFF292929FF292929FF757575FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFAEAEAEFF292929FF292929FF292929FF292929FFB6 + B6B6FF494949FF292929FF292929FF292929FF292929FF292929FF292929FF31 + 2C27620000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002B2B274D292929FF292929FF292929FF5C + 5C5CFF818181FF292929FF292929FF2D2D2DFFDEDEDEFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF7F7F7FF414141FF292929FF292929FF292929FF696969FF8E + 8E8EFF292929FF292929FF292929FF292929FF292929FF292929FF2D2A28CB7F + 0000020000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000022E2B26C0292929FF292929FF2A + 2A2AFF959595FF2E2E2EFF292929FF292929FF898989FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFA4A4A4FF292929FF292929FF292929FF3A3A3AFFB3B3B3FF2D + 2D2DFF292929FF292929FF292929FF292929FF292929FF2B2A29FF322D283800 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000323228192B2928F5292929FF29 + 2929FF454545FF666666FF292929FF292929FF343434FFEEEEEEFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFF9F9F9FF444444FF292929FF292929FF2F2F2FFFA7A7A7FF414141FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF302C279A0000000100 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000332E2663292929FF29 + 2929FF292929FF2B2B2BFF292929FF292929FF292929FFA6A6A6FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFB2B2B2FF292929FF292929FF2E2E2EFFA1A1A1FF575757FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF2C2A27E338381C090000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002C2A27A729 + 2929FF292929FF292929FF292929FF292929FF292929FF464646FFFAFAFAFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC + FCFCFF545454FF292929FF292929FF4B4B4BFF595959FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2C2A28FF342C243F000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002F2F2F102F + 2B25F2292929FF292929FF292929FF292929FF292929FF2A2A2AFFC9C9C9FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC + CCCCFF2A2A2AFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF322C257900000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000031 + 2C2839292828FB292929FF292929FF292929FF292929FF292929FF717171FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 + 7676FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2F2B25B60000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000382E2284292929FF292929FF292929FF292929FF292929FF363636FFF1 + F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEFF31 + 3131FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF2A2A28C12E2E2E0B0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000322C26A5292929FF292929FF292929FF292929FF292929FFAF + AFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF999999FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF2A2928EF392E222C000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000004E3A270D2B2A28C8292929FF292929FF292929FF292929FF67 + 6767FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4FFF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A29FF352E244C00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000392E24312C2A28FF292929FF292929FF292929FF37 + 3737FFF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCCFF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2D + 2A28710000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002F2B2691292929FF292929FF292929FF29 + 2929FFCECECEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF858585FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF2D2A26BE00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000003333330A2B2A28EB292929FF292929FF29 + 2929FF939393FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D8D8FF8C8C8CFF6F + 6F6FFF6B6B6BFF737373FF939393FFD9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFF3A3A3AFF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF2A2929E651391C2C00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000002D292892292929FF292929FF29 + 2929FF676767FFFFFFFFFFFFFFFFFFFFFFFFFF9C9C9CFF7C7C7CFFE4E4E4FFFE + FEFEFFFFFFFFFFFEFEFEFFDDDDDDFF848484FF7C7C7CFFE9E9E9FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF2D2926490000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000002D2D2D112B2A29FF292929FF29 + 2929FF525252FFFEFEFEFFFDFDFDFF7E7E7EFFA6A6A6FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9D9D9FF696969FFA3A3A3FFF8 + F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF838383FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF2D2A26B9555500030000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000002C2928C9292929FF29 + 2929FF3A3A3AFFD3D3D3FF6B6B6BFFBFBFBFFFFFFFFFFFFAFAFAFFC5C5C5FFAB + ABABFFADADADFFDADADAFFFCFCFCFFFFFFFFFFFFFFFFFFFEFEFEFFB4B4B4FF72 + 7272FF868686FFE7E7E7FFFFFFFFFFFDFDFDFF3C3C3CFF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2929FF3E301F49000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000002B29277B292929FF29 + 2929FF2B2B2BFF777777FFE9E9E9FFF4F4F4FF949494FFA4A4A4FFCACACAFFE5 + E5E5FFDEDEDEFFBEBEBEFF9D9D9DFF9C9C9CFFF1F1F1FFFFFFFFFFFFFFFFFFFF + FFFFFFD5D5D5FF6D6D6DFFBBBBBBFFCFCFCFFF2A2A2AFF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2F2C27D53F3F3F04000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000372C262E292929FF29 + 2929FF7E7E7EFFFEFEFEFFCFCFCFFF8C8C8CFFEEEEEEFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDFFA9A9A9FF979797FFF6F6F6FFFF + FFFFFFFFFFFFFFFAFAFAFF7F7F7FFF626262FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF342E257400000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003131271A2B2A28FF40 + 4040FFF7F7F7FFBABABAFFA1A1A1FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBFF848484FFC9 + C9C9FFFFFFFFFFFFFFFFFFF6F6F6FF454545FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2A2A29FF2E2E221600000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000055550003292928DD60 + 6060FFE1E1E1FF919191FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFA4 + A4A4FFACACACFFFEFEFEFFFFFFFFFF8E8E8EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2A2928DD5555000300000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002A2928D83D + 3D3DFFE9E9E9FFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFB1B1B1FFEAEAEAFFFFFFFFFF7E7E7EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2A2928D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000312C26D829 + 2929FF4B4B4BFFD4D4D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFBABABAFF2E2E2EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF362E25D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000312C26D829 + 2929FF292929FF484848FFA7A7A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC + FCFCFFBBBBBBFF757575FF2D2D2DFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF372F25D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002C2A28D829 + 2929FF494949FFFAFAFAFF828282FF7D7D7DFFFFFFFFFFD1D1D1FF9C9C9CFFF4 + F4F4FFFFFFFFFFDDDDDDFF909090FFF7F7F7FFFFFFFFFFDEDEDEFF8B8B8BFF4E + 4E4EFFA0A0A0FFF3F3F3FF909090FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF322E25D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000292929D829 + 2929FFB1B1B1FFF8F8F8FF484848FF292929FF6B6B6BFFEAEAEAFFE6E6E6FFFB + FBFBFFFFFFFFFFF3F3F3FFEEEEEEFFF1F1F1FF939393FF303030FF292929FF2D + 2D2DFFCBCBCBFFFFFFFFFFEBEBEBFF313131FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2F2B26D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000292929D832 + 3232FFF4F4F4FFC7C7C7FF2A2A2AFF292929FF555555FF6F6F6FFF858585FFB0 + B0B0FFCACACAFFA9A9A9FF808080FF676767FF5B5B5BFF292929FF292929FF29 + 2929FF828282FFFFFFFFFFFFFFFFFF646464FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2E2A28D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000553F150C2C2A28EA4A + 4A4AFFFDFDFDFFB7B7B7FF292929FF292929FF7C7C7CFFFFFFFFFF9E9E9EFF29 + 2929FF292929FF2D2D2DFFDDDDDDFFFFFFFFFF8E8E8EFF292929FF292929FF29 + 2929FF686868FFFFFFFFFFFFFFFFFF8B8B8BFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2E2A28D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003A311D1A2B2A28FF51 + 5151FFFFFFFFFFC9C9C9FF2A2A2AFF292929FF9E9E9EFFFFFFFFFFA7A7A7FF29 + 2929FF292929FF313131FFF7F7F7FFFFFFFFFFA9A9A9FF292929FF292929FF29 + 2929FF888888FFFFFFFFFFFFFFFFFF8D8D8DFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF322C26D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003131271A2B2A29FF47 + 4747FFFCFCFCFFFBFBFBFF676767FF5A5A5AFFF3F3F3FFFFFFFFFF8E8E8EFF29 + 2929FF292929FF2B2B2BFFF2F2F2FFFFFFFFFFF4F4F4FF3D3D3DFF292929FF2D + 2D2DFFD1D1D1FFFFFFFFFFFFFFFFFF7E7E7EFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF383024D80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003131271A2A2A29FF2E + 2E2EFFEDEDEDFFFFFFFFFFFDFDFDFFFCFCFCFFFFFFFFFFFDFDFDFF565656FF29 + 2929FF292929FF292929FFB8B8B8FFFFFFFFFFFFFFFFFFD6D6D6FF727272FFB8 + B8B8FFFFFFFFFFFFFFFFFFFCFCFCFF414141FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF3B2E1DD80000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003131271A2A2A29FF29 + 2929FF959595FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCACACAFF2B2B2BFF29 + 2929FF292929FF292929FF686868FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFC4C4C4FF2A2A2AFF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2B2927870000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003131271A2A2A29FF29 + 2929FF363636FFCDCDCDFFFFFFFFFFFFFFFFFFE0E0E0FF474747FF292929FF29 + 2929FF292929FF292929FF2A2A2AFFBABABAFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF4F4F4FF4C4C4CFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292927800000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003A31271A2B2A28FF29 + 2929FF292929FF2E2E2EFF797979FF808080FF333333FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF303030FFAFAFAFFFFFFFFFFFFFFFFFFFFF + FFFFFFDEDEDEFF5B5B5BFF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF3B2F23800000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000004C33190A2C2927E729 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF4A4A4AFF7A7A7AFF67 + 6767FF2C2C2CFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF272727200000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002A2929D829 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF2B2A28FE4131201F0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002F2B27B029 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF2A2827E0000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002C2A287729 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF2D2C2896000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000322B24232A + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF372E2357000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000333333052A + 2928D7292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF2B2A27EC2A2A2A06000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000035 + 2E256E292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF2F2B258000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000055 + 555503292929D2292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2F + 2B27F84238251B00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000003C312348292928FC292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FE2C + 2C25510000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002929294A292828FD292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF352E24A600 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002B28284C2C2927FC292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FE372E24A60000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002A2A2A1E322C25BC292928FC292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF2A2828DA332D264F000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000003832272D2C2A28782F + 2B27DE292929F1292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929F12C2B27BC312C24625555550300000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000003F1F1F082C2C262E3B30214545331F803F33238045352180372C214531 + 2C262E3F3F1F0800000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE03FFFFFFFFFFFFFF + FFFFFFF80FFFFFF800FFFF00000000200000000000000000007FFF0000000020 + 0000000000000000001FFF00000000200000000000000000000FFF0000000020 + 00000000000000000007FF000000002000000000000000000003FF0000000020 + 00000000000000000001FF0000000020000000000000000000007F0000000020 + 000000000000000000001F000000002000000000000000000000070000000020 + 000000000000000000000300000000200000000000000000000001002002003F + FF80000000000000000000002002003000000000000000000000000020020030 + 0000000000000000000000002002003000000000000000000000000020020030 + 0000000000000000000000002002003000000000000000000000010020020030 + 0000000000000000000001002002003000000000000000000000030020020030 + 0000000000000000000007002002003000000000000000000000070020020030 + 00000000000000000000070020020030000000000000000000000F0020020030 + 03F800000000000000000F0020020030000000000000000000000F0020020030 + 000000000000000000001F0020020030000000000000000000003F0020020030 + 000000000000000000007F0020020030000000000000000000007F0020020030 + 000000000000000000007F0020020030000000000000000000007F0020020030 + 000000000000000000003F0020020030000000000000000000003F0020020030 + 000000000000000000003FFFFFFFFFFFFFFFF0000000000000003FFFFFFFFFFF + FFFFF0000000000000003FFFFFFFFFFFFFFFF0000000000000007FFFFFFFFFFF + FFFFF0000000000000007FFFFFFFFFFFFFFFF0000000000000007FFFFFFFFFFF + FFFFF8000000000000007FFFFFFFFFFFFFFFF8000000000000007FFFFFFFFFFF + FFFFFC00000000000000FFFFFFFFFFFFFFFFFC00000000000000FFFFFFFFFFFF + FFFFFE00000000000001FFFFFFFFFFFFFFFFFE00000000000001FFFFFFFFFFFF + FFFFFF00000000000003FFFFFFFFFFFFFFFFFF00000000000003FFFFFFFFFFFF + FFFFFF80000000000003FFFFFFFFFFFFFFFFFF80000000000007FFFFFFFFFFFF + FFFFFFC0000000000007FFFFFFFFFFFFFFFFFFE000000000000FFFFFFFFFFFFF + FFFFFFF000000000001FFFFFFFFFFFFFFFFFFFF000000000003FFFFFFFFFFFFF + FFFFFFF800000000007FFFFFFFFFFFFFFFFFFFFC00000000007FFFFFFFFFFFFF + FFFFFFFE0000000000FFFFFFFFFFFFFFFFFFFFFE0000000001FFFFFFFFFFFFFF + FFFFFFFF0000000003FFFFFFFFFFFFFFFFFFFFFF8000000007FFFFFFFFFFFFFF + FFFFFFFF8000000007FFFFFFFFFFFFFFFFFFFFFFC00000000FFFFFFFFFFFFFFF + FFFFFFFFC00000000FFFFFFFFFFFFFFFFFFFFFFFE00000001FFFFFFFFFFFFFFF + FFFFFFFFE00000001FFFFFFFFFFFFFFFFFFFFFFFE00000003FFFFFFFFFFFFFFF + FFFFFFFFE00000003FFFFFFFFFFFFFFFFFFFFFFFE00000003FFFFFFFFFFFFFFF + FFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFF + FFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFF + FFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFF + FFFFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFE00000007FFFFFFFFFFFFFFF + FFFFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFE00000007FFFFFFFFFFFFFFF + FFFFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFE00000007FFFFFFFFFFFFFFF + FFFFFFFFE00000007FFFFFFFFFFFFFFFFFFFFFFFE00000007FFFFFFFFFFFFFFF + FFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFF + FFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFF + FFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFF8000001FFFFFFFFFFFFFFFF + FFFFFFFFF8000001FFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFFFFFFFFFFFFFF + FFFFFFFFFE000007FFFFFFFFFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFF + FFFFFFFFFF80001FFFFFFFFFFFFFFFFFFFFFFFFFFFE0003FFFFFFFFFFFFFFFFF + FFFFFFFFFFFC01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF280000004000000080000000010020000000000000 + 4000006400000064000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000003333330537 + 2F1F20332A25363624240E000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000002C + 2A275B413F3DB2454442BF2F2F2D823B2F232B00000000000000000000000000 + 0000000000000000000000000000000000000028282898282828982828289828 + 2828982828289828282898282828982828289828282898282828982828289828 + 282898282828982828289828282898282828982929296E2B2B231D2828289828 + 2828982828289828282898282828982828289828282898282828982828289828 + 28289828282898282828982828289828282898282828982A2A28A93F3E3DF29D + 9D9DFF2B2B2BFF292928FC2B2A27BB2828289828282898282828982828289828 + 2828982828289828282898282828982828289828282898282828982A2928BE40 + 4040FF989898FFFFFFFFFFE6E6E6FF868585FA33312B80000000010000000000 + 00000000000000000000000000000000000000292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929B92A2A2530292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF616161FFFFFFFFFFFFFFFFFFFFFFFFFFC0C0C0FF3937349C0000000100 + 00000000000000000000000000000000000000292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929B92A2A2530292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF616161FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBBBBBFF36322D9600 + 00000100000000000000000000000000000000292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929B92A2A2530292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF616161FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCACACAFF4F + 4E4ECA322E2747000000010000000000000000292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929B92A2A2530292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF616161FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 + F9F9FFA3A3A3FF4A4946C72F2B263B00000000292929FF292929FF292929FF29 + 2929FF2A2927B32A2A1F182A2929FF292929FF292929FF292929FF2C2927C347 + 2D13272A2928FF292929FF292929FF292929FF292929B9000000022A2A2A0C2A + 2A2A0C2A2A2A0C2A2A2A0C2A2A2A0C2A2A2A0C303024156F6E6DFAE4E4E4FFE4 + E4E4FFE4E4E4FFE4E4E4FF2F2F2FFF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF515151FFE4E4E4FFE4E4E4FFE4 + E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFE4E4E4FFCCCCCCFF5B5B5BFF7E7E7EFFE4 + E4E4FFEBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF9F9F9FF989898FD322F2A6B292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000282828AA28 + 2828AA282828AA282828AA282828AA282828AA282828AA363636EB717171FF71 + 7171FF717171FF717171FF2B2B2BFF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFF787878FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D6C69E5292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A8A8AFFED + EDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFF4F4F4FF464644B2292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B5B5FFCA + CACAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFEFEFEFF797878F4342E222C292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF545454FFD1 + D1D1FF292929FF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4C4C4FFB8 + B8B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFB9B9B9FF2C29265C00000000292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF535353FF5E + 5E5EFF292929FF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1D1D1FFA2 + A2A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF7B7A79F4552A2A0600000000292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929AC00000001000000015F3F1F082D2A266B43 + 4342CF9C9C9CFFEEEEEEFFEEEEEEFFEEEEEEFFEEEEEEFFEEEEEEFFB0B0B0FF29 + 2929FF292929FF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDEDEDFF90 + 9090FFFFFFFFFFFFFFFFFFD6D6D6FFB9B9B9FFE6E6E6FFFFFFFFFFFFFFFFFFFF + FFFFFFFDFDFDFF4B4847BE0000000000000000292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF2A2928F12D2924D62D2924D62D2924D62D2924D62D + 2924D62A2928FA515151FF545454FF545454FF545454FF545454FF3A3A3AFF29 + 2929FF292929FF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFF7B + 7B7BFFFFFFFFFFBFBFBFFF2B2B2BFF292929FF2D2D2DFF8A8A8AFFFCFCFCFFFF + FFFFFFABABABFF2C2A275B0000000000000000292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF2E2E2EFFA8 + A8A8FF2C2C2CFF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C + 8C8CFFDDDDDDFF5D5D5DFF292929FF292929FF292929FF292929FF4F4F4FFF4D + 4D4DFF2C2A2A6D000000000000000000000000292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF303030FF6D6D6DFF646464FF3F3F3FFFFE + FEFEFF2D2D2DFF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 + F2F2FF757575FF2E2E2EFF292929FF292929FF292929FF292929FF656565FF51 + 5151FF2F2A275B000000000000000000000000292929FF292929FF292929FF29 + 2929FF282828A93A27270D2A2929FF292929FF292929FF292929FF2B2A27C051 + 36091C2A2928FF292929FF292929FF292929FF292929B900000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF393939FF818181FF323232FF3E3E3EFF909090FFFF + FFFFFF2D2D2DFF292929FF292929FF292929FF575757FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFEFEFEFF4D4D4DFF292929FF292929FF292929FF5A5A5AFFA3A3A3FF2A + 2A2AFF2D2927860000000000000000000000002A2928FD2A2928FD2A2928FD2A + 2928FD2A2828A83A27270D2A2928FD2A2928FD2A2928FD2A2928FD2C2A26BF51 + 36091C2B2928FD2A2928FD2A2928FD2A2928FD292928B7000000002A2928FD2A + 2928FD2A2928FD2A2928FD2A2928FD2A2928FD2A2928FD2A2928FD2A2928FD2A + 2928FD2A2928FD2A2928FD797979FF2A2A2AFF292929FF292929FF2C2C2CFFBB + BBBBFF303030FF2D2D2DFF2D2D2DFF2D2D2DFF5A5A5AFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFC9C9C9FF6A6A6AFF7B7B7BFFB3B3B3FF888888FF2C2C2CFF29 + 2929FF2929289800000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000767472E6292929FF292929FF292929FF292929FF42 + 4242FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFB4B4B4FFC3C3C3FF7A7A7AFF292929FF292929FF29 + 2929FF2D2A279600000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000787878F4292929FF292929FF292929FF292929FF45 + 4545FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF494949FF747474FF8C8C8CFF292929FF292929FF29 + 2929FF2C2A277300000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000B9B7AF60747473FF5B5B5BFF656565FF737373FFC6 + C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFE2E2E2FF292929FF656565FF818181FF292929FF292929FF29 + 2929FF2D2D283300000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000012C2C2BD83D3D3DFF8E8E8EFF2B2B2BFF7C + 7C7CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF9B9B9BFF292929FF7A7A7AFF535353FF292929FF292929FF2C + 2A27EC4848240700000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002D2B266A292929FF5C5C5CFF4A4A4AFF34 + 3434FFF0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFCFCFCFF494949FF292929FF939393FF2C2C2CFF292929FF292929FF2B + 2929880000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000482424072B2A28E02A2A2AFF727272FF29 + 2929FF979797FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFBBBBBBFF292929FF353535FF7B7B7BFF292929FF292929FF282828F427 + 27271A0000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000002B2B284C292929FF595959FF40 + 4040FF3D3D3DFFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD + FDFDFF505050FF292929FF757575FF313131FF292929FF292929FF2C2A288B00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000002C2A27B3292929FF5B + 5B5BFF292929FFABABABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 + B8B8FF292929FF4E4E4EFF525252FF292929FF292929FF2B2A29E63624240E00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000032282819292928E929 + 2929FF292929FF505050FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFF56 + 5656FF333333FF5E5E5EFF292929FF292929FF2A2929FF2F2C254B0000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000302D264F29 + 2929FE292929FF292929FFCECECEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0D0D0FF29 + 2929FF292929FF292929FF292929FF292929FF2D2A288B000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000030 + 2A268A292929FF292929FF808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF787878FF29 + 2929FF292929FF292929FF292929FF2B2928B700000003000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000055 + 5500032A2928BE292929FF3C3C3CFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2FF333333FF29 + 2929FF292929FF292929FF292928DC3528281300000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000002D2D2727292828FA292929FFD8D8D8FFFFFFFFFFF5F5F5FFBEBEBEFFB7 + B7B7FFDADADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAEAEAEFF292929FF29 + 2929FF292929FF282828F9342B233A0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002A2828A8292929FFADADADFFDEDEDEFFAFAFAFFFF8F8F8FFFF + FFFFFFD8D8D8FFAAAAAAFFE6E6E6FFFFFFFFFFFFFFFFFF656565FF292929FF29 + 2929FF292929FF2B292781000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002C282851292929FF6C6C6CFFC2C2C2FFCCCCCCFFC8C8C8FFC9 + C9C9FFCDCDCDFFFBFBFBFFC9C9C9FFACACACFFE1E1E1FF2E2E2EFF292929FF29 + 2929FF2A2928F543351A13000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000382A2A122F2F2FFFCBCBCBFFBEBEBEFFFBFBFBFFFFFFFFFFFF + FFFFFFFBFBFBFFCBCBCBFFD0D0D0FFFEFEFEFF878787FF292929FF292929FF29 + 2929FF2C2A27A200000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000013D3D3DEDD6D6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFE8E8E8FFD1D1D1FFC2C2C2FF292929FF292929FF29 + 2929FF2929276E00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002C2A27EC646464FFE9E9E9FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFEFEFEFFCBCBCBFF505050FF292929FF292929FF29 + 2929FF362F256C00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2929ECBBBBBBFF5C5C5CFFC9C9C9FFDCDCDCFFF4 + F4F4FFD9D9D9FFA8A8A8FF4C4C4CFFD7D7D7FF757575FF292929FF292929FF29 + 2929FF312C256C00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000055550003353434F0DCDCDCFF292929FF909090FF7F7F7FFF72 + 7272FFB1B1B1FF4F4F4FFF292929FFBABABAFFBBBBBBFF292929FF292929FF29 + 2929FF2C2A286C00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000003A27270D3B3B3AFFF0F0F0FF454545FFE4E4E4FF626262FF2B + 2B2BFFFAFAFAFF818181FF2A2A2AFFD6D6D6FFC2C2C2FF292929FF292929FF29 + 2929FF362F256C00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002727270D2B2A2AFFE0E0E0FFFEFEFEFFF1F1F1FF353535FF29 + 2929FFC7C7C7FFF5F5F5FFCACACAFFFFFFFFFF8B8B8BFF292929FF292929FF29 + 2929FF342B1F5800000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000003A27270D2A2929FF565656FFBEBEBEFF616161FF292929FF29 + 2929FF4F4F4FFFEBEBEBFFFFFFFFFFCBCBCBFF323232FF292929FF292929FF29 + 2929FF332B274000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000007F7F0002292928EF292929FF292929FF292929FF292929FF29 + 2929FF292929FF313131FF4D4D4DFF2A2A2AFF292929FF292929FF292929FF2A + 2929FF2F2F1F1000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002B2928C9292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2928DD0000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002C2A287F292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2B + 2928920000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000362D241C282828F4292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF2A2928FD34 + 2D27270000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002B292663292929FE292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF2E2A267D00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000002A2A28592A2928EE292929FF29 + 2929FF292929FF292929FF292929FF292929FF292928F62E2A267D0000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000452E2E0B2F2C265628 + 2828892F2B26B1312D26BF2A2A279C2A2A276D32282819000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3FFE0FF0000000000 + 00003F000000000000001F000000000000000F00000000000000030000000000 + 0000010000000000000000000040000000000000004000000000000000400000 + 0000000000400000000001000040000000000100004000000000030000400000 + 0000030000400000000007000040000000000700004000000000070000400000 + 000007FFFFFFFC00000007FFFFFFFC00000007FFFFFFFC00000007FFFFFFFC00 + 000007FFFFFFFE0000000FFFFFFFFE0000000FFFFFFFFF0000001FFFFFFFFF80 + 00001FFFFFFFFF8000003FFFFFFFFFC000007FFFFFFFFFE000007FFFFFFFFFE0 + 0000FFFFFFFFFFF00001FFFFFFFFFFF80003FFFFFFFFFFF80003FFFFFFFFFFF8 + 0007FFFFFFFFFFF80007FFFFFFFFFFFC0007FFFFFFFFFFFC0007FFFFFFFFFFF8 + 0007FFFFFFFFFFF80007FFFFFFFFFFF80007FFFFFFFFFFF80007FFFFFFFFFFF8 + 0007FFFFFFFFFFFC000FFFFFFFFFFFFC000FFFFFFFFFFFFC000FFFFFFFFFFFFE + 001FFFFFFFFFFFFF003FFFFFFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28000000300000006000000001 + 0020000000000000240000640000006400000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000200 + 0000020000000200000002000000020000000200000002000000020000000200 + 0000020000000200000002000000010000000100000002000000020000000200 + 000002000000020000000200000002000000020000000200000002000000022F + 2F251B302D2A542C292762322D272D0000000200000002000000020000000200 + 000002000000020000000200000002333333053D3D3B707B7A79C8757372BB35 + 322E69000000020000000000000000000000000000000000000000292929EB29 + 2929EB292929EB292929EB292929EB292929EB292929EB292929EB292929EB29 + 2929EB292929EB292929EB292929802A282897292929EB292929EB292929EB29 + 2929EB292929EB292929EB292929EB292929EB292929EB292929EB292929EB2A + 2A29FCD8D8D8FF2B2B2BFF292929FD292929EB292929EB292929EB292929EB29 + 2929EB292929EB292929EB292929EB282828EE2D2D2DFF8F8F8FFFFFFFFFFFE0 + E0E0FF686664C02A2A2A0C00000000000000000000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2A28288A292928A4292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A2AFFEFEFEFFF2C2C2CFF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF888888FFFFFFFFFFFF + FFFFFFF3F3F3FF666361C22727270D000000000000000000000000292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF2A28288A292928A4292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A2AFFEFEFEFFF2C2C2CFF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF888888FFFFFFFFFFFF + FFFFFFFFFFFFFFF4F4F4FF8B8A8AE132302D643F3F3F0400000000292929FF29 + 2929FF292929FF2A2929C72A2828C8292929FF292929FF2A2929FF2C29279529 + 2929FF292929FF292929FF2A28288A2828285828282889282828892828288928 + 282889292928AB737373FF808080FF808080FF565656FF292929FF292929FF2A + 2A2AFFEFEFEFFF2C2C2CFF292929FF292929FF4D4D4DFF808080FF808080FF80 + 8080FF808080FF808080FF5F5F5FFF353535FF808080FFB9B9B9FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDDDDFF838281D92F2F2B3B292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A272727402828287F2828287F2828287F28 + 28287F29292892717171FF949494FF949494FF616161FF292929FF292929FF2A + 2A2AFFEFEFEFFF2C2C2CFF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFEFEFEFF9C9C9CFFF1F1F1FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF898786E1292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A2AFFEFEFEFFF2C2C2CFF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0FFB9B9B9FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFF686765B7292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A2AFFE5E5E5FF2B2B2BFF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8FFA0A0A0FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9C9CE72F2F2720292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2929FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF292929FF292929FF2A + 2A2AFF858585FF292929FF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFF919191FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FF43413F8800000000292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292928F63B + 2A191E4431131A362D1D3D3F3B36AC989797FBE2E2E2FFE2E2E2FFE2E2E2FFD2 + D2D2FF313131FF292929FF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9C9CFFFFFFFFFFD9D9D9FF95 + 9595FFC9C9C9FFFFFFFFFFFFFFFFFFD1D1D1FF2F2B274100000000292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292929FF2A + 2929FF2A2929FF2A2929FF2A2929FF292929FF2A2A2AFF2A2A2AFF2A2A2AFF2A + 2A2AFF484848FF2A2A2AFF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B9B9BFFF3F3F3FF3E3E3EFF29 + 2929FF2A2A2AFF797979FFACACACFF626262AD3F3F3F0400000000292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929FF2D2D2DFF5D5D5DFF3C + 3C3CFFD9D9D9FF2C2C2CFF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7FF787878FF292929FF29 + 2929FF292929FF2E2E2EFF6B6B6BFF2F2B263B0000000000000000292929FF29 + 2929FF292929FF2828287F2A282789292929FF292929FF2A2928FF4B2F121B2A + 2928FF292929FF292929FF2A28288A2A2A2A7F292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF2E2E2EFF717171FF2F2F2FFF56 + 5656FFE4E4E4FF2C2C2CFF292929FF292929FF818181FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9FF2D2D2DFF29 + 2929FF414141FF919191FF383838FF2C29276800000000000000002A2A287E2A + 2A287E2A2A287E2828283F2D2925442A2A287E2A2A287E2A2A287E4E3A130D2A + 2A287E2A2A287E2A2A287E292929442828283F2A2A287E2A2A287E2A2A287E2A + 2A287E2A2A287E2A2A287E2A2A287E2A2A287E6C6B68B02E2E2EFF292929FF29 + 2929FF636363FF989898FF979797FF979797FFC2C2C2FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D4D4FFBE + BEBEFF929292FF2F2F2FFF292929FF2A2A287200000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000A1A19F78292929FF292929FF29 + 2929FF3A3A3AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B2B2FF67 + 6767FF727272FF292929FF292929FF2F29265C00000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000F1E4D6136C6C6AE5636363FF6E + 6E6EFFA5A5A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF767676FF58 + 5858FF666666FF292929FF292929FF342D252200000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000002C2A267D2B2B2BFF6E + 6E6EFF494949FFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3FF333333FF71 + 7171FF373737FF292929FF2B2928D10000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000002F2F1F10292928EE5E + 5E5EFF2B2B2BFFBEBEBEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3A3A3FF292929FF72 + 7272FF292929FF292929FF2B2828580000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000002A2A27672F + 2F2FFF585858FF5C5C5CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FF3F3F3FFF4D4D4DFF43 + 4343FF292929FF2A2928D2000000020000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000333333052A + 2928C53B3B3BFF2B2B2BFFD5D5D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5A5A5FF3A3A3AFF555555FF29 + 2929FF292928FB302B273A000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000032 + 2B2423292928F0292929FF7A7A7AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFF464646FF2E2E2EFF292929FF29 + 2929FF2D2B278200000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000002F2C2650292929FE363636FFF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5C5C5FF292929FF292929FF292929FF2A + 2828AF0000000200000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002B292794292929FFC2C2C2FFFFFFFFFFFDFDFDFFF3F3F3FFFE + FEFEFFFFFFFFFFFFFFFFFFFFFFFFFF737373FF292929FF292929FF292928DB2F + 2F1F100000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000002A2A2A18292929F8919191FFDADADAFFC8C8C8FFDADADAFFC5 + C5C5FFD1D1D1FFFFFFFFFFF4F4F4FF313131FF292929FF292828FB2E29293700 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2828B5676767FFC2C2C2FFD7D7D7FFD6D6D6FFD6 + D6D6FFE5E5E5FFC1C1C1FFA1A1A1FF292929FF292929FF2A2928B80000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A28287EB5B5B5FFE9E9E9FFFFFFFFFFFFFFFFFFFF + FFFFFFDADADAFFDEDEDEFF8B8B8BFF292929FF292929FF2C2A27610000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002D2A2871717171FFF3F3F3FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFDADADAFF5A5A5AFF292929FF292929FF322C25510000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2828719E9E9EFF5F5F5FFFC3C3C3FFF5F5F5FFBE + BEBEFF5F5F5FFFADADADFF6C6C6CFF292929FF292929FF2F2C25510000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002B292781C3C3C3FF3A3A3AFFB5B5B5FF343434FFDB + DBDBFF2D2D2DFF999999FF9D9D9DFF292929FF292929FF2F2C25510000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A282889BBBBBBFFE5E5E5FF9C9C9CFF292929FFDE + DEDEFFB2B2B2FFEBEBEBFF7B7B7BFF292929FF292929FF372C21450000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002B292787424242FF909090FF333333FF292929FF5E + 5E5EFFE0E0E0FFB2B2B2FF2E2E2EFF292929FF292929FF342D27270000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A2767292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF292929F72A2A2A060000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002E28282C292929FE292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FF2B2928B7000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002C2A28BF292929FF292929FF292929FF29 + 2929FF292929FF292929FF292929FF292929FE2E2B2747000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002C2C2C172A2927D3292929FF292929FF29 + 2929FF292929FF292929FF292929FE2E2A268A00000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000038381C092D2A27602A2828A32E + 2A27C72C2B27C3292927992929253D0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000FFFFFFFFFF + FF0500FFFFFFFFFFFF0400FFFFFFFFFFFF0300FFFFFFFFFFFF0200FFFFFFFFFF + FF0100FFFFFFFFFFFF000000000000001FFFFF00000000000FE0E00000000000 + 07FFFF000000000001FFFF0000000000000000000000000000FFFF0000000000 + 0001000000000000000000000000000001282800000000000101000000000000 + 0100000000000000032A2900000000000301000000000000030200FFFFFC0000 + 030100FFFFFC0000030000FFFFFE0000070000FFFFFE0000071D00FFFFFF0000 + 070A00FFFFFF00000F0A00FFFFFF80001F1800FFFFFFC0001F1400FFFFFFE000 + 3F1800FFFFFFE0007F1C00FFFFFFF000FF2102FFFFFFF000FF1D02FFFFFFF000 + FF1902FFFFFFF000FF1502FFFFFFF000FF1102FFFFFFF000FF0D02FFFFFFF000 + FF0A02FFFFFFF000FF0702FFFFFFF001FF0302FFFFFFF801FF0F01FFFFFFF803 + FFFD01FFFFFFFC07FFF901FFFFFFFFFFFF0D01FFFFFFFFFFFFF301FFFFFFFFFF + FF2B00FFFFFFFFFFFFF001FFFFFFFFFFFF0E01FFFFFFFFFFFFE8012800000020 + 0000004000000001002000000000000010000064000000640000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000002828284C2828284C2828284C2828284C2828284C2828284C2828284C28 + 28284C2B2B24232828284C2828284C2828284C2828284C2828284C2828284C28 + 28284C292929506B6B69852A2A28902A2A27552828284C2828284C2828284C28 + 28284C2828284C35353386929290DC959392A9372F2F20000000000000000000 + 000000292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF29292974292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FFA9A9A9FF2B2B2BFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FFB0B0B0FFFFFFFFFFB9B9B9E635352E260000000000 + 000000292929FF292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF29292974292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FFA9A9A9FF2B2B2BFF292929FF292929FF292929FF292929FF29 + 2929FF292929FF292929FFB0B0B0FFFFFFFFFFFFFFFFFFCACACAF272706E8333 + 33220F292929FF292929FF2A2A2760292929FF292929FF312A2372292929FF29 + 2929FF2929295D2A2A2A5B2A2A2A5B2A2A2A5B484646A9AAAAAAFFAAAAAAFF2B + 2B2BFF292929FFA9A9A9FF2B2B2BFF292929FFA3A3A3FFF2F2F2FFF2F2F2FFF2 + F2F2FFC9C9C9FFB6B6B6FFFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFF9E + 9E9DD3292929FF292929FF2A2A2A5B292929FF292929FF302C226E2A2929FF29 + 2929FF2929295C292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FFA9A9A9FF2B2B2BFF292929FFABABABFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFBDBDBDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 + 9391B4292929FF292929FF2A2A2A5B292929FF292929FF302C256E2A2929FF29 + 2929FF2929295C292929FF292929FF292929FF292929FF292929FF292929FF29 + 2929FF292929FF767676FF292929FF292929FFABABABFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFBCBCBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCDCDFC28 + 282819292929FF292929FF2A2A2A5B292929FF292929FF302C226E2A2929FF29 + 2929FF2929295C292929FF292929FF2A28269D2E2A256D34312DB9818181FEA1 + A1A1FFA1A1A1FF4F4F4FFF292929FF292929FFABABABFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFBDBDBDFFEFEFEFFF797979FFA7A7A7FFFEFEFEFFA09F9FC500 + 000000292929FF292929FF2A2A2A5B292929FF292929FF302C256E2A2929FF29 + 2929FF2929295C292929FF292929FF292929FF292929FF292929FF292929FF2B + 2B2BFF494949FF858585FF2B2B2BFF292929FFABABABFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFDFDFDFFF777777FF292929FF292929FF545454FF2D28283200 + 000000292929FE292929FE2A2A275B2A2928FE292929FE302C226E2A2928FE29 + 2929FE2929295C292929FE292929FE292929FE292929FE292929FE292929FE57 + 5757FF313131FF9D9D9DFF2D2D2DFF2B2B2BFFACACACFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFC5C5C5FF4E4E4EFF6F6F6FFF484848FF2B2B274700 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000004E + 4E4DF6292929FF363636FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D8D8DFF565656FF292929FF2E2A264200 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000064 + 62628E636363FF787878FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFDFDFDFFF4C4C4CFF494949FF292828FA3333220F00 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000002D + 2D241C363636F7464646FFE1E1E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF8A8A8AFF5B5B5BFF2A2A2AFF292928A50000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000029292780474747FF828282FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFEDEDEDFF3C3C3CFF484848FF282828F92E2828260000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000002A2A2A062A2929CD333333FFF2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF939393FF393939FF292929FF2B292775000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000322B2423292928EFAEAEAEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFCFCFCFF3F3F3FFF292929FF2A2828A900000001000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A2872767676FFE0E0E0FFDBDBDBFFD7D7D7FFF9 + F9F9FFC4C4C4FF292929FF292929DE3333220F00000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000028282819646464FFD2D2D2FFE4E4E4FFE3E3E3FFD1 + D1D1FF707070FF292929FF2B2B286A0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000006A6969F6F9F9F9FFFFFFFFFFFFFFFFFFE1 + E1E1FF595959FF292929FF2F2A25360000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000180807FF6777777FFB0B0B0FFA0A0A0FF81 + 8181FF616161FF292929FF2F2A25360000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000002A2A2A068D8D8DFFC6C6C6FF3B3B3BFFCECECEFFB2 + B2B2FF686868FF292929FF342E24310000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000003F3F3F04343434FB5C5C5CFF292929FF656565FF90 + 9090FF2B2B2BFF292929FF332626140000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000292929D2292929FF292929FF292929FF29 + 2929FF292929FF292928DB000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002B29295D292929FF292929FF292929FF29 + 2929FF292929FF2C292768000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000002D2A2754292928B72C2927DB2A + 2828C22B29296300000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000007000000030000000000 + 0000000000000000000000000000010000000100000001FFFE0001FFFE0001FF + FE0003FFFF0003FFFF0007FFFF8007FFFFC00FFFFFC01FFFFFE01FFFFFC01FFF + FFC01FFFFFC01FFFFFE03FFFFFE03FFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF2800000010000000200000000100200000000000000400006400000064 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000292929A5292929A5292929A5292929A52828287829 + 2929A5292929A5292929A5626261B52A2929B9292929A5292929A52B2A2AB4B9 + B9B8E19C98984B00000000292929FF292928D7292928DC292929FF2828288B29 + 2929AD525252E94A4A4AFF696969FF2A2A2AFF7A7A7AFF8D8D8DFF747474FFEA + EAEAFFF1F1F1FCBAB8B899292929FF292929AD2B2927B7292929FF292929AE29 + 2929FF292929FF292929FF5C5C5CFF292929FFD5D5D5FFFFFFFFFFDEDEDEFFFF + FFFFFFFFFFFFFFCBC9C9B2292929FF292929AD2B2927B7292929FF292929AE28 + 2828E72C2B29C95D5D5DFF6F6F6FFF292929FFD5D5D5FFFFFFFFFFE7E7E7FF82 + 8282FF898989FF8787873E2A2A287F292929562C2A275B2A2A287F292929562A + 2A287F2A2A287F444444BD4B4B4BFF959595FFEAEAEAFFFFFFFFFFFFFFFFFFA8 + A8A8FF4E4E4EFF2D2D2522000000000000000000000000000000000000000000 + 000000000000005858582B565555FDF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFF84 + 8484FF323231E73F3F3F04000000000000000000000000000000000000000000 + 000000000000000000000036363595A9A9A9FFFFFFFFFFFFFFFFFFE0E0E0FF3A + 3A3AFF2A28286500000000000000000000000000000000000000000000000000 + 000000000000000000000038381C09666666D8EEEEEEFFF3F3F3FF8A8A8AFF29 + 2928A50000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000065656383EBEBEBFFE5E5E5FF474747FF2C + 2C26280000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000008686847F8A8A8AFFA8A8A8FF474747FF31 + 27271A0000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000030302E74363636FF525252FF292929F633 + 3333050000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000002C2C2C172A2828C2292828E72A2A277300 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFF29FFFFFF29FF00012A5B000029FF000029FF00 + 00226E000029FFFE0029FFFF01295CFF0329FFFF8329FFFF8329FFFF8329FFFF + 8729FFFFFF29FFFFFF29FF + } + OnCreate = FormCreate + Position = poDefault + LCLVersion = '2.0.12.0' + object ToolBar1: TToolBar + Left = 0 + Height = 69 + Top = 0 + Width = 572 + ButtonHeight = 64 + ButtonWidth = 65 + Caption = 'ToolBar1' + Images = IconListToolbar + ParentShowHint = False + ShowHint = True + TabOrder = 0 + object ToolButtonRun: TToolButton + Left = 1 + Hint = 'Start distribution' + Top = 2 + Caption = 'Start' + Enabled = False + ImageIndex = 0 + OnClick = ToolButtonRunClick + ShowCaption = False + end + object ToolButtonStop: TToolButton + Left = 66 + Hint = 'Stop distribution' + Top = 2 + Caption = 'Stop' + Enabled = False + ImageIndex = 1 + OnClick = ToolButtonStopClick + end + object ToolButtonProperties: TToolButton + Left = 131 + Hint = 'Show/Edit properties of distribution' + Top = 2 + Caption = 'Properties' + Enabled = False + ImageIndex = 2 + OnClick = ToolButtonPropertiesClick + end + object ToolButton2: TToolButton + Left = 196 + Height = 64 + Top = 2 + Caption = 'ToolButton2' + Style = tbsSeparator + end + object ToolButtonGeneralProperties: TToolButton + Left = 204 + Top = 2 + Caption = 'General properties' + ImageIndex = 3 + Visible = False + end + object ToolButtonAbout: TToolButton + Left = 269 + Top = 2 + Caption = 'About' + ImageIndex = 4 + OnClick = ToolButtonAboutClick + end + end + object WslDistributionList: TListView + Left = 0 + Height = 372 + Top = 69 + Width = 572 + Align = alClient + Columns = < + item + AutoSize = True + Caption = 'Name' + Width = 60 + end + item + Caption = 'Version' + Width = 69 + end> + SmallImages = IconListWslDistributionList + TabOrder = 1 + ViewStyle = vsReport + OnSelectItem = WslDistributionListSelectItem + end + object IconListToolbar: TImageList + Height = 32 + Width = 32 + Left = 408 + Top = 232 + Bitmap = { + 4C69050000002000000020000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000001E15090F6A441450B873 + 1F88E59126B8F49721C7F49C2EF0F49C2DEAF49721C7E59127B4B8791B876B45 + 154B1E160B0B0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000001E13061798601A95F49927F7F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF49927F598611B8B1E140711000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000F090206A86D2283F39823F3F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF49823F1A86D23780F09020200000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000F09020FE59129CEF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFE6932BC70F09020E000000000000 + 0000000000000000000000000000000000000000000000000000000000005C3F + 1B35F49C2EEDF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF59D31E25B401D270000 + 00000000000000000000000000000000000000000000000000000F09020FF49C + 2EEDF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF59C2EEA0F09 + 020E00000000000000000000000000000000000000000F090206E59229CEF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFE592 + 2ABA0F09020200000000000000000000000000000000A86D2383F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFA97325700000000000000000000000001E140717F39824F3F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39722EEF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF49825F11E140715000000000000000098601A95F39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF8957176D794B1046E18B + 1DCAF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FF98611B82000000001E15090FF49927F7F39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 00005B380C4EE48D1FC6F39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF49B2BE51E1509056A441450F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000F090202794B1046E18B1DCAF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FF6A451637B8731F88F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000000000000000000000000005B380C4EE48D1FC6F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFB9712476E59126B8F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 000000000000000000000000000000000000000000000F090202794B1046E18B + 1DCAF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFDF8D26AFF49721C7F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005B380C4EE48D1FC6F39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFE69018C1F49C2EF0F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000F090202794B1046E18B1DCAF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF19B2DEEF49C2DEAF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000F090206794B105DF4981FD1F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF19B2DE8F49721C7F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00005B380C59E48D1FDBF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFE69018C1E59127B4F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 000000000000000000000000000000000000000000000F090206794B105DF498 + 1FD1F39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFDF8A29A9B8791B87F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000000000000000000000000005B380C59E48D1FDBF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFA96A1D746B45154BF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 0000000000000F090206794B105DF4981FD1F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FF6A4517321E160B0BF49927F5F39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF794D156B000000000000 + 00005B380C59E48D1FDBF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF49B2BE21F160B040000000098611B8BF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FF89571772794B105DF498 + 1FD1F39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FF98611C7900000000000000001E140711F49823F1F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FAF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF49726F01E140710000000000000000000000000A86D2378F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFA86E2565000000000000000000000000000000000F090202E6932BC7F396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFE692 + 29B10E08020000000000000000000000000000000000000000000F09020EF59D + 31E2F39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF5A32DDE0F09 + 020C000000000000000000000000000000000000000000000000000000005B40 + 1D27F59C2EEAF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF5A32DDE5E411D1A0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000F09020EE5922ABAF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFE69229B10F09020C000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000F090202A9732570F49825F1F39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF49726F0A86F26650E08020000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000001E14071598611B82F49B2BE5F39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF49B2BE298611D791E150810000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000001E1509056A451637B971 + 2476DF8D26AFE69018C1F19B2DEEF19B2DE8E69018C1DF8A29A9A96A1D746A45 + 17321F160B040000000000000000000000000000000000000000000000000000 + 00000000000000000000000000001D54FFFF134BFFFF134BFFFF134BFFFF134B + FFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134B + FFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134B + FFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134BFFFF134B + FFFF134BFFFF134BFFFF1E55FFC0134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF134BFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003DFFFF003D + FFFF003DFFFF003DFFFF154DFFFF1E55FFC0154DFFFF154DFFFF154DFFFF154D + FFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154D + FFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154D + FFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154DFFFF154D + FFFF154DFFFF154DFFFF1F56FFC01B1B1BFF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFA7A7A7FFCBCBCBFFCBCB + CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB + CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCB + CBFFCBCBCBFFCBCBCBFFCBCBCBFFCBCBCBFF414141FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFD5D5D5FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF555555FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFB6B6B6FFDFDFDFFFDFDF + DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF + DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDF + DFFFDFDFDFFFDFDFDFFFDFDFDFFFDFDFDFFF474747FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FF201E1CFF2C2A26FF2C2A + 26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A + 26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF2C2A + 26FF2C2A26FF2C2A26FF2C2A26FF2C2A26FF0A0909FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFE9E7E3FFFEFEFDFFFEFE + FDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFE + FDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFE + FDFFFEFEFDFFFEFEFDFFFEFEFDFFFEFEFDFF6A6865FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFF5EBDEFFF6ECDFFFFFFFFFFFFFFFFFFFFBF7F2FFF4E7D8FFF4E7 + D8FFF4E7D8FFF4E7D8FFF4E7D8FFF4E7D8FFF4E7D8FFF4E7D8FFF4E7D8FFF4E7 + D8FFFBF7F2FFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFE79228FFEB9A34FFFFFFFFFFFFFFFFFFEDC797FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFEDC797FFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFE29A3FFFE6A049FFFFFFFFFFFFFFFFFFECCCA4FFEB9A35FFEB9A + 35FFEB9A35FFEB9A35FFEB9A35FFEB9A35FFEB9A35FFEB9A35FFEB9A35FFEB9A + 35FFECCCA4FFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF3B3B3B830000 + 00000000000000000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFF + FEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFF + FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF0E0E0EF00505 + 05FD161616DD2828285A000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6C69FF000000FF000000FF0000 + 00FF000000FF010101FD202020551B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFEFC693FEF4CFA1FFFFFFFFFFFFFFFFFFF6E4CDFFF3C58BFEF3C5 + 8BFEF3C58BFEF3C58BFEF3C58BFEEFC693FEFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F6F6FF313030FF000000FF373737FFC4C4 + C4FF5C5C5CFF000000FF1A1A1AD51B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFE79228FFEB9A34FFFFFFFFFFFFFFFFFFEDC797FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFE79228FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF8F8F7FF454443FF000000FF393939FDF1F1F1FEFFFF + FFFFB8B8B8F7000000FF0A0A0AFF1B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFE5B57AFFE9BB82FFFFFFFFFFFFFFFFFFEFDBC1FFEAB571FFEAB5 + 71FFEAB571FFEAB571FFEAB571FFE5B57AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF9F8F8FF4B4B4AFF000000FF343434FDEAEAEAFFFFFFFFFFFFFF + FFFF6B6B6BFF000000FF101010DC1B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFAF9F9FF525251FF000000FF2A2A2AFFEBEBEBFEFFFFFFFFFFFFFFFF7272 + 72FC010101FF000000FF202020611B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFA + FAFF595958FF000000FF282828FEE9E9E9FDFFFFFFFFFFFFFFFF767676FC0101 + 01FF000000FF0000007B000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A69 + 68FF000000FF1B1B1BFDDFDFDFFFFFFFFFFFFFFFFFFF9A9A9AFF000000FF0000 + 00FF0101019400000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71716FFF0000 + 00FF131313FFDADADAFEFFFFFFFFFFFFFFFF989898FD020202FF000000FF0000 + 00940000000100000000000000001B1B1BFF000000FFEFECE9FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF797877FF000000FF1212 + 12FFD8D8D8FCFFFFFFFFFFFFFFFF9B9B9BFC060606FF000000FF0000009C0000 + 00030000000000000000000000001B1B1BFF000000FFE3E0DDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFF7E7D7BFF010101FF141414FECFCF + CFFEFFFFFFFFFFFFFFFFACACACFE050505FF000000FF121212B4000000030000 + 00000000000000000000000000001B1B1BFF000000FF0C0C0CFF151515FF1515 + 15FF151515FF151515FF151515FF151515FF151515FF151515FF151515FF1515 + 15FF151515FF151515FF151515FF111111FF000000FF0F0F0FFFC6C6C6FFFFFF + FFFFFFFFFFFFB3B3B3FE020202FF000000FF020202AE00000004000000000000 + 00000000000000000000000000001B1B1BFF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF0C0C0CFFC6C6C6FCFFFFFFFFFFFF + FFFFAEAEAEFC0B0B0BFF000000FF292929D61818181800000000000000000000 + 0000000000000000000000000000050505040000000400000004000000040000 + 0004000000040000000400000004000000040000000400000004000000040000 + 0004000000041313133B000000FF000000FFB7B7B7FBFFFFFFFFFFFFFFFFCBCB + CBFE0D0D0DFF000000FF212121EA1C1C1C1C0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000001C1C1C68000000FF1B1B1BFBFFFFFFFEFFFFFFFFD3D3D3FF0C0C + 0CFF000000FF202020EC2020201F000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000020202096000000FF4C4C4CFDDFDFDFFC888888FA131313FF0000 + 00FF202020EC2121212800000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000262626BF000000FF040404FF030303FF000000FF000000FF1B1B + 1BEF2121212F0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000111111010E0E0EEA000000FF000000FF010101FF080808F1191919C93636 + 3632000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000141414201A1A1ACB212121912C2C2C581D1D1D280E0E0E0A000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000002626 + 26C40E0E0EFF0E0E0EFF0E0E0EFF0E0E0EFF0E0E0EFF0E0E0EFF3B3B3BB20000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000E0E + 0EEB000000FF000000FF000000FF000000FF000000FF000000FF131313EC0B0B + 0B06000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000001919191E0202 + 02FB000000FF774B13FF955E17FF955E17FF6F4714FF000000FF000000FF1717 + 171B000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000001F1F1F590000 + 00FF000000FFDF8C22FFF39621FFF39621FFE69024FF030200FF000000FF2323 + 2345000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000D0D0D01191919AF0000 + 00FF181007FFF09522FFF39621FFF39621FFF39621FF130C03FF000000FF2020 + 209D050505090000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000101010001F1F1FC82424 + 24CB151515631616161600000000000000021111115A0A0A0AEA000000FF0000 + 00FF482F10FFF39621FFF39621FFF39621FFF39621FF3F280BFF000000FF0000 + 00FF0B0B0BE81A1A1A5701010100000000000B0B0B1317171763212121CA2222 + 22C60A0A0A040000000000000000000000000000000016161655010101FF0000 + 00FF000000FF050505F81A1A1AC21F1F1FC9000000FF000000FF120C04FF7147 + 11FFCD7F1EFFF39621FFF39621FFF39621FFF39621FFC87D1FFF704611FF0F09 + 03FF000000FF000000FF242424C3181818C5050505FC000000FF000000FF0000 + 00FF0E0E0E5E000000000000000000000000000000000E0E0EF3000000FF100B + 03FF040300FF000000FF000000FF000000FF020100FF674110FFE48D21FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFE28C + 20FF6C4412FF010000FF000000FF000000FF000000FF020100FF0A0702FF0000 + 00FF131313F00505050D00000000000000002D2D2DAA000000FF030201FFD282 + 1FFFDF8B21FF975F19FF4C3210FF251909FFB16F1CFFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFAF6E1BFF201507FF4F3311FF965F1AFFDE8A21FFCD8020FF0604 + 02FF000000FF3636368F000000001C1C1C41030303FB000000FF7C4F16FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFEF9524FFF19523FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FF6440 + 12FF000000FF060606FA2121212E161616C5000000FF000000FFC87D1FFFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFEA91 + 21FF825215FF2D1D09FF070502FF0D0803FF2A1C0AFF885515FFEC9221FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFBB75 + 1EFF000000FF000000FF1A1A1ABE3A3A3A88010101FA000000FF160E05FFC57B + 1EFFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFCF801EFF2518 + 07FF000000FF000000FF000000FF000000FF000000FF000000FF251808FFCE80 + 1FFFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFB6731EFF170E + 04FF000000FF010101F64C4C4C7F0000000011111149090909FA000000FF0403 + 02FF9B611AFFF39621FFF39621FFF39621FFF39621FFE89021FF1C1206FF0000 + 00FF050505FF1E1E1E9E1C1C1C582121215D1616169C040404FF000000FF160F + 05FFDE8A1FFFF39621FFF39621FFF39621FFF39621FF9E6318FF080502FF0000 + 00FF0A0A0AF9161616430000000000000000000000001F1F1F44060606E20000 + 00FF050301FFEA9224FFF39621FFF39621FFF39621FF613D11FF000000FF0606 + 06FF1313134B0606060000000000000000000000000013131346050505FA0000 + 00FF754A13FFF39621FFF39621FFF39621FFF39621FF090602FF000000FF0909 + 09E01C1C1C4200000000000000000000000000000000000000001313138F0000 + 00FF2F200DFFF39621FFF39621FFF39621FFF39621FF120C03FF000000FF2828 + 288B0606060000000000000000000000000000000000000000001C1C1C9D0000 + 00FF0F0B05FFEE9423FFF39621FFF39621FFF39621FF241707FF000000FF1C1C + 1C77000000000000000000000000000000000000000000000000282828BC0000 + 00FF3A2812FFF39621FFF39621FFF39621FFEC9427FF020100FF000000FF1E1E + 1E3D0000000000000000000000000000000000000000000000001C1C1C500000 + 00FF000000FFE18D23FFF39621FFF39621FFF39621FF2F1F0AFF000000FF3838 + 38AA0000000000000000000000000000000000000000000000002B2B2BBC0000 + 00FF3A2812FFF39621FFF39621FFF39621FFEF9524FF030201FF000000FF2222 + 22420000000000000000000000000000000000000000000000001D1D1D560000 + 00FF000000FFE28D23FFF39621FFF39621FFF39621FF2F1F0AFF000000FF3A3A + 3AAA000000000000000000000000000000000000000000000000121212890000 + 00FF2C1E0CFFF39621FFF39621FFF39621FFF39621FF130C04FF000000FF1F1F + 1F9A080808000000000000000000000000000000000000000000181818A80000 + 00FF181007FFF09522FFF39621FFF39621FFF39621FF231606FF000000FF1919 + 1970000000000000000000000000000000000000000027272748060606E90000 + 00FF050302FFEA9224FFF39621FFF39621FFF39621FF744812FF000000FF0202 + 02FF14141451080808000000000000000000000000001717174A020202FA0000 + 00FF764B14FFF39621FFF39621FFF39621FFF39621FF0A0602FF000000FF0808 + 08E9252525460000000000000000000000000D0D0D60060606FC000000FF110B + 04FFAC6C1CFFF39621FFF39621FFF39621FFF39621FFED9322FF271907FF0000 + 00FF030303FF171717B11919197219191976121212B1030303FF000000FF2D1C + 07FFE48D20FFF39621FFF39621FFF39621FFF39621FFAF6E1CFF140D04FF0000 + 00FF070707FB1212125600000000333333A0010101FE000000FF191005FFCF81 + 1FFFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFD68520FF281A + 08FF000000FF000000FF000000FF000000FF000000FF000000FF352209FFDE89 + 1EFFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFCF811EFF1A10 + 05FF000000FF010101FC3E3E3E961B1B1BC2000000FF000000FFC07920FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFEB91 + 21FF945D17FF3A270EFF211609FF211709FF37250EFF8E5916FFED9321FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFBA75 + 1EFF000000FF000000FF1F1F1FBB1E1E1E32040404F8000000FF6C4514FFF396 + 21FFF39621FFF39621FFF39621FFE99123FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFE79023FFF39621FFF39621FFF39621FFF39621FF5738 + 11FF000000FF070707F42727272100000000313131A4000000FF020100FFCE80 + 1EFFDC8920FF845316FF34220BFF110B04FFA8691AFFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FF9A6119FF0D0903FF37240CFF895616FFDA8820FFCA7E1FFF0403 + 01FF000000FF1F1F1F7B000000000000000000000000131313EB000000FF100A + 03FF040300FF000000FF000000FF000000FF020100FF664010FFDC8921FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFD786 + 20FF684111FF010000FF000000FF000000FF000000FF020100FF0A0602FF0000 + 00FF181818E80505050B0000000000000000000000001E1E1E43020202FF0000 + 00FF000000FF0B0B0BF2292929A82A2A2AB3000000FF000000FF040301FF4E33 + 10FFBB751DFFF39621FFF39621FFF39621FFF39621FFBC751BFF482F10FF0604 + 01FF000000FF000000FF252525AA202020AC090909F9000000FF000000FF0000 + 00FF1212125100000000000000000000000000000000000000001B1B1BC12525 + 25C81414145B151515090000000000000000111111510A0A0AE4000000FF0000 + 00FF472F10FFF39621FFF39621FFF39621FFF39621FF36230AFF000000FF0000 + 00FF0D0D0DE31515154C0000000000000000090909031111115B232323C72121 + 21C10B0B0B010000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000C0C0C011F1F1FA50000 + 00FF160F06FFF09522FFF39621FFF39621FFF39621FF120C03FF000000FF2727 + 2792050505070000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000202020510000 + 00FF000000FFDE8A21FFF39621FFF39621FFE48E23FF030200FF000000FF2727 + 273E000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000001A1A1A1D0303 + 03FB000000FF815218FFA86B1EFFA86B1EFF774D17FF000000FF010101FF1818 + 181A000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000F0F + 0FE7000000FF000000FF000000FF000000FF000000FF000000FF121212E50C0C + 0C05000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000001F1F + 1FC3000000FF000000FF000000FF000000FF000000FF000000FF292929B10000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F + 0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F + 0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F + 0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F + 0FFF0F0F0FFF0F0F0FFF0F0F0FFF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF734914FF815011FF8150 + 11FF815011FF815011FF815011FF815011FF815011FF815011FF815011FF8150 + 11FF815011FF815011FF815011FF815011FF815011FF815011FF815011FF8150 + 11FF815011FF815011FF815011FF815011FF815011FF815011FF815011FF8150 + 11FF664011FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEEA03DFFF6EFE5FFF7EFE4FFF2A039FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A241FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF09D36FFF3DAB9FFF4DAB8FFF29D32FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF09F3BFFF9EEE0FFF9EEE0FFF2A038FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A241FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFEDA244FFFFFFFFFFFFFFFFFFF0A240FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF29B2DFFF6C587FFF6C587FFF39B2CFFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFDC8D28FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFCB8020FF000000FF000000FF000000FF000000FFD0872CFFE99328FFE993 + 28FFE99328FFE99328FFEB9427FFF39621FFF39621FFF39621FFF39621FFEB94 + 27FFE99328FFE99328FFE99328FFE99328FFE99328FFE99328FFE99328FFE993 + 28FFE99328FFE99328FFE99328FFE99328FFE99328FFE99328FFE99328FFE993 + 28FFBF7B25FF000000FF000000FF000000FF000000FF0E0A06FF110C07FF110C + 07FF110C07FF110C07FF382915FFF39621FFF39621FFF39621FF9E651CFF140E + 07FF110C07FF110C07FF110C07FF110C07FF110C07FF110C07FF110C07FF110C + 07FF110C07FF110C07FF110C07FF110C07FF110C07FF110C07FF110C07FF110C + 07FF0D0905FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF291E10FFF39621FFF29622FF825419FF010100FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 + 00FF000000FF000000FF000000FF111111991111119911111199111111991111 + 11991B1B1BCB000000FF291E10FFF39621FF654216FF010000FF000000FF1010 + 10E4111111991111119911111199111111991111119911111199111111991111 + 1199111111991111119911111199111111991111119911111199111111991111 + 1199111111991111119911111199000000000000000000000000000000000000 + 00002727277D000000FF16100AFF452D10FF000000FF000000FF141414C91D1D + 1D1A000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002727277D000000FF000000FF000000FF000000FF191919B0151515110000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002727277D000000FF000000FF000000FF1A1A1A971212120A000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002727277D000000FF000000F8202020770000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002727277D050505FF1414146A030303000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00003030307B1616164907070700000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000 + } + end + object ActionList1: TActionList + Left = 400 + Top = 152 + object CheckIfWslIsInstalled: TAction + Caption = 'CheckIfWslIsInstalled' + OnExecute = CheckIfWslIsInstalledExecute + end + end + object IconListWslDistributionList: TImageList + Height = 24 + Width = 24 + Left = 408 + Top = 312 + Bitmap = { + 4C69020000001800000018000000E39028E5B26E1F7A40270A17060100000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF29623EDCE7F1B795C3C + 0910020200000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF296 + 21E1A6681A8254310D1501000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF29622EAC4781E7D452A0A0F0303000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39622E3C0791B7A42290A18000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FEF39621FFF39621FFF39621FFF09523ECCD7C1B795B37 + 0C0B040200000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF295 + 21E4A96D197E4F300D1504020000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FEF39621FFF396 + 21FFF39621FFF19623E9C4791D7C482C0D110000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF29522E3B16C1D7D442A0B17000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FEF39621FFF39621FFF39621FFF29622EDD1791B7B5431 + 0A0F050000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF295 + 21E3BF751C8552320A1600000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF29622FEF39621FFF396 + 21FFF39621FFF19523EAC1771D7EE99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FEF39621FFF39621FFF396 + 21FFF39621FFF19523DABB71176BE99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FEF39621FFF39621FFF39621FFEE93 + 21DAB36B1D715334080C00000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FFF39621FEF39621FFF39621FFF39621FFF39621FFF29623E0B46E1D68391B + 060B000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF396 + 21FEF39621FFF39621FFF39621FFF29520DBB0701C67432A0A0B000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FEF39621FFF39621FFF396 + 21FFF39621FFF19623DAC7781A693F18050C0000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF39621FFF295 + 22DCA9641A69502C070B04020000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FEF39621FFF39621FFF39621FFF39621FFEF9523DEB8711B67321C + 0607000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF39621FFF39621FFF29420DBB7711B6441270A0E000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF396 + 21FFF39621FFF19623DCC67C196A3C27040B0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF39621FFF39621FFF094 + 21D9A5671B6D5034090A00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E99225FFF39621FFF19624DEB46D1A672E1D + 060B000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000E28F29DFAE6D20654227090C020100000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003DFF00003D + FF00003DFF00003DFF00003DFF00 + } + end +end diff --git a/mainwindow.pas b/mainwindow.pas new file mode 100644 index 0000000..66754f7 --- /dev/null +++ b/mainwindow.pas @@ -0,0 +1,279 @@ +unit mainwindow; + +{$mode objfpc}{$H+} + +// Icon from https://icons8.com/icon/set/stop/windows + +// TODO sort tlistview + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls, + AboutWindow, ActnList, DistributionPropertiesWindow, + // For MB_xxxx dialog flags + LCLType, + // Wsl interface + WslCommandLine; + +type + + { TWslGuiToolMainWindow } + + TWslGuiToolMainWindow = class(TForm) + CheckIfWslIsInstalled: TAction; + ActionList1: TActionList; + IconListWslDistributionList: TImageList; + ToolButtonAbout: TToolButton; + ToolButtonProperties: TToolButton; + ToolButton2: TToolButton; + ToolButtonGeneralProperties: TToolButton; + ToolButtonStop: TToolButton; + WslDistributionList: TListView; + IconListToolbar: TImageList; + ToolBar1: TToolBar; + ToolButtonRun: TToolButton; + procedure CheckIfWslIsInstalledExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure LoadWslDistributionInList(Sender: TObject); + procedure ToolButtonAboutClick(Sender: TObject); + procedure ToolButtonPropertiesClick(Sender: TObject); + procedure ToolButtonRunClick(Sender: TObject); + procedure ToolButtonStopClick(Sender: TObject); + procedure WslDistributionListSelectItem(Sender: TObject; Item: TListItem; + Selected: Boolean); + private + + public + procedure RefreshWslDistributionInList(Sender: TObject); + end; + +var + WslGuiToolMainWindow: TWslGuiToolMainWindow; + +const + IMAGE_INDEX_RUNNING = 0; + IMAGE_INDEX_STOP = 1; + +implementation + +{$R *.lfm} + +{ TWslGuiToolMainWindow } + +function ExtractDistributionName(Name: string): string; +begin + Result := Copy(Name, 4, Length(Name) - 3); +end; + +function FindDistributionInListView(WslDistributionList: TListView; DistributionName: string): TListItem; +var + i: integer; +begin + Result := nil; + + for i := 0 to WslDistributionList.Items.Count -1 do + begin + if ExtractDistributionName(WslDistributionList.Items[i].Caption) = DistributionName + then begin + exit(WslDistributionList.Items[i]); + end; + end; +end; + +function IsExistsInOutput(DistributionName: string; WslDistList: TWslCommandLineDistributionList): boolean; +var + i: integer; +begin + Result := false; + + for i := 0 to WslDistList.Count - 1 do + begin + if WslDistList[i].Name = DistributionName + then begin + exit(true); + end; + end; +end; + +procedure AddDistributionInListView(WslDistributionList: TListView; WslDistribution: TWslCommandLineDistribution); +var + CurrentDistribution: TListItem; +begin + CurrentDistribution := WslDistributionList.Items.Add; + + // TODO use CurrentDistribution.Data to know if running or not ? + if WslDistribution.IsRunning + then begin + CurrentDistribution.ImageIndex := IMAGE_INDEX_RUNNING; + end else begin + CurrentDistribution.ImageIndex := IMAGE_INDEX_STOP; + end; + + if WslDistribution.IsDefault + then begin + CurrentDistribution.Caption := ' * ' + WslDistribution.Name; + end else begin + CurrentDistribution.Caption := ' ' + WslDistribution.Name; + end; + + CurrentDistribution.SubItems.Add('%d', [WslDistribution.Version]); +end; + +procedure UpdateDistributionInListView(Distribution: TListItem; WslDistribution: TWslCommandLineDistribution); +begin + // TODO use CurrentDistribution.Data to know if running or not ? + if WslDistribution.IsRunning + then begin + Distribution.ImageIndex := IMAGE_INDEX_RUNNING; + end else begin + Distribution.ImageIndex := IMAGE_INDEX_STOP; + end; + + if WslDistribution.IsDefault + then begin + Distribution.Caption := ' * ' + WslDistribution.Name; + end else begin + Distribution.Caption := ' ' + WslDistribution.Name; + end; + + Distribution.SubItems[0] := Format('%d', [WslDistribution.Version]); +end; + +procedure TWslGuiToolMainWindow.CheckIfWslIsInstalledExecute(Sender: TObject); +begin + if not WslCommandLine.IsWslInstalled() + then begin + Application.MessageBox( + 'WSL seems to be not installed!', + 'Error', + MB_OK + MB_ICONERROR); + Application.Terminate; + end; +end; + +procedure TWslGuiToolMainWindow.FormCreate(Sender: TObject); +begin + Self.CheckIfWslIsInstalledExecute(Sender); + Self.LoadWslDistributionInList(Sender); +end; + +procedure TWslGuiToolMainWindow.LoadWslDistributionInList(Sender: TObject); +var + WslDistList: TWslCommandLineDistributionList; + i : integer; +begin + WslDistList := ListDistribution(); + + WslDistributionList.Items.Clear; + + for i := 0 to WslDistList.Count - 1 do + begin + AddDistributionInListView(WslDistributionList, WslDistList[i]); + end; +end; + +procedure TWslGuiToolMainWindow.RefreshWslDistributionInList(Sender: TObject); +var + CurrentDistribution: TListItem; + WslDistList: TWslCommandLineDistributionList; + i : integer; + CurrentName: string; +begin + WslDistList := ListDistribution(); + + for i := 0 to WslDistList.Count - 1 do + begin + CurrentDistribution := FindDistributionInListView(WslDistributionList, WslDistList[i].Name); + + if CurrentDistribution = nil + then begin + // Add new distribution + AddDistributionInListView(WslDistributionList, WslDistList[i]); + end else begin + UpdateDistributionInListView(CurrentDistribution, WslDistList[i]); + end; + end; + + // Remove all entry in viewlist that not found in output of command + i := 0; + + while i < WslDistributionList.Items.Count do + begin + CurrentName := ExtractDistributionName(WslDistributionList.Items[i].Caption); + + if IsExistsInOutput(CurrentName, WslDistList) + then begin + i := i + 1; + end else begin + WslDistributionList.Items.Delete(i); + end; + end; +end; + +procedure TWslGuiToolMainWindow.ToolButtonAboutClick(Sender: TObject); +var + About: TFormAbout; +begin + About := TFormAbout.Create(Self); + + About.ShowModal; + + About.Free; +end; + +procedure TWslGuiToolMainWindow.ToolButtonPropertiesClick(Sender: TObject); +var + DistributionProperties : TFormDistributionProperties; +begin + DistributionProperties := TFormDistributionProperties.Create(Self, + ExtractDistributionName(WslDistributionList.Selected.Caption), + WslDistributionList.Selected.SubItems[0].ToInteger + ); + + DistributionProperties.ShowModal; + + DistributionProperties.Free; + + RefreshWslDistributionInList(Sender); +end; + +procedure TWslGuiToolMainWindow.ToolButtonRunClick(Sender: TObject); +begin + StartDistribution( + ExtractDistributionName( + WslDistributionList.Selected.Caption)); + + RefreshWslDistributionInList(Sender); +end; + +procedure TWslGuiToolMainWindow.ToolButtonStopClick(Sender: TObject); +begin + StopDistribution( + ExtractDistributionName( + WslDistributionList.Selected.Caption)); + + RefreshWslDistributionInList(Sender); +end; + +procedure TWslGuiToolMainWindow.WslDistributionListSelectItem(Sender: TObject; + Item: TListItem; Selected: Boolean); +begin + if Selected + then begin + // Event fire when item selected AND unselected + if Item.ImageIndex = IMAGE_INDEX_RUNNING + then begin + ToolButtonRun.Enabled := false; + ToolButtonStop.Enabled := true; + end else begin + ToolButtonRun.Enabled := true; + ToolButtonStop.Enabled := false; + end; + end; + + ToolButtonProperties.Enabled := Selected; +end; + +end. + diff --git a/wslapi.pas b/wslapi.pas new file mode 100644 index 0000000..04c1342 --- /dev/null +++ b/wslapi.pas @@ -0,0 +1,227 @@ +unit wslapi; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Regexpr, ComObj, Windows, ActiveX; + +Type + // A WSL distribution + TWslApiDistribution = class(TObject) + Name: String; + Version: Integer; + DefaultUID: Longword; + Flags: Longword; + Env: TStrings; + destructor destroy; override; + end; + +// Return configuration of distribution of nil if not found +function WslGetConfigurationOfDistribution(DistributionName: string): TWslApiDistribution; +// Set a new configuration +function WslSetConfigurationOfDistribution(DistributionName: string; DefaultUID: Longword; Flags: Longword): boolean; + +const + WSL_DISTRIBUTION_FLAGS_NONE = 0; + WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP = 1; + WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH = 2; + WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING = 4; + +implementation + +Type + TFunctionWslGetDistributionConfiguration = function( + DistributionName: PWideChar; + DistributionVersion: PLongWord; + DefaultUID: PLongWord; + WslDistributionFlags: PLongWord; + DefaultEnvironmentVariables: PPChar; + DefaultEnvironmentVariableCount: PLongWord + ): HRESULT; stdcall; + + WSL_DISTRIBUTION_FLAGS = LongWord; + + TFunctionWslConfigureDistribution = function( + DistributionName: PWideChar; + DefaultUID: LongWord; + WslDistributionFlags: WSL_DISTRIBUTION_FLAGS + ): HRESULT; stdcall; + +const + RPC_C_AUTHN_LEVEL_DEFAULT = 0; + RPC_C_IMP_LEVEL_IMPERSONATE = 3; + +destructor TWslApiDistribution.Destroy; +begin + Self.Env.Free; + inherited; +end; + +var + // Creates a suitable variable (data field) for the DLL subroutine + WslGetDistributionConfiguration : TFunctionWslGetDistributionConfiguration; + WslDistributionConfiguration: TFunctionWslConfigureDistribution; + // Creates a handle for the DLL + LibHandle : THandle; + +function CopyString(pstr: PChar): string; +var + IndexOfChar: Integer; +begin + IndexOfChar := 0; + Result := ''; + + while pstr[IndexOfChar] <> #0 do + begin + Result := Result + pstr[IndexOfChar]; + IndexOfChar := IndexOfChar + 1; + end; +end; + +function ConvertWslApiEnvVarToStringsList( + DefaultEnvironmentVariables: PPChar; + DefaultEnvironmentVariableCount: LongWord): TStrings; +var + StringIndex: Integer; + CurrentStringPointer: PChar; +begin + Result := TStringList.Create(); + + for StringIndex := 0 to DefaultEnvironmentVariableCount - 1 do + begin + CurrentStringPointer := DefaultEnvironmentVariables[StringIndex]; + + Result.Add(CopyString(CurrentStringPointer)); + end; +end; + +procedure ClearWslApiEnvVar( + DefaultEnvironmentVariables: PPChar; + DefaultEnvironmentVariableCount: LongWord); +var + StringIndex: Integer; + CurrentStringPointer: PChar; +begin + for StringIndex := 0 to DefaultEnvironmentVariableCount - 1 do + begin + CurrentStringPointer := DefaultEnvironmentVariables[StringIndex]; + + CoTaskMemFree(CurrentStringPointer) + end; + + CoTaskMemFree(DefaultEnvironmentVariables); +end; + +function WslGetConfigurationOfDistribution(DistributionName: string): TWslApiDistribution; +var + DistributionVersion: LongWord; + DefaultUID: LongWord; + WslDistributionFlags: LongWord; + DefaultEnvironmentVariables: PPChar; + DefaultEnvironmentVariableCount: LongWord; + ret: HRESULT; + DistribNameLen: integer; + DistribName: PWideChar; + EnvVars: TStrings; +begin + DistribNameLen := (Length(DistributionName)+1) * SizeOf(WideChar); + + GetMem(DistribName, DistribNameLen); + + StringToWideChar(DistributionName, PWideChar(DistribName), DistribNameLen); + + ret := WslGetDistributionConfiguration( + DistribName, + @DistributionVersion, + @DefaultUID, + @WslDistributionFlags, + @DefaultEnvironmentVariables, + @DefaultEnvironmentVariableCount); + + FreeMem(DistribName); + + if Succeeded(ret) + then begin + EnvVars := ConvertWslApiEnvVarToStringsList(DefaultEnvironmentVariables, DefaultEnvironmentVariableCount); + + ClearWslApiEnvVar(DefaultEnvironmentVariables, DefaultEnvironmentVariableCount); + + Result := TWslApiDistribution.Create(); + + Result.Version := DistributionVersion; + Result.Name := DistributionName; + Result.Flags := WslDistributionFlags; + Result.DefaultUID := DefaultUID; + Result.Env := EnvVars; + end else begin + Result := nil; + end; +end; + +function WslSetConfigurationOfDistribution(DistributionName: string; DefaultUID: LongWord; Flags: LongWord): boolean; +var + ret: HRESULT; + DistribNameLen: integer; + DistribName: PWideChar; +begin + DistribNameLen := (Length(DistributionName)+1) * SizeOf(WideChar); + + GetMem(DistribName, DistribNameLen); + + StringToWideChar(DistributionName, PWideChar(DistribName), DistribNameLen); + + ret := WslDistributionConfiguration( + DistribName, + DefaultUID, + Flags); + + FreeMem(DistribName); + + Result := Succeeded(ret) +end; + +initialization + CoInitialize(nil); + + // Get the handle of the library to be used + LibHandle := LoadLibrary(PChar('Api-ms-win-wsl-api-l1-1-0.dll')); + + // Checks whether loading the DLL was successful + if LibHandle <> 0 + then begin + Pointer(WslGetDistributionConfiguration) := GetProcAddress(LibHandle, 'WslGetDistributionConfiguration'); + Pointer(WslDistributionConfiguration) := GetProcAddress(LibHandle, 'WslConfigureDistribution'); + + // Checks whether a valid address has been returned + if (@WslGetDistributionConfiguration <> nil) and (@WslDistributionConfiguration <> nil) + then begin + if Failed(CoInitializeSecurity( + nil, + -1, + nil, + nil, + RPC_C_AUTHN_LEVEL_DEFAULT, + RPC_C_IMP_LEVEL_IMPERSONATE, + nil, + EOAC_STATIC_CLOAKING, + nil)) + then begin + // release memory and use registry only + WslGetDistributionConfiguration := nil; + WslDistributionConfiguration := nil; + end; + end; + end; + +finalization + // release memory + WslGetDistributionConfiguration := nil; + WslDistributionConfiguration := nil; + + FreeLibrary(LibHandle); + + CoUninitialize(); +end. + diff --git a/wslcommandline.pas b/wslcommandline.pas new file mode 100644 index 0000000..23150b3 --- /dev/null +++ b/wslcommandline.pas @@ -0,0 +1,147 @@ +unit wslcommandLine; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Process, fgl, Regexpr, ComObj, ShellApi; + +Type + // A WSL distribution + TWslCommandLineDistribution = class(TObject) + Name: string; + Version: Integer; + IsRunning: boolean; + IsDefault: boolean; + end; + + TWslCommandLineDistributionList = specialize TFPGObjectList; + +// Retrun is WSL seems to be installed +function IsWslInstalled(): boolean; +// Return list of current WSL distribution +function ListDistribution: TWslCommandLineDistributionList; +// Find a distribution in list +function FindDistribution(Distributions: TWslCommandLineDistributionList; Name: string): TWslCommandLineDistribution; +// Start WSL distribution +function StartDistribution(Name: string): boolean; +// Stop WSL distribution +function StopDistribution(Name: string): boolean; + +implementation + +function IsWslInstalled(): boolean; +var + wslOutput : string; +begin + Result := RunCommand('wsl', ['--list'], wslOutput); +end; + +// Run WSL and return raw output +function ListDistributionRunWslList: TStringList; +var + // Use to run WSL binary + WslProcess: TProcess; +begin + WslProcess := TProcess.Create(nil); + + WslProcess.Executable := 'wsl'; + WslProcess.Parameters.Add('--list'); + WslProcess.Parameters.Add('--verbose'); + + WslProcess.Options := WslProcess.Options + [poWaitOnExit, poUsePipes, poStderrToOutPut]; + WslProcess.ShowWindow := swoHIDE; + + WslProcess.Execute; + + Result := TStringList.Create; + Result.LoadFromStream(WslProcess.Output, TEncoding.Unicode); + + // Now that the output from the process is processed, it can be freed. + WslProcess.Free; +end; + +procedure ListDistributionClearWslOutput(WslOutput: TStringList); +var + i: Integer; + NewOutputLine: string; +begin + // Remove first line with title + WslOutput.Delete(0); + + i := 0; + + while i < WslOutput.Count do + begin + NewOutputLine := WslOutput.Strings[i]; + + if NewOutputLine = '' + then begin + WslOutput.Delete(i); + end else begin + WslOutput.Strings[i] := ReplaceRegExpr('\s+', NewOutputLine, ' ', True); + i := i + 1; + end; + end; +end; + +function FindDistribution(Distributions: TWslCommandLineDistributionList; Name: string): TWslCommandLineDistribution; +var + i: Integer; +begin + for i := 0 to Distributions.Count - 1 do + begin + if Distributions[i].Name = Name + then begin + Exit(Distributions[i]); + end; + end; +end; + +function ListDistribution: TWslCommandLineDistributionList; +var + WslProcessOutput: TStringList; + i : Integer; + CurrentWslDistribution: TWslCommandLineDistribution; + // Result of split a output line + CurrentWslDistributionLineSplit: TStringArray; +begin + Result := TWslCommandLineDistributionList.Create(); + + WslProcessOutput := ListDistributionRunWslList; + ListDistributionClearWslOutput(WslProcessOutput); + + // Now output is like: + // * Ubuntu-20.04 Running 2 + // docker-desktop Stopped 2 + // docker-desktop-data Stopped 2 + for i := 0 to WslProcessOutput.Count -1 do + begin + CurrentWslDistributionLineSplit := WslProcessOutput.Strings[i].Split(' '); + + CurrentWslDistribution := TWslCommandLineDistribution.Create(); + CurrentWslDistribution.Name := CurrentWslDistributionLineSplit[1]; + CurrentWslDistribution.Version := StrToInt(CurrentWslDistributionLineSplit[3]); + CurrentWslDistribution.IsRunning := + (LowerCase(CurrentWslDistributionLineSplit[2]) = 'running'); + + Result.Add(CurrentWslDistribution); + end; + + WslProcessOutput.Free; +end; + +function StartDistribution(Name: string): boolean; +begin + // TODO allow use windows terminal, powershell.... + Result := ShellExecute(0, nil, PChar('wsl'),PChar('--distribution ' + Name), nil, 1) = 0; +end; + +function StopDistribution(Name: string): boolean; +begin + Result := ShellExecute(0, nil, PChar('wsl'),PChar('--terminate ' + Name), nil, 1) = 0; +end; + +end. + diff --git a/wslguitool.ico b/wslguitool.ico new file mode 100644 index 0000000..029bc07 Binary files /dev/null and b/wslguitool.ico differ diff --git a/wslguitool.lpi b/wslguitool.lpi new file mode 100644 index 0000000..19ce9fc --- /dev/null +++ b/wslguitool.lpi @@ -0,0 +1,185 @@ + + + + + + + + + + <Scaled Value="True"/> + <ResourceType Value="res"/> + <UseXPManifest Value="True"/> + <XPManifest> + <DpiAware Value="True"/> + </XPManifest> + <Icon Value="0"/> + </General> + <VersionInfo> + <UseVersionInfo Value="True"/> + <MinorVersionNr Value="1"/> + <StringTable CompanyName="MARTINEAU Emeric" FileDescription="A graphical tool for help manage WSL" LegalCopyright="MARTINEAU Emeric" ProductName="Windows Sybsystem Linux GUI Tool" ProductVersion="0.1"/> + </VersionInfo> + <BuildModes Count="3"> + <Item1 Name="Default" Default="True"/> + <Item2 Name="Debug"> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="wslguitool"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Parsing> + <SyntaxOptions> + <IncludeAssertionCode Value="True"/> + </SyntaxOptions> + </Parsing> + <CodeGeneration> + <Checks> + <IOChecks Value="True"/> + <RangeChecks Value="True"/> + <OverflowChecks Value="True"/> + <StackChecks Value="True"/> + </Checks> + <VerifyObjMethodCallValidity Value="True"/> + </CodeGeneration> + <Linking> + <Debugging> + <DebugInfoType Value="dsDwarf2Set"/> + <UseHeaptrc Value="True"/> + <TrashVariables Value="True"/> + <UseExternalDbgSyms Value="True"/> + </Debugging> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + </Item2> + <Item3 Name="Release"> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="wslguitool"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <CodeGeneration> + <SmartLinkUnit Value="True"/> + <Optimizations> + <OptimizationLevel Value="3"/> + </Optimizations> + </CodeGeneration> + <Linking> + <Debugging> + <GenerateDebugInfo Value="False"/> + </Debugging> + <LinkSmart Value="True"/> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + </Item3> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <UseFileFilters Value="True"/> + </PublishOptions> + <RunParams> + <FormatVersion Value="2"/> + <Modes Count="0"/> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="LCL"/> + </Item1> + </RequiredPackages> + <Units Count="8"> + <Unit0> + <Filename Value="wslguitool.lpr"/> + <IsPartOfProject Value="True"/> + </Unit0> + <Unit1> + <Filename Value="mainwindow.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="WslGuiToolMainWindow"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit1> + <Unit2> + <Filename Value="wslapi.pas"/> + <IsPartOfProject Value="True"/> + </Unit2> + <Unit3> + <Filename Value="wslcommandline.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="wslcommandLine"/> + </Unit3> + <Unit4> + <Filename Value="wslregistry.pas"/> + <IsPartOfProject Value="True"/> + </Unit4> + <Unit5> + <Filename Value="applicationinfo.pas"/> + <IsPartOfProject Value="True"/> + </Unit5> + <Unit6> + <Filename Value="aboutwindow.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="FormAbout"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit6> + <Unit7> + <Filename Value="distributionpropertieswindow.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="FormDistributionProperties"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + </Unit7> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <PathDelim Value="\"/> + <Target> + <Filename Value="wslguitool"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Linking> + <Options> + <Win32> + <GraphicApplication Value="True"/> + </Win32> + </Options> + </Linking> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/wslguitool.lpr b/wslguitool.lpr new file mode 100644 index 0000000..95b3c3e --- /dev/null +++ b/wslguitool.lpr @@ -0,0 +1,22 @@ +program wslguitool; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms, mainwindow, WslApi, WslCommandLine, WslRegistry, ApplicationInfo, + aboutwindow, distributionpropertieswindow; + +{$R *.res} + +begin + RequireDerivedFormResource:=True; + Application.Scaled:=True; + Application.Initialize; + Application.CreateForm(TWslGuiToolMainWindow, WslGuiToolMainWindow); + Application.Run; +end. + diff --git a/wslguitool.lps b/wslguitool.lps new file mode 100644 index 0000000..1bb5ce1 --- /dev/null +++ b/wslguitool.lps @@ -0,0 +1,400 @@ +<?xml version="1.0" encoding="UTF-8"?> +<CONFIG> + <ProjectSession> + <PathDelim Value="\"/> + <Version Value="11"/> + <BuildModes Active="Debug"/> + <Units Count="32"> + <Unit0> + <Filename Value="wslguitool.lpr"/> + <IsPartOfProject Value="True"/> + <EditorIndex Value="3"/> + <CursorPos X="44" Y="11"/> + <UsageCount Value="97"/> + <Loaded Value="True"/> + </Unit0> + <Unit1> + <Filename Value="mainwindow.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="WslGuiToolMainWindow"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <TopLine Value="37"/> + <CursorPos X="23" Y="56"/> + <UsageCount Value="97"/> + <Loaded Value="True"/> + <LoadedDesigner Value="True"/> + </Unit1> + <Unit2> + <Filename Value="wslapi.pas"/> + <IsPartOfProject Value="True"/> + <EditorIndex Value="6"/> + <TopLine Value="16"/> + <CursorPos X="22" Y="12"/> + <UsageCount Value="65"/> + <Loaded Value="True"/> + </Unit2> + <Unit3> + <Filename Value="wslcommandline.pas"/> + <IsPartOfProject Value="True"/> + <UnitName Value="wslcommandLine"/> + <EditorIndex Value="2"/> + <CursorPos X="3" Y="54"/> + <UsageCount Value="65"/> + <Loaded Value="True"/> + </Unit3> + <Unit4> + <Filename Value="wslregistry.pas"/> + <IsPartOfProject Value="True"/> + <EditorIndex Value="5"/> + <TopLine Value="148"/> + <CursorPos X="34" Y="186"/> + <UsageCount Value="65"/> + <Loaded Value="True"/> + </Unit4> + <Unit5> + <Filename Value="applicationinfo.pas"/> + <IsPartOfProject Value="True"/> + <EditorIndex Value="-1"/> + <TopLine Value="7"/> + <CursorPos X="12" Y="24"/> + <UsageCount Value="60"/> + </Unit5> + <Unit6> + <Filename Value="aboutwindow.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="FormAbout"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <IsVisibleTab Value="True"/> + <EditorIndex Value="1"/> + <TopLine Value="2"/> + <CursorPos X="40" Y="52"/> + <UsageCount Value="58"/> + <Loaded Value="True"/> + <LoadedDesigner Value="True"/> + </Unit6> + <Unit7> + <Filename Value="distributionpropertieswindow.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="FormDistributionProperties"/> + <HasResources Value="True"/> + <ResourceBaseClass Value="Form"/> + <EditorIndex Value="4"/> + <TopLine Value="285"/> + <CursorPos Y="322"/> + <UsageCount Value="53"/> + <Loaded Value="True"/> + <LoadedDesigner Value="True"/> + </Unit7> + <Unit8> + <Filename Value="wsl.pas"/> + <EditorIndex Value="-1"/> + <TopLine Value="185"/> + <CursorPos X="62" Y="187"/> + <UsageCount Value="46"/> + </Unit8> + <Unit9> + <Filename Value="C:\lazarus\lcl\forms.pp"/> + <UnitName Value="Forms"/> + <EditorIndex Value="-1"/> + <TopLine Value="51"/> + <CursorPos X="33" Y="70"/> + <UsageCount Value="8"/> + </Unit9> + <Unit10> + <Filename Value="C:\lazarus\fpc\3.2.0\source\packages\fcl-process\src\processbody.inc"/> + <EditorIndex Value="-1"/> + <UsageCount Value="10"/> + </Unit10> + <Unit11> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\objpas\classes\classesh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="598"/> + <CursorPos X="3" Y="615"/> + <UsageCount Value="9"/> + </Unit11> + <Unit12> + <Filename Value="C:\lazarus\lcl\comctrls.pp"/> + <UnitName Value="ComCtrls"/> + <EditorIndex Value="-1"/> + <TopLine Value="1049"/> + <CursorPos X="14" Y="1071"/> + <UsageCount Value="5"/> + </Unit12> + <Unit13> + <Filename Value="C:\lazarus\fpc\3.2.0\source\packages\regexpr\src\regexpr.pas"/> + <UnitName Value="RegExpr"/> + <EditorIndex Value="-1"/> + <TopLine Value="343"/> + <UsageCount Value="6"/> + </Unit13> + <Unit14> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\win\sysutils.pp"/> + <UnitName Value="SysUtils"/> + <EditorIndex Value="-1"/> + <TopLine Value="460"/> + <CursorPos X="38" Y="477"/> + <UsageCount Value="6"/> + </Unit14> + <Unit15> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\inc\systemh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="1189"/> + <CursorPos X="11" Y="1211"/> + <UsageCount Value="7"/> + </Unit15> + <Unit16> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\inc\dynlibh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="13"/> + <CursorPos X="10" Y="62"/> + <UsageCount Value="9"/> + </Unit16> + <Unit17> + <Filename Value="C:\lazarus\fpc\3.2.0\source\packages\winunits-base\src\activex.pp"/> + <UnitName Value="ActiveX"/> + <EditorIndex Value="-1"/> + <TopLine Value="4603"/> + <CursorPos X="19" Y="4629"/> + <UsageCount Value="7"/> + </Unit17> + <Unit18> + <Filename Value="C:\lazarus\fpc\3.2.0\source\packages\fcl-registry\src\registry.pp"/> + <UnitName Value="Registry"/> + <EditorIndex Value="-1"/> + <TopLine Value="152"/> + <CursorPos X="15" Y="177"/> + <UsageCount Value="9"/> + </Unit18> + <Unit19> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\objpas\sysutils\sysutilh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="31"/> + <CursorPos X="17" Y="48"/> + <UsageCount Value="8"/> + </Unit19> + <Unit20> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\objpas\fgl.pp"/> + <EditorIndex Value="-1"/> + <TopLine Value="310"/> + <CursorPos X="14" Y="326"/> + <UsageCount Value="11"/> + </Unit20> + <Unit21> + <Filename Value="C:\lazarus\fpc\3.2.0\source\packages\fcl-process\src\process.pp"/> + <EditorIndex Value="-1"/> + <TopLine Value="5"/> + <CursorPos X="40" Y="32"/> + <UsageCount Value="10"/> + </Unit21> + <Unit22> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\win\wininc\redef.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="893"/> + <CursorPos X="10" Y="910"/> + <UsageCount Value="8"/> + </Unit22> + <Unit23> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\win\wininc\struct.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="7781"/> + <CursorPos X="6" Y="7781"/> + <UsageCount Value="12"/> + </Unit23> + <Unit24> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\win\wininc\ascdef.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="356"/> + <CursorPos X="10" Y="373"/> + <UsageCount Value="8"/> + </Unit24> + <Unit25> + <Filename Value="C:\lazarus\lcl\include\customform.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="2935"/> + <CursorPos X="27" Y="2932"/> + <UsageCount Value="8"/> + </Unit25> + <Unit26> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\inc\ustringh.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="22"/> + <CursorPos Y="39"/> + <UsageCount Value="9"/> + </Unit26> + <Unit27> + <Filename Value="C:\lazarus\lcl\valedit.pas"/> + <UnitName Value="ValEdit"/> + <EditorIndex Value="-1"/> + <TopLine Value="68"/> + <CursorPos X="40" Y="81"/> + <UsageCount Value="9"/> + </Unit27> + <Unit28> + <Filename Value="C:\lazarus\lcl\grids.pas"/> + <UnitName Value="Grids"/> + <EditorIndex Value="-1"/> + <TopLine Value="11635"/> + <CursorPos Y="11663"/> + <UsageCount Value="10"/> + </Unit28> + <Unit29> + <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\objpas\sysutils\syshelph.inc"/> + <EditorIndex Value="-1"/> + <TopLine Value="151"/> + <CursorPos X="14" Y="171"/> + <UsageCount Value="9"/> + </Unit29> + <Unit30> + <Filename Value="C:\lazarus\fpc\3.2.0\source\packages\fcl-base\src\contnrs.pp"/> + <UnitName Value="Contnrs"/> + <EditorIndex Value="-1"/> + <TopLine Value="444"/> + <CursorPos X="21" Y="448"/> + <UsageCount Value="9"/> + </Unit30> + <Unit31> + <Filename Value="..\..\..\Desktop\TODO.txt"/> + <EditorIndex Value="-1"/> + <UsageCount Value="9"/> + <DefaultSyntaxHighlighter Value="None"/> + </Unit31> + </Units> + <JumpHistory Count="26" HistoryIndex="25"> + <Position1> + <Filename Value="distributionpropertieswindow.pas"/> + <Caret Line="242" Column="13" TopLine="192"/> + </Position1> + <Position2> + <Filename Value="mainwindow.pas"/> + <Caret Line="14"/> + </Position2> + <Position3> + <Filename Value="mainwindow.pas"/> + <Caret Line="86" Column="58" TopLine="55"/> + </Position3> + <Position4> + <Filename Value="mainwindow.pas"/> + <Caret Line="88" Column="58" TopLine="74"/> + </Position4> + <Position5> + <Filename Value="mainwindow.pas"/> + <Caret Line="38" Column="40" TopLine="11"/> + </Position5> + <Position6> + <Filename Value="mainwindow.pas"/> + <Caret Line="85" Column="33" TopLine="38"/> + </Position6> + <Position7> + <Filename Value="mainwindow.pas"/> + <Caret Line="88" Column="58" TopLine="41"/> + </Position7> + <Position8> + <Filename Value="mainwindow.pas"/> + <Caret Line="123" Column="24" TopLine="104"/> + </Position8> + <Position9> + <Filename Value="mainwindow.pas"/> + <Caret Line="161" Column="9" TopLine="132"/> + </Position9> + <Position10> + <Filename Value="mainwindow.pas"/> + <Caret Line="85" Column="68" TopLine="58"/> + </Position10> + <Position11> + <Filename Value="mainwindow.pas"/> + <Caret Line="92" Column="24" TopLine="65"/> + </Position11> + <Position12> + <Filename Value="mainwindow.pas"/> + <Caret Line="139" Column="56" TopLine="101"/> + </Position12> + <Position13> + <Filename Value="mainwindow.pas"/> + <Caret Line="85" Column="130" TopLine="53"/> + </Position13> + <Position14> + <Filename Value="mainwindow.pas"/> + <Caret Line="99" Column="23" TopLine="72"/> + </Position14> + <Position15> + <Filename Value="mainwindow.pas"/> + <Caret Line="49" Column="15" TopLine="27"/> + </Position15> + <Position16> + <Filename Value="mainwindow.pas"/> + <Caret Line="155" Column="28" TopLine="128"/> + </Position16> + <Position17> + <Filename Value="mainwindow.pas"/> + <Caret Line="70" Column="10" TopLine="43"/> + </Position17> + <Position18> + <Filename Value="wslcommandline.pas"/> + <Caret Line="123" Column="41" TopLine="26"/> + </Position18> + <Position19> + <Filename Value="wslcommandline.pas"/> + <Caret Line="123" Column="41" TopLine="26"/> + </Position19> + <Position20> + <Filename Value="mainwindow.pas"/> + <Caret Line="48" Column="43" TopLine="40"/> + </Position20> + <Position21> + <Filename Value="mainwindow.pas"/> + <Caret Line="156" Column="34" TopLine="128"/> + </Position21> + <Position22> + <Filename Value="mainwindow.pas"/> + <Caret Line="37" Column="58" TopLine="11"/> + </Position22> + <Position23> + <Filename Value="mainwindow.pas"/> + <Caret Line="179" Column="74" TopLine="139"/> + </Position23> + <Position24> + <Filename Value="mainwindow.pas"/> + <Caret Line="206" Column="18" TopLine="157"/> + </Position24> + <Position25> + <Filename Value="mainwindow.pas"/> + <Caret Line="90" Column="24" TopLine="58"/> + </Position25> + <Position26> + <Filename Value="mainwindow.pas"/> + <Caret Line="225" Column="41" TopLine="213"/> + </Position26> + </JumpHistory> + <RunParams> + <FormatVersion Value="2"/> + <Modes Count="0" ActiveMode=""/> + </RunParams> + </ProjectSession> + <Debugging> + <BreakPoints Count="3"> + <Item1> + <Kind Value="bpkSource"/> + <WatchScope Value="wpsLocal"/> + <WatchKind Value="wpkWrite"/> + <Source Value="C:\lazarus\fpc\3.2.0\source\packages\fcl-registry\src\registry.pp"/> + <Line Value="497"/> + </Item1> + <Item2> + <Kind Value="bpkSource"/> + <WatchScope Value="wpsLocal"/> + <WatchKind Value="wpkWrite"/> + <Source Value="wsl.pas"/> + <Line Value="200"/> + </Item2> + <Item3> + <Kind Value="bpkSource"/> + <WatchScope Value="wpsLocal"/> + <WatchKind Value="wpkWrite"/> + <Source Value="wsl.pas"/> + <Line Value="185"/> + </Item3> + </BreakPoints> + </Debugging> +</CONFIG> diff --git a/wslguitool.res b/wslguitool.res new file mode 100644 index 0000000..af56d82 Binary files /dev/null and b/wslguitool.res differ diff --git a/wslregistry.pas b/wslregistry.pas new file mode 100644 index 0000000..84ea9ee --- /dev/null +++ b/wslregistry.pas @@ -0,0 +1,202 @@ +unit wslregistry; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, fgl, Regexpr, ComObj, Registry, WslApi; + +Type + // A WSL distribution + TWslRegistryDistribution = class(TWslApiDistribution) + Id: string; + BasePath: string; + KernelCommandLine: string; + PackageFamilyName: string; + IsDefault: boolean; + end; + + TWslRegistryDistributionList = specialize TFPGObjectList<TWslRegistryDistribution>; + +// Return list of distribution for registry +function LoadWslFromRegistry(): TWslRegistryDistributionList; +// Return a distribution for registry by this id +function LoadWslOneDistributionFromRegistryById(DistributionKey: string): TWslRegistryDistribution; +// Find a distribution in list return by LoadWslFromRegistry() +function FindDistribution(Distributions: TWslRegistryDistributionList; Name: string): TWslRegistryDistribution; +// Return a distribution by name +function LoadWslOneDistributionFromRegistryByName(DistributionName: string): TWslRegistryDistribution; +// Save a distribution in registry +procedure SaveDistributionToRegistry(Distribution: TWslRegistryDistribution); + +const + LXSS_REG_KEY = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss'; + +implementation + +function LoadWslOneDistributionFromRegistryById(DistributionKey: string): TWslRegistryDistribution; +var + Registry : TRegistry; +begin + Result := TWslRegistryDistribution.Create(); + + Registry := TRegistry.Create; + Registry.RootKey := HKEY_CURRENT_USER; + + Registry.OpenKey(LXSS_REG_KEY + '\\' + DistributionKey, False); + + Result.Id:= DistributionKey; + Result.Version := Registry.ReadInteger('Version'); + Result.Name := Registry.Readstring('DistributionName'); + Result.BasePath := Registry.Readstring('BasePath'); + Result.Flags := Registry.ReadInteger('Flags'); + Result.DefaultUID := Longword(Registry.ReadInteger('DefaultUid')); + + Result.Env := TStringList.Create(); + + Registry.ReadStringList('DefaultEnvironment', Result.Env); + + Result.KernelCommandLine := Registry.Readstring('KernelCommandLine'); + Result.PackageFamilyName := Registry.Readstring('PackageFamilyName'); + + Registry.CloseKey; + + Registry.Free; +end; + +function LoadWslFromRegistry(): TWslRegistryDistributionList; +var + Registry : TRegistry; + DefaultDistribution: string; + DistributionsIdList : Tstrings; + Distribution: TWslRegistryDistribution; + i: integer; +begin + Result := TWslRegistryDistributionList.Create(); + + Registry := TRegistry.Create; + Registry.RootKey := HKEY_CURRENT_USER; + + if Registry.KeyExists(LXSS_REG_KEY) + then begin + Registry.OpenKey(LXSS_REG_KEY, False); + + DefaultDistribution := Registry.Readstring('DefaultDistribution'); + + DistributionsIdList := TstringList.Create(); + + Registry.GetKeyNames(DistributionsIdList); + + for i := 0 to DistributionsIdList.Count - 1 do + begin + Distribution := LoadWslOneDistributionFromRegistryById(DistributionsIdList[i]); + + if Distribution.Name = DefaultDistribution + then begin + Distribution.IsDefault := true; + end; + + Result.Add(Distribution); + end; + + DistributionsIdList.Free; + + Registry.CloseKey; + end; + + Registry.Free; +end; + +function FindDistribution(Distributions: TWslRegistryDistributionList; Name: string): TWslRegistryDistribution; +var + i: Integer; +begin + for i := 0 to Distributions.Count - 1 do + begin + if Distributions[i].Name = Name + then begin + Exit(Distributions[i]); + end; + end; +end; + +function CheckDistributionName(DistributionKey: string; DistributionName: string): boolean; +var + Registry : TRegistry; +begin + Registry := TRegistry.Create; + Registry.RootKey := HKEY_CURRENT_USER; + + Registry.OpenKey(LXSS_REG_KEY + '\\' + DistributionKey, False); + + Result := Registry.Readstring('DistributionName') = DistributionName; + + Registry.CloseKey; + + Registry.Free; +end; + +function LoadWslOneDistributionFromRegistryByName(DistributionName: string): TWslRegistryDistribution; +var + Registry : TRegistry; + DistributionsIdList : Tstrings; + i: integer; +begin + Registry := TRegistry.Create; + Registry.RootKey := HKEY_CURRENT_USER; + Result := nil; + + if Registry.KeyExists(LXSS_REG_KEY) + then begin + Registry.OpenKey(LXSS_REG_KEY, False); + + DistributionsIdList := TstringList.Create(); + + Registry.GetKeyNames(DistributionsIdList); + + for i := 0 to DistributionsIdList.Count - 1 do + begin + if CheckDistributionName(DistributionsIdList[i], DistributionName) + then begin + Result := LoadWslOneDistributionFromRegistryById(DistributionsIdList[i]); + break; + end; + + end; + + DistributionsIdList.Free; + + Registry.CloseKey; + end; + + Registry.Free; +end; + +procedure SaveDistributionToRegistry(Distribution: TWslRegistryDistribution); +var + Registry : TRegistry; +begin + Registry := TRegistry.Create; + Registry.RootKey := HKEY_CURRENT_USER; + + Registry.OpenKey(LXSS_REG_KEY + '\\' + Distribution.Id, False); + + Registry.WriteString('DistributionName', Distribution.Name); + Registry.WriteInteger('Flags', Distribution.Flags); + Registry.WriteInteger('DefaultUid', Distribution.DefaultUID); + Registry.WriteStringList('DefaultEnvironment', Distribution.Env); +// TODO +// Result.Version := Registry.ReadInteger('Version'); +// Result.BasePath := Registry.Readstring('BasePath'); +// Result.KernelCommandLine := Registry.Readstring('KernelCommandLine'); +// Result.PackageFamilyName := Registry.Readstring('PackageFamilyName'); + + + Registry.CloseKey; + + Registry.Free; +end; + +end. +