From 7c9a9808096d2f043b8df92564a02df25042b6f2 Mon Sep 17 00:00:00 2001 From: Peppersawce <157759066+Peppersawce@users.noreply.github.com> Date: Fri, 26 Dec 2025 19:11:32 +0100 Subject: [PATCH] OpenRCT 0.4.29 (#12189) --- .../additional-files/openrct2.rdef.in | 681 ++++++++++++++++++ .../openrct2/openrct2-0.4.29.recipe | 127 ++++ .../openrct2/patches/openrct2-0.4.29.patchset | 378 ++++++++++ 3 files changed, 1186 insertions(+) create mode 100644 games-simulation/openrct2/additional-files/openrct2.rdef.in create mode 100644 games-simulation/openrct2/openrct2-0.4.29.recipe create mode 100644 games-simulation/openrct2/patches/openrct2-0.4.29.patchset diff --git a/games-simulation/openrct2/additional-files/openrct2.rdef.in b/games-simulation/openrct2/additional-files/openrct2.rdef.in new file mode 100644 index 000000000..874a374f7 --- /dev/null +++ b/games-simulation/openrct2/additional-files/openrct2.rdef.in @@ -0,0 +1,681 @@ +resource app_flags B_SINGLE_LAUNCH; + +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = @MINOR@, + + variety = B_APPV_FINAL, + internal = 0, + + short_info = "OpenRCT2", + long_info = "@LONG_INFO@" +}; + +resource app_signature "application/x-vnd.openrct2"; + +resource vector_icon { + $"6E6369663A020006023CB6D63B2254BB22543CB6D6486ED44B6555002C67DFFF" + $"AFE8F90200060437A0C900000000000037A0C94886144AD6110017232356141F" + $"1FAC0D1313FF0000000200060A39AD4B3663B0B663B039AD4B49BD1148F31D00" + $"8E530709A8761514C1982321D6B42E2EE7CA373CF2D93D4CF9E24164FBE542BC" + $"FEEF55FFFFF45E0200060A34C7BDB297C73297C734C7BD4A8ADA484C8100E08E" + $"001EEDB40039F7CF0052FDE00064FFE60081FFEB209FFFEF3BBEFFF24FDEFFF3" + $"5AFFFFF45E020006093B2D3D318CC4B18CC43B2D3D4A01D14B4D5C008E530713" + $"A06A063BCDA50364FFE60081FFEB209FFFEF3BBEFFF24FDEFFF35AFFFFF45E02" + $"00060236D78700000000000036D7874996E54AAB8300A30000FFFF0000020006" + $"053658A0B0A34C30A34C3658A04A759F4A6CFE00FF00002CFF080571FF1D14C5" + $"FF402DFFFF5C400200060634E42E2FA9DEAFA9DE34E42E48DC984A4602007300" + $"004976000083800000B6900000E7A80000FFB600000200060438B8E9B6C63036" + $"C63038B8E94AAA204A78700017232356141F1FAC0D1313FF0000000200120239" + $"3C7F2F9DD1AF9DD1393C7F49FA324A4490000000FF00FF050004005E02000605" + $"365AA2000000000000365AA24A312D4921400F1E2929121F2A2A492838388D2D" + $"4040FF2F4343020012023889FFB889FF3889FF3889FF4A5E634BA5C4000000FF" + $"00FF020006083497C70000000000003497C749011F484B94007300000F880000" + $"30AC000053CA000077E200009DF20000C8FC0000FFFF00000200060237C7DE00" + $"000000000037C7DE4983DE48281500A30000FFFF000002000602350523000000" + $"00000035052349D83247BE8A00D40000FFFF000002000607361EDEB2EBB332EB" + $"B3361EDE4A457947E2D300C9000070CA02029BCF0908BAD71513D3E32622E9F2" + $"3C35F7FF5047020006043B504CB6564F36564F3B504C4A0B9F4BDC3400172323" + $"56141F1FAC0D1313FF0000000200060A3B504BB6564F36564F3B504B4A0BA34B" + $"D506004E596111555F672A68717748878E926AB2B7B78DE9EAE69BFFFFF9A4F7" + $"F9F3E0C9D2D0FFB7C3C3053302000604B45E563740F3B740F3B45E564A42BE49" + $"B54F00B7C3C31FC1CCCCB3EEF1F1FFFFFFFF0200120C39CDC73805C4B805C439" + $"CDC74A36564A6ABF0028660025640514590B094A1302372A00008A0000990000" + $"B50446D2108EEF25D7FF33FF0200060534C9DE00000000000034C9DE4A60FC48" + $"4EB500D3000026E2000063F20000A7FC0000FFFF000003FFE60003FFFF000200" + $"06023499B40000000000003499B449BFC3484BB200C20000FFFF00000200060A" + $"3450C90000000000003450C949AA9D48E8760000000000030404020F15150518" + $"2020081D2727121E29291E222F2F41293A3A732E4141FF2F43430200060A32D2" + $"0800000000000032D20849358648DD9F0000000000030404010F151503182020" + $"051D27270B1E292914202C2C43293939812E4141FF2F434302000606304D3000" + $"0000000000304D304A7E7848CCBD000000000E1E292919222F2F3D293A3A712E" + $"4141FF2F43430200120200000034A81FB4A81F00000049DE024866E4000051FF" + $"000002001203000000334960B3496000000049EC37482218000000E60049FF00" + $"51020012043B504BB6564F36564F3B504B4A0BA34BD50600FF0090FFD9A9FFFF" + $"FFFF00040033020012053A27FFB3A04733A0473A27FF49E9B64C0B5100FF00A6" + $"FFDAC2FFFFC6FFEFFFFF00020012033A27FFB3A04733A0473A27FF49E9B64C0B" + $"5100005117004AFF000002001203398E633696B5B696B5398E6349C47848BA62" + $"000051250045FF00000200060632F05F2A76E0AA76E032F05F49F56049C22800" + $"75816B6D737F6AA36D7765CC636A5EEF555853FF4D4D4D020012033AE1E6B53D" + $"A4353DA43AE1E64A0AD74AE088000051250045FF000004FF330200120237CC06" + $"00000000000037CC064A9F294A37C6D4FF00FFFFFF020012023402ACB57B7035" + $"7B703402AC4A5A9B47B52C76FF00FFFFFF020012023897A0B4785F34767F389A" + $"2B4A64F34AEB278EFF00FFFFFF02001202374AD3B2CC9832CC98374AD34A8AA8" + $"4B71CF8EFF00FFFFFF0200120400000033035EB3035E00000049EE6848221C00" + $"FF0042FFFF5CFFDBFFFF0002001202344AEC000000000000344AEC4A692F4900" + $"7600FF00FFFFFF020006021F84001E08009E08001F84004AE1134A54A3002C67" + $"DFFFAFE8F9020006023CB6D63B2254BB22543CB6D6489C094B3E2E002C67DFFF" + $"AFE8F9020006021FBC001E28009E28001FBC004AE1114A54A4002C67DFFFAFE8" + $"F902000602BB65A1BCF11E3CF11EBB65A14B788F48610600231F20FF5A4A4202" + $"00060231D76F00000000000031D76F4A03EB450F6C00231F20FF5A4A42020012" + $"022E3AE2B329673329672E3AE24A1090423AFE530000FF00FF0200060232C14F" + $"312E6CB12E6C32C14F49FB1C40F85700231F20FF5A4A4202001203B12E6A32C1" + $"4DB2C14DB12E6A49F1CB3D30522B0000FD00FDFF00FF020012022F5102AF5102" + $"2F51022F51024A0A9A3E5FD887FF00FFFFFF02001202B37FA629E8DCA9E8DCB3" + $"7FA64A081743E84C3700FEC8000002000607B8A81837114EB7114EB8A8184A2C" + $"E5C0F58800FFFF6B2FFFFB695EFFEF628DFFDB57BBFFBF47E9FF9C34FFFF8929" + $"020012022EE7700000000000002EE7704A075446453000FF00FFFFFF48021ACB" + $"49BFFFCB49BFFFC917C230C4B4C694C6E5C462C493C6B4C452C6F5C473C6D5C4" + $"4FC6F8C449C6FEC44CC6FBC2C6C881BFBFCB88C143CA05BFA6CB6EBF73CB3BBF" + $"8DCB55BEBCCA85BD4FC917BE05C9CEBD4FC917BD4FC917BD4FC917BD4DC915BD" + $"49C912BD4BC913BD12C8DABCA4C86CBCDBC8A3BCA4C86CBCA4C86CBCA4C86CBC" + $"46C80EBB8A53BBE8C7B0BB8A53BB8A53BB8A53BB70C738BB3BC703BB55C71DBB" + $"33C6FCBB24C6EDBB2CC6F4BB24C6EDBB2452BB24C6EDBB04C6CCBAC3C68BBAE3" + $"C6ACBAC3C68BBAC3C68BBAC3C68BBABE51BAB4C67CBAB9C681BA6CC634B9DBC5" + $"A3BA24C5ECB9C5C58EB99AC562B9AFC578B99AC562B99AC562B99AC562B7CEC3" + $"96B436BFFFB602C1CAB80FBC26BFBFB476BBE7B84EC398B84ECB49BFFFC770BC" + $"26CB49BFFFCB49BFFFCB49BFFFCB49BFFF020FBC7DC1B9BC7DC1B9BC73C22EBC" + $"5FC319BC69C2A337C37CBBC1C444BBF5C3E0BBB4C47CBB9AC4ECBBA7C4B4BB99" + $"4DBB98C4F4BB99C4F1BB96C4FDBB91C511BB93C507BB91C513BB90C517BB90C5" + $"15BB87C53EBB75C58CBB7EC565BAD6C58CB999C58CBA38C58CB999C4E8B999C3" + $"A2B999C445B999C3A1B999C39FB999C3A0B999C39FB999C39EB999C39FB99EC3" + $"1BBBECC1F0BAB3C270BC1CC1DCBC7DC1B9BC4CC1CABC7DC1B9BC7DC1B9BC7DC1" + $"B9BC7DC1B90241C306B978C306B978C306B978C306B978C306B978C306B978C3" + $"06B978C306B978C306B979C306B979C306B979C306B97BC306B980C306B97DC3" + $"05B9B5C2E5BA19C2FAB9E8C2E4BA1BC2E2BA20C2E3BA1DC2E2BA20C2E2BA20C2" + $"E2BA20C2DBBA31C2C8BA53C2D2BA42C2B1BA7AC270BAC2C293BA9FC249BAE8C1" + $"E9BB28C21CBB0AC1E8BB29C1E4BB2BC1E6BB2AC1E4BB2CC1E2BB2CC1E3BB2CC1" + $"E1BB2DC1DEBB2FC1DFBB2EC1DEBB2FC1DEBB2FC1DEBB2FC1C6BB3DC194BB55C1" + $"AEBB49C121BB89C009BBAEC09ABBA9BFFBBBAFBFDEBBAFBFECBBAFBFBFBBAFBF" + $"84BBACBFA1BBAEBF64BBA9BF25BBA0BF44BBA5BEF7BB99BEA0BB82BECBBB8EBE" + $"83BB79BE4CBB64BE67BB6FBE45BB62BE39BB5CBE3FBB5FBE19BB4FBDDEBB2FBD" + $"FBBB40BDDEBB2FBDDEBB2FBDDEBB2FBDBCBB1CBD80BAF0BD9DBB07BD80BAEFBD" + $"7EBAEEBD7FBAEFBD62BAD7BD31BAA5BD48BABFBD31BAA5BD30BAA4BD30BAA5BD" + $"2EBAA2BD29BA9CBD2BBA9FBD22BA94BD15BA83BD1BBA8CBCFDBA64BCDABA20BC" + $"E9BA43BCDABA20BCD9BA20BCDABA20BCD8BA1DBCD7BA19BCD7BA1BBCC4B9EDBC" + $"B6B98FBCB9B9BFBCB6B98ABCB6B980BCB6B985BCB5B97DBCB5B978BCB5B97BBC" + $"B5B978BCB5B978BCB5B978BCB6B874BF06B756BDB0B798BF11B754BF27B750BF" + $"1CB752BF2EB74FBF3BB74DBF34B74EBF3FB74DBF47B74BBF43B74CBF4DB74BBF" + $"58B749BF53B74ABF72B746BFA7B743BF8DB744BFB9B742BFDEB742BFCCB742BF" + $"E7B742BFF9B742BFF0B742BFFFB742C009B743C004B742C043B745C0B1B755C0" + $"7BB74BC0B1B755C0B1B755C0B1B755C122B76BC1E0B7C3C189B790C1E3B7C4C1" + $"E7B7C7C1E5B7C6C1E82CC1E92CC1E92CC1EBB7C9C1EFB7CCC1EDB7CBC220B7E9" + $"C271B830C24CB80BC279B838C287B847C280B83FC28EB84EC29BB85EC295B856" + $"C2A2B866C2AEB876C2A8B86EC2B5B880C2C3B895C2BCB88BC2C9B8A0C2D5B8B5" + $"C2D0B8ABC2D8B8BAC2DCB8C2C2DAB8BEC2E4B8D4C2F2B8F8C2EBB8E6C2F6B906" + $"C2FDB922C2FAB914C302B939C306B96AC305B951C306B96EC306B978C306B973" + $"C306B978C306B978C306B978C306B978022EC39AB9CCC39AB9CCC39AB9E3C381" + $"BA07C390B9F8C37FBA09C37BBA0DC37DBA0BC37BBA0DC37BBA0DC37BBA0DC378" + $"BA0FC371BA14C375BA12C36FBA15C36ABA18C36DBA17C368BA19C363BA1BC365" + $"BA1AC363BA1BC363BA1BC363BA1BC35ABA1EC346BA20C350BA20C2FFBA20C270" + $"BA20C2B7BA20C276BA20C282BA1DC27DBA1FC284BA1DC288BA1BC286BA1CC288" + $"BA1BC289BA1BC288BA1B47BA1AC28CBA19C28BBA1AC28CBA19C28CBA19C28CBA" + $"19C28EBA18C291BA17C28FBA17C298BA13C2A3BA07C29EBA0EC2A4BA06C2A7BA" + $"02C2A6BA04C2A7BA02C2A8BA01C2A8BA01C2A9B9FFC2ACB9FBC2AAB9FDC2ADB9" + $"F9C2AFB9F4C2AEB9F6C2B0B9F2C2B2B9EEC2B1B9F0C2B2B9EDC2B3B9ECC2B2B9" + $"EDC2B3B9EBC2B4B9E7C2B4B9E9C2B5B9E6C2B5B9E3C2B5B9E4C2B6B9E1C2B6B9" + $"DEC2B6B9DFC2B7B9DDC2B7B9DCC2B7B9DDC2B7B9DAC2B8B9D5C2B7B9D8C2B8B9" + $"D5C2B8B9D5C2B8B9D5C2B8B9D2C2B8B9CCC2B8B9CFC2B8B9C9C2B8B9C4C2B8B9" + $"C7C2B8B9C4C2B8B9C3C2B8B9C4C2B7B9C1C2B7B9BCC2B7B9BFC2B7B9BCC2B6B9" + $"BBC2B7B9BBC2B6B9B9C2B5B9B6C2B6B9B8C2B5B9B4C2B4B9B0C2B4B9B2C2B3B9" + $"AEC2B2B9ABC2B3B9ADC2B1B9A9C2AFB9A4C2B0B9A6C2ADB9A0C2A8B997C2ABB9" + $"9BC2A6B995C2A3B991C2A5B993C29EB98BC291B982C298B986C28FB981C28DB9" + $"7FC28EB980C284B97BC270B978C27AB978C2B7B978C346B978C2FFB978C374B9" + $"78C39AB9CCC39AB99EC39AB9CCC39AB9CCC39AB9CCC39AB9CC0235C4E8C6CAC4" + $"E8C6CAC4B6C6FCC452C760C484C72EC44FC763C449C769C44CC766C441C771C4" + $"31C781C439C779C40EC7A4C3C8C7EAC3EBC7C7C36AC848C2AFC903C30CC8A6C2" + $"ACC906C2A6C90CC2A9C909C29CC916C289C929C293C91FC25BC957C1FFC9B3C2" + $"2DC985C13FCA73BFBFCBF2C07FCB33BFA6CBD9BF73CBA6BF8DCBC0BEBCCAEFBD" + $"4FC982BE05CA38BD4DC980BD49C97CBD4BC97EBD12C945BCA4C8D7BCDBC90EBC" + $"46C879BB8AC7BDBBE8C81BBB80C7B3BB6DC7A0BB76C7A9BB55C788BB24C757BB" + $"3CC76FBB24C757BB24C757BB24C757BB04C737BAC3C6F6BAE3C716BAC3C6F6BA" + $"C3C6F6BAC3C6F6BACAC6D9BAD7C69FBAD0C6BCBAECC643BB17C58CBB02C5E7BB" + $"1AC580BB1FC569BB1CC574BB27C547BB36C504BB2EC526BB37C501BB38C4FABB" + $"38C4FEBB39C4F6BB3CC4EDBB3BC4F1BB3EC4E3BB42C4CFBB40C4D9BB42C4CFBB" + $"42C4CFBB42C4CFBB4BC4A9BB5DC45CBB54C483BB80C3C5BBC6C297BBA3C32EBB" + $"CEC272BBDFC229BBD6C24DBBE3C216BBECC1F0BBE8C203BC16C13BBC69BFD1BC" + $"40C086BC82BF68BCB2BE95BC9ABEFEBCB2BD19BCB2BA20BCB2BB9CBECDBA20C3" + $"03BA20C0E8BA20C303BB9CC303BE95C303BD19C31BBEFEC34CBFD1C334BF68C3" + $"50BFE3C358C005C354BFF4C359C009C35BC011C35AC00DC35CC015C35EC01DC3" + $"5DC019C361C02CC368C04AC364C03BC369C050C36DC05EC36BC057C374C080C3" + $"84C0C2C37CC0A1C38CC0E6C39DC12EC394C10AC39EC134C3A1C142C3A0C13BC3" + $"A1C143C3A2C145C3A2C1444AC1B8C3F1C29EC3D7C22BC3F7C2B5C401C2E3C3FC" + $"C2CCC402C2E6C403C2EBC403C2E8C449C418C4D4C673C48EC546C4DBC690C4E8" + $"C6CAC4E1C6ADC4E8C6CAC4E8C6CAC4E8C6CAC4E8C6CA0215BF92BF0FBF92BF0F" + $"BF92BF0FBF92BF0FBF92BF0FBF8DC152BF82C5D6BF87C394BF82C5D6BF82C5D6" + $"BF82C5D6BF80C65CBF7EC767BF7FC6E1BF7DC7BDBF7BC86ABF7CC813BF7BC86A" + $"BF7BC86ABF7BC86ABF7AC8CEBF78C997BF79C933BF77CA47BF73CBA6BF75CAF6" + $"BEBCCAEFBD4FC982BE05CA38BD4FC982BD4FC981BD4FC982BD4FC980BD4FC97D" + $"BD4FC97EBD5EC900BD7DC806BD6EC883BD7DC806BD7DC806BD7DC806BD84C7CE" + $"BD91C75EBD8AC796BDA5C6BDBDCCC57DBDB8C61DBDCCC57CBDCCC57CBDCCC57C" + $"BE0FC355BE95BF05BE52C12DBE9ABD63BEA5BA20BE9FBBC2BEEDBA20BF7DBA20" + $"BF35BA20BF84BBC5BF92BF0FBF8BBD6ABF92BF0F020EC452C760C452C760C44F" + $"C763C449C769C44CC766C3BDC7F5C2A6C90CC332C880C2A6C908C2A5C901C2A5" + $"C905C295C87DC276C775C286C7F9C26BC71BC256C666C261C6C0C256C666C256" + $"C666C256C666C20BC3EEC175BEFFC1C0C176C183BD5FC19EBA20C191BBBFC1E4" + $"BA20C26FBA20C229BA20C272BBB3C278BEDAC275BD46C30CC185C435C6DAC3A1" + $"C42FC435C6DAC435C6DAC435C6DAC43FC707C452C760C448C733C452C7600222" + $"BD15BA20BD15BA20BD15BBCDBD15BF26BD15BD79BCD8C077BC5FC319BC9CC1C8" + $"BC41C3BFBC06C50CBC24C465BC06C50CBC06C50CBC06C50CBC03C51BBBFEC538" + $"BC00C529BBDDC5F1BB9AC762BBBBC6AABB98C76CBB95C77FBB97C776BB95C77F" + $"BB95C77FBB95C77FBB92C78EBB8DC7ABBB90C79CBB8CC7B1BB8AC7BDBB8BC7B7" + $"BB8AC7BDBB8AC7BDBB8AC7BDBB80C7B3BB6DC7A0BB76C7A9BB55C788BB24C757" + $"BB3CC76FBB24C757BB24C757BB24C757BB04C737BAC3C6F6BAE3C716BAC3C6F6" + $"BAC3C6F6BAC3C6F6BACAC6D9BAD7C69FBAD0C6BCBAECC643BB17C58CBB02C5E7" + $"BB1AC580BB1FC569BB1CC574BB27C547BB36C504BB2EC526BB37C501BB38C4FA" + $"BB38C4FEBB39C4F6BB3CC4EDBB3BC4F1BB3EC4E3BB42C4CFBB40C4D9BB42C4CF" + $"BB42C4CFBB42C4CFBB4BC4A9BB5DC45CBB54C482BB80C3C5BBC6C297BBA3C32E" + $"BBCEC272BBDFC229BBD6C24DBBE3C216BBECC1F0BBE8C203BC16C13BBC69BFD1" + $"BC40C086BC82BF68BCB2BE95BC9ABEFEBCB2BD19BCB2BA20BCB2BB9CBCD3BA20" + $"BD15BA20BCF4BA20BD15BA20BD15BA20BD15BA20BD15BA200220C55BC012C55B" + $"C012C55BC059C55BC0E6C55BC09FC55AC14CC55AC1B9C55AC1B2C55AC1B9C55A" + $"C1B9C55AC1B9C55AC211C3F1C29EC4C9C276C3D7C22BC3A2C1454AC1B8C3A2C1" + $"44C3A1C142C3A1C143C3A1C141C3A0C13FC3A0C140C395C11CC339C0D6C371C0" + $"F9C31EC0C6C2DCC0A6C2FFC0B5C29DC08AC1FBC057C252C06FC1DCC04FC19BC0" + $"3FC1BCC047C117C020BFDBBFF7C080C007BFD9BFF7BFD6BFF7BFD7BFF7BFD6BF" + $"E7BFD6BFC2BFD6BFD4BFD6BFB4BFD6BF99BFD6BFA6BFD6BF84BFD6BF6FBFD6BF" + $"74BFD6BF6CBFD6BF64BFD6BF68BFD6BF64BFD6BF64BFD6BF64BFD7BF65BFDBBF" + $"65BFD9BF65C06ABF77C187BF9AC0F8BF88C187BF9AC187BF9AC187BF9AC1B4BF" + $"9FC20EBFAAC1E1BFA5C21DBFACC23CBFB0C22DBFAEC23DBFB0C23DBFB0C23DBF" + $"B0C23DBFB0C23DBFB0C23DBFB0C261BFB5C2A9BFBDC285BFB9C2E0BFC4C34CBF" + $"D1C316BFCBC3F1BFE6C539C00EC495BFFAC539C00EC539C00EC539C00EC544C0" + $"0FC55BC012C54FC011C55BC012C55BC012C55BC012C55BC0120208C151BD96C1" + $"51BD96C0CBBD96BFBFBD94C045BD95BFB6BD87BFA2BD6FBFACBD7BBED4BD80BD" + $"3ABDA4BE07BD92BD46BE0EBD5FBEE2BD53BE78BD59BF55BD4FC03BBD54BFC8BE" + $"F8C045C24CC059C0A2C04FC1F8BF6EC151BD96C1A5BE82C151BD960607FF1FC1" + $"E9BB5FC1E9BB5FC1E9BC25C1E9BDB0C1E9BCEBC149BDB0C009BDB0C0A9BDB0C0" + $"09BCEBC009BB5FC009BC25C009BACEC0F9BA58C074BA58C17EBA58C1E9BB5FC1" + $"E9BACEC1E9BB5FBB5F0607FF1FC1E9BB5FC1E9BB5FC1E9BC25C1E9BDB0C1E9BC" + $"EBC149BDB0C009BDB0C0A9BDB0C009BCEBC009BB5FC009BC25C009BACEC0F9BA" + $"58C074BA58C17EBA58C1E9BB5FC1E9BACEC1E9BB5FBB5F0607FF1FC1E9BB6AC1" + $"E9BB6AC1E9BC2CC1E9BDB0C1E9BCEEC149BDB0C009BDB0C0A9BDB0C009BCEEC0" + $"09BB6AC009BC2CC009BAD9C0F9BA63C074BA63C17EBA63C1E9BB6AC1E9BAD9C1" + $"E9BB6ABB6A0607FF1FC1E9BB6AC1E9BB6AC1E9BC2CC1E9BDB0C1E9BCEEC149BD" + $"B0C009BDB0C0A9BDB0C009BCEEC009BB6AC009BC2CC009BAD9C0F9BA63C074BA" + $"63C17EBA63C1E9BB6AC1E9BAD9C1E9BB6ABB6A020EC3C8C7EAC3C8C7EAC35CC8" + $"85C286C9B9C2F1C91FC181C9AEBF78C997C07DC9A2BEC0C98EBD4FC97DBE08C9" + $"85BD4DC97CBD49C97CBD4BC97CBD12C945BCA4C8D7BCDBC90EBCA4C8D7BCA4C8" + $"D6BCA4C8D6BCB856BCE0C7E0BCCCC832BCEBC7B4BD01C75B39C787BD31C75CBD" + $"91C75EBD61C75DBE35C761BF7EC767BEDAC764C07BC76CC276C775C179C770C2" + $"C3C777C35FC77AC311C778C382C79FC3C8C7EAC3A5C7C5C3C8C7EA0228BD07BA" + $"1DBD07BA1DBD0CBA1FBD17BA20BD12BA20BCDBBA20BC63BA20BC9FBA20BC51BA" + $"20BC34BA12BC41BA1BBC2FBA0FBC27BA07BC2BBA0BBC18B9F8BC0FB9CCBC0FB9" + $"E3BC0FB99EBC63B978BC34B978BC9FB978BD17B978BCDBB978BD14B978BD0EB9" + $"79BD11B979BD0DB97ABD0BB97ABD0CB97ABD07B97BBCFEB97FBD02B97DBCFDB9" + $"80BCFAB982BCFBB981BCF7B984BCF2B988BCF5B986BCF1B989BCEFB98CBCF0B9" + $"8ABCEDB98DBCEAB992BCECB990BCE9B993BCE6B997BCE8B995BCE5B999BCE3B9" + $"9DBCE4B99BBCE1B9A0BCDFB9A6BCE0B9A3BCDEB9A7BCDDB9AABCDEB9A9BCDBB9" + $"B1BCD9B9C1BCD9B9B9BCD8B9C2BCD8B9C5BCD8B9C4BCD8B9C8BCD8B9CCBCD8B9" + $"CABCD8B9CFBCD8B9D3BCD8B9D1BCD8B9D5BCD9B9D7BCD8B9D6BCD9B9DCBCDBB9" + $"E5BCDAB9E1BCDBB9E8BCDDB9ECBCDCB9EABCDDB9EDBCDDB9EDBCDDB9EDBCDEB9" + $"EFBCDFB9F3BCDEB9F1BCE0B9F4BCE0B9F6BCE0B9F5BCE2B9FABCE6BA01BCE4B9" + $"FEBCE6BA01BCE7BA02BCE6BA02BCE8BA04BCEABA07BCE9BA06BCEFBA0EBCFBBA" + $"17BCF5BA13BCFCBA18BCFEBA19BCFDBA18BCFEBA19BCFEBA19BCFEBA19BCFEBA" + $"19BCFFBA19BCFEBA19BD00BA1ABD03BA1CBD02BA1BBD03BA1CBD04BA1CBD04BA" + $"1CBD05BA1CBD07BA1DBD06BA1DBD07BA1DBD07BA1DBD07BA1DBD07BA1D0232BF" + $"B5B743BFB5B743BFB1B743BFA8B743BFADB743BFA4B744BF9AB745BF9FB744BF" + $"99B745BF96B745BF97B745BF8BB746BF76B748BF81B747BF75B748BF73B748BF" + $"74B748BF51B74CBF11B75ABF30B753BF0BB75CBF01B75FBF06B75DBEFCB760BE" + $"F1B763BEF6B761BEE2B767BEC4B772BED3B76CBEBBB775BEA8B77CBEB1B779BE" + $"A3B77EBE98B783BE9DB781BE8FB787BE7DB78FBE86B78BBE7CB790BE79B791BE" + $"7BB790BE75B793BE6EB797BE72B795BE69B799BE60B79EBE65B79BBE5CB7A0BE" + $"53B7A5BE57B7A3BE3DB7B1BE14B7CD3CB7BFBE10B7D0BE08B7D6BE0CB7D3BE04" + $"B7D8BDFDB7DFBE00B7DBBDF5B7E5BDE6B7F1BDEDB7EBBDE2B7F4BDDBB7FBBDDE" + $"B7F8BDD7B7FEBDD0B805BDD4B801BDCCB808BDC6B80FBDC9B80BBDC0B814BDB4" + $"B820BDBAB81ABD9CB83ABD75B872BD87B855BD73B875BD6EB87DBD70B879BD6E" + $"B87DBD6DB87FBD6DB87EBD6BB882BD66B88ABD68B886BD54B8ABBD3AB8F1BD45" + $"B8CDBD36B8FDBD30B917BD33B90ABD2AB937BD26B978BD26B957BD26B978BD26" + $"B978BD26B978BCFFB978BCB2B978BCD9B978BCB2B978BCB2B978BCB2B978BCB2" + $"B900BD44B833BCE8B88FBD6DB80ABDD4B7C5BD9EB7E5BDE2B7BEBDFFB7AEBDF0" + $"B7B6BE1BB7A0BE59B786BE3AB792BE59B786BE59B786BE59B786BE65B782BE7C" + $"B77ABE70B77EBEA8B76BBF06B756BED6B75FBF11B754BF27B750BF1CB752BF2E" + $"B74FBF3BB74DBF34B74EBF3FB74DBF47B74BBF43B74CBF4DB74BBF58B749BF53" + $"B74ABF72B747BFA7B743BF8CB745BFABB743BFB2B743BFAEB743BFB3B743BFB5" + $"B743BFB4B743BFB5B743BFB5B743BFB5B743BFB5B7430605FF01BFDBB742BFDB" + $"B742BFA8B742BF7FB978BF7FB840BF37B978BEA7B978BEEFB978BEA7B840BFDB" + $"B742BF30B742BFDBB742B7420609FFFF01C268B978C268B97846B978C19CB978" + $"C1E0B978C19CB843BFDEB742C0D5B748BFE1B742BFE7B742BFE4B742BFECB742" + $"BFF7B742BFF1B742BFF8B743BFFCB743BFFAB743BFFDB743C000B743BFFEB743" + $"44B756C268B978C268B84CC268B978B9780228C4B4C72DC4B4C72DC493C74DC4" + $"52C78EC473C76EC44FC791C449C797C44CC794C3C0C820C2AFC931C338C8A9C2" + $"ACC931C2A5C92FC2A8C930C29CC92DC289C929C292C92BC11FC8DABF7BC898C0" + $"17C8B3BECFC879BD7DC834BE25C85ABD7DC834BD7DC834BD7DC834BD48C828BC" + $"E0C80EBD14C81CBC71C7F2BB95C7AEBC02C7D2BB95C7AEBB95C7AEBB95C7AEBB" + $"88C7A9BB6DC7A0BB7AC7A4BB54C797BB24C785BB3CC78EBB24C785BB24C786BB" + $"24C785BB24C786BB24C785BB24C786BB04C765BAC3C724BAE3C745BA60C6C1B9" + $"9AC5FBB9FDC65EB99AC5FBB99AC5FBB99AC5FBB99AC5EDB99AC5CDB99AC5DDB9" + $"9AC5B0B99AC570B99AC591B99AC56CB99AC566B99AC569B99AC4E9B999C3D0B9" + $"99C452B999C3CFB999C3CDB999C3CEB999C3CDB999C3CFB999C3CEB999C3CFB9" + $"99C3CFB999C3CFB999C3D0B999C3D0B999C3D0B99EC425BB36C4F9BA39C4A4BB" + $"37C4FABB38C4FABB38C4FABB3CC4FBBB42C4FDBB3FC4FCBB42C4FDBB42C4FEBB" + $"42C4FEBB82C513BC06C53ABBC3C527BC97C564BDCCC5ABBD2FC588BDCCC5ABBD" + $"CCC5ABBDCCC5ABBE5BC5CABF82C604BEEDC5E7C071C632C256C694C165C660C2" + $"F8C6B7C435C708C398C6DDC453C711C490C722C472C719C49CC725C4B4C72DC4" + $"A8C729C4B4C72DC4B4C72DC4B4C72DC4B4C72D0232C4B4C6FEC4B4C6FEC4A8C7" + $"0AC490C722C49CC716C47BC737C452C760C467C74BC44FC763C449C769C44CC7" + $"66C41EC794C3C8C7EAC3F3C7BFC382C830C2F6C8BCC33CC876C2DEC8D4C2AFC9" + $"03C2C7C8EBC2ACC902C2A5C901C2A8C902C28BC8FBC257C8F0C271C8F6C162C8" + $"BDBF7BC86AC06DC894BECFC84BBD7DC806BE25C82CBD7DC806BD7DC806BD7DC8" + $"06BD48C7FABCE0C7E0BD14C7EEBC82C7C8BBC8C790BC25C7AEBBB7C78BBB95C7" + $"7FBBA6C785BB95C77FBB95C77FBB95C77FBB6FC773BB24C757BB4AC765BB24C7" + $"57BB24C757BB24C757BB24C757BB24C757BB24C757BB04C737BAC3C6F6BAE4C7" + $"16BA60C693B99AC5CDB9FDC630B99AC5CDB99AC5CDB99AC5CDB99AC5CDB99AC5" + $"CCB99AC5CDB99AC5B9B99AC58CB99AC5A3B99AC589B99AC585B99AC587B99AC5" + $"7EB99AC570B99AC577B99AC566B99AC553B99AC55CB99AC512B99AC47CB99AC4" + $"C8B999C464B999C433B999C44BB999C423B999C401B999C412B999C3F1B999C3" + $"D0B999C3E1B999C3D0B999C3D0B999C3D0B999C3D0B999C3D0B999C3D0B999C3" + $"D0B999C3D0B999C3D0B999C3CFB999C3CFB999C3CFB999C3CFB999C3CEB999C3" + $"CEB999C3BEB999C39FB999C3AEB99AC3F3BB36C4CBBA36C474BB3AC4CDBB42C4" + $"CFBB3EC4CEBB42C4CFBB42C4CFBB42C4CFBB5FC4D9BB9AC4ECBB7CC4E2BBBDC4" + $"F7BC06C50CBBE1C501BC97C535BDCCC57CBD2FC55ABDCCC57CBDCCC57DBDCCC5" + $"7CBE5BC59CBF82C5D6BEEDC5B9C071C604C256C666C165C632C2F8C689C435C6" + $"DAC398C6AFC444C6DEC461C6E6C452C6E2C47DC6EEC4B4C6FEC498C6F6C4B4C6" + $"FEC4B4C6FEC4B4C6FEC4B4C6FE0605FB01C55BC1DBC55BC1DBC55BC1DBC55AC1" + $"DBC55AC1DBC55AC1DBC55AC1DBC55BC1DBC55AC1DBC55BC1DBC1DB0221C55BBF" + $"A7C55BBFA7C55BC058C55BC1B9C55BC108C55AC1B9C55AC1B9C55AC1B9C55AC1" + $"96C368C04AC4F7C0DEC334C036C2BCC012C2FAC023C28DC005C225BFECC25BBF" + $"F8C1F5BFE1C18EBFCEC1C3BFD7C10DBFB8BFDBBF99C07DBFA5BFD9BF99BFD6BF" + $"99BFD7BF99BFD6BF99BFD6BF99BFD6BF99BFD6BEEDBFD6BD94BFD6BE40BFD6BD" + $"8BBFD6BD79BFD6BD82BFD8BD79BFDBBD79BFD9BD79BFE5BD7ABFFBBD7ABFF0BD" + $"7AC000BD7AC009BD7BC004BD7AC050BD7DC0E5BD89C09ABD82C109BD8DC151BD" + $"96C12DBD91C151BD96C151BD96C151BD96C161BD99C181BD9DC171BD9BC19ABD" + $"A1C1CBBDA9C1B3BDA5C1D5BDABC1E9BDAFC1DFBDADC1E9BDAFC1E9BDAFC1E9BD" + $"AFC1F6BDB1C20FBDB6C203BDB4C217BDB8C228BDBBC220BDBAC22FBDBDC23BBD" + $"BFC235BDBEC2453BC25ABDC6C250BDC4C263BDC8C276BDCDC26DBDCBC278BDCD" + $"C27DBDCFC27BBDCEC29ABDD6C2D3BDE5C2B7BDDDC2DDBDE8C2F2BDEEC2E7BDEB" + $"C2F7BDEFC303BDF3C2FDBDF1C46ABE5FC55BBFA7C55BBF04C55BBFA7C55BBFA7" + $"C55BBFA7C55BBFA70221C55BBFA7C55BBFA7C55BC058C55BC1B9C55BC108C55A" + $"C1B9C55AC1B9C55AC1B9C55AC196C368C04AC4F7C0DEC334C036C2BCC012C2FA" + $"C023C28DC005C225BFECC25BBFF8C1F5BFE1C18EBFCEC1C3BFD7C10DBFB8BFDB" + $"BF99C07DBFA5BFD9BF99BFD6BF99BFD7BF99BFD6BF99BFD6BF99BFD6BF99BFD6" + $"BEEDBFD6BD94BFD6BE40BFD6BD8BBFD6BD79BFD6BD82BFD8BD79BFDBBD79BFD9" + $"BD79BFE5BD7ABFFBBD7ABFF0BD7AC000BD7AC009BD7BC004BD7AC050BD7DC0E5" + $"BD89C09ABD82C109BD8DC151BD96C12DBD91C151BD96C151BD96C151BD96C161" + $"BD99C181BD9DC171BD9BC19ABDA1C1CBBDA9C1B3BDA5C1D5BDABC1E9BDAFC1DF" + $"BDADC1E9BDAFC1E9BDAFC1E9BDAFC1F6BDB1C20FBDB6C203BDB4C217BDB8C228" + $"BDBBC220BDBAC22FBDBDC23BBDBFC235BDBEC2453BC25ABDC6C250BDC4C263BD" + $"C8C276BDCDC26DBDCBC278BDCDC27DBDCFC27BBDCEC29ABDD6C2D3BDE5C2B7BD" + $"DDC2DDBDE8C2F2BDEEC2E7BDEBC2F7BDEFC303BDF3C2FDBDF1C46ABE5FC55BBF" + $"A7C55BBF04C55BBFA7C55BBFA7C55BBFA7C55BBFA70608FF7FC2B8B9CCC2B8B9" + $"CCC2B8B9FAC270BA20C298BA20C229BA20C19CBA20C1E2BA20C1B5BA20C1CAB9" + $"CCC1CAB9FAC1CAB99EC19CB978C1B5B978C1E2B978C270B978C229B978C298B9" + $"78C2B8B9CCC2B8B99EC2B8B9CCB9CC0608FF7FC1CAB9CCC1CAB9CCC1CAB9FAC1" + $"9CBA20C1B5BA20C0E5BA20BF77BA20C02EBA20BF69BA20BF5CB9CCBF5CB9FABF" + $"5CB99EBF77B978BF69B978C02EB978C19CB978C0E5B978C1B5B978C1CAB9CCC1" + $"CAB99EC1CAB9CCB9CC0608FF7FBEA4BA20BEA4BA20BE20BA20BD17BA20BD9BBA" + $"20BCF4BA20BCD8B9CCBCD8B9FABCD8B99EBD17B978BCF4B978BD9BB978BEA4B9" + $"78BE20B978BE86B978BE6EB9CCBE6EB99EBE6EB9FABEA4BA20BE86BA20BEA4BA" + $"20BA200607FF1FBEA7B978BEA7B978BEA7B9B0BEA7BA20BEA7B9E8BEA6BA20BE" + $"A4BA20BEA5BA20BE86BA20BE6EB9CCBE6EB9FABE6EB99EBEA4B978BE86B978BE" + $"A5B978BEA7B978BEA6B978BEA7B978B9780608FF7FBF77BA20BF77BA20BF31BA" + $"20BEA4BA20BEEABA20BE86BA20BE6EB9CCBE6EB9FABE6EB99EBEA4B978BE86B9" + $"78BEEAB978BF77B978BF31B978BF69B978BF5CB9CCBF5CB99EBF5CB9FABF77BA" + $"20BF69BA20BF77BA20BA200608FF7FBF25BB06BF25BB06BF25BBB0BF25BD05BF" + $"25BC5BBED7BD05BE39BD05BE88BD05BE39BC5BBE39BB06BE39BBB0BE39BAC9BE" + $"AFBA98BE6EBA98BEB0BA98BEB0BA98BEB0BA98BEF1BA98BF25BB06BF25BAC9BF" + $"25BB06BB060608FF7FBF25BB06BF25BB06BF25BBB0BF25BD05BF25BC5BBED7BD" + $"05BE39BD05BE88BD05BE39BC5BBE39BB06BE39BBB0BE39BAC9BEAFBA98BE6EBA" + $"98BEB0BA98BEB0BA98BEB0BA98BEF1BA98BF25BB06BF25BAC9BF25BB06BB0602" + $"0BBD82BB12BD82BB12BD82BBBCBD82BD11BD82BC66BD52BD11BCF2BD11BD22BD" + $"11BCF2BC66BCF2BB12BCF2BBBCBCF2BB0EBCF3BB07BCF2BB0A39BAD2BD35BAA4" + $"BD12BAA7BD36BAA4BD38BAA3BD37BAA3BD39BAA3BD3ABAA3BD3ABAA3BD3ABAA3" + $"BD3ABAA3BD3ABAA3BD62BAA3BD82BB12BD82BAD5BD82BB12BD82BB12BD82BB12" + $"BD82BB12020BBD82BB12BD82BB12BD82BBBCBD82BD11BD82BC66BD52BD11BCF2" + $"BD11BD22BD11BCF2BC66BCF2BB12BCF2BBBCBCF2BB0EBCF3BB07BCF2BB0A39BA" + $"D2BD35BAA4BD12BAA7BD36BAA4BD38BAA3BD37BAA3BD39BAA3BD3ABAA3BD3ABA" + $"A3BD3ABAA3BD3ABAA3BD3ABAA3BD62BAA3BD82BB12BD82BAD5BD82BB12BD82BB" + $"12BD82BB12BD82BB120212C303BAA5C303BAA5C303BB70C303BD06C303BC3B48" + $"BD06C2C8BD06C2DCBD06C2C8BC5BC2C8BB06C2C8BBB1C2C8BAFFC2C9BAF0C2C9" + $"BAF7C2C9BAEDC2CABAE6C2CABAE9C2CBBAE3C2CBBADDC2CBBAE0C2CCBADAC2CD" + $"BAD4C2CCBAD7C2CDBAD2C2CEBACCC2CEBACFC2CFBAC9C2D1BAC2C2D0BAC5C2D2" + $"BAC0C2D3BABCC2D2BABEC2D3BABCC2D3BABCC2D3BABCC2D6BAB3C2DDBAA7C2D9" + $"BAACC2DDBAA6C2DEBAA4C2DEBAA5C2DFBAA3C2E0BAA2C2DFBAA2C2E5BA9B48BA" + $"98C2EABA98C2F7BA98C303BAA5C2FDBA9DC303BAA5C303BAA5C303BAA5C303BA" + $"A50212C303BAA5C303BAA5C303BB70C303BD06C303BC3B48BD06C2C8BD06C2DC" + $"BD06C2C8BC5BC2C8BB06C2C8BBB1C2C8BAFFC2C9BAF0C2C9BAF7C2C9BAEDC2CA" + $"BAE6C2CABAE9C2CBBAE3C2CBBADDC2CBBAE0C2CCBADAC2CDBAD4C2CCBAD7C2CD" + $"BAD2C2CEBACCC2CEBACFC2CFBAC9C2D1BAC2C2D0BAC5C2D2BAC0C2D3BABCC2D2" + $"BABEC2D3BABCC2D3BABCC2D3BABCC2D6BAB3C2DDBAA7C2D9BAACC2DDBAA6C2DE" + $"BAA4C2DEBAA5C2DFBAA3C2E0BAA2C2DFBAA2C2E5BA9B48BA98C2EABA98C2F7BA" + $"98C303BAA5C2FDBA9DC303BAA5C303BAA5C303BAA5C303BAA50609FFFF01BD38" + $"BAA3BD38BAA3BD2EBAA5BD0FBB13BD0FBAB0BD0FBB1EBD0FBD11BD0FBD11BD05" + $"BD11BCF2BD11BCFCBD11BCF2BC66BCF2BB12BCF2BBBCBCF2BB0EBCF3BB07BCF2" + $"BB0A39BAD2BD35BAA4BD12BAA7BD36BAA4BD38BAA3BD37BAA3BD38BAA3BAA302" + $"0ABEB0BA98BEB0BA98BEB0BA98BEAFBA98BEAFBA98BE9CBA9ABE4CBB07BE4CBA" + $"B1BE4CBB12BE4CBD05BE4CBD05BE45BD05BE39BD05BE3FBD05BE39BC5BBE39BB" + $"06BE39BBB0BE39BAC9BEAFBA98BE6EBA98BEB0BA98BEB0BA98BEB0BA98BEB0BA" + $"98BEB0BA98BEB0BA98BEB0BA98BEB0BA98BEB0BA98BEB0BA9806047FBD3ABAA3" + $"BD3ABAA3BD38BAA3BD35BAA4BD37BAA4BD37BAA3BD3ABAA3BD38BAA3BD3ABAA3" + $"BAA30205BCB2BA20BCB2BA20BECDBA20C303BA20C0E8BA20C303BA7AC303BB2F" + $"C303BAD5C0E8BB2FBCB2BB2FBECDBB2FBCB2BAD5BCB2BA20BCB2BA7ABCB2BA20" + $"0215C39AB9CCC39AB9CCC39AB9E3C381BA07C390B9F8C37FBA09C37BBA0DC37D" + $"BA0BC37BBA0DC37BBA0DC37BBA0DC378BA0FC371BA14C375BA12C36FBA15C36A" + $"BA18C36DBA17C368BA19C363BA1BC365BA1AC363BA1BC363BA1BC363BA1BC35A" + $"BA1EC346BA20C350BA20C0FABA20BC63BA20BEAEBA20BC51BA20BC34BA12BC41" + $"BA1BBC2FBA0FBC27BA07BC2BBA0BBC18B9F8BC0FB9CCBC0FB9E3BC0FB99EBC63" + $"B978BC34B978BC7DB978BCB2B978BC98B978BCB2B978BCB2B978BCB2B978BECD" + $"B978C303B978C0E8B978C303B978C303B978C303B978C319B978C346B978C330" + $"B978C374B978C39AB9CCC39AB99EC39AB9CCC39AB9CCC39AB9CCC39AB9CC0230" + $"C4B4C6FEC4B4C6FEC4A8C70AC490C722C49CC716C47BC737C452C760C467C74B" + $"C44FC763C449C769C44CC766C41EC794C3C8C7EAC3F3C7BFC382C830C2F6C8BC" + $"C33CC876C2DEC8D4C2AFC903C2C7C8EBC2ACC902C2A5C901C2A8C902C28BC8FB" + $"C257C8F0C271C8F6C162C8BDBF7BC86AC06DC894BECFC84BBD7DC806BE25C82C" + $"BD7DC806BD7DC806BD7DC806BD48C7FABCE0C7E0BD14C7EEBC82C7C8BBC8C790" + $"BC25C7AEBBB7C78BBB95C77FBBA6C785BB95C77FBB95C77FBB95C77FBB6FC773" + $"BB24C757BB4AC765BB24C757BB24C757BB24C757BB24C757BB24C757BB24C757" + $"BB04C737BAC3C6F6BAE4C716BA60C693B99AC5CDB9FDC630B99AC5CDB99AC5CD" + $"B99AC5CDB99AC5CDB99AC5CCB99AC5CDB99AC5B9B99AC58CB99AC5A3B99AC589" + $"B99AC585B99AC587B99AC57BB99AC566B99AC570B99AC55FB99AC553B99AC559" + $"B99AC512B99AC47CB99AC4C8B999C464B999C433B999C44BB9994BB999C401B9" + $"99C412B999C3F1B999C3D0B999C3E1B999C3D0B999C3D0B999C3D0B999C3D0B9" + $"99C3CFB999C3D0B999C3CFB999C3CEB999C3CEB999C3BEB999C39FB999C3AEB9" + $"9AC3F3BB36C4CBBA36C474BB3AC4CDBB42C4CFBB3EC4CEBB42C4CFBB42C4CFBB" + $"42C4CFBB5FC4D9BB9AC4ECBB7CC4E2BBBDC4F7BC06C50CBBE1C501BC97C535BD" + $"CCC57CBD2FC55ABDCCC57CBDCCC57DBDCCC57CBE5BC59CBF82C5D6BEEDC5B9C0" + $"71C604C256C666C165C632C2F8C689C435C6DAC398C6AFC444C6DEC461C6E6C4" + $"52C6E2C47DC6EEC4B4C6FEC498C6F6C4B4C6FEC4B4C6FEC4B4C6FEC4B4C6FE02" + $"3DBCF2BD11BCF2BD11BCF2BC66BCF2BB12BCF2BBBCBCF2BB0FBCF2BB0ABCF2BB" + $"0CBCF2BB08BCF3BB05BCF3BB06BCF3BB03BCF3BB01BCF3BB02BCF3BAFFBCF4BA" + $"FCBCF3BAFEBCF4BAFCBCF4BAFBBCF4BAFCBCF4BAF9BCF5BAF3BCF4BAF6BCF5BA" + $"F3BCF5BAF2BCF5BAF2BCF5BAF139BAF039BAF139BAEF39BAEE39BAEF39BAECBC" + $"F7BAE9BCF7BAEBBCF7BAE9BCF8BAE7BCF8BAE8BCF8BAE7BCF8BAE7BCF8BAE7BC" + $"F8BAE5BCF9BAE1BCF9BAE3BCFABAE0BCFBBADEBCFABADFBCFBBADEBCFBBADCBC" + $"FBBADDBCFBBADBBCFCBAD9BCFCBADABCFCBAD9BCFCBAD9BCFCBAD9BCFCBAD9BC" + $"FDBAD8BCFDBAD8BCFDBAD7BCFEBAD4BCFEBAD5BCFFBAD3BCFFBAD2BCFFBAD3BC" + $"FFBAD2BD00BAD1BD00BAD1BD00BAD1BD01BAD0BD00BAD0BD01BACEBD02BACCBD" + $"02BACDBD07BAC2BD15BAB3BD0EBABABD17BAB1BD1CBAAEBD19BAAFBD1DBAADBD" + $"1EBAACBD1DBAACBD20BAABBD22BAAABD21BAAABD25BAA8BD2BBAA6BD28BAA7BD" + $"2BBAA6BD2CBAA5BD2CBAA5BD2DBAA5BD2FBAA5BD2EBAA5BD30BAA4BD30BAA4BD" + $"30BAA4BD31BAA4BD32BAA4BD31BAA4BD33BAA4BD34BAA4BD33BAA4BD35BAA4BD" + $"38BAA3BD36BAA3BD39BAA3BD3ABAA3BD39BAA3BD3CBAA3BD3FBAA4BD3EBAA3BD" + $"40BAA4BD41BAA4BD40BAA4BD42BAA4BD45BAA4BD43BAA4BD45BAA4BD45BAA5BD" + $"45BAA5BD46BAA5BD47BAA5BD46BAA5BD48BAA5BD4ABAA6BD49BAA6BD52BAA9BD" + $"5FBAB3BD59BAADBD60BAB4BD62BAB6BD61BAB5BD63BAB7BD65BAB9BD64BAB8BD" + $"6ABABFBD72BACDBD6FBAC6BD73BACFBD75BAD2BD74BAD1BD76BAD4BD77BAD6BD" + $"76BAD5BD77BAD7BD78BAD9BD77BAD8BD79BADBBD7ABADEBD79BADDBD7CBAE3BD" + $"7EBAEEBD7DBAE9BD7EBAEEBD7EBAEFBD7EBAEEBD7FBAF1BD80BAF5BD7FBAF3BD" + $"8034BD81BAFDBD80BAFABD81BAFFBD81BB04BD81BB01BD82BB05BD82BB08BD82" + $"BB06BD82BB0BBD82BB12BD82BB0EBD82BBBCBD82BD11BD82BC66BD52BD11BCF2" + $"BD11BD22BD11BCF2BD11BCF2BD11BCF2BD11BCF2BD110221BEB1BA98BEB1BA98" + $"BEB3BA98BEB6BA98BEB5BA98BEC0BA98BED2BA9DBEC9BA9ABED4BA9DBED7BA9E" + $"BED5BA9DBEE4BAA2BEFBBAB1BEF0BAA9BF01BAB6BF0ABAC0BF06BABABF0CBAC1" + $"BF0EBAC4BF0DBAC3BF12BAC9BF17BAD2BF15BACDBF19BAD5BF1DBADCBF1BBAD9" + $"BF1EBADEBF1FBAE3BF1EBAE1BF20BAE4BF20BAE5BF20BAE5BF21BAE7BF21BAE9" + $"BF21BAE8BF24BAF2BF25BB06BF25BAFCBF25BBB0BF25BD05BF25BC5BBED7BD05" + $"BE39BD05BE88BD05BE39BC5BBE39BB06BE39BBB0BE39BB02BE3ABAFBBE39BAFF" + $"BE3ABAF9BE3BBAF5BE3ABAF7BE3BBAF4BE3BBAF1BE3BBAF3BE3CBAF0BE3DBAEC" + $"BE3CBAEEBE42BAD8BE5CBAB8BE4DBAC6BE5DBAB7BE60BAB4BE5EBAB6BE62BAB3" + $"BE66BAB0BE64BAB1BE67BAAFBE69BAAEBE68BAAEBE6ABAADBE6EBAAABE6CBAAB" + $"BE6FBAA9BE72BAA8BE71BAA9BE7ABAA3BE8CBA9DBE83BA9FBE90BA9CBE97BA9A" + $"BE93BA9BBE97BA9ABE98BA9ABE98BA9ABE9CBA99BEA3BA98BE9FBA99BEA7BA98" + $"BEAFBA98BEABBA98BEB0BA98BEB1BA98BEB0BA98BEB1BA98BEB1BA98BEB1BA98" + $"BEB1BA98028BC4D4C673C4D4C673C48EC546C403C2EBC449C418C403C2E8C401" + $"C2E3C402C2E6C3FCC2CCC3F1C29EC3F7C2B5C3D7C22BC3A2C1454AC1B8C3A2C1" + $"44C3A1C142C3A1C143C3A1C141C3A0C13FC3A0C140C395C120C339C0D6C370C0" + $"FCC31DC0C3C2DAC09CC2FDC0B0C2AFC085C24BC058C27FC06EC212C03FC196C0" + $"13C1D5C028C100BFE2BFDBBFBEC06140BFDB40BFDBBFC2BFDBBFC1BFB5BFC2BF" + $"69BFC2BF8FBFC2BF69BEEBBF69BD3DBF69BE14BF8FBD3DBFDBBD3DBFB5BD3DBF" + $"DBBD51BFDBBD79BFDBBD65BFE5BD7ABFFBBD7ABFF0BD7AC000BD7AC009BD7BC0" + $"04BD7AC009BCC7C009BB5FC009BC13C009BB5BC009BB52C009BB56C00ABB4AC0" + $"0BBB3AC00ABB42C00CBB36C00DBB2FC00CBB33C00DBB2FC00DBB2FC00DBB2FC0" + $"0EBB2BC00FBB25C00EBB28C00FBB24C00FBB23C00FBB23C011BB1BC015BB0DC0" + $"13BB14C016BB09C019BAFFC018BB04C01DBAF6C025BAE4C021BAEDC027BAE0C0" + $"2BBAD9C029BADCC02CBAD6C030BAD0C02EBAD3C031BACDC035BAC7C033BACAC0" + $"37BAC4C03BBABFC039BAC1C03BBABEC03CBABCC03CBABDC03EBABAC042BAB5C0" + $"40BAB8C044BAB2C049BAADC046BAAFC04DBAA7C057BA9DC052BAA2C059BA9BC0" + $"5EBA96C05CBA98C061BA93C067BA8FC064BA91C069BA8CC06FBA88C06CBA8AC0" + $"74BA84C080BA7CC07ABA80C08DBA73C0AABA67C09BBA6CC0ACBA66C0B1BA64C0" + $"AEBA65C0B6BA62C0BFBA60C0BABA61C0C1BA5FC0C6BA5EC0C4BA5EC0C9BA5DC0" + $"CDBA5CC0CBBA5DC0CEBA5CC0CFBA5CC0CEBA5CC0D1BA5CC0D7BA5BC0D4BA5BC0" + $"DABA5AC0E0BA59C0DDBA5AC0E0BA59C0E1BA59C0E1BA59C0E3BA59C0E7BA59C0" + $"E5BA59C0EABA58C0EEBA58C0ECBA5843BA58C0F9BA58C0F5BA58C0FDBA58C105" + $"BA58C101BA58C106BA58C10ABA59C108BA58C10DBA59C112BA59C10FBA59C115" + $"BA5AC11CBA5BC118BA5AC11EBA5BC124BA5CC121BA5CC127BA5DC12CBA5EC129" + $"BA5DC12FBA5FC135BA60C132BA5FC139BA61C140BA64C13CBA62C143BA64C149" + $"BA67C146BA66C14BBA67C14FBA69C14DBA68C150BA6AC153BA6BC152BA6AC155" + $"BA6CC15ABA6E44BA6DC15BBA6FC15CBA6FC15CBA6FC15FBA71C164BA73C161BA" + $"72C167BA75C16CBA78C169BA76C16EBA79C172BA7CC170BA7AC174BA7DC178BA" + $"80C176BA7EC17EBA84C18ABA8DC184BA88C18F33C19ABA9CC195BA97C19EBAA0" + $"C1A4BAA7C1A1BAA3C1A7BAA9C1AABAAEC1A9BAACC1B3BAB8C1C2BACFC1BBBAC3" + $"C1C3BAD1C1C6BAD7C1C5BAD4C1C6BAD7C1C6BAD7C1C6BAD7C1C8BADAC1CCBAE2" + $"C1CABADEC1CDBAE4C1D0BAE9C1CFBAE7C1D1BAEBC1D2BAEFC1D1BAEDC1D634C1" + $"DDBB0CC1DABB02C1DEBB0FC1E0BB16C1DFBB13C1E0BB16C1E0BB17C1E0BB16C1" + $"E1BB1AC1E2BB21C1E1BB1DC1E3BB24C1E4BB2BC1E4BB28C1E5BB2CC1E5BB2FC1" + $"E5BB2EC1E5BB2FC1E5BB2FC1E5BB2FC1E6BB33C1E7BB3AC1E6BB36C1E8BB42C1" + $"E9BB52C1E8BB4AC1E9BB56C1E9BB5FC1E9BB5BC1E9BC24C1E9BDAFC1E9BCEAC1" + $"E9BDAFC1E9BDAFC1E9BDAFC1F6BDB1C20FBDB6C203BDB4C217BDB8C228BDBBC2" + $"20BDBAC22FBDBDC23BBDBFC235BDBEC2453BC25ABDC6C250BDC4C263BDC8C276" + $"BDCDC26DBDCBC278BDCDC27DBDCEC27BBDCEC29ABDD6C2D3BDE5C2B7BDDDC2DD" + $"BDE8C2F1BDEEC2E7BDEBC2F7BDEFC303BDF3C2FDBDF1C303BDA4C303BD05C303" + $"BD5548BD05C2C8BD05C2DCBD05C2C8BC5BC2C8BB06C2C8BBB1C2C8BAFFC2C9BA" + $"F0C2C9BAF7C2C9BAEDC2CABAE6C2CABAE9C2CBBAE3C2CBBADDC2CBBAE0C2CCBA" + $"DAC2CDBAD4C2CCBAD7C2CDBAD2C2CEBACCC2CEBACFC2CFBAC9C2D1BAC2C2D0BA" + $"C5C2D2BAC0C2D3BABCC2D2BABEC2D3BABCC2D3BABCC2D3BABCC2D6BAB3C2DDBA" + $"A7C2D9BAACC2DDBAA6C2DEBAA4C2DEBAA5C2DFBAA3C2E0BAA2C2DFBAA2C2E5BA" + $"9B48BA98C2EABA98C2F7BA98C303BAA5C2FDBA9DC303BA79C303BA20C303BA4C" + $"C0E8BA20BCB2BA20BECDBA20BCB2BB9CBCB2BE95BCB2BD19BC9ABEFEBC69BFD1" + $"BC82BF68BC40C086BBECC1F0BC16C13BBBE8C203BBDFC229BBE3C216BBD6C24D" + $"BBC6C297BBCEC272BBA3C32EBB5DC45CBB80C3C5BB54C482BB42C4CFBB4BC4A9" + $"BB42C4CFBB42C4CFBB42C4CFBB5FC4D9BB9AC4ECBB7CC4E2BBBDC4F7BC06C50C" + $"BBE1C501BC97C535BDCCC57CBD2FC55ABDCCC57CBDCCC57DBDCCC57CBE5BC59C" + $"BF82C5D6BEEDC5B9C071C604C256C666C165C632C2F8C689C435C6DAC398C6AF" + $"C444C6DEC461C6E6C452C6E2C47DC6EEC4B4C6FEC498C6F6C4C5C6EDC4E8C6CA" + $"C4D7C6DBC4E1C6ADC4D4C673C4DBC690C4D4C673C4D4C673C4D4C673C4D4C673" + $"020EC289C929C289C929C19BCA17BFBFCBF2C0ADCB05BFA6CBD9BF73CBA6BF8D" + $"CBC0BE83CAB6BCA4C8D7BD93C9C6BC46C879BB8AC7BDBBE8C81BBB80C7B3BB6D" + $"C7A0BB76C7A9BB7AC7A4BB95C7AEBB88C7A9BB95C7AEBB95C7AEBB95C7AEBC02" + $"C7D2BCE0C80EBC71C7F2BD14C81CBD7DC834BD48C828BD7DC834BD7DC834BD7D" + $"C834BE25C85ABF7BC898BECFC879C017C8B3C289C929C11FC8DAC289C929C289" + $"C929C289C929C289C929020EC289C929C289C929C19BCA17BFBFCBF2C0ADCB05" + $"BFA6CBD9BF73CBA6BF8DCBC0BE83CAB6BCA4C8D7BD93C9C6BC46C879BB8AC7BD" + $"BBE8C81BBB80C7B3BB6DC7A0BB76C7A9BB7AC7A4BB95C7AEBB88C7A9BB95C7AE" + $"BB95C7AEBB95C7AEBC02C7D2BCE0C80EBC71C7F2BD14C81CBD7DC834BD48C828" + $"BD7DC834BD7DC834BD7DC834BE25C85ABF7BC898BECFC879C017C8B3C289C929" + $"C11FC8DAC289C929C289C929C289C929C289C929021EC306B978C306B978C306" + $"B978C306B979C306B978C305B979C303B979C304B979C303B979C303B978C303" + $"B978C0E9B978BCB5B978BECFB978BCB5B978BCB5B978BCB5B978BCB6B874BF06" + $"B756BDB0B798BF11B754BF27B750BF1CB752BF2EB74FBF3BB74DBF34B74EBF3F" + $"B74DBF47B74BBF43B74CBF4DB74BBF58B749BF53B74ABF84B744BFDEB742BFB0" + $"B742C027B742C0B1B755C06EB748C0B1B755C0B1B755C0B1B755C122B76AC1E0" + $"B7C3C189B790C1E3B7C4C1E7B7C7C1E5B7C6C1E82CC1E92CC1E92CC1EBB7C9C1" + $"EFB7CCC1EDB7CBC220B7E9C271B830C24BB80BC279B838C287B847C280B83FC2" + $"8EB84EC29BB85EC295B856C2A2B866C2AEB876C2A8B86EC2B5B880C2C3B895C2" + $"BCB88BC2C9B8A0C2D5B8B5C2D0B8ABC2D8B8BAC2DCB8C2C2DAB8BEC2E4B8D4C2" + $"F2B8F8C2ECB8E6C2F6B906C2FDB922C2FAB914C302B939C306B96AC305B951C3" + $"06B96EC306B978C306B973C306B978C306B978C306B978C306B9780205BF69BD" + $"56BF69BD56BF8FBD56BFDBBD56BFB5BD56BFDBBE3CBFDBC009BFDBBF23BFB5C0" + $"09BF69C009BF8FC009BF69BF23BF69BD56BF69BE3CBF69BD56023BBCF2BD11BC" + $"F2BD11BCF2BC66BCF2BB12BCF2BBBCBCF2BB0FBCF2BB0ABCF2BB0CBCF2BB08BC" + $"F3BB05BCF3BB06BCF3BB03BCF3BB01BCF3BB02BCF3BAFFBCF4BAFCBCF3BAFEBC" + $"F4BAFCBCF4BAFBBCF4BAFCBCF4BAF9BCF5BAF3BCF4BAF6BCF5BAF3BCF5BAF2BC" + $"F5BAF2BCF5BAF139BAF039BAF139BAEFBCF7BAEC39BAEDBCF7BAEBBCF7BAE9BC" + $"F7BAEABCF7BAE9BCF8BAE7BCF8BAE8BCF8BAE7BCF8BAE7BCF8BAE7BCF8BAE5BC" + $"F9BAE1BCF9BAE3BCFABAE0BCFBBADEBCFABADFBCFBBADEBCFBBADCBCFBBADDBC" + $"FBBADBBCFCBAD9BCFCBADABCFCBAD9BCFCBAD9BCFCBAD9BCFDBAD7BCFEBAD4BC" + $"FEBAD6BCFFBAD3BCFFBAD2BCFFBAD3BCFFBAD2BD00BAD1BD00BAD1BD01BACFBD" + $"02BACCBD01BACEBD07BAC2BD15BAB3BD0EBABABD17BAB1BD1CBAAEBD19BAAFBD" + $"1DBAADBD1EBAACBD1DBAACBD20BAABBD22BAAABD21BAAABD25BAA8BD2BBAA6BD" + $"28BAA7BD2BBAA6BD2CBAA5BD2CBAA5BD2DBAA5BD2FBAA5BD2EBAA5BD30BAA4BD" + $"30BAA4BD30BAA4BD31BAA4BD32BAA4BD31BAA4BD33BAA4BD34BAA4BD33BAA4BD" + $"35BAA4BD38BAA3BD36BAA3BD39BAA3BD3ABAA3BD39BAA3BD3CBAA3BD3FBAA4BD" + $"3EBAA3BD40BAA4BD41BAA4BD40BAA4BD42BAA4BD45BAA4BD43BAA4BD45BAA4BD" + $"45BAA5BD45BAA5BD46BAA5BD47BAA5BD46BAA5BD48BAA5BD4ABAA6BD49BAA6BD" + $"52BAA9BD5FBAB3BD59BAADBD61BAB4BD62BAB6BD61BAB5BD63BAB7BD65BAB9BD" + $"64BAB8BD6ABABFBD72BACDBD6FBAC6BD73BACFBD75BAD2BD74BAD1BD76BAD4BD" + $"77BAD6BD76BAD5BD77BAD7BD78BAD9BD77BAD8BD79BADBBD7ABADEBD79BADDBD" + $"7CBAE3BD7EBAEEBD7DBAE9BD7EBAEEBD7EBAEFBD7EBAEEBD7FBAF1BD80BAF5BD" + $"7FBAF3BD8034BD81BAFDBD80BAFABD81BAFFBD81BB04BD81BB01BD82BB05BD82" + $"BB08BD82BB06BD82BB0BBD82BB12BD82BB0EBD82BBBCBD82BD11BD82BC66BD52" + $"BD11BCF2BD11BD22BD11BCF2BD11BCF2BD11BCF2BD11BCF2BD110221BEB1BA98" + $"BEB1BA98BEB3BA98BEB6BA98BEB5BA98BEC0BA98BED2BA9DBEC9BA9ABED4BA9D" + $"BED7BA9EBED5BA9DBEE4BAA2BEFBBAB1BEF0BAA9BF01BAB6BF0ABAC0BF06BABA" + $"BF0CBAC1BF0EBAC4BF0DBAC3BF12BAC9BF17BAD2BF15BACDBF19BAD5BF1DBADC" + $"BF1BBAD9BF1EBADEBF1FBAE3BF1EBAE1BF20BAE4BF20BAE5BF20BAE5BF21BAE7" + $"BF21BAE9BF21BAE8BF24BAF2BF25BB06BF25BAFCBF25BBB0BF25BD05BF25BC5B" + $"BED7BD05BE39BD05BE88BD05BE39BC5BBE39BB06BE39BBB0BE39BB02BE3ABAFB" + $"BE39BAFFBE3ABAF9BE3BBAF5BE3ABAF7BE3BBAF4BE3BBAF1BE3BBAF3BE3CBAF0" + $"BE3DBAECBE3CBAEEBE42BAD8BE5CBAB8BE4DBAC6BE5DBAB7BE60BAB4BE5FBAB5" + $"BE62BAB3BE66BAB0BE64BAB1BE67BAAFBE69BAAEBE68BAAEBE6ABAADBE6EBAAA" + $"BE6CBAABBE6FBAA9BE72BAA8BE71BAA9BE7ABAA3BE8CBA9DBE83BA9FBE90BA9C" + $"BE97BA9ABE93BA9BBE97BA9ABE98BA9ABE98BA9ABE9CBA99BEA3BA98BE9FBA99" + $"BEA7BA98BEAFBA98BEABBA98BEB0BA98BEB1BA98BEB0BA98BEB1BA98BEB1BA98" + $"BEB1BA98BEB1BA980291C4D4C673C4D4C673C48EC546C403C2EBC449C418C403" + $"C2E8C401C2E3C402C2E6C3FCC2CCC3F1C29EC3F7C2B5C3D7C22BC3A2C1454AC1" + $"B8C3A2C144C3A1C142C3A1C143C3A1C141C3A0C13FC3A0C140C395C120C339C0" + $"D6C370C0FCC31DC0C3C2DAC09CC2FDC0B0C2AFC085C24BC058C27FC06EC212C0" + $"3FC196C013C1D5C028C100BFE2BFDBBFBEC06140BFDB40BFDBBFC2BFDBBFC1BF" + $"B5BFC2BF69BFC2BF8FBFC2BF69BEEBBF69BD3DBF69BE14BF8FBD3DBFDBBD3DBF" + $"B5BD3DBFDBBD51BFDBBD79BFDBBD65BFE5BD7ABFFBBD7ABFF0BD7AC000BD7AC0" + $"09BD7BC004BD7AC009BCCAC009BB6AC009BC1AC009BB65C009BB5BC009BB60C0" + $"09BB5BC009BB5AC009BB5AC00ABB55C00ABB4DC00ABB51C00BBB4CC00BBB4AC0" + $"0BBB4BC00BBB46C00CBB3DC00CBB42C00DBB38C00FBB2FC00EBB34C00FBB2FC0" + $"0FBB2FC00FBB2FC010BB2BC012BB24C011BB28C012BB20C014BB19C013BB1DC0" + $"17BB12C01BBB05C019BB0BC01DBB01C020BAFBC01EBAFEC02134C023BAF3C022" + $"BAF5C027BAEBC02FBADCC02BBAE3C032BAD6C039BACCC035BAD1C039BACCC039" + $"BACCC039BACCC03DBAC7C044BABDC040BAC2C045BABCC048BAB8C046BABAC04A" + $"BAB6C04EBAB1C04CBAB4C050BAAFC053BAABC052BAADC056BAA9C05BBAA4C058" + $"BAA6C05EBAA1C064BA9BC061BA9EC06BBA95C07BBA8AC073BA8FC07DBA88C082" + $"BA85C080BA87C086BA83C08EBA7EC08ABA80C090BA7DC093BA7BC091BA7CC0A3" + $"BA73C0C6BA68C0B5BA6DC0C8BA68C0CCBA67C0CABA68C0CEBA67C0D2BA66C0D0" + $"BA66C0D3BA66C0D7BA65C0D5BA65C0DABA65C0E1BA64C0DDBA64C0E4BA64C0EC" + $"BA63C0E8BA63C0ECBA63C0EDBA63C0EDBA63C0F1BA63C0F9BA63C0F5BA63C0FD" + $"BA63C105BA63C101BA63C107BA63C10ABA63C108BA63C10DBA63C112BA64C10F" + $"BA64C115BA64C11BBA65C118BA65C11FBA66C125BA67C122BA66C126BA67C127" + $"BA67C126BA67C129BA68C12DBA69C12BBA68C130BA69C134BA6BC132BA6AC135" + $"BA6BC137BA6BC136BA6BC139BA6CC13FBA6EC13CBA6DC140BA6EC143BA6FC142" + $"BA6FC145BA70C149BA72C147BA71C14BBA72C14EBA74C14DBA73C151BA7544BA" + $"78C155BA76C15ABA79C160BA7CC15DBA7AC161BA7CC162BA7DC161BA7CC165BA" + $"7FC16BBA82C168BA80C175BA88C189BA97C17FBA8FC18CBA99C192BA9FC18FBA" + $"9CC195BAA1C19ABAA6C197BAA4C19DBAAAC1A3BAB0C1A0BAADC1A6BAB3C1ABBA" + $"B9C1A8BAB6C1ADBABCC1B2BAC2C1B0BABFC1B5BAC6C1B9BACCC1B7BAC9C1BCBA" + $"D0C1C1BAD8C1BFBAD4C1C3BADBC1C6BAE1C1C5BADEC1CABAE8C1D1BAF7C1CEBA" + $"EFC1D3BAFBC1D7BB04C1D5BB00C1D8BB07C1D9BB0CC1D9BB0AC1DBBB10C1DDBB" + $"19C1DCBB15C1DEBB1BC1E0BB20C1DFBB1EC1E0BB22C1E1BB24C1E0BB23C1E1BB" + $"27C1E2BB2CC1E2BB2AC1E2BB2CC1E3BB2DC1E2BB2CC1E3BB2DC1E3BB2FC1E3BB" + $"2EC1E3BB2FC1E3BB2FC1E3BB2FC1E3BB2FC1E3BB2FC1E3BB2FC1E4BB34C1E6BB" + $"3DC1E5BB38C1E6BB42C1E7BB4AC1E7BB46C1E7BB4BC1E8BB4DC1E8BB4CC1E8BB" + $"51C1E9BB5AC1E8BB55C1E9BB5AC1E9BB5BC1E9BB5BC1E9BB60C1E9BB6AC1E9BB" + $"65C1E9BC2CC1E9BDAFC1E9BCEDC1E9BDAFC1E9BDAFC1E9BDAFC1F6BDB1C20FBD" + $"B6C203BDB4C217BDB8C228BDBBC220BDBAC22FBDBDC23BBDBFC235BDBEC2453B" + $"C25ABDC6C250BDC4C263BDC8C276BDCDC26DBDCBC278BDCDC27DBDCFC27BBDCE" + $"C29ABDD6C2D3BDE5C2B7BDDDC2DDBDE8C2F1BDEEC2E7BDEBC2F7BDEFC303BDF3" + $"C2FDBDF1C303BDA4C303BD06C303BD5548BD06C2C8BD06C2DCBD06C2C8BC5BC2" + $"C8BB06C2C8BBB1C2C8BAFFC2C9BAF0C2C9BAF7C2C9BAEDC2CABAE6C2CABAE9C2" + $"CBBAE3C2CBBADDC2CBBAE0C2CCBADAC2CDBAD4C2CCBAD7C2CDBAD2C2CEBACCC2" + $"CEBACFC2CFBAC9C2D1BAC2C2D0BAC5C2D2BAC0C2D3BABCC2D2BABEC2D3BABCC2" + $"D3BABCC2D3BABCC2D6BAB3C2DDBAA7C2D9BAACC2DDBAA6C2DEBAA4C2DEBAA5C2" + $"DFBAA3C2E0BAA2C2DFBAA2C2E5BA9B48BA98C2EABA98C2F7BA98C303BAA5C2FD" + $"BA9DC303BA79C303BA20C303BA4CC0E8BA20BCB2BA20BECDBA20BCB2BB9CBCB2" + $"BE95BCB2BD19BC9ABEFEBC69BFD1BC82BF68BC40C086BBECC1F0BC16C13BBBE8" + $"C203BBDFC229BBE3C216BBD6C24DBBC6C297BBCEC272BBA3C32EBB5DC45CBB80" + $"C3C5BB54C482BB42C4CFBB4BC4A9BB42C4CFBB42C4CFBB42C4CFBB5FC4D9BB9A" + $"C4ECBB7CC4E2BBBDC4F7BC06C50CBBE1C501BC97C535BDCCC57CBD2FC55ABDCC" + $"C57CBDCCC57DBDCCC57CBE5BC59CBF82C5D6BEEDC5B9C071C604C256C666C165" + $"C632C2F8C689C435C6DAC398C6AFC444C6DEC461C6E6C452C6E2C47DC6EEC4B4" + $"C6FEC498C6F6C4C5C6EDC4E8C6CAC4D7C6DBC4E1C6ADC4D4C673C4DBC690C4D4" + $"C673C4D4C673C4D4C673C4D4C673021AC2D7B92DC2D7B92DC2D7B92EC2D6B92F" + $"C2D6B92EC2D6B92FC2D6B92FC2D6B92FC2CBB941C2A6B957C2BBB94EC295B95F" + $"C268B967C280B964C23DB96BC1D1B957C209B966C1BFB953C19AB947C1ADB94D" + $"C19AB947C19AB947C19AB947C16DB937C10EB907C13DB922C10EB907C10EB907" + $"C10EB907C10DB906C10CB905C10CB906C042B893BFFEB78FBFCAB7EBC007B780" + $"C022B76BC013B774C02EB764C04BB75AC03CB75EC04BB75AC04BB75AC04BB75A" + $"C04EB75AC055B758C052B759C060B756C07AB754C06DB754C07AB754C07BB754" + $"C07AB75442B753C0B1B755C09EB753C0B1B755C0B1B755C0B1B755C103B75DC1" + $"CAB7B6C167B77EC1D2B7BAC1E0B7C3C1D9B7BEC1E3B7C4C1E7B7C7C1E5B7C6C1" + $"E82CC1E92CC1E92CC29FB83AC2D7B92DC309B8D5C2D7B92DC2D7B92DC2D7B92D" + $"C2D7B92D0606FF07C539BFAFC539BFAFC539C037C539C147C539C0BFC4BBC084" + $"C23EBFB5C2C3BFC9C23EBFB5C280BDF9C20BBDE6C316BE13C539BFAFC540BED7" + $"C539BFAFBFAF0605EF01C2DEB957C2DEB957C2D5B8E5BFF2B758C1F9B74FC0A5" + $"B779C127B957C2DEB957C290B957C2DEB957B9570606FF07C49DC6AAC49DC6AA" + $"C438C4E2C36EC152C3D3C31AC317C0D840C03444C03BBFC7C14EC00EC580C00E" + $"C580C193C5E3C49DC6AAC318C647C49DC6AAC6AA0206C431C72BC431C72BC431" + $"C76FC431C7F8C431C7B4C3F1C842C371C8D6C3B1C88CC2DFC8B7C1BAC877C24C" + $"C89745C7D7C1C6C696C1C2C737C294C6C8C431C72BC363C6F9C431C72B020CC3" + $"79B9CCC379B9CCC379B9F7C329BA19C355BA19C0F0BA19BC80BA19BEB8BA19BC" + $"53BA19BC2FB9CCBC2FB9F7BC2FB9A2BC80B97FBC53B97FBC9AB97FBCCDB97FBC" + $"B3B97FBCCDB97FBCCDB97FBCCDB97FBED6B97FC2E8B97FC0DFB97FC2E8B97FC2" + $"E8B97FC2E8B97FC2FEB97FC329B97FC313B97FC355B97FC379B9CCC379B9A2C3" + $"79B9CCC379B9CCC379B9CCC379B9CC020BC2D3BA53C2D3BA53C2D3BA76C2D3BA" + $"BCC2D3BA99C2CCBACFC2C8BB06C2C8BAEAC2C8BBB1C2C8BD06C2C8BC5CC2CCBD" + $"06C2D3BD06C2CFBD06C2D3BD51C2D3BDE6C2D3BD9BC2B7BDDEC27DBDCFC29ABD" + $"D6C24DBDC4C1E9BDAFC21CBDB9C1E938C1E9BA53C1E9BB72C237BA53C2D3BA53" + $"C285BA53C2D3BA53C2D3BA53C2D3BA53C2D3BA530605EF01C55AC1DBC55AC1DB" + $"C55AC1DBC55BC1DBC55AC1DBC55BC1DBC55AC1DBC55AC1DBC55AC1DBC55AC1DB" + $"C1DB0605BE01C55AC1DBC55AC1DBC55AC1DBC55AC1DBC55BC1DBC55AC1DBC55B" + $"C1DBC55AC1DBC1DB0247BFBFB476BFBFB476BBE7B84EB436BFFFB80FBC26B602" + $"C1CAB999C561B7CDC396B999C4CCB999C3A2B999C437B999C3A1B999C39FB999" + $"C3A0B999C39FB999C39EB999C39FB99EC31BBBECC1F0BAB3C270BC16C13BBC69" + $"BFD1BC40C086BC82BF68BCB2BE95BC9ABEFEBCB2BD19BCB2BA20BCB2BB9CBC98" + $"BA20BC63BA20BC7DBA20BC51BA20BC34BA12BC41BA1BBC2FBA0FBC27BA07BC2B" + $"BA0BBC18B9F8BC0FB9CCBC0FB9E3BC0FB99EBC63B978BC34B978BC7DB978BCB2" + $"B978BC98B978BCB2B978BCB2B978BCB2B978BCB2B8FFBD44B833BCE8B88FBD6D" + $"B80ABDD4B7C5BD9EB7E5BDE2B7BDBDFFB7AEBDF0B7B6BE1BB7A0BE59B786BE3A" + $"B792BE59B786BE59B786BE59B786BE65B782BE7CB77ABE70B77EBEA8B76BBF06" + $"B756BED6B75FBF11B754BF27B750BF1CB752BF2EB74FBF3BB74DBF34B74EBF3F" + $"B74DBF47B74BBF43B74CBF4DB74BBF58B749BF53B74ABF84B744BFDEB742BFB0" + $"B742C027B742C0B1B755C06EB748C0B1B755C0B1B755C0B1B755C103B75DC1CA" + $"B7B6C167B77EC1D2B7BAC1E0B7C3C1D9B7BEC1E3B7C4C1E7B7C7C1E5B7C6C1E8" + $"2CC1E92CC1E92CC1EBB7C9C1EFB7CCC1EDB7CBC220B7E9C271B830C24BB80BC2" + $"79B838C287B847C280B83FC28EB84EC29BB85EC295B856C2A2B866C2AEB876C2" + $"A8B86EC2B5B880C2C3B895C2BCB88BC2C9B8A0C2D5B8B5C2D0B8ABC2D8B8BAC2" + $"DCB8C2C2DAB8BEC2E4B8D4C2F2B8F8C2ECB8E6C2F6B906C2FDB922C2FAB914C3" + $"02B939C306B96AC305B951C306B96EC306B978C306B973C306B978C306B978C3" + $"06B978C31CB978C346B978C331B978C374B978C39AB9CCC39AB99EC39AB9E3C3" + $"81BA07C390B9F8C37FBA09C37BBA0DC37DBA0BC37BBA0DC37BBA0DC37BBA0DC3" + $"78BA0FC371BA14C375BA12C36FBA15C36ABA18C36DBA17C368BA19C363BA1BC3" + $"65BA1AC363BA1BC363BA1BC363BA1BC35ABA1EC346BA20C350BA20C330BA20C3" + $"03BA20C319BA20C303BB66C303BDF3C303BCADC46ABE5FC55ABFA7C55ABF04C5" + $"5AC058C55AC1B9C55AC108C55AC1B9C55AC1B9C55AC1B9C55AC1B9C55AC1B9C5" + $"5AC1B9C55AC211C3F1C29EC4C9C276C3F7C2B5C401C2E3C3FCC2CCC402C2E6C4" + $"03C2EBC403C2E8C449C418C4D4C673C48EC546C6FBC44CCB49BFFFC922C226C7" + $"70BC26BFBFB476C398B84EBFBFB476BFBFB476BFBFB476BFBFB4760605EF01C5" + $"5AC1DBC55AC1DBC55AC1DBC55BC1DBC55AC1DBC55BC1DBC55AC1DBC55AC1DBC5" + $"5AC1DBC55AC1DBC1DB0211C4B4C694C4B4C694C493C6B4C452C6F5C473C6D5C4" + $"4FC6F8C449C6FEC44CC6FBC2C6C881BFBFCB88C143CA05BFA6CB6EBF73CB3BBF" + $"8DCB55BE83CA4CBCA4C86CBD93C95CBC46C80EBB8A53BBE8C7B0BB68C730BB24" + $"C6EDBB46C70EBB24C6EDBB2452BB24C6EDBB04C6CCBAC3C68BBAE3C6ACBA60C6" + $"28B99AC562B9FDC5C5B7CEC396B436BFFFB602C1CAB436BFFFB436BFFFB436BF" + $"FFB80FBC26BFBFB476BBE7B84EC398B84ECB49BFFFC770BC26C917C230C4B4C6" + $"94C6E5C462C4B4C694C4B4C694C4B4C694C4B4C6940609FFFF01BFBFB37EBFBF" + $"B37EBB95B7A9B33FBFFFB76ABBD4B76AC42ABFBF60BB95C855C0CDCB72C2E9C9" + $"56C1DBCA64C318C927C377C8C8C348C8F8C3BAC885C43FC800C3FDC842C6EAC5" + $"55CC40BFFFC995C2AAC815BBD4BFBFB37EC3EAB7A9BFBFB37EB37E0608FF7FC0" + $"09B33BC009B33BC009B493C009B743C009B5EBC004B742BFF9B742BFFFB742BF" + $"EFB742BFDCB741BFE6B741BFCAB741BFA8B743BFB9B742BFA8B5EBBFA8B33BBF" + $"A8B493BFC8B33BC009B33BBFE9B33BC009B33BB33B0205BFA7B38ABFA7B38ABF" + $"C8B38AC009B38ABFE9B38AC009B3BCC009B41FC009B3EEBFE9B41FBFA7B41FBF" + $"C8B41FBFA7B3EEBFA7B38ABFA7B3BCBFA7B38A0606FF07C02AB351C02AB351C0" + $"2AB37EBFD8B3A2C005B3A2BFACB3A2BF87B351BF87B37EBF87B324BFD820BFAC" + $"20C00520C02AB351C02AB324C02AB351B3510606FF07C02AB351C02AB351C02A" + $"B37EBFD8B3A2C005B3A2BFACB3A2BF87B351BF87B37EBF87B324BFD820BFAC20" + $"C00520C02AB351C02AB324C02AB351B3510605BF01C023B343C023B343C01EB3" + $"1DBFB9B30BBFE9B2F4BFE1B31ABFFAB35DBFFBB34BC00EB35BC023B343B34302" + $"07C009B3B9C009B3B9BFE9B3C7BFA7B3E3BFC8B3D5BFA7B49FBFA7B617BFA7B5" + $"5BBFC8B604C009B5DDBFE9B5F1C01FB5D8C04AB5CEC035B5D3C049B521C045B3" + $"C7C047B474C031B3C2C009B3B9C01DB3BEC009B3B90204C009B3B9C009B3B9C1" + $"B7B415C511B4CBC364B470C364B526C009B5DDC1B7B581C009B526C009B3B9C0" + $"09B470C009B3B90205BFDCB5DDBFDCB5DDBFE8B5DFC001B5E3BFF4B5E1C001B6" + $"55C001B73AC001B6C7BFF4B739BFDCB738BFE8B738BFDCB6C4BFDCB5DDBFDCB6" + $"51BFDCB5DD420A000100000A010101000A020102000A030103000A040104000A" + $"050105000A060106000A070107000A080108000A090109000A0A010A000A0B01" + $"0B000A0C010C000A0B010D000A0D010E000A0E010F000A0F0110000A10011100" + $"0A110112000A120113000A130114000A140115000A150116000A160117000A17" + $"0118000A180119000A18011A000A19011B000A1A011C000A1B011D000A0B011E" + $"000A1C011F000A0B0120000A1D0121000A0B0122000A0A0123000A0A0124000A" + $"0A0125000A1E0126000A1F0127000A200128000A2103292A2B000A22012C000A" + $"23012D000A24012E000A25012F000A2603303132000A270133000A280134000A" + $"290135000A2A0136000A2B0137000A2C0138000A2D0139000A2E013A000A2F02" + $"3B3C000A30013D000A31023E3F000A320140000A330141000A340142000A3501" + $"43000A360144000A370145000A380146000A39014700" +}; diff --git a/games-simulation/openrct2/openrct2-0.4.29.recipe b/games-simulation/openrct2/openrct2-0.4.29.recipe new file mode 100644 index 000000000..36c1680fb --- /dev/null +++ b/games-simulation/openrct2/openrct2-0.4.29.recipe @@ -0,0 +1,127 @@ +SUMMARY="Open source re-implementation of RollerCoaster Tycoon 2" +DESCRIPTION="OpenRCT2 is an open-source re-implementation of RollerCoaster Tycoon 2 by Chris Sawyer. +The gameplay revolves around building and maintaining an amusement park containing attractions, shops and facilities. + +OpenRCT2 requires the original files from RollerCoaster Tycoon 2 in order to play. +If you have the original RollerCoaster Tycoon and its expansion packs, you can point \ +OpenRCT2 to these in order to play the original scenarios. +Multithreaded rendering is disabled by default as it crashes on Haiku in certain maps and title sequences." +HOMEPAGE="https://openrct2.io/" +COPYRIGHT="2015-2025 OpenRCT2 team" +LICENSE="GNU GPL v3" +REVISION="1" +SOURCE_URI="https://github.com/OpenRCT2/OpenRCT2/archive/refs/tags/v$portVersion.tar.gz" +CHECKSUM_SHA256="88492fb962236b8a23794620f7b075aac01674676385d68dca650b7f9664fcc0" +SOURCE_DIR="OpenRCT2-$portVersion" +SOURCE_URI_2="https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.26/title-sequences.zip" +CHECKSUM_SHA256_2="dabb9787b1576342fca4dd9f64b3f8cfa04a7e6ce9c2bb9610f47b762905c858" +SOURCE_URI_3="https://github.com/OpenRCT2/objects/releases/download/v1.7.5/objects.zip" +CHECKSUM_SHA256_3="c8b9d3039a920f67caf15b09e8312cc4f80d59ed7fe0288625b9ccedef606797" +SOURCE_URI_4="https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.6/opensound.zip" +CHECKSUM_SHA256_4="06b90f3e19c216752df441d551b26a9e3e1ba7755bdd2102504b73bf993608be" +SOURCE_URI_5="https://github.com/OpenRCT2/OpenMusic/releases/download/v1.6.1/openmusic.zip" +CHECKSUM_SHA256_5="994b350d3b180ee1cb9619fe27f7ebae3a1a5232840c4bd47a89f33fa89de1a1" +PATCHES="openrct2-$portVersion.patchset" +ADDITIONAL_FILES="openrct2.rdef.in" + +ARCHITECTURES="all !x86_gcc2" +SECONDARY_ARCHITECTURES="x86" + +PROVIDES=" + openrct2$secondaryArchSuffix = $portVersion + cmd:openrct2 + cmd:openrct2_cli + lib:libopenrct2$secondaryArchSuffix + " +REQUIRES=" + haiku$secondaryArchSuffix + lib:libcrypto$secondaryArchSuffix + lib:libcurl$secondaryArchSuffix + lib:libflac$secondaryArchSuffix + lib:libfontconfig$secondaryArchSuffix + lib:libfreetype$secondaryArchSuffix + lib:libGL$secondaryArchSuffix + lib:libicuuc$secondaryArchSuffix + lib:libogg$secondaryArchSuffix + lib:libpng16$secondaryArchSuffix + lib:libSDL2_2.0$secondaryArchSuffix + lib:libspeexdsp$secondaryArchSuffix + lib:libssl$secondaryArchSuffix + lib:libvorbisfile$secondaryArchSuffix + lib:libz$secondaryArchSuffix + lib:libzip$secondaryArchSuffix + lib:libzstd$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + nlohmann_json$secondaryArchSuffix + devel:libcurl$secondaryArchSuffix + devel:libflac$secondaryArchSuffix + devel:libfontconfig$secondaryArchSuffix + devel:libfreetype$secondaryArchSuffix + devel:libGL$secondaryArchSuffix + devel:libogg$secondaryArchSuffix + devel:libpng16$secondaryArchSuffix + devel:libpsl$secondaryArchSuffix + devel:libSDL2_2.0$secondaryArchSuffix + devel:libspeexdsp$secondaryArchSuffix + devel:libssh2$secondaryArchSuffix + devel:libssl$secondaryArchSuffix + devel:libvorbisfile$secondaryArchSuffix + devel:libz$secondaryArchSuffix + devel:libzip$secondaryArchSuffix + devel:libzstd$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + #cmd:ccache # Optional, to enable ccache during build + #cmd:clang >= 19 # Needed to build with clang, 12 is too old, 19 is known to work + cmd:cmake + cmd:gcc$secondaryArchSuffix + cmd:make + cmd:pkg_config$secondaryArchSuffix + " + +BUILD() +{ + export CXXFLAGS="-D_DEFAULT_SOURCE -D_BSD_SOURCE" LDFLAGS="-lbsd -lnetwork" + + # Setup game assets + mkdir -p $sourceDir/data/sequence && cp -r $sourceDir2/* $sourceDir/data/sequence + mkdir -p $sourceDir/data/object && cp -r $sourceDir3/* $sourceDir/data/object + cp -rt $sourceDir/data $sourceDir4/* $sourceDir5/* + + # Add "-DCMAKE_CXX_COMPILER=clang++" to build with clang + # korli suggests adding "-DDISABLE_OPENGL=1" to disable OpenGL-related + # linker warnings when using gcc (OpenGL renderer is experimental anyway) + cmake -Bbuild -S. $cmakeDirArgs \ + -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON + + make -C build $jobArgs +} + +INSTALL() +{ + # Needed to generate g2.dat + make -C build install + + # Generate the rdef + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3`" + local LONG_INFO="$SUMMARY" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|$MINOR|" \ + -e "s|@LONG_INFO@|$LONG_INFO|" \ + $portDir/additional-files/openrct2.rdef.in > openrct2.rdef + + addResourcesToBinaries openrct2.rdef $prefix/bin/openrct2 + + # Make the app name uppercase + mkdir -p $appsDir && mv $prefix/bin/openrct2 $appsDir/OpenRCT2 + # Then link it back in lowercase for cmdline and to have man make sense + ln -s $appsDir/OpenRCT2 $prefix/bin/openrct2 + addAppDeskbarSymlink $appsDir/OpenRCT2 +} diff --git a/games-simulation/openrct2/patches/openrct2-0.4.29.patchset b/games-simulation/openrct2/patches/openrct2-0.4.29.patchset new file mode 100644 index 000000000..bec80334b --- /dev/null +++ b/games-simulation/openrct2/patches/openrct2-0.4.29.patchset @@ -0,0 +1,378 @@ +From f710637402541c59f0c90a1d4882374cb9c16050 Mon Sep 17 00:00:00 2001 +From: Peppersawce +Date: Tue, 25 Nov 2025 15:16:58 +0100 +Subject: Haiku patches + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9a8e0c8..234c3e3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -368,7 +368,7 @@ else () + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + endif () + +- if (APPLE AND NOT USE_MMAP) ++ if (HAIKU OR (APPLE AND NOT USE_MMAP)) + set(CMAKE_POSITION_INDEPENDENT_CODE OFF) + else () + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +diff --git a/src/openrct2-ui/CMakeLists.txt b/src/openrct2-ui/CMakeLists.txt +index cd3e3cc..d46972e 100644 +--- a/src/openrct2-ui/CMakeLists.txt ++++ b/src/openrct2-ui/CMakeLists.txt +@@ -38,7 +38,7 @@ endif () + + if (NOT DISABLE_OPENGL AND NOT EMSCRIPTEN) + # GL doesn't work nicely with macOS, while find_package doesn't work with multiarch on Ubuntu. +- if (APPLE) ++ if (APPLE OR HAIKU) + find_package(OpenGL REQUIRED) + elseif (NOT WIN32) + PKG_CHECK_MODULES(GL REQUIRED gl) +@@ -100,7 +100,7 @@ endif () + if (NOT DISABLE_OPENGL) + if (WIN32) + target_link_libraries(openrct2 opengl32) +- elseif (APPLE) ++ elseif (APPLE OR HAIKU) + target_link_libraries(openrct2 ${OPENGL_LIBRARY}) + else () + target_link_libraries(openrct2 ${GL_LIBRARIES}) +diff --git a/src/openrct2-ui/UiContext.Linux.cpp b/src/openrct2-ui/UiContext.Linux.cpp +index 7b2978d..cb785aa 100644 +--- a/src/openrct2-ui/UiContext.Linux.cpp ++++ b/src/openrct2-ui/UiContext.Linux.cpp +@@ -129,14 +129,14 @@ namespace OpenRCT2::Ui + + void OpenFolder(const std::string& path) override + { +- const char* args[] = { "xdg-open", path.c_str(), nullptr }; ++ const char* args[] = { "open", path.c_str(), nullptr }; + Platform::Execute(args); + } + + void OpenURL(const std::string& url) override + { + #ifndef __EMSCRIPTEN__ +- const char* args[] = { "xdg-open", url.c_str(), nullptr }; ++ const char* args[] = { "open", url.c_str(), nullptr }; + Platform::Execute(args); + #else + MAIN_THREAD_EM_ASM({ window.open(UTF8ToString($0)); }, url.c_str()); +diff --git a/src/openrct2/CMakeLists.txt b/src/openrct2/CMakeLists.txt +index f314c9c..e74c6be 100644 +--- a/src/openrct2/CMakeLists.txt ++++ b/src/openrct2/CMakeLists.txt +@@ -180,7 +180,7 @@ if (MINGW) + target_link_libraries(libopenrct2 -fstack-protector-strong) + endif() + +-if (UNIX AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "BSD") ++if (UNIX AND NOT HAIKU AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "BSD") + # Include libdl for dlopen + target_link_libraries(libopenrct2 dl) + endif () +diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp +index 78867e2..a7b9229 100644 +--- a/src/openrct2/Context.cpp ++++ b/src/openrct2/Context.cpp +@@ -479,7 +479,7 @@ namespace OpenRCT2 + _discordService = std::make_unique(); + } + #endif +- ++#ifndef __HAIKU__ + if (Platform::ProcessIsElevated()) + { + std::string elevationWarning = _localisationService->GetString(STR_ADMIN_NOT_RECOMMENDED); +@@ -492,6 +492,7 @@ namespace OpenRCT2 + _uiContext->ShowMessageBox(elevationWarning); + } + } ++#endif + + if (Platform::IsRunningInWine()) + { +diff --git a/src/openrct2/Version.h b/src/openrct2/Version.h +index 1467479..bccdc0c 100644 +--- a/src/openrct2/Version.h ++++ b/src/openrct2/Version.h +@@ -72,6 +72,9 @@ + #ifdef __EMSCRIPTEN__ + #define OPENRCT2_PLATFORM "Emscripten" + #endif ++#ifdef __HAIKU__ ++ #define OPENRCT2_PLATFORM "Haiku" ++#endif + #ifndef OPENRCT2_PLATFORM + #error Unknown platform! + #endif +diff --git a/src/openrct2/audio/Audio.cpp b/src/openrct2/audio/Audio.cpp +index a12c789..d74d808 100644 +--- a/src/openrct2/audio/Audio.cpp ++++ b/src/openrct2/audio/Audio.cpp +@@ -128,7 +128,7 @@ namespace OpenRCT2::Audio + } + } + +-#ifndef __linux__ ++#if not defined(__linux__) && not defined(__HAIKU__) + // The first device is always system default on Windows and macOS + std::string defaultDevice = LanguageGetString(STR_OPTIONS_SOUND_VALUE_DEFAULT); + devices.insert(devices.begin(), defaultDevice); +diff --git a/src/openrct2/core/FileScanner.cpp b/src/openrct2/core/FileScanner.cpp +index 74a3d54..f9afe7e 100644 +--- a/src/openrct2/core/FileScanner.cpp ++++ b/src/openrct2/core/FileScanner.cpp +@@ -12,7 +12,7 @@ + #define WIN32_LEAN_AND_MEAN + #endif + #include +-#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) ++#elif defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) + #include + #include + #include +@@ -251,7 +251,7 @@ private: + + #endif // _WIN32 + +-#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) ++#if defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) + + class FileScannerUnix final : public FileScannerBase + { +@@ -290,7 +290,9 @@ private: + { + DirectoryChild result; + result.Name = std::string(node->d_name); +- if (node->d_type == DT_DIR) ++ struct stat stbuf; ++ stat(node->d_name, &stbuf); ++ if (S_ISDIR(stbuf.st_mode)) + { + result.Type = DirectoryChildType::directory; + } +@@ -324,7 +326,7 @@ std::unique_ptr Path::ScanDirectory(const std::string& pattern, bo + { + #ifdef _WIN32 + return std::make_unique(pattern, recurse); +-#elif defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) ++#elif defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) + return std::make_unique(pattern, recurse); + #endif + } +diff --git a/src/openrct2/core/String.cpp b/src/openrct2/core/String.cpp +index 10218ef..f7be97c 100644 +--- a/src/openrct2/core/String.cpp ++++ b/src/openrct2/core/String.cpp +@@ -38,7 +38,7 @@ + #include "StringBuilder.h" + #include "UTF8.h" + +-#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) ++#if defined(__unix__) || defined(__HAIKU__) || (defined(__APPLE__) && defined(__MACH__)) + #include + #define _stricmp(x, y) strcasecmp((x), (y)) + #endif +diff --git a/src/openrct2/network/Socket.cpp b/src/openrct2/network/Socket.cpp +index 73e2447..c2f26df 100644 +--- a/src/openrct2/network/Socket.cpp ++++ b/src/openrct2/network/Socket.cpp +@@ -74,6 +74,10 @@ + #endif // _WIN32 + // clang-format on + ++#ifdef __HAIKU__ ++ #include ++#endif ++ + #include "Socket.h" + + namespace OpenRCT2::Network +diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp +index 28ab833..cbf10a3 100644 +--- a/src/openrct2/platform/Platform.Linux.cpp ++++ b/src/openrct2/platform/Platform.Linux.cpp +@@ -38,6 +38,10 @@ + #include "../localisation/Language.h" + #include "Platform.h" + ++ #ifdef __HAIKU__ ++ #include ++ #endif ++ + namespace OpenRCT2::Platform + { + // EnvLangGuard allows us to temporarily set the user's locale +@@ -150,8 +154,8 @@ namespace OpenRCT2::Platform + }; + static constexpr u8string_view SearchLocations[] = { + "/data", +- "../share/openrct2", +- "/usr/local/share/openrct2", ++ "/boot/system/data/openrct2", ++ "/boot/home/config/data/openrct2", + "/var/lib/openrct2", + "/usr/share/openrct2", + }; +@@ -180,6 +184,16 @@ namespace OpenRCT2::Platform + { + LOG_FATAL("failed to read /proc/self/exe"); + } ++ #elif defined(__HAIKU__) ++ image_info info; ++ int32 cookie = 0; ++ ++ while (get_next_image_info(B_CURRENT_TEAM, &cookie, &info) >= B_OK) { ++ if (info.type == B_APP_IMAGE) { ++ strlcpy(exePath, info.name, sizeof(exePath)); ++ break; ++ } ++ } + #elif defined(__FreeBSD__) || defined(__NetBSD__) + #if defined(__FreeBSD__) + const int32_t mib[] = { +-- +2.52.0 + + +From e355dd5da70c07362e52a4cdbd4f87aaced01aee Mon Sep 17 00:00:00 2001 +From: Jérome Duval +Date: Tue, 23 Dec 2025 11:58:37 +0100 +Subject: Haiku patch for gcc + + +diff --git a/src/openrct2-ui/UiContext.Linux.cpp b/src/openrct2-ui/UiContext.Linux.cpp +index cb785aa..12513c6 100644 +--- a/src/openrct2-ui/UiContext.Linux.cpp ++++ b/src/openrct2-ui/UiContext.Linux.cpp +@@ -7,7 +7,7 @@ + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +-#if (defined(__unix__) || defined(__EMSCRIPTEN__)) && !defined(__ANDROID__) && !defined(__APPLE__) ++#if (defined(__unix__) || defined(__HAIKU__) || defined(__EMSCRIPTEN__)) && !defined(__ANDROID__) && !defined(__APPLE__) + + #include "UiContext.h" + +diff --git a/src/openrct2/core/Range.hpp b/src/openrct2/core/Range.hpp +index 49adfd9..f055e10 100644 +--- a/src/openrct2/core/Range.hpp ++++ b/src/openrct2/core/Range.hpp +@@ -29,6 +29,10 @@ struct Range + T Change{}; + + private: ++ #if defined(__GNUC__) && !defined(__clang__) ++ #pragma GCC diagnostic push ++ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" ++ #endif + Iterator(const Range& range, T initialValue) + : Lower(range.Lower) + , Upper(range.Upper) +@@ -36,6 +40,9 @@ struct Range + , Change(range.Upper >= range.Lower ? 1 : -1) + { + } ++ #if defined(__GNUC__) && !defined(__clang__) ++ #pragma GCC diagnostic pop ++ #endif + + public: + Iterator& operator++() +diff --git a/src/openrct2/platform/Platform.Linux.cpp b/src/openrct2/platform/Platform.Linux.cpp +index cbf10a3..c057f30 100644 +--- a/src/openrct2/platform/Platform.Linux.cpp ++++ b/src/openrct2/platform/Platform.Linux.cpp +@@ -7,7 +7,7 @@ + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +-#if defined(__unix__) && !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__) ++#if (defined(__unix__) || defined(__HAIKU__)) && !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__) + + #include "../Diagnostic.h" + +diff --git a/src/openrct2/platform/Platform.Posix.cpp b/src/openrct2/platform/Platform.Posix.cpp +index 5329756..f8dee1e 100644 +--- a/src/openrct2/platform/Platform.Posix.cpp ++++ b/src/openrct2/platform/Platform.Posix.cpp +@@ -7,7 +7,7 @@ + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +-#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) ++#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__HAIKU__) + + #include "Platform.h" + +diff --git a/src/openrct2/platform/Platform.h b/src/openrct2/platform/Platform.h +index 00603ad..9b003ca 100644 +--- a/src/openrct2/platform/Platform.h ++++ b/src/openrct2/platform/Platform.h +@@ -102,7 +102,7 @@ namespace OpenRCT2::Platform + std::string GetUsername(); + + std::string GetSteamPath(); +-#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) ++#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__HAIKU__) + std::string GetEnvironmentPath(const char* name); + std::string GetHomePath(); + #endif +-- +2.52.0 + + +From 936cfa6bf2731701fb85bf71784da4cb3dfe13ef Mon Sep 17 00:00:00 2001 +From: Peppersawce +Date: Tue, 23 Dec 2025 14:58:19 +0100 +Subject: Disable installing linux desktop files + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 234c3e3..47e9f57 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -517,6 +517,7 @@ if (NOT MACOS_BUNDLE OR (MACOS_BUNDLE AND WITH_TESTS)) + endif() + install(TARGETS "openrct2-cli" OPTIONAL RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + install(FILES ${DOC_FILES} DESTINATION "${CMAKE_INSTALL_DOCDIR}") ++ if (NOT HAIKU) + install(FILES "distribution/linux/io.openrct2.openrct2.appdata.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo") + if (NOT DISABLE_GUI) + install(FILES "resources/logo/icon_x16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "openrct2.png") +@@ -534,6 +535,7 @@ if (NOT MACOS_BUNDLE OR (MACOS_BUNDLE AND WITH_TESTS)) + install(FILES "distribution/linux/io.openrct2.uri.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + endif() + install(FILES "distribution/linux/io.openrct2.mimeinfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/mime/packages/" RENAME "openrct2.xml") ++ endif() + install(DIRECTORY "distribution/man/" DESTINATION "${CMAKE_INSTALL_MANDIR}/man6" FILES_MATCHING PATTERN "*.6") + + if (MACOS_USE_DEPENDENCIES) +-- +2.52.0 + + +From b726196c72e9fc298607fb4f72cc180055062632 Mon Sep 17 00:00:00 2001 +From: Peppersawce +Date: Wed, 24 Dec 2025 14:51:59 +0100 +Subject: Disable multi-threading by default + + +diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp +index a2fa8d8..1d482b9 100644 +--- a/src/openrct2/config/Config.cpp ++++ b/src/openrct2/config/Config.cpp +@@ -226,7 +226,7 @@ namespace OpenRCT2::Config + // Always have multi-threading disabled in debug builds, this makes things slower. + model->multiThreading = false; + #else +- model->multiThreading = reader->GetBoolean("multithreading", true); ++ model->multiThreading = reader->GetBoolean("multithreading", false); + #endif // _DEBUG + model->trapCursor = reader->GetBoolean("trap_cursor", false); + model->autoOpenShops = reader->GetBoolean("auto_open_shops", false); +-- +2.52.0