fix error messages in structure compare

This commit is contained in:
Dark Byte 2020-02-09 21:17:18 +01:00
parent 5dd13bb0ce
commit b3027fc812
4 changed files with 681 additions and 33 deletions

View File

@ -27,30 +27,36 @@ type
implementation
uses symbolhandler;
uses symbolhandler, newkernelhandler, ProcessHandlerUnit;
function TAddressEdit.getAddress: ptruint;
var
a: ptruint;
b: byte;
br: ptruint;
begin
a:=symhandler.getAddressFromName(Text, false, finvalidaddress);
if finvalidaddress=false then
result:=a
begin
result:=a;
finvalidaddress:=not readprocessmemory(processhandle, pointer(a),@b,1,br);
end
else
result:=0;
end;
procedure TAddressEdit.change;
begin
//get the string in the editbox and parse it. On error, indicate with red text
symhandler.getAddressFromName(Text, false, finvalidaddress);
if finvalidaddress then
Font.Color:=invalidColor
else
Font.Color:=clDefault;
end;
procedure TAddressEdit.change;
begin
//get the string in the editbox and parse it. On error, indicate with red text
getAddress;
inherited change;
end;

View File

@ -13,7 +13,7 @@ object frmStructureCompare: TfrmStructureCompare
OnDestroy = FormDestroy
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '2.0.2.0'
LCLVersion = '2.0.6.0'
object Panel2: TPanel
Left = 0
Height = 412
@ -118,7 +118,7 @@ object frmStructureCompare: TfrmStructureCompare
Left = 0
Height = 19
Top = 38
Width = 89
Width = 88
Caption = 'Hexadecimal'
OnChange = cbHexadecimalChange
TabOrder = 1
@ -419,7 +419,7 @@ object frmStructureCompare: TfrmStructureCompare
Left = 0
Height = 15
Top = 0
Width = 53
Width = 52
Caption = 'Max Level'
ParentColor = False
end
@ -455,13 +455,13 @@ object frmStructureCompare: TfrmStructureCompare
DefaultExt = '.sptr'
Filter = 'Structure pointer (*.sptr)|*.sptr'
Options = [ofOverwritePrompt, ofEnableSizing, ofViewDetail]
left = 480
top = 64
Left = 480
Top = 64
end
object MainMenu1: TMainMenu
Images = scImageList
left = 197
top = 168
Left = 197
Top = 168
object MenuItem1: TMenuItem
Caption = 'File'
object MenuItem7: TMenuItem
@ -495,20 +495,20 @@ object frmStructureCompare: TfrmStructureCompare
object OpenDialog1: TOpenDialog
DefaultExt = '.sptr'
Filter = 'Structure pointer (*.sptr)|*.sptr'
left = 552
top = 64
Left = 552
Top = 64
end
object statusupdater: TTimer
Enabled = False
Interval = 500
OnTimer = statusupdaterTimer
left = 464
top = 208
Left = 464
Top = 208
end
object pmPointerfile: TPopupMenu
Images = scImageList
left = 400
top = 112
Left = 400
Top = 112
object miClearCache: TMenuItem
Caption = 'Clear pointer cache'
ImageIndex = 6
@ -538,14 +538,14 @@ object frmStructureCompare: TfrmStructureCompare
object FindDialog1: TFindDialog
Options = [frDown, frHideWholeWord, frHideUpDown, frDisableUpDown, frHideEntireScope, frHidePromptOnReplace]
OnFind = FindDialog1Find
left = 268
top = 243
Left = 268
Top = 243
end
object pmAddressPopup: TPopupMenu
Images = scImageList
OnPopup = pmAddressPopupPopup
left = 304
top = 24
Left = 304
Top = 24
object miCut: TMenuItem
Caption = 'Cut'
ImageIndex = 5
@ -581,12 +581,13 @@ object frmStructureCompare: TfrmStructureCompare
end
object tRefresher: TTimer
OnTimer = tRefresherTimer
left = 325
top = 190
Left = 325
Top = 190
end
object scImageList: TImageList
left = 99
top = 277
Scaled = True
Left = 99
Top = 277
Bitmap = {
4C690A0000001000000010000000C47B27FFE08D2CFFE08D2CFFE08D2CFFE08D
2CFFE08D2CFFE08D2CFFE08D2CFFE08D2CFFE0872CFFE0832CFFE0892CFFE082
@ -910,5 +911,631 @@ object frmStructureCompare: TfrmStructureCompare
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
}
BitmapAdv = {
4C69020000004C7A0A0000004000000040000000411E00000000000078DAED9D
09741455BAC79374800081040324814002092464212189849D0404822C5101C1
05020410D98220E0804024FA041161181C401CD6719B41C0D163DC0632A3C880
B8CDE000479EF13C14181550018D12B9EFFECBBE3D45A73B5DD5A9AEAEAEFAEE
39FFC392EEAAFBFBEADE6FB9B7AA929F12CECA6E89B5A4F2EDEC6C478E2525EC
60C8FEAD77A14DB29F6F71F3992DB2CF6C72F3996D01C05FEE424FC87EFE7B37
9FF9BDEC334FB8F9CC1F889FF8899FF80DCCFF0717DA26FBF976379FD92EFBCC
36379F0984F8A777FC7F2E9FB18F365B436075E67F7138B34C032BF1133FF113
3FF113BF9EFCD76A18FBFE8C6BE16766E707E7E61CD7C2CF889FF8899FF8899F
F8899FF8899FF8899FF889DF58FC1F6E63ECE569EAB5B7D83D3F7EE6CD31D117
BDF90F94B9E7D05BE80BF1133FF113BF5EFCC7F7FE7A5EB57A63A17B0EFCCC9B
63A22F14FF899FF8899FF8899FF8899FF8899FF8899FF889DF48FC4668C44FFC
C44FFCC44FFC82FF8F3D197B7D9A3504567AFEE9BA67C0ADFAFC3B6F41241289
442291483ED399A309ECE8E6B23A85CF9895FFE8E67C8FF7B2E033C44FFCC44F
FCC44FFCC44FFCC44FFCC44FFCC44FFCC44FFCC4AFF79A55BE267A79DA5C8FFC
F88C56E7D3622D0D6B724679CE4BADD077E2277EE2277EE2277EE2A7FC87F25F
E2277EE2277EE2277EE2277EE2277EE2277EE2277EE2277EE2A7FBDF49241289
4422910CA3CACACAD0A0A0A07DF9F9F93759919F733FDD38C9C6826C4197CBCA
CAD22DC6FE6058071BCB79A715EBF85073C6C7C1393E1EE22CC23EB1415408EB
F6464BD6E358B4A4B8194D618313DC069126672F0C69125C93B1FB0607BB50AB
DB1AC30607B90DC2CCC8CEE7782EE67ACAD32D6AB143791FB76611BD1BC206BB
4DE8EB1330C73B3EDCDC25BBD08D475AB3A6A9A18C8F937526626F89B91D37BB
699DEC42D9952D59A37636D860AE09D8C331A75BDFDE5811BB50E6CB510C3E92
DB607480E737BB5B0C6824CD6D35FC50EACE160CBE92DBA04F80FAFA0DE15D1B
48735A2DBB50A72722A4FC88DB3225C0D81F407E83B9EC2DBB50C2E26688095F
701BC40408FB38CC5DCCE1FAB20BB52969021B1C833F31387B3EE66CDAB33768
C62E14353C0C36F81BFC8AAB73F3C6BCD031ADC6156A187EBCCB5185612C91C7
7967612EAB99F7CEDF479D101A198C3E3FEF8E7FD8995F542961CA1C9177D7DB
06BCADE4DAEE46BB1BB5B129E6C767F11D77C7731513BCE177B2419C0F73DF04
B5FCF88E4AFB7BC50F755EB842D4A02956E487521F7AC2673608047EB90D50AB
59911FEAB6F159166CB35D461CE77DC857A83EE8AF3BC15F050A3F94BDE54FEC
869EFD152B323B8F358E8B77ABB0D8B6CC0BFFEF106CAC27BFD62A38FC996A7E
7C07DF857D899FF8899FF8899FF8899FF889DF7BFE1E2FEED75DA829B02698BA
AD852249FBA3FC3BF86EB3B44C692FC4530DA2843FEF85375850B3162C38BD87
6914D4211517FF1B25FCB1456359C8A40759E84BA74DA390BB1680FF694FFC83
4F5C60218D9B32DBF60F4CC51FD43611FEE1264FFC698FAC67C179434CC56E5B
F79A58B30AF5C4DF3C3593853CB8DD54FCC1B7CF71EC95D7C5DFBBE2080B8A6C
C542F77C6EAEB11F138FB1DFC7137FFCC4192C78D40C338EFD2F3CC5FFA15557
5868F308667BB2D2B463BF2E7E693D93C74933B13B8FFDBAF8A3FA0E6421739E
30F5D877C75F70E4331614D684D9769F32F5D877C79F54BA98050FB9DB7C63BF
55DC7563DF15FFCDA77F6261316D99EDB197CC35F61FDD536BECBBE2EFFECCAB
2CA87D67D35DFBE0112518FB2B3DF1C70C1BC5424A969B6FEC47C560EC67D5C5
3FE8D8572C24BC39B3EDFAA719C7FE294FEB1F5D963EC6827BDD6CD6B1FFB027
FEF0E43416B27C9765C6BE9CBFD72BEF4A9F335BAD53D7D897F3B71F3F4DCA0F
AC34F6053F6A1D5B93A6CCB6E590B9F8F958AE6BEC0BFEAE6BB7B2E0AE7D4C77
ED43563C57E7D817FC582B0FB9FF49F38DFD417760EC9779E20F6ADADC74B58E
34F69BB5C0D84FF2C41F7C73B159C7FE474AF67FB0166CA6BD0D697FA3751CC6
FE0A05F7D8DD62D76D5C13CD24AB3C1B492291BC7EDE0CFBE07E6BFE7E460B7D
F0F21918ADE4D7E7B7053F8F95C89574556262A2B0C15BEE9E4FD28B1FFDD1BB
1D3F7E9C356D2A3DC3EFB76797FDC98F565151C16C369BB0C114ABF1A3AD5DBB
56CC033CB79B6F357EB492921261836FB82F48B21AFFD5AB5759FFFEFDE53121
DC4AFC685F7FFDB53C26BCA6474C3012BF8B98B0D26AFC68BB76ED1263A0D28A
FC070E1C207EE2277EE20F28FEAAAA2A4DF4DC73CF09FE7FD4F57CB09362FCCD
EFE77584CBDE3C7F5E17FF952B57D8F7DF7FAF58A22FF1F1F1BA2A3A3A5A9CFB
9CDA7772D4C5BF63C70EB661C306C512FC7AB74B972EB19C9C1C71FEA36A6A07
5F5C7F7FB4B367CFCAC7C1F3FE9CFFFE6AEFBDF71E6BD4A891A81DCAACC6EF54
3B287A0F9CD9F8D1962C59228F0959DEF2EFD9B347F2814A65147EB4A2A222D1
9F3ADF815617FFB973E7D8175F7CA15846E2474CC8CCCC74E451EEDE8F6AC6F1
2FDAE9D3A71D3181F3DD6D357EB4E2E262C13F91F8D5F1BFFBEEBBECADB7DE52
2CE2A7F14FFCC46F16FECF3EFB4CDA8F502AB3F16B95FF228F54E347BDD5871F
7E68C8F17FFEFC7976E4C8119FEBE4C99334FF899FF80DC6FFEDB7DF5A7AFEA3
0EDDBB77AFCF75F0E0411AFFC44FFC5EF063AD0C9FAD8FDCF1D7D4D4A8DA47F1
563FFEF8A3D7FC5ACAB9C12FABD947F356FBF6ED53CD5F595999A5D5F3368138
FEB514F1133FF107B95C4751B38EE0ADDE78E30D43F2232EA9D947F3565867A0
F14FFCC44FFCC44FFCC44FFCFEE0C7FDDB46D190214374E737A274E2AF34AA38
7F2163F4BE0392A6635DABF959690426DC2BAB624E7D3B72D448766FE9BDF512
8E8163A998C7593EE4CF6FD73E882D7AC0B3F039ADF8D59C53C9EF34A90F7F72
4A10DBB6C3B3F039ADF8D59C93F8895F4FFE9229AE1513AB1D3F8EE5EE3CFEE6
477C1A5E3CAC96A2A26F60C95D92596E5E6EBD8463E058AECE81731B81FF283B
5C4B65DB96B269655334118EE5EA1C46E6D743C44FFCC44FFCC44FFCC44FFCC4
1FB8FC2F57ED532D9C7BF59AFFAA63A2F44CFB380FEF41893322BF9E6BFDDC46
138DCAEFCBF7A0B46DDB56FE1EC93E46E4D76BBFCFFE2E9804ABF1E33D92BD7B
F716E73BA6F25D3001CF8F8677C1603ED8CFF98AD2F7489A851F0DCF02AA7D8F
A499F8D1F04C8C2C26DC6D357EB4F2F27271EE6A05EF82311D3FDAC0810315DD
0360567EA5F7C0103FF1133FF113BF3EFC78BFA29AF76B28D599336702821FCF
85FBE23D189F7CF2098D7FE2277E83F3E3992D5F3C070C1F40D79FF889DFD8FC
7867812FDE0383E76DB5E45FBE6D69BDE58AFFF2E5CB3EE1FFFCF3CF35E3EFDD
471B05EAF8D74AC45F9BDF57EF45717E0F8A51F9F15E405FBC07C0F93D5034FE
95F3FB7A6FDAECCF401AF1D950E2277EE2277E23F09BFD19704FFC667F069C19
F8D9707A069C4422914824128944229148B235F0743C2F80DF238CDF9D299EA5
E1FA88EB69FEF3716A9E29F1A7D04FDEDF964A3FCBF9B64784D95869DFD6ECCD
7B3AB1AA25E98CADC961A79766B0437392D9EA11716C60A766D2EF55E5365AA7
F6774DEB74FDB087F147AE6F1A350866114D6CD2BDFFA8FF799FA7BBFA3DA076
F683456911ECE2C39912B310FE0D3B5CFA9F2CC7FF7DFA9B34569C1BC56C2192
1DEE3708771267782D3A2294AD1E17C7AAD6F06BB72347D2C58D99ECB97B3BB0
FE29E1B0C529E7DF93CE19360CEB12C1AEAECE96F87E5CD58D2D1F1CCBE25B34
94AE35D7E7B021FE7D4FCF96ECC3795DA4CFE1CFCC368DF199D7FC3527F87923
79FF1F0F6B105CB3FC9658F6E3D3DD1CDCAEB46572BCB86E7DECDF6F19161A5C
7DB6ACABE37AA7C584494CDC4E7D9C6C9CC5BFF730FCC1D8AC160CDF81ADEECA
BE413C6B16A9237728EFCB148CF3B1792DD8E9B5197572CBF5F27D89B0C1B7FC
18719C6934AEBD18DB18D7983F0A6CBE21BA59A8E417F0BD923CE97B07953E6B
A6C11CFF2827A1097B7B49B2626EA16D53E259D34621E8EF2CFCFE8F4503621C
E3BE51683053EAD7F04C5578C3909AE38BD2A4B9D33F315CF1B3665E5EF304FC
6E77CC718C63B5DC8796A530D80C63553C47CEFF7C50F0C3CF61AEABE913FC1F
7C00F8F17D3E976AE08BB48E639877DC9F572F1A1623F93335DC981B77F594E6
E837F618102A1B4BA387243797F8319FF12E422FD6B6DFD9362E5E3AC6A201D2
EF5BDEA4153BC618F290619911ECD3C7D25471C317968F6AC3E01BEDF13AD2C5
5C8AC19817F10D3E9EFF5F0F95F3711CC6BE6C0C5DAEAF1F408CC2EFED4EE6BE
F8CD859D548F75C4BBF8960D851F4FF170FD5E595B1427F5BFBCB08DF41D957D
6D89BC49F8D0C4A846F003D3BD1CEB31521EC6F396DF8D6FC7AE6ECB56C5FD61
7917799C1FAEB0FF3DD0FFAF57644A3ED0DEFF596A6270D386210E7EE48EC9AD
A418FA8E73AE51C731C2F8391F406CBEA7A0A5EA39FEF5864C56D24FCAC9BE85
4F523BFE10CFE007E0C7FEB52095C1AF23BE2AB4DFE8DE1DC2AFCB1B711C8C29
D81575435D31859F6734AED7C0D466EC5F8FA4AAE2C6F8583DAE2D8B6C62ABF1
741E4FF647FC467E276C60CFFF9EAFEB98C8211033FE3CA1E375FC42185338A6
FDBA3C20CFBF516BF1EFBE95D8BA11DB3B2751F51CAFB83F89E1BBF67196A541
9C69099F833A00FE10B9A0BDEFA81FB6E33A23B6D9DF33825CF041C414E4CAAE
D8E5823DE123EDF3F24EFEDD4DB8668F8E69EB316775D6F195696C4846732956
E37D285AC75A5C73F880B767253BE2E2A3C3DA32CC0F8C0928B97598942B8A5A
408930AE6EEE22F59B15F7896267D77755C50D9F307F68B4743D387799AB5A4E
C3B88BDF6776AE283D921D98D15931A33B099F9897D894BD8770A4728E6F2C6E
CFA2C243A5DC1C734EAFF503F8528C3351FB6D1CD55E6239706F67B67752A254
27E6C43561F3FB47D7AA9D45AD8CFAA26D8B066CD73D09AAE7F881DF746699ED
A51AF3A8733DA6737D9DCB75BF7D6D41DC53F00A6A4FFEFFB760CE4435E579F9
9878699CC316C8AB51672C191923CDF14B4F65B1FB86C6B249F96DD83F9675A9
931BF5FBA8DC4869EDC9DBF7F9F8C1467D709DD2A2C3186A43D4A5F275886903
DBB27EF903D8A0214359A70E712EFD1E6C047BF19CF527D4527AD6D45AF163BC
BAAA4B87756F2FB1432929C9B5FC1FE6076ABB5E094D5147198A1F39A29BF1BF
CE31FEC37FAD4BDDE5AC7F999BC43A76ECC852BAA4B2BBFAC65E5797C22F62DD
05BE45D411A3BAFA77FC5FE7FF782D81BC147EF8C0039D252167C19A136A6AC4
252539EBD74F66B2D3EB7E5DABC1F5471C448EF8BB5BDB39D6DFE442ECB1AFB1
E9EAFF1CF12F3B526255EBB795D4A5118D6D6C66EF562EE38673DE80B803FFEA
EBF867CF7F76A3EE147318D709791A722E8C032839364CBA76A8B7D4B0FF7956
472967B5050739C6BA52C14E88B3BECA7FE06B82B10E9E1D21F9618C678C798F
F9EF2DB11EB951D7C8EAD2B1C87F516321AF44CDA9C60E586F432EAA65FEEBA8
7F38AFA8A3EDEB07CAEA1F7E5DDDD5A5761BBAAF7F78AE8D5C4A6D4E59313549
AAD5B5A87FA4FA978F6FF86E5CABF0462AEBDF4EE1B572D6B577C689FD1765F5
6FA766529DA4C606F00DAB47F0FAB7B1F7F52F621B6217AE157C13AEBBEAF50F
9EE70976AC5725C7D463FD83E7D99E7CA2AB3ABBA4BB77EB1FD2FA17BF56E83B
FCB257EB5FFC3A0B7EF8B77AAF7FD51113EB12EA51599D3D5C41DF63B04F087F
87BEE3DA7BB5FE9912EEC8DB355DFF6C15A63A4E40CFDDDD41ACDFD4B9FE29AD
7FF3792FE29CD7EBDF537EDD8F5834CC47EBDFBC86442DA9C606882BE543DB88
B5BC0D6ED6BF1FC49E82ECDAA9DFFF68D758F277F83ED6DA7DB6FF111A5C8D9A
52AD6FC0FEBD7D8FD2D5FE4799E087EFC35C50B5FFC5E304D6A3C08F39A0CBFE
57B35FEB6CB573E2D09C1469ADC269FF6B34F65684EF424EA778FF93D76A622D
076BCFBAEF7F7216B146A746D8ABC27A3DF63FA5FDEF06C1D5A21645CE97D656
C1FE37AFEDF11D8C19FBDEDA477EDBFFCE6A218D71A5FC2F97FC77FFDB71FF03
1F03A26E15F5893DFFAB76DCFF60AF0145CE8F3F31F70D71FF4368700DD6E23C
E5D29837F2FB1FAEBBFF85E7FDCE352CFE0DBF26E223847D48CC1343DEFFC27D
03EE5312F72E89BA09F1509617E4BABDFF89E731A5835B4B399C58BB42BD7E68
69B2745F0DF66802E6FEA7D060B1FF54E7FD4F2EEE7FC31C7FC74AF7BF914824
128944229148241289442291482412894422C975F4300B9F3A9E8DD3EB7C3817
CE6914F6EC64F60E17E3FD9AAB03FB5C9C0BE7F4B70DE4EC42BEB4818C9DF9DB
06AED87D690317EC7EB3415DECBEB0411DECBADB4009BB963650C0AEAB0DE07B
15F6A7DE3650C12ECE354EA7F833D7D736D0E31C46B581D1D97DD9CF4061F745
7F038D5DCB7E072ABB16FD0F74F6FA709885DD5B1B9889DD97360814765FD820
D0D8B5B441A0B26B61834067AF8F0DCCC26E757E2B8F7F2BFB3F2BC73F2BE73F
56CE7FAD5CFF58B9FEB5F2FA8795D7BFACBCFE69E5F56F2BEF7F587DFFCBEAFB
9F56DFFFA6FB1FE8FE17BAFF89EE7F239148241289442291482457BA70E14270
797979CACA952B670F1B366C45BBB876DBA156AD5AAF5FB56AD502FEFFC3CF9E
3DDBD06CDC274E9C0C1F39B268566E4EEEFF8EBA75D4B539B34BD982F90BAFD3
FDF316B0891326B182FC0197A35B47EF78EAA9A7D2CCC03E674EE95DBD7AF6FE
BF19F7CEACC55C97460C1F59DDB76FDF272B2A2A220391FBFDF7DF6F3C66CC98
1DE3EF9A704D0DB75C736695B2EC6ED9FFB762C58ADC4062AFAAAA6A99D73DEF
00FAEF2DBB5C430B6FBEBA74E9D2C181C07EFEFCF966858585FB4B67CFD5845D
68C8E02117B66EDD3AC0E8FCDCCFFD7EC674F7737DDEDCF9AC6844D1D5AE195D
0F4E183F61F9EAD5AB1765A467EC28E85F70F19E69D3DD7E0FFEB1678F9E55AF
BFFE7A5BA3B2DF71C71D43EFBCE32EB7F39DFBF76BFDFAF57BF1D5575FADF55E
ECEFBEFBAED1EC59B3EFBF69E0A08B6075F5FDFB4AE7B18484840A23B21F3F7E
BCD9C0828127DDB18F1B7BC72FD3A64E9BE7E9385BB66CE9D223AFE729773698
543CF9DAF4E9D347188DBF6C79D91C77E3BE78C2C46B23468C98ADF458870E1D
8AEFD7B7DF97EE6C3978F090F74E9D3A65983CE9CC9933E163468FF9C8555FE1
070B87143EFFFDF7DF375073CC9D3B77DE3A76CCB8AB2EED39BEB8E6D1471F1D
6614FECD9B370FC63576D5D7010503CE1C3C783041ED31FFF39FFF84F031B0CB
551C997FDF7CD8F4856FBEF926D808FC0B172CDC04BFEE326E0D1952EEED715F
AB782D63E488A28BAE8E7BF3D0615FF2396088F74EF3FCF603577DE47DFFE5F9
E75F88AFCFB179DCDFEDCA174E185F7C6DDE7DF3FA1A81FFD65B6EAB76C59FDC
39F9AFF53D36AF836EBD676AEDBC60EE9CFB5859D943CBFDCDBE68D1A2F613EE
2EBEE62A77FFED6F7F3BADBEC73F7CF870433E067E7065DFA291451B6A6A6AFC
CA5F5EFEF09819D367D4EADBE8DB46FFB27FFF7E4D72B5F4F48CBFBAE24F4B4D
7BA9BABADAAF3E90D76625B367CDA91DA3070DBEF0C30F3F68F27BC978EDB3C2
157F9FDE7D3EFCE9A79F6C7ECE7B1E70D5B79CECDC8357AE5CD1E477802C5FBE
7CDAEC99B36B9DA3207FC009CE1F6A44FEDBC7DCBEEBE79F7FD6646C2E5EBC38
AF64D29480E22F5F51FE3BADCE317FFEFCC4491327133FF1133FF1133FF1133F
F113BF8EFC13162E7DAAC3F4E53F3AABE3D4253F274E9C7FCD591D4A1EA871F5
796F94306D69B5AB73244E5EF80BFF79B5F3E7A3878EAB3AFEE9A9582DF9A7AC
5CBF356FEF3116084A5AF0C4979CBF0DF1133FF1133FF113BF11F93337BCCCD2
1ED9CE6EFCD30796E2CF58F327D63EEB46969AD28965A6A7B08E49892C71EA6F
58F717FF697AFEAC4DAFB1A48C4CD6F3C66EAC57F76C87B232525952C942D3F3
27DE3A81E5E5645EC72E949C9DCBB2FFB0DFB4FCB97F3CC4927BF471C92EC640
FA233B4CCB9FB3E36D967A639E5BFEDCAC0CD6A5F411535FFF941EBDDDF277EB
9AC6D2CBB79A77FEEFF9174B2CBA9BE5E566B99EFF99592C6BF3EBA6F67F5DD7
BFC492D2D26BF9FFECCC7496547C9F25E27FE2CC32766376D7EBF83BF62AB044
FC873ACF7FACD61CE8D4BBC032F95F677EFD7B38F377EF691DFE3B67D4E24FC9
EDCE729F3F6A09FE4E85B7D6F27FE9D9D9526E6C09FE7E37D5CEFDBA65B2F455
CF9A9EBFFBEE8F59A75EFD6BE77ED999ACCBF2CDA6E7CFD9F90E4BEDDEA3163F
E26197C5EB2DC07F90D7FA8B59C7C90BAED7A4FB59FAEA1768FD8BF8899FF889
DF60FC3366CEDC3168D0E06B81A0ACACECAF4E9E3CD94ED3FBDC172EDAAAE5F3
8CBED4C811455F727E4DAFFFBDD3EF5D92D7BDC74781A02E295D2A387F14BD73
A0FEE28D05806AF2F3F30B2DCC0F5DAEACAC4CF115BF51DBD5AB57F18C9DB0C1
296E839656E247BB74E9124B4E4E1636E026A80CB5123FDAA79F7ECAA2A2A2A4
BE725FF0B4D5F8D10E1C38C06C369BB0C15CABF1A36DD9B245D3981068FC6833
67CED42C2604223F62C2C08103E53121D24AFC68172F5E94C784B7BC8D0981CA
8F76FCF87116111121FCE126ABF1A3BDF9E69BF29830DD28FC274E9C907CF5AC
59B358616121EBDEBD3BEBD0A1036BD7AE9DF4F7418306B1A953A7B28D1B37B2
8F3FFEB85EE7C231444CF027FF77DF7DC7366CD8C07AF5EAC5DAB469A34AD9D9
D96CD5AA55ECABAFBEF2EADC320EDDF9AF5CB9C2D6AC59C35252521C3CF8FBF4
E9D3D9D6AD5BD9E1C387D9E9D3A7A5CF41F8FBFBEFBFCF76EEDCC9E6CE9DCBD2
D2D21CDFC31859B66C9964CB40E07FF7DD77A5F12CFA3F6AD428F6CA2BAFB0EA
EA6AC5C7A8A9A99172BB091326388E039B545454189A1F631DF319FDEDDBB72F
FBFBDFFF5EEF398471317CF870871D56AC5821D9C768FC18A3A28FF8BB9AEBAD
643C3CFEF8E30EDBC24F7AB2819EFC821DFD7BE185177C1ADB9292921C363002
FFB3CF3EEB60C73CF7753B72E488C306880FFEE43F76EC98E49FD117F875BD1A
FCA0986BF0B7FEE2471E833E20AEE9DDE007716EC41A57BEC6D7FC98E7222EA9
8DCD5A3430F7ECD953EAC3BA75EB74E717E7464EEBAF26E601722BE731E04B7E
F8619C37333353D338E74D43DD80BE3CF3CC33BAF1A386C1391193FDDD9033A3
2F454545BAF023EF10793DD660FDDDCE9F3F2FC55E48EE877CC58F9827FCAE51
9AC88FE5F581AFF885DFF7947FE9D944FE298F03BEE247CEE529F7F2970F40ED
EC6B7E9CC395BFF567DBBF7FBFD4A7DB6FBF5D377E5FD639DEAC3988B506E2F7
2DFF92254BA473618DD1286DDFBE7DB57CB2AFF8C18D73C10E4669587712EB2E
BEE617B9AF73BEE5CF86EBEE5C83FB8AFFC2850B8E7559ACDD1AA1A10E419F90
9BE991FF8BBA5F8FF51E4F0D6BE9A216D3ABFE419E8573627DDADF6DD1A24552
5F162F5EAC1B3FF664C45AAC7CCCE9DDD00FB1FEE6DC0F5FAF7F949696FA7D0C
886B2F8FFB7AF163CF4AD81E3141EF867D1131065DED97EAB1FE29FC00D600CF
9C39A31B3BE28ED853759EF77AF2632D047900FA8198A0473CC43951E7E09CB0
81BB73EAB5FF011F24E22F6CE14B1B805DE43AD0DE3D7BDC7E56CFFD2FAC8309
1B14141448BEC117BE5E8C35A18E0909EC03EE07FCCD2F6C20F6BDB13EA8657D
88752D615F67B9B3813FF6BF718DC4DC14F3C1DDFE949206BF7EE79D773A8E97
9191A1D806FEBCFF03EB51F27B3F3027102B94AC1763EE604F45BEE78F388BEF
4BF37FF2644536F0273F1AD6A29DEF8111B112F90AD65150AF621F0F7FC77596
DFF702619F179F71BE0768CAA4896E6D70F2DF9F18825F34EC0FBDF8E28BD21E
A9B32D5C09CCC829B1BE58572CA96583D858D62E3C8CE5C445B353278E1B86DF
B955555549F922FC23D652B07681BFE3FF708F9C9AE6B0819D3DBE419024D820
D4A0FC9AAF7D4C9E741DBB505C689064036681FB3F1F9A575A8B5FD8E0D0DFD4
DD0F1EA8F7BFBAB301D739353608E4FB7FB5B041A0DFFF5C5F1B043ABF021B84
9B9D1FAD45884B7EB67645598215F8C1E0C206BB99799E7F55A4B103F31FE6DC
9F736DE7633FD46AFC8C9E692791482492FCF7F89495A570E55B54293C366E4F
8E6DC4FAA7845B4A60063BB46D0A4F8577E4584A6026FE5FF94BFAB594FE6D25
81D9CE3FC5FEE75F902717243663C5B951A6D4DDD937B0B0D06070FF5BB0CB63
01DE1D12DD2C949D7E3083B1D539A6D2D555D96C544624D80F5656BA5FFB800D
925B85B1B3CBBA9A8AFF9E1E2D3DB2CB6CB0CE4C3628EDD31AEC9F2861379B0D
ECEC27387B8CDADC30D06D501FF640B78116EC721B64C63666971EC9B21CBBCC
069B7A273435BC0DD68E8CD39C1DC27B84F871771BD90676F673BCAF09BEA895
8D6C03197B8A2FD70B8C6803BDD88D6803BDD99D6D50941621E5D6FE60DF785B
7BBFB0CB6D101C14F457D4157ADBE0CFE33B325B88FFD8653608475DA1A70DEC
EC97794CEE638435543D6D6034763D6D6054765736B01ABBB30D90836BC5FEE6
B44E01C12EB3412472702D6CF0F68C6416DE30A42650D8653688A9AF0D64ECA3
03716F4DD8606C660B563628569596710532BBB30DF253C259D92DB18A543AB8
B5786FE96893ECB196814BE9DE4CD59A74F09F36D11EB337FC9F133FF1133FF1
133FF1133FF1133FF1133FF1133FF1137F60F1176547B28B1B332DC98F3D3ACE
B32FA2898D2DE7E3C0931DCCC62F1B07594AEC60567E991D9270FF6D64135BCD
FCA1D1ECECFAAE96E277B6435883E01AACF90A3B5885DF9D1D0E2D4BB614BF93
1D36858604555B915FBE67C26DD1839E4F23914824DFE9FF01393A52F64C7A0A
00000080000000800000008D2F00000000000078DAED9D097415659EE8C32208
8124909004084948086109241096808D0928200A248A2BA8098B0BA81097EE69
DB1632ADFDDA376ECCD3F746DC881E5FBFD16901B1B1F5CD7B92997EDDB68E23
69C5B67B661C398EF699D6EEC362BB2BDFABEF722B568ABAF756DD5B55A9AAEF
F79DF33B76872C75EBF7AF6FF97F4B656565892C501AF1583D2808FEF18F7FFC
732FF00F36B9CD013B12FC8EBF72F03BFE2AC1EFD891F9B5E01FFFF8C73F5EF1
0FF807FC03FE01FF807FC03FE01F4CF7DD2E3B13FC8E871CFC8E8712FC8E9D99
5F0BFE99FFC13FFEB917F807FCF7F0C2958212B1229DE21FFFF8C73FFEF18F7F
FCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF14FC13F05FF14FC53F01FE6F2
F93121DE7FD519F267F01F8D227DEE70B85E56FE0CFEF18F7FFCE31FFFF8C73F
FEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C7
3FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFAA
F83FF6BE10AFEEF097FDDB9CFB973FE3F775CA7B1375FFE93C8BAAE0659D837F
FCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C7BF97FED3
398B33535EFFB17317F267FCBE4E2FCF1C65FE97F95FFCE31FFFF8C73FFEF18F
7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF1
8F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFE
29F8A7E09F827F0AFE29F8A7E09F827F0AFE29F8A7E09F827F0AFE29F8A704C3
FFD32B84E8DE0151423AB5EB1F9400FFF8C73FFEB9176AFB0775D14A16000000
000000000000000000000000004020D951DFE1F8DCAF93E9E05EE21FF00FF807
FC03FE01FF807FC03FE01FF00FF807FC03FE01FF807FC03FE01FF00FF807FC03
FE01FF807FC03FE01FF00FF807FC03FE01FF807FC03FE01FF00FF807FC03FE03
789F8348970BFEBB02FBF982E35F401F807FFCE31FFFF8C73FFEF18F7FFCE31F
FFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FEB3F58FFC1FA
2FD67FE11FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8E75EE2
1FF00FF807FC03FE01FF807FC03FE01FF00FF807FC03FE01FF807FC03FE01FF0
0FF807FC03FE01FF807FC03FE01FF00FF8070000000000000000000000000000
00008080A1953C8D431A75DC0F25DD776B88F87FF3B82F4AF9D7DD0B624039F7
9DD2F98061FD44E5ED39B1FFC663A093FB1379F7DBF5677EE25FE78986834562
DA4FF28DF50031105DF76DBA67F9DC4BF73AF2FF1B62A09DFB155DF7259BB27B
B94F10036DDCB7C8B8AFCBEA9F754C7A1DD53CC4D2BD8EFC77430C3471FF22E0
BE5FD651E973C4A2C149DD9F1403277E8EDC4098C7F8FDB3DE952E87560F14B3
5E2AB4E55F22BFDF1003E5DCCFF0E6779CBA97C8EFEF8901720361F4DFA58FF1
E5F8CE897B9D192F14187303DDDCD7F0E577D275AF237F9EFC50A8DC77241AE3
A7CB949D23C80F853CBF9329E40602EFBE45F7537CE95057DDEB94FDC5706220
E063FC54F99D4C31E587C80D04C87DCEAC419EBA273F14AD317EBAF4CA0D9C88
0172037DE87EF09801BEB9273F1418FF7BDC1AE3BB941B203FE4737E47D257EE
C90F4527BF9329721D91614CB01D4FE1CBEF901F0ABCFB26FDFE7A3DC64F17B9
AE881808777EC7B5DCC089F546E40632775FAEBB97E3AD20BBD791EB8CC80F85
37BFE36A6EE0C4FAA33C879F5BF8C491A0B65346F7727C1516F76EE4877CF41F
D8BE8A718C2FF37B32B7EF042FE600E5EF74720DF2BA0DF7B8CBA9FF737EFFB5
A7945C78792063C0E83E5DBC980B92BF33C3EBEA0C92FFA0C6407CAC972EED3E
F86FCFE0FAF282E43FC8F5402679028FFD3779FC197CF56F1103EDF857CBBF64
FC86CDA15FE788FFCCA8BDF7D150C700FED58E01FCAB1D03F8573B06F0EF690C
74057D9D1BFEDDA7E1272F8A8139B9A158EB887F6F58F0F7FF6C8E810E8F680F
41FE4F39FF16311068FA28FFDF1165FF7A0C54DDB8D533641E327F5E63DAE44C
ADC5BFC2C8BE8AD7FEE5DF30FE4D19B7F8C73FFEF18F7FFCE31FFFF8C73FFEF1
8F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFE
F18F7FFCE31FFF6EFAF772BD6ED028B9B0B5E7CC20791EA39BE8E7F9C8BF61FC
9B23E7351AF747B9B107C235FFA6FD5B1022DCF05FB47465EC77F59BBB44F4BF
F87A0828FD6A1A74EF7BDCF2BFE8E5B77B6269C0432F8981CFFC0704947EE3A7
F49CBFE4967FBD5F229F7DEE717091CFA6A1DECF73CBFF9092B2D8EFE9BFF91E
EE738091F5BF5EF7BBD5FFD7C741594387738F034E566149AFB3F7DCF0AF9FE7
D67FC57AEE7190EBFEEDCFF7AAFBDDF0BFE4B77FFAA6DFA7FD7EEE7380EB7EED
F9349FAF93A9FF297F79CF897E9FD6A7E41E87A6EE6F71CB7FCE945AFA7D61AA
FBFBF53BEA56FE579ECFA0FFFCC01FBFC97D0E59DD9FA97FBDDFD76FD105DCE3
10D6FD99FA1F38FCC4F93C037EF814F73884757F26FE7BE67AB4B8E21E87B3EE
CFC47F7E7C1E52E693B8C7E1ACFBD3F5CF5C4F34EAFE74FD33D7138DBA3F5DFF
FA5CCF809B1FE61E87B8EE4FC77FFDA3BB98EB8948DD9F8E7FE67AA253F73BF5
DF6BAE877E5FE8EB7EA7FE99EB8956DDEFD43F6B7CA255F73BF1DF33D723FB7D
CCF504BFEED73CA5AAFB9DF867AE274475BF362EB753F7DBF52FFB7DCCF58468
7DB7F68CDA7D8F961DFFCCF584B6EE6F72C37FCF5CCFFA6DDCDFB0D4FD595987
DCD8FF699CEBA1DF17AABA7FBB1BFEF5F73433D713BABABFCE0DFFCCF544B7EE
4FE5BF67AE877E5F24EBFE54FEF5FDDCCCF544B3EE4FE69F353ED1AFFB93F9EF
99EBA969E0FE46B4EE4FE69FB99EE8D7FD89FCF7DACFCD983FB2757F22FFCCF5
A851F75BF9EF35D7C37EEE48D7FD56FE99EB51A7EEB7F2DFB39F9BB99EC8D7FD
66FFCCF5840CCD512675BFD97FCF5C0FFDBE70ACF1DB7C4F4675BFD97F4FBF8F
B99E70D4FD73976454F71BFD33D713C2BAFF9BB3BCEA32F5DF33D7C37EEEB0D5
FDDD6E9CFFCE5C4F68EBFE76B7FC33D713CABABFDC2DFFCCF5A855F7F7F2CF7E
6EE5EAFE5EFEB57E3FEF4608076ED5FD56FD3F080DFFE9D2FB9F3A2DF8DBF8FB
8520B8B4BBE11F000000000000000000A28DE279F44EFC2B3F97D2867FE569C2
BFD21CC9641D6D94FCAB50EEBDF75EAB18E8D6DF8B8CFFE897D6D656AB18D883
7F754A6D6DAD550C6CC7BF1AE5F0E1C3A2ACAC4CE93181CAFE653970E080C8CD
CDB58A813AFCAB5176EFDE9D684C508E7F358AAA6302FCAB3D26C0BFDA6302FC
AB3D26C0BFDA6302FCAB3D26C0BFDA6302FCAB3D26C07FDA638276FC2B3D26E8
C0BF3A65DBB66DF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73F
FEF18F7FFCE33F83B27FFFFEC061310F2CCFCA6DF28072D5FD2BBE17D9D7F525
F80F245DF8579ECEA0FA3F76EC9878EFBDF73CC37C4D8D8D8D91A7AFD69CA7E3
7FD7AE5DE2FEFBEFF70C15C72449D69C37E15F8D22C7197E9F4D1386FA5FA5B2
73E74E5FC70461E8FFA95612AC39EFC2BF3A45F609FD1813E03F98C5AF7DA8F8
577B4C80FF6017AFF7A1E23FF8C5CB7DA8F80FF598604F5FF87FF9E597633920
AFC0BF75F1E26C1AF27F6A8F09D2B9D76FBDF556AC0EF00AFCA73526A813B4FF
8C09F0AFF298600FFE951E1374E15F9D62315F8C7FFCE31FFFF8C73FEB7FF04F
FE0FFFF8C73FF53FFEE9FFE11FFFF8C73FFEF18F7FFCE31FFFF8C73FFE59FF89
FF50E7FFBCCE49F9CD679F7DC6F31FA098F41B798F69FFED5FD3BE7DFB22E5BF
BBBB1BFFB4FFF8C73FFE29F8A7E09F827F0AFE29F8A7E0DF507EFEF39F93FF51
D83FF95FB5FDBFFDF6DB9E9E49E1371F7EF821FE69FFF18F7FFC53F04FC13F05
FF144FFD07E15D8BF8EF3BFF41C44E61FDA7DAFEC9FFA9ED9FF59F69FBEF0A20
B4FF3EB5FF827792E31FFFF8C73FFEF18F7FFCE31FFFF8C73FFE43E4DFEB3DE9
7E23D7B3E19FFC2FFE59FF897F0AFE29F8A7E09F827F0AFE29F8C73FFEF18F7F
FCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFF61F5BF6DDB36
B0A0B5B55509FF601BFCE31FFFF80FBBFF0E488BB628F807000080E810EFA304
B5EFDC8123FC438FAB260FC627B1B3FD66CD9D25366ED91808E4B5E863670F3E
6F13CFEAC904D43F758A85FFEA4959A2B9C51DE4EF0AAA7F2F3E6714FCCBCFB3
F3317790BF2BA8FEBDF89CF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFC47C1
BFCC733821BF20B8FEE5B539FD3CAAFB573DFF8BFF13ECD8FF37B658DE7A4E60
D74ECA6BB3FB39F0DFDBFFABE2655B5CB96D4360FDCB6BB3FB39F09F9EFFA880
7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF1
8F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE33F73ECAEDFCF
14FD73FFC5CDD69CF6AD9E7BD3193F472B13EAF0EFECB98C206DF857DAFF11BF
EB01FC073206F2F06FDF7F63636368A9ADADB58A816EBF62200AFEC35E2CDEEF
14EB53E25F0DFF870F1F4E540F74E03FFAFEF518C8CDCDF57D4C80FFE0940307
0E58C580A76302FC07ABECDCB9D3D73101FE8357E43B3FFD1A13E03F98A5B9B9
D9973101FED51E13E03FB8E59D77DE49342668C1BF1AEF8D9763022FE709F01F
DA31C12137FA83F80F47D9B2658B550CECC1BF1AFE138C09BAF0AF8EFFFDFBF7
E31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7F
FCE31FFF4AFB7FEBADB7C4AE5DBB42C3871F7E887F17FDBFFCF2CBE2FEFBEF0F
0DEFBDF71EFE5DF4FFD9679FC5EE695890D78B7FDA7FFCE31FFFF8C73FFEF18F
7FFCE31FFF8CFFF18F7FFC53FFE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFE19
FFE3FF9BD2DDDD1D2AFF415EFF35B3716620A0FEEF1BFF4105FFDEFA4FF4FEAB
BE02FFFEFA0F1AF8C73FFEF18F7FFCA7F27FECD831D6FF2BEC9FFC8FDAFED9FF
47FB4FFB8F7FFC27F71F66F08F7FFCAB03FEF18F7FFCE31FFFF8C73FFEF18F7F
FCE31FFFF8C73FFEF18F7FFCE35F0DFFDBB66D5382D6D656FC5BF85718FCE31F
FFF857CD7F07C46853D13F000000000000000000000000000000000000000000
000000000080827B2BEBE27B0BF7C8FDA51ADD86FDA687E25FEB8A7F4F8B4639
F72DF4CECB35B66B1C49731F7277FCE7EBB89F9E3C8F4D1A791EFCEEBCB8B71E
97B9A70E10ADB3F3C5BDCDE3C4FE4D136388BBEB631CB86172ECFFEFBCB85C6C
5B325A34560E4F140BEC4B4EFF396C8FD7AF899E45590777CA7B9C494CC4E3EA
90FE7BA5CBDD6B2B7B5CDBE5F0ED75B19F933163719DC4813D174D71E727F92E
2B18241A27593E67A25FBFACA3F1582877EA3EFEB3A26CC4A05ECF7826C85890
F582AC434CF541139E133EEFBDBC37CFCC133B37948B77EE9E26C463F527B1FF
E689625BCBE8585CE83FD3BF5FD631D91F73EABE76CC9098333B6EF5B64022DB
8134E2603BCE7BB5BBBDDEBBD2FAADFC84CE132163C1543774A56A13F4FE7C2A
F7D2B3ACD365FD90A8DF27FF4D7E8FEC0F58FD2EF9B5E69A3C735D50AEB8FB36
FDF98BB5BB9A3FA7DECDDCBB7A9CC81D32C0788FF312FCED0EBD8F97C8FD3BB7
4C4BD6AFD3C77E87CCFFAEF71BE5CF9B7FA7EC1FE87541FCB3D729DAC6771BDB
75F9FC66E2DDC881DB26A78C01AD9D7857FEBB7C5EADDCCBAF9BEA6CD9B76849
F1993A4C3982581C98E34BC685AC730CED559B426DFC9E9EE74473249F57B7BC
1B39FC3775C618E8325D478B5E6727AAEF4DED48791AF1DD69AC0FCC7166D11E
3445BD8D8FC77A4F1B2F1D79E13E413DD06EB89ED8387FCB8242CB76DAF0DC77
BA59CFC9BAC0FCF7F4B16254DB0259B7E975ADDEC64B2F5E7A37D601B5A54374
9747F476401F67588DF5645FDD3066CF73E91EF4F46FADFA9A7A5B108F81BC28
8EE3651BBF7B73A52FDE25725C6878F6F5F65BF71FFB9A55FFCCD0C76F73F97E
B418C79AE63A478F81B09F6319AFEB3B8D6DBC74E197771963C67C403C069B4C
D778E2AC748BFEBEE11C754FF2D77A0C98DB029947305C735B48DD7718C773E9
8CE3D345FE1DE3F83F7E1D6D09AED3D2BFA1DFD7E5E13D6AD1FFBE39C7ACB73D
616B07E29FE990B18D77733C97AA8DDFB2A4D03C3EEF4876FFF4F90473FDEF87
FF54B90743FBD31192F9B85E6DBCCCD7FA55D79B723D223EB62CB771DD5D56CF
9F5FFE8DB947F9CC5B5D4390EB00ABB952D9C67B3D9E33E67A4D6DBCA3799544
E33FAFDB7F8BFE71AA3AA02D80EEDB8D6DBC9CA3F1B38D977FCFD4C6B7A7DB06
5BE57F0CF7BEC9877B79C82A0729D71BE8711DB0F15C4F1B2FC7D57EB6F1B27E
31B5F1DBD3AD1FE3F557ECF798E7EF0C73F79D7EF497ADC602B23E307CCE3C55
72B656C8FE84A98DEF7263DE4C1FA3A6188795FBD106C83926733D64C80734F5
65CED6F8CCC97EB69F6DBC693EF750B2F99734FBAE967920C39C5F970FF7D872
2C6ACA0BB78B90CFCB3A69E365DEC0D4C67778F439BBAC9E3F633FD0EB7B9FC8
BFAC874CEB0D3C5F3BE4F5BCAC9D363E51CED6C3B6CD321763E883795607EBF5
BF391F6CBE0ED33CF41EB7DBA5F87D085ACEB6CEAF9CA53E0E33B7035ECFCDC5
D7B7C6E68153AD219363552739AE20CFCB1AE7678D6D7C7C9EB0AD0FFA3A96EB
C04CF3325ECC091D4AB606C5AA4D30AE47CAE47EF5F5BCACB18DD7D76CF6D558
47D67F7A7FC7DC179031605ACFED4A9B6467FD5922645B65EA1B74D96DA3AC72
B60198972D0F422EDB3837677662581790746EC949BD6FD5EF7082C5BAE284F7
32D1BC6C5872B63ECE63255CA72173F3A6E7EE50DC655E3AB914ABF547E9EC33
30D64F56E3A5B0CCCB06654ECBB81FC46A7DBFC573A7C7B3BE0FB4C9C449EB42
65BFDE8D7D26C6D834AD5596B1F9A330CDCB0629068C7DA344AE64BFCDD43F4C
49A275E16E21AF696CEE29BDD7A36B75BD9FF3B25EE56CFB20FFB9C7B82730D1
5E1F59071BF7819AD1F78578E93DD138D1EF36DEB0DE52AF8342BDAED93CDFE9
F5F39B2EE63C5118E76503BE6FA1B3D7DEC49ABC8CFAEE6EB6FBC636A82F72B6
6ECDCB8664BDD31EAB7D7F3216EC8EE365FD219F57D936D8CDFD58FD0EE3FE91
BE9897EDAB9C6D50CE0831B60BC678905E653B2CFB0346E4D7ADF690CAE7D7EE
BE737D3F7154E76543BACF61BB797C67833DE61892CF73B2BE85794FA2D5BCAC
8C03E948D6056EE673FD9C978D403CB4C4C7BA665ACC75E4497939CDAF7CBE8D
6D89796C9F28672B7D0F193450E4E60C1763C68C15D943878819E37332AE1BFC
9E9755F86CA32E633B72E78A925EB9BD64F3B2D2B1743FB566BA58BC74590F32
0EEA2B723CDB4B039EE4A0DF8DCF8B09BBF3B2775C342EE6DAE85EB2F08C33C5
602D2E9C8C052DE665DFE3FC22FFFD3B9997BD7A7189A8A89C70927F4949D108
5B63428B7959FC87642F4DB2E73FB6C631C5F36FDE4B23FBA23B2E284B7B9E99
FE5FC2FE5F9317F3B256EDBF749FAAFD37CFCB5A8D4513CC33D3FFFBA6BE7667
FC9761CE56B61343079FE8FF8F18393269FFDF3C2F6B75468939DF946A9E59B5
33622DF33FF1330AE5336C467EDDD49F767D2F8D3EFE9758F51BAC72B63257E5
E4EC3B8B79E61685DAE83D66DFB2CF24C74A76EB6CF9ECC9F656C6435FCECB4A
8FE9CE65C9BAC2A26F5017E1E7BDD37C36A59FEBE6DC9C9775EB9C53AB5C74D4
E67F4E9AFFF571ED94DBF3B2B28D777BDD91D55C5414E67FE3FDF22E3BE37059
EFCBBA556FE3CDC89849768EAD1F7B69ACD6B47A3D171DD6F51FC6F55FC9E655
A553D37A97D4EBBF3CAE3F2CE665C5B041FDD39E674EB76F601A2F8666FD57AF
F59FDA7DB47AE62DE6439CAFFF7479AE3EC1BCECF77BEDD97730CFECC55AB4A0
AFFF94AE06F4EFF7913E2633F7E72DD6B067B6FE7B49A1EB7B696CADFFF6710D
9BF90CE5A0AEFFEEB5FF43BB9F56CFBC27FB3F32184338D94B63679ED9EBBE81
DFFB99D3DAFFA5D5A1E6E7CBD887767DFF97E6CF69AE37937959AB79663FD731
3AD9B3E4FBFE4F539D6F3A3FD6BBFD9F3673406EEE973D69FF6792F5ED5EF40D
8CB9E4BEDCFF697C0ECDFD72BD5DF57CFFB756BFF4C55E1ACBFDDF3E8C13BDD8
CF9CF1F90FA676D89423F7F6FC07AD8E71FB8CC38CCE7F88F70DFC6A1312EC67
AEF3C17F97D5F327EB01DFCF7FB1A8EBFDDE2F7BD2F92F2EBE0F2BCDF7657936
CFDCEBFC2753BD6F6863FD3BFFC9E4DFD4F6F4EDF94F19CC13A5335EF4639EB9
E7FC37D3584F3E77BE9FFF661A73480CFDCEE09CFFE6609ED8A3FDCC2D6E3F77
E6FC9E2197E2DFF98FA61894FDBDC09EFFE8D11C929FB9E49EF35FB5F6D5FCDC
19DA5CFFCE7F358DFF649F2FF0E7BFFA9C4B76739EB9E7FC6753FED5D8EFF3ED
FC678BFC8F2106837FFE738A3D4B419C67EE39FFDD34E693F97DDFCF7F37EDE7
D0AF2174E7BFFB9C4BCE649EB9E7FD0FA67EBF5FFE93E57E0DCF7EF8DEFFA08D
17FD9C674EF76CCC44632E3FFCF77AFF4B829C53E8DFFFA2F5DB833CCF9CC8BF
D7ED7FB23946D3B8331AEF7F0AE83C73A2BC8F977DAF5EEF7F33E57B4DF34CD1
7AFF5B3072C94D56FD3FAB35F786BCBF27EF7F94B91E739BAFBB8FF4FB1F8331
CF9C976CFC67F1DE6077DFFF6AB1AEC4EB39C6C0BDFFD5E77966C338C1F8FED7
84F91F533FD09DF73F5B9CBF67B1AE44ADF73FFB30CF2CE3CC5007B45BBEFF3D
C1DA0B8B330CD37BFFBBC5BE7DD9EFD0EBFCF83D5165FF946FB964D37BBCBBD2
597F65DE2369CA3774C53964FE77F93B13ADF396633E3DAEA25AE7F7F53CB3E9
B9EF4ED4A74AB4EECB6A2E5EFAB4DABB69DE0728EB0DABDF6551DF7787ED4CD4
30CC339B7242DD29F20075C63199DD7598FAFEDA447B6C6DBCD7663B7BE713CF
33A79337B0982FEEB2339632EFF770731FB685F76ECECF48DA37E8329FB19AEC
DC64E95C8EF38CE37D7D2D691A79EC5EE7A4A7B32E5F3A973F67DC8F61E82F70
7E4E1A7903ABB335ADFE2DFE0CA7BD96DC6A4E4BEFC7C9F978BDBE37F609E4FF
37EEFBB4B8AE6EBC67541FB4C763E148827ED7A1B8F336177375E5F13838E4F0
3C17A3F3ED2AF6EB7D9A6F6CF22B471AFF7BEDF118EB328DED8D63407DDF6739
9E00000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000FC6566B5C8E3B329EBBE4EE388465B
043F5B5BFCB3F11E9CE4EE459CB688B9D73F173190DA7D6462C0E49E18B0EF3E
F43190C03D3160DF7D686320857BE563C081FBD0C5804DF7CAC6401AEE431303
0EDD2B170319B80F7C0CA4E95E991870C17D60632043F7918F0117DD072E065C
721FD918F0C07D6062C065F7918B0199F3F6C87D9FC78047EE8D319017C1FC67
2462208A9F89FB857BEE1BEEB97FB82706704F0CE05EF518C0BDBA31807B7563
00F7EAC600EED58D01DCAB1B03B857370670AF6E0CE05EDD18C0BDF231807B62
00F7C400EE8901DC1303B82706704F0CE09E18C03D31807B6200F7C400EE8901
DCE31FFFD4FFC400FD3F6280F11F3140FE871820FF4B0C30FF430C30FF4B0CB0
FE831860FD1731C0FA4F6280F5DFC400FB3F8801F67F1103ECFF2406D8FF4D0C
70FE0331C0F92FC400E73F11039CFFC6D97F9CFFC8D99F9CFFCAD9BF9CFFCCD9
DF9CFFCED9FFBCFFA10DF7BCFF05F7BCFF2922EE79FF1BEF7FE3FD8FBC0394F7
BFF20E60DEFFCC3BC079FFBBA2EE5D8881B6888E7594719F410CB44574BCAB9C
FB3462A02DA2390F65DD3B8881B688E6BD94776F2306DA229AFBC47DEA18688B
D0676BC3BDA318688BE0676BC3BDBDF9023E1B00000000000000000000000000
00000000000000000000805A68658246930585DC9FE8F0C20B2F0CD49C4E1E36
6CD8F7F247E6BF9C9393F3416161E1E1D2D2D2CFE7CF3B4D98195732EEE351A3
461DD6BEEFFD828282AEECEC61D73FF2C823C5DCCB70515C5C9C939B9BBB5DE3
BDB2D2B22F162D5C242EBFAC555CDF7E83F8F68DDF49C9F55B6E106B565F1A8B
8931A3C77C3272E4C87FCDCFCFFF4B2D9646707F83CBFAF51B668E183162AFC6
474B172F159B365E63CB772AAE587FA598D7304FE4E5E61D1D3E3C67C79A356B
0AB8DFC1E1D1471F2D1B3162E443E3CBC71F5DB97CE5F11BDA6F74C5BB15A72F
683CAED52FEF670FCDFEF6830F3E388CFBDF77BCF9E69B83070E1CB8BEB8A8F8
C3254B967EDDBEF97ACFBC1BB946AB57E6CF9BFF95D6577873E0C0531A7FF7BB
DFF5C787FF141616EDAE9E58FDE586751B7CF16E66F5256B44C9D8922FB47EC6
FD9F7FFEF9009CF8C3AC59B326666767FFDB198BCEEC13EF46649D336DDAF42F
B53E4777434303ED81C7687DAFA5797979FF72C94597F4B97B23672F3B4768D7
F5D2D5575D3D094FDE70EBAD5B5715E417FCEBA5DAD8ECA61BBE1D28FF9295CB
9B8F6B31F00F5BB76EE54C179779E08107CE292929F9DDA56B2E3B1E34EF3A37
5E7F9358B9A2F9ABC2C2C2171F7FFCF17ABCB9C373CF3D377BF4E8D16F9C7FDE
F922A8EE8D3170E6198B8F8F2E1EBDF7C5175F9C80BF8CC77863478F1EB3EFEC
B3CEFECA0D3F6BB43EFB9CD9738F978E2BFD735151D1619DAA09559F362E6814
EBDAD667FC3764FEA1616E831C17DCF1DBDFFE36178FE9A38DB1EF9A3B7BEED7
99F8D878D526B1E0B4055F1514141CD1EAE6FF3D6CD8B0558B162D2A32FE9DC6
C6C6095A1FFEDA5105A35E292E2AFEF392C54BC475D76E4EFB6FCA1C724D4DCD
E75A6CADF9E4934FC80FA4C1A4EA49F32A2A2A3E4B37AF231D9CB574D971ADCF
F807AD5FB6F557BFFA95ADFCFD2F7EF18B12EDD97DBCB8B8F863ADCDF95AD6E9
E9E68DC78E1D7B242B2B6B343E9D3163C68C61C3870FFFF7F56BD3CBED5CBBE9
3A31AD66FAE73939394FDD7DF73D69B5C377DE79E73CED1AFEDFE90B4E4F3BB7
D8D27CAE9079429C3AE38C33CEF86BAD3DFE229D7BBEE5BA76A13DF34756AD5A
756BA6D7B16EDDBA215A7BF1C8C4AA897F4E77CC39AD66DA170B172EBC0AAFF6
B8ECB2CB668D193DE65FA447A7F77AC3BA2B843656F8B4B6B676B59BD7347366
FD6D5ADFE0CB74EA81CDD76E115A3DF28BF3CF3F7F287E5373E18517FEF8FC55
177CEDF479BB72C35542EBD77F595458D4ECC5759595957D7FF2A42969B505DA
98F023AD2EB91DBFC9B9E5965B164E9F36FDE0A6ABAF71DCD79B3163E6179AFB
2BFEF0873F9CE2D5F58D1B37EEA1C6C626C763D1756BD71FD7C617CFDD78E38D
63F09C98EF7EF7BB3F6C59D9F285D3677F61D3A2E35A5FEFE1575E79A5C8CBEB
7BE9A597266BEDCB6BE79DBBCA719FA4A9B1E9E35BBF7FEB2D784E98E3ADD7EA
D77FD49E1547F7F6B235978BCA8ACA034F3FFD74831FD7F9D4934FADD4EAA83F
5D79C5558EAEF3A20B2FFE5A8BD147EEBBEF3ED60F59A0DD974DDA73FC8593F1
F675D75C27736D9FDC73CF3DD7FA759D4F3CF144F629A79CF2A3258B977EE5E4
5AAFD978AD98DF30FFFD871F7E7815BE7BB36FDFBEE29292710F9C7FDE058E72
7D975C74C9F1ECECECFF75C71D77F8BA76FBAEBBEE3A5DEB0FBED2D6BAD6D17C
D4E233177F3570E0C01BF6EEDD3B10EF86399E7DCF2DA89F51FFEF575FB9D1D1
B86A5EC3FCFFBCE9A69BAEE88B6BDEB265CB8F969D75F6A74ED61B5E7EE9E5A2
7A62F5EEE79F7FBE12EFDFF0D39FFEF49C6F9DF6AD4F9D3C4BEBD76D383E78F0
E07D1B376E1CD217D7DCDE7EFDB4A2A2E25F5D75C5D5B6EB80CDD76D1173E6CC
F9BDE6BF11EF2778EDB5D786E5E5E67D5FEBF73BEDF31F59BD7AF50D7D79EDE7
B69CDBB9EADCF31D8D57B438FF42EB3F5CF0FAEBAF332FA4F1C61B6F946AFDFE
17B5B6D491FF214386FC7AD9B265D97D79EDAB56AD9A3BB16AE23B4EFA815ABC
C879A1BB0E1E3CC8FB7F345EFFF5EB53B5F1D4073287637BEDEDC5ABE573F444
10AE7FFAF4E9AFC9BEBD931CF59429535EF9CD6F7E538E7FCDFFEBAF4FAFAB9B
E1A8EDAFABADFB42BB87B38370FDF3E7CFFFCEC2C6855F39C9554E9B3AED8337
DF7C93B5A21AA70E3EF542AD2DFFD2897FB98F3328D73F71E2C4B123478EFCB3
93EBD7EABB8F35FF53F02FB2B287665FB1FC9C154EF268B2FD7C21489F213F3F
FF7D27F395B3EA677F3A70E0C086A3478F2AEFBF627CE5DE4B575F66FBDE3535
2E14DABDBB3C489F61DCB8D2872F76B02761F9D92BC4D0A143D769FE95DF3754
593961EF5A077DFFAAAAAA4FFEF8C73F062A873E78F0E0D317362DC4BF0FFEC7
8F1FFFA70F3FFC303F689F63EAD4A91FD9FD0CE7369F2BF70EDEFDD1471F0D52
DE7F45E5BFD91D3FAD6D5D27CACBC7BFAA3DFFB9018CE32376FDCB78AFA8A87C
46F37FAAEAFE27544EF8BD93BE9FD6D63EADF91F1640FF6FCB3548F8F7CEFF8A
E52B4576F6B0AB3EF8E0835382F639AA264CDCB7AE6D1DFE3DF47FD6D265B2DF
1448FFE5E5E5FF53E676F1EF9DFF39B3E77CDCDDDD3D23889F63D8B0619B56AE
68C63FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31F
FFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF80F154FEDDA73F6A9
63CAFE23BB62CA61BBE415167F993732FF6B3BE4E48DF83ABBB4EA9893DFEF17
4347977E6CF7734872478FFB2C7BFCE423767EF790D2AAA3A78E29FF875D3F7D
6E6690FDFFDD9EBD2B4A5B6F3C3C77F74101EE31E3E11745F1CAD67FDAFDB317
66E11FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF18F
7FFCE31FFFF8C73FFEF18FFF8362CE4F7E2DA6DDFBB4A858F71D5172D60562C2
75B76BF7F7FF8A39BBDEC07FC4FD4FB8F607E2D49C3C51505828C69796884955
15B1FFE68E1821868F2915536EDB89FF08FA9FF9D8CF457EFD0251545428E6D4
D78AF973669EC4ACBA1A91935F204A9A2F17B3FFF655FC47C47FFD13BF14A34E
3F5B548C2F130DB3EA2CDDEBCCD562636C498918BD7C8D98FDD46BF88F80FFF2
CBAF171595159ADBE4EE8DF5404955B5A86AFF11FE43EEBFE6BF3C2E4AEA668B
DA9AC9B6DCEB4CAEAE1263179F17EB17E23FBCFE276CFEA1282B2B150DB36738
F22FDB818A293562D2F7EEC77F48FDCFECFC47517E5E9B98523DC1917B9D8A8A
72316153476CBC88FFF0F9AFBDEF19513EBF49CC983E252DFF53275589096BAE
8DF51FF11F4EFF15A72D12F5B553D3F23F6D4AB518BFEC02EDDEFF1FFC2BE8BF
B6669218BFF01C51F7C0F3F857D03FF57FC8FB7F3BBB4479F3A569F7FF26548E
179557DC2C663FF9CFF80FA17FD96FAFDCB84D54565638762FC77F65151562E2
4D7731FE0BF1F87FCA6D8F8892E933C58C69CEC600355ADFAF64C11251FBDF9E
C17F88FDCFF9BB03A2E4FC2B457979A9EDFCEFEC99D345A9F6EC575CF13DF2BF
11C8FFCF78E8EF45C19C85A24A6BCFE7A5C803CE9D5527C68F2F1725CB5733FF
13A1F9DFBAFFB14FE4564F1753B43E7D32FFD5559562D4DC85CCFF4670FD47D1
E9678BD929DA80C9355345C5DA9B58FF1141FFA31A16696D7B6DF231BFE67F5C
F3E5F88FA2FF59A78BD933A6279FFBD7E2A3B86939FEA358FFCF4BFDFCCFD2FA
FEA3E62FC67FC4FC4FBF6FAF28993147CCB1E1BFF834FC47D17F597D432CAF87
7FF5FC577FFB6E5131BD3636BE4FE67F8EE67FDCCC062D5E9EC57F84FC575DF7
03515D5B9772FDAF6C1FCA67CDC77FC4FC975E74B5983AADC656FEAF6ADA7431
71F3EDF88F90FF929636515B372D65EE5FD60FD57533F01F31FF63CEBE58D44E
4BBD0E44D60F536A6A44D9259BF01FA5E77FF96A513BDDDE3AA0DADA6962DC79
EBF01FA1FD5F6316AED09E7F7B6B00A66BDF37F69CD5F88F88FFDA075E10E39B
9689FADA1A7BCFBF564F8C5B7929FE23E27FFAF65DA27CFE42DBFEEBA4FF25E7
69F5C64BF88F80FFC9B7FC773162C254313CBF40E48C2A4CC9B091F9227FCE42
51B7E305FC73FE0BFEF18F7FFCE31FFFF8C73FFEF18F7FFCE31FFFF8C73FFEF1
8F7FFCE35FE3274F3FBD2A6FE4C8CF0A8B8ABE06F7C82F28389E975F70E899BD
CF2E0CB2FF5D4FEF5AD1787AD3E144EFBD87F4D878D54631AB7EF63F3DFBECB3
B3F08F7FFCE33FA8FE67D6CD3C7CF185170B708F95CB578A2993A706DEFFEEDD
BBAB478D1AF55F8B8A8A3BC15D0A0A46DDF0CC337B4707D93F00A8835604B8C6
118D3AFC2BCD218D3CFC2B4D37FE95A7338CFE29CECBE1C387456D6DAD550CB4
E35F8DF2CE3BEF88DCDC5CAB1868C1BF1AE5C08103A11B13E0DFDDB273E7CE50
8D09F0EF7ED9B2654B68C604F8F7A634373787624C807FB5C704F8577B4C807F
B5C704F8577B4C807FB5C704F8F7AF343636066E4C807FB5C704F8F7BF3F9860
4CD0847F35CAFEFDFB033326C07FA0C604DD7E8F09F0DF77A5B5B5D52A06BAF0
CF9800FFCA8F09DAF0CF9800FFC9CBC18307C5934F3E29EEBAEB2EB176ED5AB1
6AD5AA1873E6CC1163C68C89515D5DDDF37589FCDE071F7C50FCF297BF0CFC98
00FF27FB96FEA447DD6FA69C79E69962EBD6AD7D1E0F566302FC0BF1EEBBEFC6
FC189F69AF907585CCD5CB38EB8B82FF6F8A7C1EDD7CCE9D22E34DB62DF80FAE
77BD6D37B6E912E3F32BFFB7FE75BDAF60EE2304250E54F62F3DD9F12EBF47BA
76A38E966D8B742BFB8E76E2C0EB3E82AAFEE53399EADE4BE7D29757E5E8D1A3
B1584815833256E4F7E2DF9D675EF6BF933DEB7DD12F97D725FB81C9DA1D2FAE
4B25FFF25993F731D1982C08E37359DF24AB0F64BD857FF7EA7B190FB29E0F5A
91B198A8BFE8667BA082FF44F5AA7CCEBC6CDFDDE81F24BA76595FB9110351F7
9FE8FEB95D8FF645BBE5460C44D9BF957B791FFDCEB1B8D53FF42206A2EA3F91
FBBECAB3BAD51E588D5DE4D7F0DFBBBE8C9AFB543120E31DFF27EAC9A8BA4F15
03E98C63A2E45FDE17AB315390E6DDDDCC1358F5079CC67994FC5BE5D48338B6
F7B2AE73DA17888AFF9FFDEC67967992A81719DF998C6DA3E2DF5CEFCBFFEFD5
9C49D08A55BED86E5E2B0AFEAD72BB516CF39DF405ECD67D61F72F9FF1743F7B
944ABACF40D8FD5B7DEE20E7F4BD2CE63650B60B51F76F7EF6D3CD8344A158E5
BD523D0B61F69FCEE755AD0E48F53C84D9BF3907A6F2B39FE89990F56314FDCB
E73CD3DC57148B557F38D97C6758FD9BF31E99CC8145AD98E73E938D87C2EADF
9CF388729E37D35C68B236208CFE651D47DDEF6C5C9428171046FFF2B39873BD
94DEC53C1796684E208CFECD391FFAFDA9FB4789724161F46F8E6DDAFED47564
A23E4018FD9BC7FD2ACDF53829E63E5254FC9B3F972AF3BC99E602AD9E93B0F9
B7EAFB53EC8D91A3E0DFDCAE91F7B19F07B2EA2785DDBF9D394E558B799C6435
06C43FFEF18F7FFCE31FFFF8A7FF4FFF9FF13FE37FF27FE4FF04F9FF5097A8E6
FF99FF73DE4F8AD2FC1FF3FFA94B94E7FF59FFE3BC8E8CD2FA1FD6FFA52E515E
FF6735B6A10FF04D89FAFA5FABF68D362071DE278AEBFFD9FF93B86D5461FF8F
551E8071803AFBFFAC3E2BFB7FD5DAFF6BD5CF65FFBF3AFBFFAD72419CFFA1D6
F91F9CFF93F83950E1FC9F4C3E7B548ACAE77F25AAFB38FFEF5DA5FC9BE70438
FF5328E55F16CEFF55F7FC5FBD2FA8CAF9DF89DE07A2F2F9DF899E09CEFF57C7
7FA23C08EFFF50C7BF2C2ABDFF47D2B27C39FE6DC64094DEFF65E4B4D9B3F06F
2306A2F2FE3F376280F77F86F3FD9F6EC500EFFF0DE6FB7FE51AAE44EFFF7533
0678FF77B8DEFFED760CA8E45FEF4725EA43EB6D425FC481BCAE6475BD8CDBD5
AB57BB1E03AAF94FD51E18E78F64BBE065FF40B6EFB24E4AF5BC1BDFF7DE74DA
7C57634055FF4EEA5A595FC85870237720FFA6746E3557611583567591F4E956
0CA8EC5F2FF21EDB6D73653D2CBF77EBD6ADB198903FAB63ACCBF5AF49D7B2AE
913F63770C27BDA7CA51B81503F84F2F0EBC40D6334E72538E636074B1B8EA92
0BF16FA38E96CF7726E32FBBC83A41F6FBD26D5B6CC780E6BE74C829A2EC942C
71C3BA56FC3BE897CB7ADECD7A413EE732BEDC1A67A48C01837B1D3D06F0EF3C
1EF4365DF6E1645C488C634A596FE85F97DF23BF57EF2B785512C680857B630C
E03F3AE5A41848E25E277F00FE23190336DC5BC500FEC35F9AE635D8766F8E01
FC47A3C8B6DD897F3D06F0AF760C6874E29F18C03F31807F6200FFC400FE8901
FC1303F82706F0AF7C0CD4E13F3A45E6FC1CFA6FC27F748A74E03006F01F31FF
0E62A09BF63F9AFE6DC440B7469EDBFE2158C83EBE57EEF11F7CA423CD75BB46
579C4EB7DCE33F1CFE858FF3BFA0967F00000000000000000000000008365A29
D7E8002591EE9B9837559626DD7F59C120B1AD65342880746DF6DF3869B8108F
D5830248D7F8C73FFEF18F7FFCE31FFFB94306C4BE0ED147BA36FB0765C7FF79
8638D0B943FF9EA5D53962FFD51321843CBB7682A8CC1F1CF3D8AF5FD6C7DA7F
37983CE725C90BB7E931D03A2B5F883BEB21441CFE419DA81D3344777F54FB6F
5D1A73033D3170EFCA71DC5785DC5BC5C0CE8BCAB9BF21A0B162B82BEE8981F0
21DB6A37DD1B62A093180887FB01FDFB7DE4A67B62203CEEE3B479B85E841850
D43D31807B6200F7C400EE8901DC1303B8B78A81DDAD95B852C8BD3906724F1D
200E5C3F19670AB92706BC43B6A961706F88812E62404DF771FF724D493731E0
AAFB8E90ED2B2406DC73DF19D2BDA5C480A2EE8901DC1303B82706704F0CE09E
18C0BD550C948D18145BAF8C7B35DC5BC5805CABAE5A0CC8FD39AABA37C6C0C0
FEFDDE502D06649B27DB3E95DD1B62A02EBE565D8918C0BDBA316072DF9D6CFF
253150877B6200F7C400EE8901DC1303B8270670AF780CE05EED1808F25944B8
F73606FAF7CB3A16D418309EB9837BCF62A029886792E1DED71808D4B9741667
6DE15E911870F39C3508570CE05EDD18C07D3063C02F860DEA8F7BC56300F7C1
8D01AFDE9BB0FFE69E357B5FE13E9031E097FF57B9DF4AFBEFE27EE31FF00FF8
07FC03FE01FF807FC03FE01FF00FF807FC03FE01FF807FC03FE01FF00FF807FC
03FE01FF807FC03FE01FF00FF807FC03FE01FF807FC03FE01FACFD374E1A1E73
857FE5FC771ACFE8723B0EF01F8A1828F72A0EF0AF761CE05FED38C07FA8E340
BE6FBA437F87841E07BB3757E25FC138D0DF27137B077DC120B1734339FE8983
A471807FB5E300FF6AC701FED58E03FCAB1D07B94306E05FCD3868D3C68DEF1A
7208F8573316E43B263AE47FB91F000000000000000000001064FE3F180E59AD
}
end
end

View File

@ -2124,6 +2124,8 @@ var baseaddress: ptruint;
i,j: integer;
LF: array of TAddressWithShadow;
NLF: array of TAddressWithShadow;
s: string;
begin
if pointerfilereader<>nil then
@ -2151,7 +2153,7 @@ begin
if TAddressEdit(edtLF[i]).invalidAddress then raise exception.create(Format(rsInvalidGroup, [1, inttostr(i+1), TAddressEdit(edtLF[i]).text]));
for j:=0 to i-1 do
if (lf[j].address=lf[i].address) and (lf[i].shadow=lf[j].shadow) then raise exception.create(Format(rsSameAddress, [TAddressEdit(edtLF[i])]));
if (lf[j].address=lf[i].address) and (lf[i].shadow=lf[j].shadow) then raise exception.create(Format(rsSameAddress, [TAddressEdit(edtLF[i]).text]));
end;
setlength(NLF, edtNLF.count);
@ -2172,10 +2174,22 @@ begin
if TAddressEdit(edtNLF[i]).invalidAddress then raise exception.create(Format(rsInvalidGroup, [2, inttostr(i+1), TAddressEdit(edtNLF[i]).text]));
for j:=0 to i-1 do
if (nlf[j].address=nlf[i].address) and (nlf[i].shadow=nlf[j].shadow) then raise exception.create(Format(rsSameAddress, [TAddressEdit(edtLF[i])]));
begin
if (nlf[j].address=nlf[i].address) and (nlf[i].shadow=nlf[j].shadow) then
begin
s:=TAddressEdit(edtNLF[i]).text;
raise exception.create(Format(rsSameAddress, [s]));
end;
end;
for j:=0 to length(lf)-1 do
if (lf[j].address=nlf[i].address) and (lf[i].shadow=nlf[j].shadow) then raise exception.create(Format(rsSameAddress, [TAddressEdit(edtLF[i])]));
begin
if (lf[j].address=nlf[i].address) and (lf[i].shadow=nlf[j].shadow) then
begin
s:=TAddressEdit(edtNLF[i]).text;
raise exception.create(Format(rsSameAddress, [s]));
end;
end;
end;
maxlevel:=strtoint(edtMaxLevel.text);

View File

@ -30,6 +30,7 @@ Hexview: Fixed changing the address when pressing a non char key
Hexview: Fixed changing the address when doubleclicking and then canceling
alloc with a prefered base is now more aggressive in getting the range you want
fixed mono symbol lookup while dlls are still being loaded
fixed the structure compare not giving a proper errormessage
lua: