- Timestamp:
- Sep 10, 2022, 6:54:43 PM (2 years ago)
- Location:
- trunk
- Files:
-
- 33 added
- 13 deleted
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/UFormPreferences.pas
r19 r25 53 53 begin 54 54 CheckBoxRememberDatabase.Checked := Preferences.RememberDatabase; 55 Core. CoolTranslator1.LanguageListToStrings(ComboBoxLanguage.Items);56 ComboBoxLanguage.ItemIndex := ComboBoxLanguage.Items.IndexOfObject(Core. CoolTranslator1.Language);55 Core.Translator1.LanguageListToStrings(ComboBoxLanguage.Items); 56 ComboBoxLanguage.ItemIndex := ComboBoxLanguage.Items.IndexOfObject(Core.Translator1.Language); 57 57 if ComboBoxLanguage.ItemIndex = -1 then ComboBoxLanguage.ItemIndex := 0; 58 58 end; … … 62 62 Preferences.RememberDatabase := CheckBoxRememberDatabase.Checked; 63 63 if ComboBoxLanguage.ItemIndex <> -1 then 64 Core. CoolTranslator1.Language := TLanguage(ComboBoxLanguage.Items.Objects[ComboBoxLanguage.ItemIndex]);64 Core.Translator1.Language := TLanguage(ComboBoxLanguage.Items.Objects[ComboBoxLanguage.ItemIndex]); 65 65 end; 66 66 -
trunk/Languages/MyData.cs.po
r24 r25 29 29 msgstr "Ukončit" 30 30 31 #: tcore.applicationinfo1.description 32 msgid "Customizable database storage" 33 msgstr "" 34 31 35 #: tcore.apreferences.caption 32 36 msgctxt "tcore.apreferences.caption" … … 34 38 msgstr "Předvolby" 35 39 36 #: tformabout.buttonclose.caption37 msgid "Close"38 msgstr "Zavřít"39 40 #: tformabout.buttonhomepage.caption41 msgid "Home page"42 msgstr "Domovská stránka"43 44 #: tformabout.caption45 msgctxt "tformabout.caption"46 msgid "About"47 msgstr "O aplikaci"48 49 #: tformabout.labelcontent.caption50 msgid " "51 msgstr " "52 53 #: tformconnect.buttoncancel.caption54 #, fuzzy55 msgctxt "tformconnect.buttoncancel.caption"56 msgid "Cancel"57 msgstr "Zrušit"58 59 #: tformconnect.buttonok.caption60 #, fuzzy61 msgctxt "tformconnect.buttonok.caption"62 msgid "Ok"63 msgstr "Ok"64 65 #: tformconnect.buttonxmlbrowse.caption66 msgid "Browse"67 msgstr "Procházet"68 69 #: tformconnect.caption70 msgid "Connection parameters:"71 msgstr "Parametry spojení:"72 73 #: tformconnect.label1.caption74 #, fuzzy75 msgctxt "tformconnect.label1.caption"76 msgid "Name:"77 msgstr "Jméno:"78 79 #: tformconnect.label2.caption80 msgid "Database engine:"81 msgstr "Databázový systém:"82 83 #: tformconnect.label3.caption84 msgid "Xml file:"85 msgstr "Xml soubor:"86 87 #: tformconnect.label4.caption88 msgid "Host:"89 msgstr "Hostitel:"90 91 #: tformconnect.label5.caption92 msgid "Port:"93 msgstr "Port:"94 95 #: tformconnect.tabsheetregistry.caption96 msgid "TabSheetRegistry"97 msgstr ""98 99 #: tformconnect.tabsheetsqlite.caption100 msgid "TabSheetSqlite"101 msgstr ""102 103 #: tformdatabases.aadd.caption104 msgid "New"105 msgstr "Nová"106 107 #: tformdatabases.amodify.caption108 msgctxt "tformdatabases.amodify.caption"109 msgid "Modify"110 msgstr "Upravit"111 112 #: tformdatabases.aopen.caption113 msgid "Open"114 msgstr "Otevřít"115 116 #: tformdatabases.aremove.caption117 msgctxt "tformdatabases.aremove.caption"118 msgid "Remove"119 msgstr "Odstranit"120 121 #: tformdatabases.caption122 #, fuzzy123 #| msgid "Databases"124 msgid "Connection profiles"125 msgstr "Databáze"126 127 #: tformdatabases.listview1.columns[0].caption128 msgctxt "tformdatabases.listview1.columns[0].caption"129 msgid "Name"130 msgstr "Jméno"131 132 #: tformdatabases.listview1.columns[1].caption133 msgctxt "tformdatabases.listview1.columns[1].caption"134 msgid "Type"135 msgstr "Typ"136 137 #: tformdatabases.listview1.columns[2].caption138 msgid "Connection string"139 msgstr "Připojovací řetězec"140 141 40 #: tformfield.buttoncancel.caption 142 41 msgctxt "tformfield.buttoncancel.caption" … … 275 174 msgstr "" 276 175 277 #: tformpreferences.buttoncancel.caption278 msgctxt "tformpreferences.buttoncancel.caption"279 msgid "Cancel"280 msgstr "Zrušít"281 282 #: tformpreferences.buttonsave.caption283 msgctxt "tformpreferences.buttonsave.caption"284 msgid "Save"285 msgstr "Uložit"286 287 #: tformpreferences.caption288 msgctxt "tformpreferences.caption"289 msgid "Preferences"290 msgstr "Předvolby"291 292 #: tformpreferences.checkboxrememberdatabase.caption293 msgid "Remember database"294 msgstr "Pamatovat si databázi"295 296 #: tformpreferences.label1.caption297 msgid "Language:"298 msgstr "Jazyk:"299 300 176 #: tformrecord.acancel.caption 301 177 msgctxt "tformrecord.acancel.caption" … … 319 195 320 196 #: tformrecord.caption 321 msgid "Record" 197 #, fuzzy 198 #| msgid "Record" 199 msgid "FormRecord" 322 200 msgstr "Záznam" 323 201 … … 352 230 msgstr "Záznamy" 353 231 354 #: tformtables.aadd.caption355 msgctxt "tformtables.aadd.caption"356 msgid "Add"357 msgstr "Přidat"358 359 #: tformtables.amodify.caption360 msgctxt "tformtables.amodify.caption"361 msgid "Modify"362 msgstr "Upravit"363 364 #: tformtables.aremove.caption365 msgctxt "tformtables.aremove.caption"366 msgid "Remove"367 msgstr "Odstranit"368 369 #: tformtables.ashowfields.caption370 msgid "Design"371 msgstr "Návrh"372 373 #: tformtables.ashowrecords.caption374 msgctxt "tformtables.ashowrecords.caption"375 msgid "Records"376 msgstr "Záznamy"377 378 #: tformtables.caption379 msgid "Tables"380 msgstr "Tabulky"381 382 #: tformtables.listview1.columns[0].caption383 msgctxt "tformtables.listview1.columns[0].caption"384 msgid "Name"385 msgstr "Jméno"386 387 #: tformtables.listview1.columns[1].caption388 msgctxt "tformtables.listview1.columns[1].caption"389 msgid "Records"390 msgstr "Záznamy"391 392 #: ucore.stypeboolean393 msgctxt "ucore.stypeboolean"394 msgid "Boolean"395 msgstr "Logická hodnota"396 397 #: ucore.stypedate398 msgctxt "ucore.stypedate"399 msgid "Date"400 msgstr "Datum"401 402 #: ucore.stypedatetime403 msgctxt "ucore.stypedatetime"404 msgid "Date and time"405 msgstr "Datum a čas"406 407 #: ucore.stypefloat408 msgctxt "ucore.stypefloat"409 msgid "Float"410 msgstr "Desetinné číslo"411 412 #: ucore.stypeimage413 msgctxt "ucore.stypeimage"414 msgid "Image"415 msgstr "Obrázek"416 417 #: ucore.stypeinteger418 msgctxt "ucore.stypeinteger"419 msgid "Integer"420 msgstr "Celé číslo"421 422 #: ucore.stypemapposition423 msgctxt "ucore.stypemapposition"424 msgid "Map position"425 msgstr "Pozice na mapě"426 427 #: ucore.stypereference428 msgctxt "ucore.stypereference"429 msgid "Reference"430 msgstr "Odkaz"431 432 #: ucore.stypestring433 msgctxt "ucore.stypestring"434 msgid "String"435 msgstr "Řetězec"436 437 #: ucore.stypetime438 msgctxt "ucore.stypetime"439 msgid "Time"440 msgstr "Čas"441 442 232 #: udatabase.sfieldnotfound 233 #, object-pascal-format 443 234 msgid "Field %s not found" 444 235 msgstr "" … … 505 296 506 297 #: uenginexml.scolumnnotfoundintable 298 #, object-pascal-format, fuzzy, badformat 507 299 msgid "Column %s not found in table %s" 508 300 msgstr "Sloupec %d nenalezen v tabulce %s" 509 301 510 302 #: uenginexml.sfieldnotfound 303 #, object-pascal-format 511 304 msgid "Table field %s not found" 512 305 msgstr "" 513 306 514 307 #: uenginexml.stablenotfound 308 #, object-pascal-format 515 309 msgid "Table %s not found" 516 310 msgstr "Tabulka %s nenalezena" 517 311 518 312 #: uenginexml.sunsupportedsqlcommand 313 #, object-pascal-format 519 314 msgid "Unsupported SQL command: %s" 520 315 msgstr "Nepodporovaný SQL příkaz: %s" … … 524 319 msgstr "Špatný formát souboru" 525 320 526 #: uformabout.slicense527 msgid "License"528 msgstr "Licence"529 530 #: uformabout.sreleasedate531 msgid "Release date"532 msgstr "Datum uvolnění"533 534 #: uformabout.sversion535 msgid "Version"536 msgstr "Verze"537 538 321 #: uformfields.sfieldsnotset 539 322 msgid "Fields not set" … … 545 328 546 329 #: uformfields.stablefields 330 #, object-pascal-format 547 331 msgid "Table fields - %s" 548 332 msgstr "Políčka tabulky - %s" … … 569 353 570 354 #: uformtables.sremovetableconfirm 355 #, object-pascal-format 571 356 msgid "Do you want to really remove table '%s' ?" 572 357 msgstr "Opravdu chcete odstranit tabulku '%s'?" … … 576 361 msgstr "Chyba převodu řetězce na IP adresu" 577 362 578 #: usqldatabase.sdatabasequeryerror579 msgid "Database query error: \"%s\""580 msgstr "Chyba požadavku databáze: \"%s\""581 -
trunk/MyData.lpi
r22 r25 2 2 <CONFIG> 3 3 <ProjectOptions> 4 <Version Value="1 0"/>4 <Version Value="12"/> 5 5 <General> 6 <Flags> 7 <CompatibilityMode Value="True"/> 8 </Flags> 6 9 <SessionStorage Value="InProjectDir"/> 7 <MainUnit Value="0"/>8 10 <Title Value="MyData"/> 11 <Scaled Value="True"/> 9 12 <ResourceType Value="res"/> 10 13 <UseXPManifest Value="True"/> … … 68 71 </PublishOptions> 69 72 <RunParams> 70 <local> 71 <FormatVersion Value="1"/> 72 </local> 73 <FormatVersion Value="2"/> 74 <Modes Count="1"> 75 <Mode0 Name="default"/> 76 </Modes> 73 77 </RunParams> 74 <RequiredPackages Count=" 6">78 <RequiredPackages Count="5"> 75 79 <Item1> 76 80 <PackageName Value="Database"/> … … 82 86 </Item2> 83 87 <Item3> 84 <PackageName Value="CoolTranslator"/> 85 <DefaultFilename Value="Packages/CoolTranslator/CoolTranslator.lpk" Prefer="True"/> 88 <PackageName Value="FCL"/> 86 89 </Item3> 87 90 <Item4> 88 <PackageName Value="FCL"/> 91 <PackageName Value="Common"/> 92 <DefaultFilename Value="Packages/Common/Common.lpk" Prefer="True"/> 89 93 </Item4> 90 94 <Item5> 91 <PackageName Value="Common"/> 92 <DefaultFilename Value="Packages/Common/Common.lpk" Prefer="True"/> 95 <PackageName Value="LCL"/> 93 96 </Item5> 94 <Item6>95 <PackageName Value="LCL"/>96 </Item6>97 97 </RequiredPackages> 98 98 <Units Count="21"> -
trunk/MyData.lpr
r23 r25 8 8 {$ENDIF} 9 9 Interfaces, // this includes the LCL widgetset 10 Forms, UFormTables, UCore, Common, CoolTranslator,10 Forms, UFormTables, UCore, Common, 11 11 UFormTable, UFormRecords, UFormRecord, UFormFields, UFormField, 12 12 TemplateGenerics, UFormMain, SysUtils, … … 28 28 29 29 RequireDerivedFormResource := True; 30 Application.Scaled:=True; 30 31 Application.Initialize; 31 32 Application.CreateForm(TCore, Core); -
trunk/Packages/Common/Common.lpk
r15 r25 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <CONFIG> 3 <Package Version=" 4">3 <Package Version="5"> 4 4 <PathDelim Value="\"/> 5 5 <Name Value="Common"/> … … 33 33 <Other> 34 34 <CompilerMessages> 35 <IgnoredMessages idx 5024="True"/>35 <IgnoredMessages idx6058="True" idx5071="True" idx5024="True" idx3124="True" idx3123="True"/> 36 36 </CompilerMessages> 37 37 </Other> 38 38 </CompilerOptions> 39 <Description Value="Various libraries"/> 40 <License Value="GNU/GPL"/> 41 <Version Minor="7"/> 42 <Files Count="21"> 39 <Description Value="Common package with various useful units. 40 41 Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/> 42 <License Value="Copy left."/> 43 <Version Minor="10"/> 44 <Files Count="32"> 43 45 <Item1> 44 46 <Filename Value="StopWatch.pas"/> … … 60 62 <Item5> 61 63 <Filename Value="UPrefixMultiplier.pas"/> 64 <HasRegisterProc Value="True"/> 62 65 <UnitName Value="UPrefixMultiplier"/> 63 66 </Item5> … … 134 137 <UnitName Value="UTheme"/> 135 138 </Item21> 139 <Item22> 140 <Filename Value="UStringTable.pas"/> 141 <UnitName Value="UStringTable"/> 142 </Item22> 143 <Item23> 144 <Filename Value="UMetaCanvas.pas"/> 145 <UnitName Value="UMetaCanvas"/> 146 </Item23> 147 <Item24> 148 <Filename Value="UGeometric.pas"/> 149 <UnitName Value="UGeometric"/> 150 </Item24> 151 <Item25> 152 <Filename Value="UTranslator.pas"/> 153 <HasRegisterProc Value="True"/> 154 <UnitName Value="UTranslator"/> 155 </Item25> 156 <Item26> 157 <Filename Value="ULanguages.pas"/> 158 <UnitName Value="ULanguages"/> 159 </Item26> 160 <Item27> 161 <Filename Value="UFormAbout.pas"/> 162 <UnitName Value="UFormAbout"/> 163 </Item27> 164 <Item28> 165 <Filename Value="UAboutDialog.pas"/> 166 <HasRegisterProc Value="True"/> 167 <UnitName Value="UAboutDialog"/> 168 </Item28> 169 <Item29> 170 <Filename Value="UPixelPointer.pas"/> 171 <UnitName Value="UPixelPointer"/> 172 </Item29> 173 <Item30> 174 <Filename Value="UDataFile.pas"/> 175 <UnitName Value="UDataFile"/> 176 </Item30> 177 <Item31> 178 <Filename Value="UTestCase.pas"/> 179 <UnitName Value="UTestCase"/> 180 </Item31> 181 <Item32> 182 <Filename Value="UGenerics.pas"/> 183 <UnitName Value="UGenerics"/> 184 </Item32> 136 185 </Files> 186 <CompatibilityMode Value="True"/> 137 187 <i18n> 138 188 <EnableI18N Value="True"/> … … 140 190 <EnableI18NForLFM Value="True"/> 141 191 </i18n> 142 <RequiredPkgs Count=" 3">192 <RequiredPkgs Count="2"> 143 193 <Item1> 144 194 <PackageName Value="LCL"/> 145 195 </Item1> 146 196 <Item2> 147 <PackageName Value="TemplateGenerics"/>148 </Item2>149 <Item3>150 197 <PackageName Value="FCL"/> 151 198 <MinVersion Major="1" Valid="True"/> 152 </Item 3>199 </Item2> 153 200 </RequiredPkgs> 154 201 <UsageOptions> -
trunk/Packages/Common/Common.pas
r15 r25 5 5 unit Common; 6 6 7 {$warn 5023 off : no warning about unused units} 7 8 interface 8 9 9 10 uses 10 StopWatch, UCommon, UDebugLog, UDelay, UPrefixMultiplier, UURI, UThreading, 11 UMemory, UResetableThread, UPool, ULastOpenedList, URegistry, 12 UJobProgressView, UXMLUtils, UApplicationInfo, USyncCounter, UListViewSort, 13 UPersistentForm, UFindFile, UScaleDPI, UTheme, LazarusPackageIntf; 11 StopWatch, UCommon, UDebugLog, UDelay, UPrefixMultiplier, UURI, UThreading, 12 UMemory, UResetableThread, UPool, ULastOpenedList, URegistry, 13 UJobProgressView, UXMLUtils, UApplicationInfo, USyncCounter, UListViewSort, 14 UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable, UMetaCanvas, 15 UGeometric, UTranslator, ULanguages, UFormAbout, UAboutDialog, 16 UPixelPointer, UDataFile, UTestCase, UGenerics, LazarusPackageIntf; 14 17 15 18 implementation … … 18 21 begin 19 22 RegisterUnit('UDebugLog', @UDebugLog.Register); 23 RegisterUnit('UPrefixMultiplier', @UPrefixMultiplier.Register); 20 24 RegisterUnit('ULastOpenedList', @ULastOpenedList.Register); 21 25 RegisterUnit('UJobProgressView', @UJobProgressView.Register); … … 26 30 RegisterUnit('UScaleDPI', @UScaleDPI.Register); 27 31 RegisterUnit('UTheme', @UTheme.Register); 32 RegisterUnit('UTranslator', @UTranslator.Register); 33 RegisterUnit('UAboutDialog', @UAboutDialog.Register); 28 34 end; 29 35 -
trunk/Packages/Common/Languages/UThreading.cs.po
r11 r25 11 11 12 12 #: uthreading.scurrentthreadnotfound 13 #, object-pascal-format 13 14 msgid "Current thread ID %d not found in virtual thread list." 14 15 msgstr "Aktuální vlákno ID %d nenalezeno v seznamu virtuálních vláken." -
trunk/Packages/Common/StopWatch.pas
r10 r25 5 5 6 6 uses 7 {$IFDEF W indows}Windows,{$ENDIF}7 {$IFDEF WINDOWS}Windows,{$ENDIF} 8 8 SysUtils, DateUtils; 9 9 … … 32 32 end; 33 33 34 34 35 implementation 35 36 … … 40 41 fIsRunning := False; 41 42 42 {$IFDEF W indows}43 {$IFDEF WINDOWS} 43 44 fIsHighResolution := QueryPerformanceFrequency(fFrequency) ; 44 45 {$ELSE} -
trunk/Packages/Common/UApplicationInfo.pas
r20 r25 1 1 unit UApplicationInfo; 2 3 {$mode delphi}4 2 5 3 interface 6 4 7 5 uses 8 SysUtils, Classes, Forms, URegistry, LCLType;6 SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType; 9 7 10 8 type … … 15 13 private 16 14 FDescription: TTranslateString; 15 FIcon: TBitmap; 17 16 FIdentification: Byte; 18 17 FLicense: string; … … 33 32 public 34 33 constructor Create(AOwner: TComponent); override; 34 destructor Destroy; override; 35 35 property Version: string read GetVersion; 36 36 function GetRegistryContext: TRegistryContext; … … 47 47 property EmailContact: string read FEmailContact write FEmailContact; 48 48 property AppName: string read FAppName write FAppName; 49 property Description: string read FDescription write FDescription;49 property Description: TTranslateString read FDescription write FDescription; 50 50 property ReleaseDate: TDateTime read FReleaseDate write FReleaseDate; 51 51 property RegistryKey: string read FRegistryKey write FRegistryKey; 52 52 property RegistryRoot: TRegistryRoot read FRegistryRoot write FRegistryRoot; 53 53 property License: string read FLicense write FLicense; 54 property Icon: TBitmap read FIcon write FIcon; 54 55 end; 55 56 56 57 procedure Register; 57 58 59 58 60 implementation 59 61 60 62 procedure Register; 61 63 begin … … 74 76 constructor TApplicationInfo.Create(AOwner: TComponent); 75 77 begin 76 inherited Create(AOwner);78 inherited; 77 79 FVersionMajor := 1; 78 80 FIdentification := 1; … … 80 82 FRegistryKey := '\Software\' + FAppName; 81 83 FRegistryRoot := rrKeyCurrentUser; 84 FIcon := TBitmap.Create; 85 end; 86 87 destructor TApplicationInfo.Destroy; 88 begin 89 FreeAndNil(FIcon); 90 inherited; 82 91 end; 83 92 -
trunk/Packages/Common/UCommon.pas
r15 r25 1 1 unit UCommon; 2 2 3 {$mode delphi}4 5 3 interface 6 4 7 5 uses 8 {$ ifdef Windows}Windows,{$endif}9 {$ ifdef Linux}baseunix,{$endif}10 Classes, SysUtils, StrUtils, Dialogs, Process, LCLIntf, 11 FileUtil ; //, ShFolder, ShellAPI;6 {$IFDEF WINDOWS}Windows,{$ENDIF} 7 {$IFDEF UNIX}baseunix,{$ENDIF} 8 Classes, SysUtils, StrUtils, Dialogs, Process, LCLIntf, Graphics, 9 FileUtil, Generics.Collections; //, ShFolder, ShellAPI; 12 10 13 11 type 14 12 TArrayOfByte = array of Byte; 15 TArrayOfString = array of string;16 13 TExceptionEvent = procedure(Sender: TObject; E: Exception) of object; 17 14 … … 28 25 unfDNSDomainName = 11); 29 26 27 TFilterMethod = function (FileName: string): Boolean of object; 28 TFileNameMethod = procedure (FileName: string) of object; 29 30 30 var 31 31 ExceptionHandler: TExceptionEvent; 32 32 DLLHandle1: HModule; 33 33 34 {$IFDEF Windows} 35 GetUserNameEx: procedure (NameFormat: DWORD; 36 lpNameBuffer: LPSTR; nSize: PULONG); stdcall; 37 {$ENDIF} 38 39 function IntToBin(Data: Int64; Count: Byte): string; 34 {$IFDEF WINDOWS} 35 GetUserNameEx: procedure (NameFormat: DWORD; 36 lpNameBuffer: LPSTR; nSize: PULONG); stdcall; 37 {$ENDIF} 38 39 const 40 clLightBlue = TColor($FF8080); 41 clLightGreen = TColor($80FF80); 42 clLightRed = TColor($8080FF); 43 44 function AddLeadingZeroes(const aNumber, Length : integer) : string; 40 45 function BinToInt(BinStr: string): Int64; 41 function TryHexToInt(Data: string; var Value: Integer): Boolean;42 function TryBinToInt(Data: string; var Value: Integer): Boolean;43 46 function BinToHexString(Source: AnsiString): string; 44 47 //function DelTree(DirName : string): Boolean; … … 46 49 function BCDToInt(Value: Byte): Byte; 47 50 function CompareByteArray(Data1, Data2: TArrayOfByte): Boolean; 51 procedure CopyStringArray(Dest: TStringArray; Source: array of string); 52 function CombinePaths(Path1, Path2: string): string; 53 function ComputerName: string; 54 procedure DeleteFiles(APath, AFileSpec: string); 55 function Explode(Separator: Char; Data: string): TStringArray; 56 procedure ExecuteProgram(Executable: string; Parameters: array of string); 57 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog); 58 procedure FreeThenNil(var Obj); 59 function GetDirCount(Dir: string): Integer; 48 60 function GetUserName: string; 49 function LoggedOnUserNameEx(Format: TUserNameFormat): string;50 function SplitString(var Text: string; Count: Word): string;51 61 function GetBitCount(Variable: QWord; MaxIndex: Integer): Integer; 52 62 function GetBit(Variable: QWord; Index: Byte): Boolean; 63 function GetStringPart(var Text: string; Separator: string): string; 64 function GenerateNewName(OldName: string): string; 65 function GetFileFilterItemExt(Filter: string; Index: Integer): string; 66 function IntToBin(Data: Int64; Count: Byte): string; 67 function Implode(Separator: Char; List: TList<string>): string; 68 function LastPos(const SubStr: String; const S: String): Integer; 69 function LoadFileToStr(const FileName: TFileName): AnsiString; 70 function LoggedOnUserNameEx(Format: TUserNameFormat): string; 71 function MergeArray(A, B: array of string): TStringArray; 72 function OccurenceOfChar(What: Char; Where: string): Integer; 73 procedure OpenWebPage(URL: string); 74 procedure OpenEmail(Email: string); 75 procedure OpenFileInShell(FileName: string); 76 function PosFromIndex(SubStr: string; Text: string; 77 StartIndex: Integer): Integer; 78 function PosFromIndexReverse(SubStr: string; Text: string; 79 StartIndex: Integer): Integer; 80 function RemoveQuotes(Text: string): string; 81 procedure SaveStringToFile(S, FileName: string); 53 82 procedure SetBit(var Variable: Int64; Index: Byte; State: Boolean); overload; 54 83 procedure SetBit(var Variable: QWord; Index: Byte; State: Boolean); overload; 55 84 procedure SetBit(var Variable: Cardinal; Index: Byte; State: Boolean); overload; 56 85 procedure SetBit(var Variable: Word; Index: Byte; State: Boolean); overload; 57 function AddLeadingZeroes(const aNumber, Length : integer) : string; 58 function LastPos(const SubStr: String; const S: String): Integer; 59 function GenerateNewName(OldName: string): string; 60 function GetFileFilterItemExt(Filter: string; Index: Integer): string; 61 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog); 62 procedure DeleteFiles(APath, AFileSpec: string); 63 procedure OpenWebPage(URL: string); 64 procedure OpenFileInShell(FileName: string); 65 procedure ExecuteProgram(Executable: string; Parameters: array of string); 66 procedure FreeThenNil(var Obj); 67 function RemoveQuotes(Text: string): string; 68 function ComputerName: string; 69 function OccurenceOfChar(What: Char; Where: string): Integer; 70 function GetDirCount(Dir: string): Integer; 71 function MergeArray(A, B: array of string): TArrayOfString; 72 function LoadFileToStr(const FileName: TFileName): AnsiString; 86 procedure SearchFiles(AList: TStrings; Dir: string; 87 FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil); 88 function SplitString(var Text: string; Count: Word): string; 89 function StripTags(const S: string): string; 90 function TryHexToInt(Data: string; out Value: Integer): Boolean; 91 function TryBinToInt(Data: string; out Value: Integer): Boolean; 92 procedure SortStrings(Strings: TStrings); 73 93 74 94 … … 98 118 I: Integer; 99 119 begin 120 Result := ''; 100 121 for I := 1 to Length(Source) do begin 101 122 Result := Result + LowerCase(IntToHex(Ord(Source[I]), 2)); … … 230 251 end; 231 252 232 function TryHexToInt(Data: string; varValue: Integer): Boolean;253 function TryHexToInt(Data: string; out Value: Integer): Boolean; 233 254 var 234 255 I: Integer; … … 246 267 end; 247 268 248 function TryBinToInt(Data: string; varValue: Integer): Boolean;269 function TryBinToInt(Data: string; out Value: Integer): Boolean; 249 270 var 250 271 I: Integer; … … 274 295 end; 275 296 276 function Explode(Separator: char; Data: string): TArrayOfString; 277 begin 278 SetLength(Result, 0); 279 while Pos(Separator, Data) > 0 do begin 297 function Explode(Separator: Char; Data: string): TStringArray; 298 var 299 Index: Integer; 300 begin 301 Result := Default(TStringArray); 302 repeat 303 Index := Pos(Separator, Data); 304 if Index > 0 then begin 305 SetLength(Result, Length(Result) + 1); 306 Result[High(Result)] := Copy(Data, 1, Index - 1); 307 Delete(Data, 1, Index); 308 end else Break; 309 until False; 310 if Data <> '' then begin 280 311 SetLength(Result, Length(Result) + 1); 281 Result[High(Result)] := Copy(Data, 1, Pos(Separator, Data) - 1); 282 Delete(Data, 1, Pos(Separator, Data)); 283 end; 284 SetLength(Result, Length(Result) + 1); 285 Result[High(Result)] := Data; 286 end; 287 288 {$IFDEF Windows} 312 Result[High(Result)] := Data; 313 end; 314 end; 315 316 function Implode(Separator: Char; List: TList<string>): string; 317 var 318 I: Integer; 319 begin 320 Result := ''; 321 for I := 0 to List.Count - 1 do begin 322 Result := Result + List[I]; 323 if I < List.Count - 1 then Result := Result + Separator; 324 end; 325 end; 326 327 {$IFDEF WINDOWS} 289 328 function GetUserName: string; 290 329 const … … 294 333 begin 295 334 L := MAX_USERNAME_LENGTH + 2; 335 Result := Default(string); 296 336 SetLength(Result, L); 297 337 if Windows.GetUserName(PChar(Result), L) and (L > 0) then begin … … 307 347 end; 308 348 end; 309 {$ endif}349 {$ENDIF} 310 350 311 351 function ComputerName: string; 312 {$ ifdef mswindows}352 {$IFDEF WINDOWS} 313 353 const 314 354 INFO_BUFFER_SIZE = 32767; … … 325 365 end; 326 366 end; 327 {$ endif}328 {$ ifdef unix}367 {$ENDIF} 368 {$IFDEF UNIX} 329 369 var 330 370 Name: UtsName; 331 371 begin 372 Name := Default(UtsName); 332 373 fpuname(Name); 333 374 Result := Name.Nodename; 334 375 end; 335 {$ endif}336 337 {$ ifdef windows}376 {$ENDIF} 377 378 {$IFDEF WINDOWS} 338 379 function LoggedOnUserNameEx(Format: TUserNameFormat): string; 339 380 const … … 413 454 procedure LoadLibraries; 414 455 begin 415 {$IFDEF W indows}456 {$IFDEF WINDOWS} 416 457 DLLHandle1 := LoadLibrary('secur32.dll'); 417 458 if DLLHandle1 <> 0 then … … 424 465 procedure FreeLibraries; 425 466 begin 426 {$IFDEF W indows}467 {$IFDEF WINDOWS} 427 468 if DLLHandle1 <> 0 then FreeLibrary(DLLHandle1); 428 469 {$ENDIF} … … 457 498 end; 458 499 500 procedure OpenEmail(Email: string); 501 begin 502 OpenURL('mailto:' + Email); 503 end; 504 459 505 procedure OpenFileInShell(FileName: string); 460 506 begin … … 485 531 end; 486 532 487 function MergeArray(A, B: array of string): TArrayOfString; 488 var 489 I: Integer; 490 begin 533 function MergeArray(A, B: array of string): TStringArray; 534 var 535 I: Integer; 536 begin 537 Result := Default(TStringArray); 491 538 SetLength(Result, Length(A) + Length(B)); 492 539 for I := 0 to Length(A) - 1 do … … 514 561 end; 515 562 563 function DefaultSearchFilter(const FileName: string): Boolean; 564 begin 565 Result := True; 566 end; 567 568 procedure SaveStringToFile(S, FileName: string); 569 var 570 F: TextFile; 571 begin 572 AssignFile(F, FileName); 573 try 574 ReWrite(F); 575 Write(F, S); 576 finally 577 CloseFile(F); 578 end; 579 end; 580 581 procedure SearchFiles(AList: TStrings; Dir: string; 582 FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil); 583 var 584 SR: TSearchRec; 585 begin 586 Dir := IncludeTrailingPathDelimiter(Dir); 587 if FindFirst(Dir + '*', faAnyFile, SR) = 0 then 588 try 589 repeat 590 if (SR.Name = '.') or (SR.Name = '..') or (Assigned(FilterMethod) and (not FilterMethod(SR.Name) or 591 not FilterMethod(Copy(Dir, 3, Length(Dir)) + SR.Name))) then Continue; 592 if Assigned(FileNameMethod) then 593 FileNameMethod(Dir + SR.Name); 594 AList.Add(Dir + SR.Name); 595 if (SR.Attr and faDirectory) <> 0 then 596 SearchFiles(AList, Dir + SR.Name, FilterMethod); 597 until FindNext(SR) <> 0; 598 finally 599 FindClose(SR); 600 end; 601 end; 602 603 function GetStringPart(var Text: string; Separator: string): string; 604 var 605 P: Integer; 606 begin 607 P := Pos(Separator, Text); 608 if P > 0 then begin 609 Result := Copy(Text, 1, P - 1); 610 Delete(Text, 1, P - 1 + Length(Separator)); 611 end else begin 612 Result := Text; 613 Text := ''; 614 end; 615 Result := Trim(Result); 616 Text := Trim(Text); 617 end; 618 619 function StripTags(const S: string): string; 620 var 621 Len: Integer; 622 623 function ReadUntil(const ReadFrom: Integer; const C: Char): Integer; 624 var 625 J: Integer; 626 begin 627 for J := ReadFrom to Len do 628 if (S[j] = C) then 629 begin 630 Result := J; 631 Exit; 632 end; 633 Result := Len + 1; 634 end; 635 636 var 637 I, APos: Integer; 638 begin 639 Len := Length(S); 640 I := 0; 641 Result := ''; 642 while (I <= Len) do begin 643 Inc(I); 644 APos := ReadUntil(I, '<'); 645 Result := Result + Copy(S, I, APos - i); 646 I := ReadUntil(APos + 1, '>'); 647 end; 648 end; 649 650 function PosFromIndex(SubStr: string; Text: string; 651 StartIndex: Integer): Integer; 652 var 653 I, MaxLen: SizeInt; 654 Ptr: PAnsiChar; 655 begin 656 Result := 0; 657 if (StartIndex < 1) or (StartIndex > Length(Text) - Length(SubStr)) then Exit; 658 if Length(SubStr) > 0 then begin 659 MaxLen := Length(Text) - Length(SubStr) + 1; 660 I := StartIndex; 661 Ptr := @Text[StartIndex]; 662 while (I <= MaxLen) do begin 663 if (SubStr[1] = Ptr^) and (CompareByte(Substr[1], Ptr^, Length(SubStr)) = 0) then begin 664 Result := I; 665 Exit; 666 end; 667 Inc(I); 668 Inc(Ptr); 669 end; 670 end; 671 end; 672 673 function PosFromIndexReverse(SubStr: string; Text: string; 674 StartIndex: Integer): Integer; 675 var 676 I: SizeInt; 677 Ptr: PAnsiChar; 678 begin 679 Result := 0; 680 if (StartIndex < 1) or (StartIndex > Length(Text)) then Exit; 681 if Length(SubStr) > 0 then begin 682 I := StartIndex; 683 Ptr := @Text[StartIndex]; 684 while (I > 0) do begin 685 if (SubStr[1] = Ptr^) and (CompareByte(Substr[1], Ptr^, Length(SubStr)) = 0) then begin 686 Result := I; 687 Exit; 688 end; 689 Dec(I); 690 Dec(Ptr); 691 end; 692 end; 693 end; 694 695 procedure CopyStringArray(Dest: TStringArray; Source: array of string); 696 var 697 I: Integer; 698 begin 699 SetLength(Dest, Length(Source)); 700 for I := 0 to Length(Dest) - 1 do 701 Dest[I] := Source[I]; 702 end; 703 704 function CombinePaths(Path1, Path2: string): string; 705 begin 706 Result := Path1; 707 if Result <> '' then Result := Result + DirectorySeparator + Path2 708 else Result := Path2; 709 end; 710 711 procedure SortStrings(Strings: TStrings); 712 var 713 Tmp: TStringList; 714 begin 715 Strings.BeginUpdate; 716 try 717 if Strings is TStringList then begin 718 TStringList(Strings).Sort; 719 end else begin 720 Tmp := TStringList.Create; 721 try 722 Tmp.Assign(Strings); 723 Tmp.Sort; 724 Strings.Assign(Tmp); 725 finally 726 Tmp.Free; 727 end; 728 end; 729 finally 730 Strings.EndUpdate; 731 end; 732 end; 516 733 517 734 -
trunk/Packages/Common/UDebugLog.pas
r15 r25 1 1 unit UDebugLog; 2 3 {$mode delphi}4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, FileUtil, SpecializedList, SyncObjs;6 Classes, SysUtils, FileUtil, Generics.Collections, SyncObjs; 9 7 10 8 type … … 15 13 Group: string; 16 14 Text: string; 15 end; 16 17 TDebugLogItems = class(TObjectList<TDebugLogItem>) 17 18 end; 18 19 … … 29 30 procedure SetMaxCount(const AValue: Integer); 30 31 public 31 Items: T ListObject;32 Items: TDebugLogItems; 32 33 Lock: TCriticalSection; 33 34 procedure Add(Text: string; Group: string = ''); … … 44 45 45 46 procedure Register; 47 46 48 47 49 implementation … … 104 106 if ExtractFileDir(FileName) <> '' then 105 107 ForceDirectories(ExtractFileDir(FileName)); 106 if FileExists(FileName) then LogFile := TFileStream.Create( UTF8Decode(FileName), fmOpenWrite)107 else LogFile := TFileStream.Create( UTF8Decode(FileName), fmCreate);108 if FileExists(FileName) then LogFile := TFileStream.Create(FileName, fmOpenWrite) 109 else LogFile := TFileStream.Create(FileName, fmCreate); 108 110 LogFile.Seek(0, soFromEnd); 109 111 Text := FormatDateTime('hh:nn:ss.zzz', Now) + ': ' + Text + LineEnding; … … 117 119 begin 118 120 inherited; 119 Items := T ListObject.Create;121 Items := TDebugLogItems.Create; 120 122 Lock := TCriticalSection.Create; 121 123 MaxCount := 100; … … 126 128 destructor TDebugLog.Destroy; 127 129 begin 128 Items.Free;129 Lock.Free;130 FreeAndNil(Items); 131 FreeAndNil(Lock); 130 132 inherited; 131 133 end; -
trunk/Packages/Common/UDelay.pas
r10 r25 1 1 unit UDelay; 2 3 {$mode delphi}4 2 5 3 interface -
trunk/Packages/Common/UFindFile.pas
r15 r25 24 24 25 25 uses 26 SysUtils, Classes, Graphics, Controls, Forms, Dialogs , FileCtrl;26 SysUtils, Classes, Graphics, Controls, Forms, Dialogs; 27 27 28 28 type … … 35 35 private 36 36 s : TStringList; 37 38 37 fSubFolder : boolean; 39 38 fAttr: TFileAttrib; 40 39 fPath : string; 41 40 fFileMask : string; 42 43 41 procedure SetPath(Value: string); 44 42 procedure FileSearch(const inPath : string); … … 46 44 constructor Create(AOwner: TComponent); override; 47 45 destructor Destroy; override; 48 49 46 function SearchForFiles: TStringList; 50 47 published … … 59 56 FilterAll = '*.*'; 60 57 {$ENDIF} 61 {$IFDEF LINUX}58 {$IFDEF UNIX} 62 59 FilterAll = '*'; 63 60 {$ENDIF} 64 61 65 62 procedure Register; 63 66 64 67 65 implementation … … 87 85 begin 88 86 s.Free; 89 inherited Destroy;87 inherited; 90 88 end; 91 89 … … 117 115 Attr := 0; 118 116 if ffaReadOnly in FileAttr then Attr := Attr + faReadOnly; 119 if ffaHidden in FileAttr then Attr := Attr + faHidden;120 if ffaSysFile in FileAttr then Attr := Attr + faSysFile;121 if ffaVolumeID in FileAttr then Attr := Attr + faVolumeID;117 if ffaHidden in FileAttr then Attr := Attr + 2; //faHidden; use constant to avoid platform warning 118 if ffaSysFile in FileAttr then Attr := Attr + 4; //faSysFile; use constant to avoid platform warning 119 // Deprecated: if ffaVolumeID in FileAttr then Attr := Attr + faVolumeID; 122 120 if ffaDirectory in FileAttr then Attr := Attr + faDirectory; 123 121 if ffaArchive in FileAttr then Attr := Attr + faArchive; 124 122 if ffaAnyFile in FileAttr then Attr := Attr + faAnyFile; 125 123 126 if SysUtils.FindFirst( UTF8Decode(inPath + FileMask), Attr, Rec) = 0 then124 if SysUtils.FindFirst(inPath + FileMask, Attr, Rec) = 0 then 127 125 try 128 126 repeat 129 s.Add(inPath + UTF8Encode(Rec.Name));127 s.Add(inPath + Rec.Name); 130 128 until SysUtils.FindNext(Rec) <> 0; 131 129 finally … … 135 133 If not InSubFolders then Exit; 136 134 137 if SysUtils.FindFirst( UTF8Decode(inPath + FilterAll), faDirectory, Rec) = 0 then135 if SysUtils.FindFirst(inPath + FilterAll, faDirectory, Rec) = 0 then 138 136 try 139 137 repeat 140 138 if ((Rec.Attr and faDirectory) > 0) and (Rec.Name <> '.') 141 139 and (Rec.Name <> '..') then 142 FileSearch(IncludeTrailingBackslash(inPath + UTF8Encode(Rec.Name)));140 FileSearch(IncludeTrailingBackslash(inPath + Rec.Name)); 143 141 until SysUtils.FindNext(Rec) <> 0; 144 142 finally -
trunk/Packages/Common/UJobProgressView.lfm
r15 r25 1 1 object FormJobProgressView: TFormJobProgressView 2 2 Left = 467 3 Height = 2463 Height = 414 4 4 Top = 252 5 Width = 3285 Width = 647 6 6 BorderIcons = [biSystemMenu] 7 ClientHeight = 246 8 ClientWidth = 328 9 Font.Height = -11 10 Font.Name = 'MS Sans Serif' 7 ClientHeight = 414 8 ClientWidth = 647 9 DesignTimePPI = 144 11 10 OnClose = FormClose 12 11 OnCloseQuery = FormCloseQuery 13 12 OnCreate = FormCreate 14 OnDestroy = FormDestroy 13 OnHide = FormHide 14 OnShow = FormShow 15 15 Position = poScreenCenter 16 LCLVersion = ' 1.6.0.4'16 LCLVersion = '2.2.0.4' 17 17 object PanelOperationsTitle: TPanel 18 18 Left = 0 19 Height = 2419 Height = 38 20 20 Top = 0 21 Width = 32821 Width = 647 22 22 Align = alTop 23 23 BevelOuter = bvNone 24 ClientHeight = 2425 ClientWidth = 32824 ClientHeight = 38 25 ClientWidth = 647 26 26 FullRepaint = False 27 27 TabOrder = 0 28 28 object LabelOperation: TLabel 29 Left = 830 Height = 1331 Top = 832 Width = 6629 Left = 10 30 Height = 26 31 Top = 10 32 Width = 99 33 33 Caption = 'Operations:' 34 Font.Height = -1135 Font.Name = 'MS Sans Serif'36 Font.Style = [fsBold]37 ParentColor = False38 34 ParentFont = False 39 35 end … … 41 37 object PanelLog: TPanel 42 38 Left = 0 43 Height = 1 2244 Top = 12445 Width = 32839 Height = 161 40 Top = 253 41 Width = 647 46 42 Align = alClient 47 43 BevelOuter = bvSpace 48 ClientHeight = 1 2249 ClientWidth = 32844 ClientHeight = 161 45 ClientWidth = 647 50 46 TabOrder = 1 51 47 object MemoLog: TMemo 52 Left = 853 Height = 1 0654 Top = 855 Width = 31248 Left = 10 49 Height = 141 50 Top = 10 51 Width = 627 56 52 Anchors = [akTop, akLeft, akRight, akBottom] 57 53 ReadOnly = True … … 62 58 object PanelProgress: TPanel 63 59 Left = 0 64 Height = 3865 Top = 5066 Width = 32860 Height = 65 61 Top = 126 62 Width = 647 67 63 Align = alTop 68 64 BevelOuter = bvNone 69 ClientHeight = 3870 ClientWidth = 32865 ClientHeight = 65 66 ClientWidth = 647 71 67 TabOrder = 2 72 68 object ProgressBarPart: TProgressBar 73 Left = 874 Height = 1775 Top = 1676 Width = 31269 Left = 12 70 Height = 29 71 Top = 29 72 Width = 628 77 73 Anchors = [akTop, akLeft, akRight] 78 74 TabOrder = 0 79 75 end 80 76 object LabelEstimatedTimePart: TLabel 81 Left = 882 Height = 1377 Left = 10 78 Height = 26 83 79 Top = -2 84 Width = 7180 Width = 132 85 81 Caption = 'Estimated time:' 86 ParentColor = False87 82 end 88 83 end 89 84 object PanelOperations: TPanel 90 85 Left = 0 91 Height = 2692 Top = 2493 Width = 32886 Height = 50 87 Top = 76 88 Width = 647 94 89 Align = alTop 95 90 BevelOuter = bvNone 96 ClientHeight = 2697 ClientWidth = 32891 ClientHeight = 50 92 ClientWidth = 647 98 93 FullRepaint = False 99 94 TabOrder = 3 100 95 object ListViewJobs: TListView 101 Left = 8102 Height = 16103 Top = 5104 Width = 31296 Left = 10 97 Height = 38 98 Top = 6 99 Width = 627 105 100 Anchors = [akTop, akLeft, akRight, akBottom] 106 101 AutoWidthLastColumn = True … … 109 104 Columns = < 110 105 item 111 Width = 312106 Width = 614 112 107 end> 113 108 OwnerData = True … … 122 117 object PanelProgressTotal: TPanel 123 118 Left = 0 124 Height = 36125 Top = 88126 Width = 328119 Height = 62 120 Top = 191 121 Width = 647 127 122 Align = alTop 128 123 BevelOuter = bvNone 129 ClientHeight = 36130 ClientWidth = 328124 ClientHeight = 62 125 ClientWidth = 647 131 126 TabOrder = 4 132 127 object LabelEstimatedTimeTotal: TLabel 133 Left = 8134 Height = 13128 Left = 10 129 Height = 26 135 130 Top = 0 136 Width = 97131 Width = 178 137 132 Caption = 'Total estimated time:' 138 ParentColor = False139 133 end 140 134 object ProgressBarTotal: TProgressBar 141 Left = 8142 Height = 16143 Top = 16144 Width = 312135 Left = 10 136 Height = 29 137 Top = 29 138 Width = 627 145 139 Anchors = [akTop, akLeft, akRight] 146 140 TabOrder = 0 147 141 end 148 142 end 143 object PanelText: TPanel 144 Left = 0 145 Height = 38 146 Top = 38 147 Width = 647 148 Align = alTop 149 BevelOuter = bvNone 150 ClientHeight = 38 151 ClientWidth = 647 152 TabOrder = 5 153 object LabelText: TLabel 154 Left = 10 155 Height = 29 156 Top = 10 157 Width = 630 158 Anchors = [akTop, akLeft, akRight] 159 AutoSize = False 160 end 161 end 149 162 object ImageList1: TImageList 150 BkColor = clForeground 151 left = 200 152 top = 8 163 Left = 240 164 Top = 10 153 165 Bitmap = { 154 4C69020000001000000010000000FF00FF00FF00FF00FF00FF00FF00FF00FF00 155 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 156 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 157 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 158 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 159 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 160 FF00000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 161 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 162 00FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 163 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF0000 164 00FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 165 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF0000 166 00FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 167 FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000 168 00FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FFFF00FF00FF00 169 FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF000000FFFF00 170 FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FFFF00 171 FF00FF00FF00FF00FF00000000FF000000FF000000FF000000FFFF00FF00FF00 172 FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000 173 00FFFF00FF00000000FF000000FF000000FF000000FFFF00FF00FF00FF00FF00 174 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF0000 175 00FF000000FF000000FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00 176 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF0000 177 00FF000000FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00 178 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000000 179 00FF000000FF000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 180 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 181 FF00000000FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 182 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 183 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 184 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 185 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 186 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 187 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 188 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 189 FF00FF00FF00FF00FF00FF00FF00000000FFFF00FF00FF00FF00FF00FF00FF00 190 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 191 FF00FF00FF00FF00FF00FF00FF00000000FF000000FFFF00FF00FF00FF00FF00 192 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 193 FF00FF00FF00FF00FF00FF00FF00000000FF000084FF000000FFFF00FF00FF00 194 FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000 195 00FF000000FF000000FF000000FF000000FF0000FFFF000084FF000000FFFF00 196 FF00FF00FF00FF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000 197 FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000084FF0000 198 00FFFF00FF00FF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000 199 FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 200 84FF000000FFFF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000 201 FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 202 FFFF000084FF000000FFFF00FF00FF00FF00000000FF0000FFFF0000FFFF0000 203 FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 204 84FF000000FFFF00FF00FF00FF00FF00FF00000000FF0000FFFF0000FFFF0000 205 FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000084FF0000 206 00FFFF00FF00FF00FF00FF00FF00FF00FF00000000FF000000FF000000FF0000 207 00FF000000FF000000FF000000FF000000FF0000FFFF000084FF000000FFFF00 208 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 209 FF00FF00FF00FF00FF00FF00FF00000000FF000084FF000000FFFF00FF00FF00 210 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 211 FF00FF00FF00FF00FF00FF00FF00000000FF000000FFFF00FF00FF00FF00FF00 212 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 213 FF00FF00FF00FF00FF00FF00FF00000000FFFF00FF00FF00FF00FF00FF00FF00 214 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 215 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 216 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 217 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 218 FF00FF00FF00FF00FF00FF00FF00 166 4C7A0200000010000000100000006A0000000000000078DAE593490E00100C45 167 7B78F72E5684A63A1142C382BE4F0708F89C955117F4B016BE67B5FC6E96DB97 168 B0D4B9F4CD949F36DED1DF922B0F1BD11FAB5AFC68DE5C44D40220A9FA779EC8 169 6A349FD5A435E43CADA1E3678D73F773F1DBF3EFADFFEEFEBBF97F6696BE9D36 219 170 } 220 171 end … … 223 174 Interval = 100 224 175 OnTimer = TimerUpdateTimer 225 left = 264226 top = 8176 Left = 384 177 Top = 10 227 178 end 228 179 end -
trunk/Packages/Common/UJobProgressView.pas
r15 r25 1 1 unit UJobProgressView; 2 3 {$MODE Delphi}4 2 5 3 interface … … 7 5 uses 8 6 SysUtils, Variants, Classes, Graphics, Controls, Forms, Syncobjs, 9 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Contnrs, UThreading,7 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Generics.Collections, UThreading, Math, 10 8 DateUtils; 11 9 … … 13 11 EstimatedTimeShowTreshold = 4; 14 12 EstimatedTimeShowTresholdTotal = 1; 15 MemoLogHeight = 200;16 13 UpdateInterval = 100; // ms 17 14 … … 24 21 FLock: TCriticalSection; 25 22 FOnChange: TNotifyEvent; 23 FText: string; 26 24 FValue: Integer; 27 25 FMax: Integer; 28 26 procedure SetMax(const AValue: Integer); 27 procedure SetText(AValue: string); 29 28 procedure SetValue(const AValue: Integer); 30 29 public … … 35 34 property Value: Integer read FValue write SetValue; 36 35 property Max: Integer read FMax write SetMax; 36 property Text: string read FText write SetText; 37 37 property OnChange: TNotifyEvent read FOnChange write FOnChange; 38 38 end; … … 69 69 end; 70 70 71 TJobs = class(TObjectList<TJob>) 72 end; 73 71 74 TJobThread = class(TListedThread) 72 75 procedure Execute; override; … … 80 83 TFormJobProgressView = class(TForm) 81 84 ImageList1: TImageList; 85 LabelText: TLabel; 82 86 Label2: TLabel; 83 87 LabelOperation: TLabel; … … 86 90 ListViewJobs: TListView; 87 91 MemoLog: TMemo; 92 PanelText: TPanel; 88 93 PanelProgressTotal: TPanel; 89 94 PanelOperationsTitle: TPanel; … … 94 99 ProgressBarTotal: TProgressBar; 95 100 TimerUpdate: TTimer; 101 procedure FormHide(Sender: TObject); 102 procedure FormShow(Sender: TObject); 103 procedure ReloadJobList; 96 104 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); 97 procedure FormDestroy(Sender: TObject);98 105 procedure ListViewJobsData(Sender: TObject; Item: TListItem); 99 106 procedure TimerUpdateTimer(Sender: TObject); 100 107 procedure FormCreate(Sender: TObject); 101 108 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 109 procedure UpdateHeight; 102 110 public 103 111 JobProgressView: TJobProgressView; … … 118 126 TotalStartTime: TDateTime; 119 127 Log: TStringList; 128 FForm: TFormJobProgressView; 120 129 procedure SetTerminate(const AValue: Boolean); 121 130 procedure UpdateProgress; 122 procedure ReloadJobList;123 procedure StartJobs;124 procedure UpdateHeight;125 131 procedure JobProgressChange(Sender: TObject); 126 132 public 127 Form: TFormJobProgressView; 128 Jobs: TObjectList; // TListObject<TJob> 133 Jobs: TJobs; 129 134 CurrentJob: TJob; 130 135 CurrentJobIndex: Integer; … … 132 137 destructor Destroy; override; 133 138 procedure Clear; 134 procedureAddJob(Title: string; Method: TJobProgressViewMethod;135 NoThreaded: Boolean = False; WaitFor: Boolean = False) ;136 procedure Start (AAutoClose: Boolean = True);139 function AddJob(Title: string; Method: TJobProgressViewMethod; 140 NoThreaded: Boolean = False; WaitFor: Boolean = False): TJob; 141 procedure Start; 137 142 procedure Stop; 138 143 procedure TermSleep(Delay: Integer); 144 property Form: TFormJobProgressView read FForm; 139 145 property Terminate: Boolean read FTerminate write SetTerminate; 140 146 published … … 156 162 SExecuted = 'Executed'; 157 163 164 158 165 implementation 159 166 … … 166 173 STotalEstimatedTime = 'Total estimated time: %s'; 167 174 SFinished = 'Finished'; 168 SOperations = 'Operations';169 175 170 176 procedure Register; … … 172 178 RegisterComponents('Common', [TJobProgressView]); 173 179 end; 180 181 { TJobThread } 174 182 175 183 procedure TJobThread.Execute; … … 190 198 end; 191 199 192 procedure TJobProgressView.AddJob(Title: string; Method: TJobProgressViewMethod; 193 NoThreaded: Boolean = False; WaitFor: Boolean = False); 200 { TFormJobProgressView } 201 202 procedure TFormJobProgressView.UpdateHeight; 194 203 var 195 NewJob: TJob; 196 begin 197 NewJob := TJob.Create; 198 NewJob.ProgressView := Self; 199 NewJob.Title := Title; 200 NewJob.Method := Method; 201 NewJob.NoThreaded := NoThreaded; 202 NewJob.WaitFor := WaitFor; 203 NewJob.Progress.Max := 100; 204 NewJob.Progress.Reset; 205 NewJob.Progress.OnChange := JobProgressChange; 206 Jobs.Add(NewJob); 204 H: Integer; 205 PanelOperationsVisible: Boolean; 206 PanelOperationsHeight: Integer; 207 PanelProgressVisible: Boolean; 208 PanelProgressTotalVisible: Boolean; 209 PanelLogVisible: Boolean; 210 MemoLogHeight: Integer = 200; 211 I: Integer; 212 ItemRect: TRect; 213 MaxH: Integer; 214 begin 215 H := PanelOperationsTitle.Height; 216 PanelOperationsVisible := JobProgressView.Jobs.Count > 0; 217 if PanelOperationsVisible <> PanelOperations.Visible then 218 PanelOperations.Visible := PanelOperationsVisible; 219 if ListViewJobs.Items.Count > 0 then begin 220 Maxh := 0; 221 for I := 0 to ListViewJobs.Items.Count - 1 do 222 begin 223 ItemRect := ListViewJobs.Items[i].DisplayRect(drBounds); 224 Maxh := Max(Maxh, ItemRect.Top + (ItemRect.Bottom - ItemRect.Top)); 225 end; 226 PanelOperationsHeight := Scale96ToScreen(12) + Maxh; 227 end else PanelOperationsHeight := Scale96ToScreen(8); 228 if PanelOperationsHeight <> PanelOperations.Height then 229 PanelOperations.Height := PanelOperationsHeight; 230 if PanelOperationsVisible then 231 H := H + PanelOperations.Height; 232 233 PanelProgressVisible := (JobProgressView.Jobs.Count > 0) and not JobProgressView.Finished; 234 if PanelProgressVisible <> PanelProgress.Visible then 235 PanelProgress.Visible := PanelProgressVisible; 236 if PanelProgressVisible then 237 H := H + PanelProgress.Height; 238 PanelProgressTotalVisible := (JobProgressView.Jobs.Count > 1) and not JobProgressView.Finished; 239 if PanelProgressTotalVisible <> PanelProgressTotal.Visible then 240 PanelProgressTotal.Visible := PanelProgressTotalVisible; 241 if PanelProgressTotalVisible then 242 H := H + PanelProgressTotal.Height; 243 Constraints.MinHeight := H; 244 PanelLogVisible := MemoLog.Lines.Count > 0; 245 if PanelLogVisible <> PanelLog.Visible then 246 PanelLog.Visible := PanelLogVisible; 247 if PanelLogVisible then 248 H := H + Scale96ToScreen(MemoLogHeight); 249 if PanelText.Visible then 250 H := H + PanelText.Height; 251 if Height <> H then begin 252 Height := H; 253 Top := (Screen.Height - H) div 2; 254 end; 255 end; 256 257 procedure TFormJobProgressView.TimerUpdateTimer(Sender: TObject); 258 var 259 ProgressBarPartVisible: Boolean; 260 ProgressBarTotalVisible: Boolean; 261 begin 262 JobProgressView.UpdateProgress; 263 if Visible and (not ProgressBarPart.Visible) and 264 Assigned(JobProgressView.CurrentJob) and 265 (JobProgressView.CurrentJob.Progress.Value > 0) then begin 266 ProgressBarPartVisible := True; 267 if ProgressBarPartVisible <> ProgressBarPart.Visible then 268 ProgressBarPart.Visible := ProgressBarPartVisible; 269 ProgressBarTotalVisible := True; 270 if ProgressBarTotalVisible <> ProgressBarTotal.Visible then 271 ProgressBarTotal.Visible := ProgressBarTotalVisible; 272 end; 273 if not Visible then begin 274 TimerUpdate.Interval := UpdateInterval; 275 if not JobProgressView.OwnerDraw then Show; 276 end; 277 if Assigned(JobProgressView.CurrentJob) then begin 278 LabelText.Caption := JobProgressView.CurrentJob.Progress.Text; 279 if LabelText.Caption <> '' then begin 280 PanelText.Visible := True; 281 UpdateHeight; 282 end; 283 end; 284 end; 285 286 procedure TFormJobProgressView.ListViewJobsData(Sender: TObject; Item: TListItem); 287 begin 288 if (Item.Index >= 0) and (Item.Index < JobProgressView.Jobs.Count) then 289 with JobProgressView.Jobs[Item.Index] do begin 290 Item.Caption := Title; 291 if Item.Index = JobProgressView.CurrentJobIndex then Item.ImageIndex := 1 292 else if Finished then Item.ImageIndex := 0 293 else Item.ImageIndex := 2; 294 Item.Data := JobProgressView.Jobs[Item.Index]; 295 end; 296 end; 297 298 procedure TFormJobProgressView.FormClose(Sender: TObject; 299 var CloseAction: TCloseAction); 300 begin 301 end; 302 303 procedure TFormJobProgressView.FormCreate(Sender: TObject); 304 begin 305 Caption := SPleaseWait; 306 try 307 //Animate1.FileName := ExtractFileDir(UTF8Encode(Application.ExeName)) + 308 // DirectorySeparator + 'horse.avi'; 309 //Animate1.Active := True; 310 except 311 312 end; 313 end; 314 315 procedure TFormJobProgressView.ReloadJobList; 316 begin 317 // Workaround for not showing first line 318 //Form.ListViewJobs.Items.Count := Jobs.Count + 1; 319 //Form.ListViewJobs.Refresh; 320 321 if ListViewJobs.Items.Count <> JobProgressView.Jobs.Count then 322 ListViewJobs.Items.Count := JobProgressView.Jobs.Count; 323 ListViewJobs.Refresh; 324 Application.ProcessMessages; 325 UpdateHeight; 326 end; 327 328 procedure TFormJobProgressView.FormShow(Sender: TObject); 329 begin 330 ReloadJobList; 331 end; 332 333 procedure TFormJobProgressView.FormHide(Sender: TObject); 334 begin 335 JobProgressView.Jobs.Clear; 336 ReloadJobList; 337 end; 338 339 procedure TFormJobProgressView.FormCloseQuery(Sender: TObject; var CanClose: Boolean); 340 begin 341 CanClose := JobProgressView.Finished; 342 JobProgressView.Terminate := True; 343 Caption := SPleaseWait + STerminate; 344 end; 345 346 347 { TJobProgressView } 348 349 function TJobProgressView.AddJob(Title: string; Method: TJobProgressViewMethod; 350 NoThreaded: Boolean = False; WaitFor: Boolean = False): TJob; 351 begin 352 Result := TJob.Create; 353 Result.ProgressView := Self; 354 Result.Title := Title; 355 Result.Method := Method; 356 Result.NoThreaded := NoThreaded; 357 Result.WaitFor := WaitFor; 358 Result.Progress.Max := 100; 359 Result.Progress.Reset; 360 Result.Progress.OnChange := JobProgressChange; 361 Jobs.Add(Result); 207 362 //ReloadJobList; 208 363 end; 209 364 210 procedure TJobProgressView.Start(AAutoClose: Boolean = True); 211 begin 212 AutoClose := AAutoClose; 213 StartJobs; 214 end; 215 216 procedure TJobProgressView.StartJobs; 365 procedure TJobProgressView.Start; 217 366 var 218 367 I: Integer; … … 229 378 Form.MemoLog.Clear; 230 379 380 Form.PanelText.Visible := False; 231 381 Form.LabelEstimatedTimePart.Visible := False; 232 382 Form.LabelEstimatedTimeTotal.Visible := False; … … 249 399 I := 0; 250 400 while I < Jobs.Count do 251 with TJob(Jobs[I])do begin401 with Jobs[I] do begin 252 402 CurrentJobIndex := I; 253 CurrentJob := TJob(Jobs[I]);403 CurrentJob := Jobs[I]; 254 404 JobProgressChange(Self); 255 405 StartTime := Now; … … 258 408 Form.ProgressBarPart.Visible := False; 259 409 //Show; 260 ReloadJobList;410 Form.ReloadJobList; 261 411 Application.ProcessMessages; 262 412 if NoThreaded then begin … … 264 414 Method(CurrentJob); 265 415 end else begin 416 Thread := TJobThread.Create(True); 266 417 try 267 Thread := TJobThread.Create(True);268 418 with Thread do begin 269 419 FreeOnTerminate := False; … … 296 446 //if Visible then Hide; 297 447 Form.MemoLog.Lines.Assign(Log); 298 if (Form.MemoLog.Lines.Count = 0) and AutoClose then begin448 if (Form.MemoLog.Lines.Count = 0) and FAutoClose then begin 299 449 Form.Hide; 300 450 end; 301 Clear;451 if not Form.Visible then Clear; 302 452 Form.Caption := SFinished; 303 453 //LabelEstimatedTimePart.Visible := False; 304 454 Finished := True; 305 455 CurrentJobIndex := -1; 306 ReloadJobList; 307 end; 308 end; 309 310 procedure TJobProgressView.UpdateHeight; 311 var 312 H: Integer; 313 PanelOperationsVisible: Boolean; 314 PanelOperationsHeight: Integer; 315 PanelProgressVisible: Boolean; 316 PanelProgressTotalVisible: Boolean; 317 PanelLogVisible: Boolean; 318 begin 319 with Form do begin 320 H := PanelOperationsTitle.Height; 321 PanelOperationsVisible := Jobs.Count > 0; 322 if PanelOperationsVisible <> PanelOperations.Visible then 323 PanelOperations.Visible := PanelOperationsVisible; 324 PanelOperationsHeight := 8 + 18 * Jobs.Count; 325 if PanelOperationsHeight <> PanelOperations.Height then 326 PanelOperations.Height := PanelOperationsHeight; 327 if PanelOperationsVisible then 328 H := H + PanelOperations.Height; 329 330 PanelProgressVisible := (Jobs.Count > 0) and not Finished; 331 if PanelProgressVisible <> PanelProgress.Visible then 332 PanelProgress.Visible := PanelProgressVisible; 333 if PanelProgressVisible then 334 H := H + PanelProgress.Height; 335 PanelProgressTotalVisible := (Jobs.Count > 1) and not Finished; 336 if PanelProgressTotalVisible <> PanelProgressTotal.Visible then 337 PanelProgressTotal.Visible := PanelProgressTotalVisible; 338 if PanelProgressTotalVisible then 339 H := H + PanelProgressTotal.Height; 340 Constraints.MinHeight := H; 341 PanelLogVisible := MemoLog.Lines.Count > 0; 342 if PanelLogVisible <> PanelLog.Visible then 343 PanelLog.Visible := PanelLogVisible; 344 if PanelLogVisible then 345 H := H + MemoLogHeight; 346 if Height <> H then Height := H; 456 Form.ReloadJobList; 347 457 end; 348 458 end; … … 352 462 if Assigned(FOnOwnerDraw) then 353 463 FOnOwnerDraw(Self); 354 end;355 356 procedure TFormJobProgressView.TimerUpdateTimer(Sender: TObject);357 var358 ProgressBarPartVisible: Boolean;359 ProgressBarTotalVisible: Boolean;360 begin361 JobProgressView.UpdateProgress;362 if Visible and (not ProgressBarPart.Visible) and363 Assigned(JobProgressView.CurrentJob) and364 (JobProgressView.CurrentJob.Progress.Value > 0) then begin365 ProgressBarPartVisible := True;366 if ProgressBarPartVisible <> ProgressBarPart.Visible then367 ProgressBarPart.Visible := ProgressBarPartVisible;368 ProgressBarTotalVisible := True;369 if ProgressBarTotalVisible <> ProgressBarTotal.Visible then370 ProgressBarTotal.Visible := ProgressBarTotalVisible;371 end;372 if not Visible then begin373 TimerUpdate.Interval := UpdateInterval;374 if not JobProgressView.OwnerDraw then Show;375 end;376 end;377 378 procedure TFormJobProgressView.FormDestroy(Sender:TObject);379 begin380 end;381 382 procedure TFormJobProgressView.ListViewJobsData(Sender: TObject; Item: TListItem);383 begin384 if (Item.Index >= 0) and (Item.Index < JobProgressView.Jobs.Count) then385 with TJob(JobProgressView.Jobs[Item.Index]) do begin386 Item.Caption := Title;387 if Item.Index = JobProgressView.CurrentJobIndex then Item.ImageIndex := 1388 else if Finished then Item.ImageIndex := 0389 else Item.ImageIndex := 2;390 Item.Data := JobProgressView.Jobs[Item.Index];391 end;392 end;393 394 procedure TFormJobProgressView.FormClose(Sender: TObject;395 var CloseAction: TCloseAction);396 begin397 ListViewJobs.Clear;398 end;399 400 procedure TFormJobProgressView.FormCreate(Sender: TObject);401 begin402 Caption := SPleaseWait;403 try404 //Animate1.FileName := ExtractFileDir(UTF8Encode(Application.ExeName)) +405 // DirectorySeparator + 'horse.avi';406 //Animate1.Active := True;407 except408 409 end;410 464 end; 411 465 … … 428 482 end; 429 483 430 procedure TFormJobProgressView.FormCloseQuery(Sender: TObject; var CanClose: Boolean);431 begin432 CanClose := JobProgressView.Finished;433 JobProgressView.Terminate := True;434 Caption := SPleaseWait + STerminate;435 end;436 437 484 procedure TJobProgressView.SetTerminate(const AValue: Boolean); 438 485 var … … 441 488 if AValue = FTerminate then Exit; 442 489 for I := 0 to Jobs.Count - 1 do 443 TJob(Jobs[I]).Terminate := AValue;490 Jobs[I].Terminate := AValue; 444 491 FTerminate := AValue; 445 492 end; … … 490 537 end; 491 538 492 procedure TJobProgressView.ReloadJobList;493 begin494 UpdateHeight;495 // Workaround for not showing first line496 Form.ListViewJobs.Items.Count := Jobs.Count + 1;497 Form.ListViewJobs.Refresh;498 499 if Form.ListViewJobs.Items.Count <> Jobs.Count then500 Form.ListViewJobs.Items.Count := Jobs.Count;501 Form.ListViewJobs.Refresh;502 //Application.ProcessMessages;503 end;504 505 539 constructor TJobProgressView.Create(TheOwner: TComponent); 506 540 begin 507 541 inherited; 508 542 if not (csDesigning in ComponentState) then begin 509 F orm := TFormJobProgressView.Create(Self);510 F orm.JobProgressView := Self;511 end; 512 Jobs := T ObjectList.Create;543 FForm := TFormJobProgressView.Create(Self); 544 FForm.JobProgressView := Self; 545 end; 546 Jobs := TJobs.Create; 513 547 Log := TStringList.Create; 514 548 //PanelOperationsTitle.Height := 80; 515 ShowDelay := 0; //1000; // ms 549 AutoClose := True; 550 ShowDelay := 0; 516 551 end; 517 552 … … 519 554 begin 520 555 Jobs.Clear; 556 Log.Clear; 521 557 //ReloadJobList; 522 558 end; … … 528 564 inherited; 529 565 end; 566 567 { TProgress } 530 568 531 569 procedure TProgress.SetMax(const AValue: Integer); … … 536 574 if FMax < 1 then FMax := 1; 537 575 if FValue >= FMax then FValue := FMax; 576 finally 577 FLock.Release; 578 end; 579 end; 580 581 procedure TProgress.SetText(AValue: string); 582 begin 583 try 584 FLock.Acquire; 585 if FText = AValue then Exit; 586 FText := AValue; 538 587 finally 539 588 FLock.Release; … … 563 612 end; 564 613 565 { TProgress }566 567 614 procedure TProgress.Increment; 568 615 begin 569 try570 FLock.Acquire;616 FLock.Acquire; 617 try 571 618 Value := Value + 1; 572 619 finally … … 577 624 procedure TProgress.Reset; 578 625 begin 579 try580 FLock.Acquire;626 FLock.Acquire; 627 try 581 628 FValue := 0; 582 629 finally … … 594 641 begin 595 642 FLock.Free; 596 inherited Destroy;643 inherited; 597 644 end; 598 645 … … 625 672 destructor TJob.Destroy; 626 673 begin 627 Progress.Free;674 FreeAndNil(Progress); 628 675 inherited; 629 676 end; -
trunk/Packages/Common/ULastOpenedList.pas
r10 r25 1 1 unit ULastOpenedList; 2 3 {$mode delphi}4 2 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, Registry, URegistry, Menus, XMLConf ;6 Classes, SysUtils, Registry, URegistry, Menus, XMLConf, DOM; 9 7 10 8 type … … 30 28 procedure SaveToXMLConfig(XMLConfig: TXMLConfig; Path: string); 31 29 procedure AddItem(FileName: string); 30 function GetFirstFileName: string; 32 31 published 33 32 property MaxCount: Integer read FMaxCount write SetMaxCount; … … 83 82 destructor TLastOpenedList.Destroy; 84 83 begin 85 Items.Free;84 FreeAndNil(Items); 86 85 inherited; 87 86 end; … … 93 92 begin 94 93 if Assigned(MenuItem) then begin 95 MenuItem.Clear; 94 while MenuItem.Count > Items.Count do 95 MenuItem.Delete(MenuItem.Count - 1); 96 while MenuItem.Count < Items.Count do begin 97 NewMenuItem := TMenuItem.Create(MenuItem); 98 MenuItem.Add(NewMenuItem); 99 end; 96 100 for I := 0 to Items.Count - 1 do begin 97 NewMenuItem := TMenuItem.Create(MenuItem); 98 NewMenuItem.Caption := Items[I]; 99 NewMenuItem.OnClick := ClickAction; 100 MenuItem.Add(NewMenuItem); 101 MenuItem.Items[I].Caption := Items[I]; 102 MenuItem.Items[I].OnClick := ClickAction; 101 103 end; 102 104 end; … … 139 141 OpenKey(Context.Key, True); 140 142 for I := 0 to Items.Count - 1 do 141 WriteString('File' + IntToStr(I), UTF8Decode(Items[I]));143 WriteString('File' + IntToStr(I), Items[I]); 142 144 finally 143 145 Free; … … 153 155 begin 154 156 with XMLConfig do begin 155 Count := GetValue( Path + '/Count', 0);157 Count := GetValue(DOMString(Path + '/Count'), 0); 156 158 if Count > MaxCount then Count := MaxCount; 157 159 Items.Clear; 158 160 for I := 0 to Count - 1 do begin 159 Value := GetValue(Path + '/File' + IntToStr(I), '');161 Value := string(GetValue(DOMString(Path + '/File' + IntToStr(I)), '')); 160 162 if Trim(Value) <> '' then Items.Add(Value); 161 163 end; … … 170 172 begin 171 173 with XMLConfig do begin 172 SetValue( Path + '/Count', Items.Count);174 SetValue(DOMString(Path + '/Count'), Items.Count); 173 175 for I := 0 to Items.Count - 1 do 174 SetValue( Path + '/File' + IntToStr(I), Items[I]);176 SetValue(DOMString(Path + '/File' + IntToStr(I)), DOMString(Items[I])); 175 177 Flush; 176 178 end; … … 185 187 end; 186 188 189 function TLastOpenedList.GetFirstFileName: string; 190 begin 191 if Items.Count > 0 then Result := Items[0] 192 else Result := ''; 193 end; 194 187 195 end. 188 196 -
trunk/Packages/Common/UListViewSort.pas
r15 r25 1 1 unit UListViewSort; 2 2 3 // Date: 2010-11-03 4 5 {$mode delphi} 3 // Date: 2019-05-17 6 4 7 5 interface 8 6 9 7 uses 10 {$IFDEF Windows}Windows, CommCtrl, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,11 Controls, DateUtils, Dialogs, SpecializedList,Forms, Grids, StdCtrls, ExtCtrls,12 LclIntf, L Messages, LclType, LResources;8 {$IFDEF Windows}Windows, CommCtrl, LMessages, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils, 9 Controls, DateUtils, Dialogs, Forms, Grids, StdCtrls, ExtCtrls, 10 LclIntf, LclType, LResources, Generics.Collections, Generics.Defaults; 13 11 14 12 type … … 19 17 TCompareEvent = function (Item1, Item2: TObject): Integer of object; 20 18 TListFilterEvent = procedure (ListViewSort: TListViewSort) of object; 19 20 TObjects = TObjectList<TObject>; 21 21 22 22 { TListViewSort } … … 52 52 {$ENDIF} 53 53 public 54 List: TListObject;55 Source: TListObject;54 Source: TObjects; 55 List: TObjects; 56 56 constructor Create(AOwner: TComponent); override; 57 57 destructor Destroy; override; … … 81 81 FOnChange: TNotifyEvent; 82 82 FStringGrid1: TStringGrid; 83 procedure DoOnChange; 83 84 procedure GridDoOnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); 84 85 procedure GridDoOnResize(Sender: TObject); … … 90 91 function TextEnteredColumn(Index: Integer): Boolean; 91 92 function GetColValue(Index: Integer): string; 93 procedure Reset; 92 94 property StringGrid: TStringGrid read FStringGrid1 write FStringGrid1; 93 95 published … … 98 100 end; 99 101 102 { TListViewEx } 103 104 TListViewEx = class(TWinControl) 105 private 106 FFilter: TListViewFilter; 107 FListView: TListView; 108 FListViewSort: TListViewSort; 109 procedure ResizeHanlder; 110 public 111 constructor Create(TheOwner: TComponent); override; 112 destructor Destroy; override; 113 published 114 property ListView: TListView read FListView write FListView; 115 property ListViewSort: TListViewSort read FListViewSort write FListViewSort; 116 property Filter: TListViewFilter read FFilter write FFilter; 117 property Visible; 118 end; 119 100 120 procedure Register; 101 121 … … 105 125 procedure Register; 106 126 begin 107 RegisterComponents('Common', [TListViewSort, TListViewFilter]); 127 RegisterComponents('Common', [TListViewSort, TListViewFilter, TListViewEx]); 128 end; 129 130 { TListViewEx } 131 132 procedure TListViewEx.ResizeHanlder; 133 begin 134 end; 135 136 constructor TListViewEx.Create(TheOwner: TComponent); 137 begin 138 inherited Create(TheOwner); 139 Filter := TListViewFilter.Create(Self); 140 Filter.Parent := Self; 141 Filter.Align := alBottom; 142 ListView := TListView.Create(Self); 143 ListView.Parent := Self; 144 ListView.Align := alClient; 145 ListViewSort := TListViewSort.Create(Self); 146 ListViewSort.ListView := ListView; 147 end; 148 149 destructor TListViewEx.Destroy; 150 begin 151 inherited; 108 152 end; 109 153 110 154 { TListViewFilter } 155 156 procedure TListViewFilter.DoOnChange; 157 begin 158 if Assigned(FOnChange) then FOnChange(Self); 159 end; 111 160 112 161 procedure TListViewFilter.GridDoOnKeyUp(Sender: TObject; var Key: Word; 113 162 Shift: TShiftState); 114 163 begin 115 if Assigned(FOnChange) then 116 FOnChange(Self); 164 DoOnChange; 117 165 end; 118 166 … … 142 190 var 143 191 I: Integer; 192 R: TRect; 144 193 begin 145 194 with FStringGrid1 do begin 146 Options := Options - [goEditing, goAlwaysShowEditor];147 //Columns.Clear;148 195 while Columns.Count > ListView.Columns.Count do Columns.Delete(Columns.Count - 1); 149 196 while Columns.Count < ListView.Columns.Count do Columns.Add; 150 197 for I := 0 to ListView.Columns.Count - 1 do begin 151 198 Columns[I].Width := ListView.Columns[I].Width; 199 if Selection.Left = I then begin 200 R := CellRect(I, 0); 201 Editor.Left := R.Left + 2; 202 Editor.Width := R.Width - 4; 203 end; 152 204 end; 153 Options := Options + [goEditing, goAlwaysShowEditor];154 205 end; 155 206 end; … … 182 233 Result := StringGrid.Cells[Index, 0] 183 234 else Result := ''; 235 end; 236 237 procedure TListViewFilter.Reset; 238 var 239 I: Integer; 240 begin 241 with StringGrid do 242 for I := 0 to ColCount - 1 do 243 Cells[I, 0] := ''; 244 DoOnChange; 184 245 end; 185 246 … … 274 335 end; 275 336 337 var 338 ListViewSortCompare: TCompareEvent; 339 340 function ListViewCompare(constref Item1, Item2: TObject): Integer; 341 begin 342 Result := ListViewSortCompare(Item1, Item2); 343 end; 344 276 345 procedure TListViewSort.Sort(Compare: TCompareEvent); 277 346 begin 347 // TODO: Because TFLGObjectList compare handler is not class method, 348 // it is necessary to use simple function compare handler with local variable 349 ListViewSortCompare := Compare; 278 350 if (List.Count > 0) then 279 List.Sort( Compare);351 List.Sort(TComparer<TObject>.Construct(ListViewCompare)); 280 352 end; 281 353 … … 283 355 begin 284 356 if Assigned(FOnFilter) then FOnFilter(Self) 285 else if Assigned(Source) then 286 List.Assign(Source) else 357 else if Assigned(Source) then begin 287 358 List.Clear; 359 List.AddRange(Source); 360 end else List.Clear; 288 361 if ListView.Items.Count <> List.Count then 289 362 ListView.Items.Count := List.Count; … … 340 413 begin 341 414 inherited; 342 List := T ListObject.Create;415 List := TObjects.Create; 343 416 List.OwnsObjects := False; 344 417 end; … … 346 419 destructor TListViewSort.Destroy; 347 420 begin 348 List.Free;421 FreeAndNil(List); 349 422 inherited; 350 423 end; … … 381 454 ItemLeft := Item.Left; 382 455 ItemLeft := 23; // Windows 7 workaround 383 456 384 457 Rect1.Left := ItemLeft - CheckWidth - BiasLeft + 1 + XBias; 385 458 //ShowMessage(IntToStr(Tp1.Y) + ', ' + IntToStr(BiasTop) + ', ' + IntToStr(XBias)); … … 480 553 FHeaderHandle := ListView_GetHeader(FListView.Handle); 481 554 for I := 0 to FListView.Columns.Count - 1 do begin 555 {$push}{$warn 5057 off} 482 556 FillChar(Item, SizeOf(THDItem), 0); 557 {$pop} 483 558 Item.Mask := HDI_FORMAT; 484 559 Header_GetItem(FHeaderHandle, I, Item); -
trunk/Packages/Common/UMemory.pas
r15 r25 1 1 unit UMemory; 2 3 {$mode Delphi}{$H+}4 2 5 3 interface … … 44 42 end; 45 43 44 46 45 implementation 47 46 … … 50 49 procedure TPositionMemory.SetSize(AValue: Integer); 51 50 begin 52 inherited SetSize(AValue);51 inherited; 53 52 if FPosition > FSize then FPosition := FSize; 54 53 end; … … 107 106 begin 108 107 Size := 0; 109 inherited Destroy;108 inherited; 110 109 end; 111 110 112 111 procedure TMemory.WriteMemory(Position: Integer; Memory: TMemory); 113 112 begin 114 Move(Memory.FData, PByte( @FData+ Position)^, Memory.Size);113 Move(Memory.FData, PByte(PByte(@FData) + Position)^, Memory.Size); 115 114 end; 116 115 117 116 procedure TMemory.ReadMemory(Position: Integer; Memory: TMemory); 118 117 begin 119 Move(PByte( @FData+ Position)^, Memory.FData, Memory.Size);118 Move(PByte(PByte(@FData) + Position)^, Memory.FData, Memory.Size); 120 119 end; 121 120 -
trunk/Packages/Common/UPersistentForm.pas
r20 r25 1 1 unit UPersistentForm; 2 2 3 {$mode delphi} 4 5 // Date: 2015-04-18 3 // Date: 2020-11-26 6 4 7 5 interface 8 6 9 7 uses 10 Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls; 8 Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls, 9 ExtCtrls, LCLType; 11 10 12 11 type … … 25 24 FormRestoredSize: TRect; 26 25 FormWindowState: TWindowState; 26 FormFullScreen: Boolean; 27 27 Form: TForm; 28 28 procedure LoadFromRegistry(RegistryContext: TRegistryContext); … … 30 30 function CheckEntireVisible(Rect: TRect): TRect; 31 31 function CheckPartVisible(Rect: TRect; Part: Integer): TRect; 32 procedure Load(Form: TForm; DefaultMaximized: Boolean = False); 32 procedure Load(Form: TForm; DefaultMaximized: Boolean = False; 33 DefaultFullScreen: Boolean = False); 33 34 procedure Save(Form: TForm); 34 35 constructor Create(AOwner: TComponent); override; 36 procedure SetFullScreen(State: Boolean); 35 37 property RegistryContext: TRegistryContext read FRegistryContext 36 38 write FRegistryContext; … … 42 44 procedure Register; 43 45 46 44 47 implementation 45 46 48 47 49 procedure Register; … … 71 73 end; 72 74 75 if (Control is TPanel) then begin 76 with Form, TRegistryEx.Create do 77 try 78 RootKey := RegistryContext.RootKey; 79 OpenKey(RegistryContext.Key + '\Forms\' + Form.Name + '\' + Control.Name, True); 80 if (TPanel(Control).Align = alRight) or (TPanel(Control).Align = alLeft) then begin 81 if ValueExists('Width') then 82 TPanel(Control).Width := ReadInteger('Width'); 83 end; 84 if (TPanel(Control).Align = alTop) or (TPanel(Control).Align = alBottom) then begin 85 if ValueExists('Height') then 86 TPanel(Control).Height := ReadInteger('Height'); 87 end; 88 finally 89 Free; 90 end; 91 end; 92 73 93 if Control is TWinControl then begin 74 94 WinControl := TWinControl(Control); … … 95 115 for I := 0 to TListView(Control).Columns.Count - 1 do begin 96 116 WriteInteger('ColWidth' + IntToStr(I), TListView(Control).Columns[I].Width); 117 end; 118 finally 119 Free; 120 end; 121 end; 122 123 if (Control is TPanel) then begin 124 with Form, TRegistryEx.Create do 125 try 126 RootKey := RegistryContext.RootKey; 127 OpenKey(RegistryContext.Key + '\Forms\' + Form.Name + '\' + Control.Name, True); 128 if (TPanel(Control).Align = alRight) or (TPanel(Control).Align = alLeft) then begin 129 WriteInteger('Width', TPanel(Control).Width); 130 end; 131 if (TPanel(Control).Align = alTop) or (TPanel(Control).Align = alBottom) then begin 132 WriteInteger('Height', TPanel(Control).Height); 97 133 end; 98 134 finally … … 134 170 + FormRestoredSize.Top; 135 171 // Other state 136 FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(wsNormal))); 172 FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState))); 173 FormFullScreen := ReadBoolWithDefault('FullScreen', FormFullScreen); 137 174 finally 138 175 Free; … … 158 195 // Other state 159 196 WriteInteger('WindowState', Integer(FormWindowState)); 197 WriteBool('FullScreen', FormFullScreen); 160 198 finally 161 199 Free; … … 215 253 end; 216 254 217 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False); 255 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False; 256 DefaultFullScreen: Boolean = False); 218 257 begin 219 258 Self.Form := Form; … … 223 262 FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2, 224 263 (Screen.Height - Form.Height) div 2, Form.Width, Form.Height); 264 FormWindowState := Form.WindowState; 265 FormFullScreen := DefaultFullScreen; 225 266 226 267 LoadFromRegistry(RegistryContext); … … 242 283 Form.BoundsRect := FormNormalSize; 243 284 end; 285 if FormFullScreen then SetFullScreen(True); 244 286 LoadControl(Form); 245 287 end; … … 249 291 Self.Form := Form; 250 292 FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height); 251 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 252 Form.RestoredHeight); 293 if not FormFullScreen then 294 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 295 Form.RestoredHeight); 253 296 FormWindowState := Form.WindowState; 254 297 SaveToRegistry(RegistryContext); … … 265 308 end; 266 309 310 procedure TPersistentForm.SetFullScreen(State: Boolean); 311 begin 312 if State then begin 313 FormFullScreen := True; 314 FormNormalSize := Form.BoundsRect; 315 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 316 Form.RestoredHeight); 317 FormWindowState := Form.WindowState; 318 ShowWindow(Form.Handle, SW_SHOWFULLSCREEN); 319 {$IFDEF WINDOWS} 320 Form.BorderStyle := bsNone; 321 {$ENDIF} 322 end else begin 323 FormFullScreen := False; 324 {$IFDEF WINDOWS} 325 Form.BorderStyle := bsSizeable; 326 {$ENDIF} 327 ShowWindow(Form.Handle, SW_SHOWNORMAL); 328 if FormWindowState = wsNormal then begin 329 Form.BoundsRect := FormNormalSize; 330 end else 331 if FormWindowState = wsMaximized then begin 332 Form.BoundsRect := FormRestoredSize; 333 Form.WindowState := wsMaximized; 334 end; 335 end; 336 end; 337 267 338 end. 268 339 -
trunk/Packages/Common/UPool.pas
r10 r25 1 1 unit UPool; 2 2 3 {$mode Delphi}{$H+}4 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, syncobjs, SpecializedList, UThreading;6 Classes, SysUtils, syncobjs, Generics.Collections, UThreading; 9 7 10 8 type … … 22 20 function NewItemObject: TObject; virtual; 23 21 public 24 Items: T ListObject;25 FreeItems: T ListObject;22 Items: TObjectList<TObject>; 23 FreeItems: TObjectList<TObject>; 26 24 function Acquire: TObject; virtual; 27 25 procedure Release(Item: TObject); virtual; … … 108 106 constructor TThreadedPool.Create; 109 107 begin 110 inherited Create;108 inherited; 111 109 Lock := TCriticalSection.Create; 112 110 end; … … 116 114 TotalCount := 0; 117 115 Lock.Free; 118 inherited Destroy;116 inherited; 119 117 end; 120 118 … … 185 183 begin 186 184 inherited; 187 Items := T ListObject.Create;188 FreeItems := T ListObject.Create;185 Items := TObjectList<TObject>.Create; 186 FreeItems := TObjectList<TObject>.Create; 189 187 FreeItems.OwnsObjects := False; 190 188 FReleaseEvent := TEvent.Create(nil, False, False, ''); -
trunk/Packages/Common/UPrefixMultiplier.pas
r10 r25 2 2 3 3 // Date: 2010-06-01 4 5 {$mode delphi}6 4 7 5 interface … … 21 19 { TPrefixMultiplier } 22 20 23 TPrefixMultiplier = class 21 TPrefixMultiplier = class(TComponent) 24 22 private 25 function TruncateDigits(Value: Double;Digits:Integer=3):Double;23 function TruncateDigits(Value: Double; Digits: Integer = 3): Double; 26 24 public 27 25 function Add(Value: Double; PrefixMultipliers: TPrefixMultiplierDef; … … 72 70 ); 73 71 72 procedure Register; 73 74 74 75 implementation 76 77 procedure Register; 78 begin 79 RegisterComponents('Common', [TPrefixMultiplier]); 80 end; 75 81 76 82 { TPrefixMultiplier } … … 92 98 end; 93 99 94 function TPrefixMultiplier.Add(Value: Double;PrefixMultipliers:TPrefixMultiplierDef95 ; UnitText:string;Digits:Integer):string;100 function TPrefixMultiplier.Add(Value: Double; PrefixMultipliers: TPrefixMultiplierDef 101 ; UnitText:string; Digits: Integer): string; 96 102 var 97 103 I: Integer; -
trunk/Packages/Common/URegistry.pas
r20 r25 1 1 unit URegistry; 2 3 {$MODE Delphi}4 2 5 3 interface … … 17 15 RootKey: HKEY; 18 16 Key: string; 17 class function Create(RootKey: TRegistryRoot; Key: string): TRegistryContext; static; overload; 18 class function Create(RootKey: HKEY; Key: string): TRegistryContext; static; overload; 19 19 class operator Equal(A, B: TRegistryContext): Boolean; 20 function Create(RootKey: TRegistryRoot; Key: string): TRegistryContext; overload;21 function Create(RootKey: HKEY; Key: string): TRegistryContext; overload;22 20 end; 23 21 … … 29 27 procedure SetCurrentContext(AValue: TRegistryContext); 30 28 public 29 function ReadChar(const Name: string): Char; 30 procedure WriteChar(const Name: string; Value: Char); 31 31 function ReadBoolWithDefault(const Name: string; 32 32 DefaultValue: Boolean): Boolean; 33 33 function ReadIntegerWithDefault(const Name: string; DefaultValue: Integer): Integer; 34 34 function ReadStringWithDefault(const Name: string; DefaultValue: string): string; 35 function ReadCharWithDefault(const Name: string; DefaultValue: Char): Char; 35 36 function ReadFloatWithDefault(const Name: string; 36 37 DefaultValue: Double): Double; … … 41 42 function GetValue(const Name: string; const DefaultValue: Boolean): Boolean; overload; 42 43 function GetValue(const Name: string; const DefaultValue: Double): Double; overload; 44 function GetValue(const Name: string; const DefaultValue: Char): Char; overload; 43 45 procedure SetValue(const Name: string; const Value: Integer); overload; 44 46 procedure SetValue(const Name: string; const Value: string); overload; 45 47 procedure SetValue(const Name: string; const Value: Boolean); overload; 46 48 procedure SetValue(const Name: string; const Value: Double); overload; 49 procedure SetValue(const Name: string; const Value: Char); overload; 47 50 property CurrentContext: TRegistryContext read GetCurrentContext write SetCurrentContext; 48 51 end; … … 53 56 HKEY_CURRENT_CONFIG, HKEY_DYN_DATA); 54 57 58 55 59 implementation 56 60 57 58 61 { TRegistryContext } 59 62 … … 63 66 end; 64 67 65 function TRegistryContext.Create(RootKey: TRegistryRoot; Key: string): TRegistryContext;68 class function TRegistryContext.Create(RootKey: TRegistryRoot; Key: string): TRegistryContext; 66 69 begin 67 70 Result.RootKey := RegistryRootHKEY[RootKey]; … … 69 72 end; 70 73 71 function TRegistryContext.Create(RootKey: HKEY; Key: string): TRegistryContext;74 class function TRegistryContext.Create(RootKey: HKEY; Key: string): TRegistryContext; 72 75 begin 73 76 Result.RootKey := RootKey; … … 97 100 end; 98 101 102 function TRegistryEx.ReadCharWithDefault(const Name: string; DefaultValue: Char 103 ): Char; 104 begin 105 if ValueExists(Name) then Result := ReadChar(Name) 106 else begin 107 WriteChar(Name, DefaultValue); 108 Result := DefaultValue; 109 end; 110 end; 111 99 112 function TRegistryEx.ReadFloatWithDefault(const Name: string; 100 113 DefaultValue: Double): Double; … … 131 144 end; 132 145 146 function TRegistryEx.GetValue(const Name: string; const DefaultValue: Char 147 ): Char; 148 begin 149 Result := ReadCharWithDefault(Name, DefaultValue); 150 end; 151 133 152 procedure TRegistryEx.SetValue(const Name: string; const Value: Integer); 134 153 begin … … 149 168 begin 150 169 WriteFloat(Name, Value); 170 end; 171 172 procedure TRegistryEx.SetValue(const Name: string; const Value: Char); 173 begin 174 WriteChar(Name, Value); 151 175 end; 152 176 … … 171 195 function TRegistryEx.OpenKey(const Key: string; CanCreate: Boolean): Boolean; 172 196 begin 173 {$IFDEF Linux}174 CloseKey;197 {$IFDEF UNIX} 198 //CloseKey; 175 199 {$ENDIF} 176 200 Result := inherited OpenKey(Key, CanCreate); … … 179 203 function TRegistryEx.GetCurrentContext: TRegistryContext; 180 204 begin 181 Result.Key := CurrentPath;205 Result.Key := String(CurrentPath); 182 206 Result.RootKey := RootKey; 183 207 end; … … 189 213 end; 190 214 215 function TRegistryEx.ReadChar(const Name: string): Char; 216 var 217 S: string; 218 begin 219 S := ReadString(Name); 220 if Length(S) > 0 then Result := S[1] 221 else Result := #0; 222 end; 223 224 procedure TRegistryEx.WriteChar(const Name: string; Value: Char); 225 begin 226 WriteString(Name, Value); 227 end; 228 191 229 function TRegistryEx.ReadBoolWithDefault(const Name: string; 192 230 DefaultValue: Boolean): Boolean; -
trunk/Packages/Common/UResetableThread.pas
r10 r25 1 1 unit UResetableThread; 2 3 {$mode Delphi}{$H+}4 2 5 3 interface … … 156 154 FThread.Name := 'ResetableThread'; 157 155 FThread.Parent := Self; 158 FThread. Resume;156 FThread.Start; 159 157 end; 160 158 … … 167 165 FreeAndNil(FStopEvent); 168 166 FreeAndNil(FLock); 169 inherited Destroy;167 inherited; 170 168 end; 171 169 … … 286 284 constructor TThreadPool.Create; 287 285 begin 288 inherited Create;286 inherited; 289 287 end; 290 288 … … 293 291 TotalCount := 0; 294 292 WaitForEmpty; 295 inherited Destroy;293 inherited; 296 294 end; 297 295 -
trunk/Packages/Common/UScaleDPI.pas
r15 r25 3 3 { See: http://wiki.lazarus.freepascal.org/High_DPI } 4 4 5 {$mode delphi}{$H+}6 7 5 interface 8 6 9 7 uses 10 Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, StdCtrls,11 Contnrs;8 Classes, Forms, Graphics, Controls, ComCtrls, LCLType, SysUtils, 9 Generics.Collections; 12 10 13 11 type 12 TControlDimensions = class; 14 13 15 14 { TControlDimension } … … 18 17 BoundsRect: TRect; 19 18 FontHeight: Integer; 20 Controls: T ObjectList; // TList<TControlDimension>19 Controls: TControlDimensions; 21 20 // Class specifics 22 21 ButtonSize: TPoint; // TToolBar … … 26 25 constructor Create; 27 26 destructor Destroy; override; 27 end; 28 29 TControlDimensions = class(TObjectList<TControlDimension>) 28 30 end; 29 31 … … 73 75 constructor TControlDimension.Create; 74 76 begin 75 Controls := T ObjectList.Create;77 Controls := TControlDimensions.Create; 76 78 end; 77 79 … … 79 81 begin 80 82 FreeAndNil(Controls); 81 inherited Destroy;83 inherited; 82 84 end; 83 85 … … 212 214 TempBmp: TBitmap; 213 215 Temp: array of TBitmap; 214 NewWidth, NewHeight: integer; 215 I: Integer; 216 begin 217 NewWidth := ScaleX(ImgList.Width, FromDPI.X); 218 NewHeight := ScaleY(ImgList.Height, FromDPI.Y); 219 220 SetLength(Temp, ImgList.Count); 221 for I := 0 to ImgList.Count - 1 do 222 begin 223 TempBmp := TBitmap.Create; 224 TempBmp.PixelFormat := pf32bit; 225 ImgList.GetBitmap(I, TempBmp); 226 Temp[I] := TBitmap.Create; 227 Temp[I].SetSize(NewWidth, NewHeight); 228 Temp[I].PixelFormat := pf32bit; 229 Temp[I].TransparentColor := TempBmp.TransparentColor; 230 //Temp[I].TransparentMode := TempBmp.TransparentMode; 231 Temp[I].Transparent := True; 232 Temp[I].Canvas.Brush.Style := bsSolid; 233 Temp[I].Canvas.Brush.Color := Temp[I].TransparentColor; 234 Temp[I].Canvas.FillRect(0, 0, Temp[I].Width, Temp[I].Height); 235 236 if (Temp[I].Width = 0) or (Temp[I].Height = 0) then Continue; 237 Temp[I].Canvas.StretchDraw(Rect(0, 0, Temp[I].Width, Temp[I].Height), TempBmp); 238 TempBmp.Free; 239 end; 240 241 ImgList.Clear; 242 ImgList.Width := NewWidth; 243 ImgList.Height := NewHeight; 244 245 for I := 0 to High(Temp) do 246 begin 247 ImgList.Add(Temp[I], nil); 248 Temp[i].Free; 216 NewWidth: Integer; 217 NewHeight: Integer; 218 I: Integer; 219 begin 220 ImgList.BeginUpdate; 221 try 222 NewWidth := ScaleX(ImgList.Width, FromDPI.X); 223 NewHeight := ScaleY(ImgList.Height, FromDPI.Y); 224 225 Temp := nil; 226 SetLength(Temp, ImgList.Count); 227 for I := 0 to ImgList.Count - 1 do 228 begin 229 TempBmp := TBitmap.Create; 230 try 231 TempBmp.PixelFormat := pf32bit; 232 ImgList.GetBitmap(I, TempBmp); 233 Temp[I] := TBitmap.Create; 234 Temp[I].SetSize(NewWidth, NewHeight); 235 {$IFDEF UNIX} 236 Temp[I].PixelFormat := pf24bit; 237 {$ELSE} 238 Temp[I].PixelFormat := pf32bit; 239 {$ENDIF} 240 Temp[I].TransparentColor := TempBmp.TransparentColor; 241 //Temp[I].TransparentMode := TempBmp.TransparentMode; 242 Temp[I].Transparent := True; 243 Temp[I].Canvas.Brush.Style := bsSolid; 244 Temp[I].Canvas.Brush.Color := Temp[I].TransparentColor; 245 Temp[I].Canvas.FillRect(0, 0, Temp[I].Width, Temp[I].Height); 246 247 if (Temp[I].Width = 0) or (Temp[I].Height = 0) then Continue; 248 Temp[I].Canvas.StretchDraw(Rect(0, 0, Temp[I].Width, Temp[I].Height), TempBmp); 249 finally 250 TempBmp.Free; 251 end; 252 end; 253 254 ImgList.Clear; 255 ImgList.Width := NewWidth; 256 ImgList.Height := NewHeight; 257 258 for I := 0 to High(Temp) do 259 begin 260 ImgList.Add(Temp[I], nil); 261 Temp[i].Free; 262 end; 263 finally 264 ImgList.EndUpdate; 249 265 end; 250 266 end; … … 284 300 WinControl: TWinControl; 285 301 ToolBarControl: TToolBar; 286 OldAnchors: TAnchors; 287 OldAutoSize: Boolean; 288 begin 302 //OldAnchors: TAnchors; 303 //OldAutoSize: Boolean; 304 begin 305 //if not (Control is TCustomPage) then 306 // Resize childs first 307 if Control is TWinControl then begin 308 WinControl := TWinControl(Control); 309 if WinControl.ControlCount > 0 then begin 310 for I := 0 to WinControl.ControlCount - 1 do begin 311 if WinControl.Controls[I] is TControl then begin 312 ScaleControl(WinControl.Controls[I], FromDPI); 313 end; 314 end; 315 end; 316 end; 317 289 318 //if Control is TMemo then Exit; 290 319 //if Control is TForm then … … 312 341 with TCoolBar(Control) do begin 313 342 BeginUpdate; 314 for I := 0 to Bands.Count - 1 do 315 with Bands[I] do begin 316 MinWidth := ScaleX(MinWidth, FromDPI.X); 317 MinHeight := ScaleY(MinHeight, FromDPI.Y); 318 Width := ScaleX(Width, FromDPI.X); 319 //Control.Invalidate; 343 try 344 for I := 0 to Bands.Count - 1 do 345 with Bands[I] do begin 346 MinWidth := ScaleX(MinWidth, FromDPI.X); 347 MinHeight := ScaleY(MinHeight, FromDPI.Y); 348 // Workaround to bad band width auto sizing 349 //Width := ScaleX(Width, FromDPI.X); 350 Width := ScaleX(Control.Width + 28, FromDPI.X); 351 //Control.Invalidate; 352 end; 353 // Workaround for bad autosizing of coolbar 354 if AutoSize then begin 355 AutoSize := False; 356 Height := ScaleY(Height, FromDPI.Y); 357 AutoSize := True; 320 358 end; 321 EndUpdate; 359 finally 360 EndUpdate; 361 end; 322 362 end; 323 363 … … 330 370 end; 331 371 332 //if not (Control is TCustomPage) then333 if Control is TWinControl then begin334 WinControl := TWinControl(Control);335 if WinControl.ControlCount > 0 then begin336 for I := 0 to WinControl.ControlCount - 1 do begin337 if WinControl.Controls[I] is TControl then begin338 ScaleControl(WinControl.Controls[I], FromDPI);339 end;340 end;341 end;342 end;343 372 //if Control is TForm then 344 373 // Control.EnableAutoSizing; -
trunk/Packages/Common/USyncCounter.pas
r10 r25 1 1 unit USyncCounter; 2 3 {$mode delphi}4 2 5 3 interface … … 25 23 procedure Assign(Source: TSyncCounter); 26 24 end; 25 27 26 28 27 implementation … … 69 68 begin 70 69 Lock.Free; 71 inherited Destroy;70 inherited; 72 71 end; 73 72 -
trunk/Packages/Common/UTheme.pas
r16 r25 5 5 uses 6 6 Classes, SysUtils, Graphics, ComCtrls, Controls, ExtCtrls, Menus, StdCtrls, 7 Spin, Forms, Contnrs, Grids;7 Spin, Forms, Generics.Collections, Grids; 8 8 9 9 type … … 19 19 { TThemes } 20 20 21 TThemes = class(TObjectList )21 TThemes = class(TObjectList<TTheme>) 22 22 function AddNew(Name: string): TTheme; 23 23 function FindByName(Name: string): TTheme; … … 42 42 end; 43 43 44 const 45 ThemeNameSystem = 'System'; 46 ThemeNameLight = 'Light'; 47 ThemeNameDark = 'Dark'; 48 44 49 procedure Register; 50 45 51 46 52 implementation … … 74 80 procedure TThemes.LoadToStrings(Strings: TStrings); 75 81 var 76 Theme: TTheme;82 I: Integer; 77 83 begin 78 Strings.Clear; 79 for Theme in Self do 80 Strings.AddObject(Theme.Name, Theme); 84 Strings.BeginUpdate; 85 try 86 while Strings.Count < Count do Strings.Add(''); 87 while Strings.Count > Count do Strings.Delete(Strings.Count - 1); 88 for I := 0 to Count - 1 do begin 89 Strings[I] := Items[I].Name; 90 Strings.Objects[I] := Items[I]; 91 end; 92 finally 93 Strings.EndUpdate; 94 end; 81 95 end; 82 96 … … 97 111 inherited; 98 112 Themes := TThemes.Create; 99 with Themes.AddNew( 'System') do begin113 with Themes.AddNew(ThemeNameSystem) do begin 100 114 ColorWindow := clWindow; 101 115 ColorWindowText := clWindowText; … … 105 119 end; 106 120 Theme := TTheme(Themes.First); 107 with Themes.AddNew( 'Dark') do begin121 with Themes.AddNew(ThemeNameDark) do begin 108 122 ColorWindow := RGBToColor($20, $20, $20); 109 123 ColorWindowText := clWhite; … … 112 126 ColorControlSelected := RGBToColor(96, 125, 155); 113 127 end; 114 with Themes.AddNew( 'Light') do begin128 with Themes.AddNew(ThemeNameLight) do begin 115 129 ColorWindow := clWhite; 116 130 ColorWindowText := clBlack; … … 123 137 destructor TThemeManager.Destroy; 124 138 begin 125 Themes.Free;126 inherited Destroy;139 FreeAndNil(Themes); 140 inherited; 127 141 end; 128 142 … … 132 146 I: Integer; 133 147 begin 134 for I := 0 to Component.ComponentCount - 1 do 135 ApplyTheme(Component.Components[I]); 148 if Component is TWinControl then begin 149 for I := 0 to TWinControl(Component).ControlCount - 1 do 150 ApplyTheme(TWinControl(Component).Controls[I]); 151 end; 136 152 137 153 if Component is TControl then begin … … 139 155 if (Control is TEdit) or (Control is TSpinEdit) or (Control is TComboBox) and 140 156 (Control is TMemo) or (Control is TListView) or (Control is TCustomDrawGrid) or 141 (Control is TCheckBox) then begin157 (Control is TCheckBox) or (Control is TPageControl) or (Control is TRadioButton) then begin 142 158 Control.Color := FTheme.ColorWindow; 143 159 Control.Font.Color := FTheme.ColorWindowText; … … 151 167 (Control as TCustomDrawGrid).Editor.Font.Color := FTheme.ColorWindowText; 152 168 end; 169 170 if Control is TPageControl then begin 171 for I := 0 to TPageControl(Component).PageCount - 1 do 172 ApplyTheme(TPageControl(Component).Pages[I]); 173 end; 174 175 if Control is TCoolBar then begin 176 (Control as TCoolBar).Themed := False; 177 end; 153 178 end; 154 179 end; … … 156 181 procedure TThemeManager.UseTheme(Form: TForm); 157 182 begin 158 if not Used and (FTheme.Name = 'System') then Exit;183 if not Used and (FTheme.Name = ThemeNameSystem) then Exit; 159 184 ApplyTheme(Form); 160 185 Used := True; -
trunk/Packages/Common/UThreading.pas
r10 r25 1 1 unit UThreading; 2 2 3 {$mode delphi}4 5 3 interface 6 4 7 5 uses 8 Classes, SysUtils, Forms, Contnrs, SyncObjs;6 Classes, SysUtils, Forms, Generics.Collections, SyncObjs; 9 7 10 8 type 11 9 TExceptionEvent = procedure (Sender: TObject; E: Exception) of object; 12 10 TMethodCall = procedure of object; 13 14 11 15 12 { TVirtualThread } … … 22 19 function GetSuspended: Boolean; virtual; abstract; 23 20 function GetTerminated: Boolean; virtual; abstract; 24 function GetThreadId: Integer; virtual; abstract;21 function GetThreadId: TThreadID; virtual; abstract; 25 22 procedure SetFreeOnTerminate(const AValue: Boolean); virtual; abstract; 26 23 procedure SetPriority(const AValue: TThreadPriority); virtual; abstract; … … 30 27 Name: string; 31 28 procedure Execute; virtual; abstract; 32 procedure Resume; virtual; abstract;33 procedure Suspend; virtual; abstract;34 29 procedure Start; virtual; abstract; 35 30 procedure Terminate; virtual; abstract; … … 44 39 property Terminated: Boolean read GetTerminated write SetTerminated; 45 40 property Finished: Boolean read GetFinished; 46 property ThreadId: Integerread GetThreadId;41 property ThreadId: TThreadID read GetThreadId; 47 42 end; 48 43 … … 70 65 function GetSuspended: Boolean; override; 71 66 function GetTerminated: Boolean; override; 72 function GetThreadId: Integer; override;67 function GetThreadId: TThreadID; override; 73 68 procedure SetFreeOnTerminate(const AValue: Boolean); override; 74 69 procedure SetPriority(const AValue: TThreadPriority); override; … … 81 76 procedure Sleep(Delay: Integer); override; 82 77 procedure Execute; override; 83 procedure Resume; override;84 procedure Suspend; override;85 78 procedure Start; override; 86 79 procedure Terminate; override; … … 106 99 { TThreadList } 107 100 108 TThreadList = class(TObjectList )109 function FindById(Id: Integer): TVirtualThread;101 TThreadList = class(TObjectList<TVirtualThread>) 102 function FindById(Id: TThreadID): TVirtualThread; 110 103 constructor Create; virtual; 111 104 end; … … 134 127 Thread.FreeOnTerminate := False; 135 128 Thread.Method := Method; 136 Thread. Resume;129 Thread.Start; 137 130 while (Thread.State = ttsRunning) or (Thread.State = ttsReady) do begin 138 131 if MainThreadID = ThreadID then Application.ProcessMessages; … … 155 148 Thread.Method := Method; 156 149 Thread.OnFinished := CallBack; 157 Thread. Resume;150 Thread.Start; 158 151 //if Thread.State = ttsExceptionOccured then 159 152 // raise Exception.Create(Thread.ExceptionMessage); … … 168 161 if MainThreadID = ThreadID then Method 169 162 else begin 170 Thread := ThreadList.FindById(ThreadID); 163 try 164 ThreadListLock.Acquire; 165 Thread := ThreadList.FindById(ThreadID); 166 finally 167 ThreadListLock.Release; 168 end; 171 169 if Assigned(Thread) then begin 172 170 Thread.Synchronize(Method); … … 177 175 { TThreadList } 178 176 179 function TThreadList.FindById(Id: Integer): TVirtualThread;177 function TThreadList.FindById(Id: TThreadID): TVirtualThread; 180 178 var 181 179 I: Integer; 182 180 begin 183 181 I := 0; 184 while (I < ThreadList.Count) and (T VirtualThread(ThreadList[I]).ThreadID <> Id) do182 while (I < ThreadList.Count) and (ThreadList[I].ThreadID <> Id) do 185 183 Inc(I); 186 if I < ThreadList.Count then Result := T VirtualThread(ThreadList[I])184 if I < ThreadList.Count then Result := ThreadList[I] 187 185 else Result := nil; 188 186 end; … … 237 235 end; 238 236 239 function TListedThread.GetThreadId: Integer;237 function TListedThread.GetThreadId: TThreadID; 240 238 begin 241 239 Result := FThread.ThreadID; … … 294 292 end; 295 293 FThread.Free; 296 inherited Destroy;294 inherited; 297 295 end; 298 296 … … 313 311 procedure TListedThread.Execute; 314 312 begin 315 end;316 317 procedure TListedThread.Resume;318 begin319 FThread.Resume;320 end;321 322 procedure TListedThread.Suspend;323 begin324 FThread.Suspend;325 313 end; 326 314 -
trunk/Packages/Common/UURI.pas
r10 r25 2 2 3 3 // Date: 2011-04-04 4 5 {$mode delphi}6 4 7 5 interface … … 85 83 end; 86 84 85 87 86 implementation 88 87 89 88 function LeftCutString(var Source: string; out Output: string; Delimiter: string; Allowed: string = ''): Boolean; 90 89 var 91 I , J: Integer;90 I: Integer; 92 91 Matched: Boolean; 93 92 begin … … 113 112 function RightCutString(var Source: string; out Output: string; Delimiter: string; Allowed: string = ''): Boolean; 114 113 var 115 I , J: Integer;114 I: Integer; 116 115 Matched: Boolean; 117 116 begin … … 183 182 begin 184 183 Items.Free; 185 inherited Destroy;184 inherited; 186 185 end; 187 186 … … 202 201 203 202 procedure TURI.SetAsString(Value: string); 204 var205 HostAddr: string;206 HostPort: string;207 203 begin 208 204 LeftCutString(Value, Scheme, ':'); … … 235 231 begin 236 232 Path.Free; 237 inherited Destroy;233 inherited; 238 234 end; 239 235 … … 246 242 Fragment := TURI(Source).Fragment; 247 243 Query := TURI(Source).Query; 248 end else inherited Assign(Source);244 end else inherited; 249 245 end; 250 246 … … 294 290 destructor TURL.Destroy; 295 291 begin 296 inherited Destroy;292 inherited; 297 293 end; 298 294 … … 347 343 begin 348 344 Directory.Free; 349 inherited Destroy; 350 end; 351 345 inherited; 346 end; 352 347 353 348 end. -
trunk/Packages/Common/UXMLUtils.pas
r15 r25 1 1 unit UXMLUtils; 2 3 {$mode delphi}4 2 5 3 interface … … 7 5 uses 8 6 {$IFDEF WINDOWS}Windows,{$ENDIF} 9 Classes, SysUtils, DateUtils, XMLRead, XMLWrite, DOM;7 Classes, SysUtils, DateUtils, DOM, xmlread; 10 8 11 9 function XMLTimeToDateTime(XMLDateTime: string): TDateTime; 12 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): WideString;10 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): string; 13 11 procedure WriteInteger(Node: TDOMNode; Name: string; Value: Integer); 14 12 procedure WriteInt64(Node: TDOMNode; Name: string; Value: Int64); … … 21 19 function ReadString(Node: TDOMNode; Name: string; DefaultValue: string): string; 22 20 function ReadDateTime(Node: TDOMNode; Name: string; DefaultValue: TDateTime): TDateTime; 21 procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string); 23 22 24 23 25 24 implementation 25 26 procedure ReadXMLFileParser(out Doc: TXMLDocument; FileName: string); 27 var 28 Parser: TDOMParser; 29 Src: TXMLInputSource; 30 InFile: TFileStream; 31 begin 32 try 33 InFile := TFileStream.Create(FileName, fmOpenRead); 34 Src := TXMLInputSource.Create(InFile); 35 Parser := TDOMParser.Create; 36 Parser.Options.PreserveWhitespace := True; 37 Parser.Parse(Src, Doc); 38 finally 39 Src.Free; 40 Parser.Free; 41 InFile.Free; 42 end; 43 end; 26 44 27 45 function GetTimeZoneBias: Integer; … … 30 48 TimeZoneInfo: TTimeZoneInformation; 31 49 begin 50 {$push}{$warn 5057 off} 32 51 case GetTimeZoneInformation(TimeZoneInfo) of 33 TIME_ZONE_ID_STANDARD: Result := TimeZoneInfo.Bias + TimeZoneInfo.StandardBias;34 TIME_ZONE_ID_DAYLIGHT: Result := TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias;52 TIME_ZONE_ID_STANDARD: Result := TimeZoneInfo.Bias + TimeZoneInfo.StandardBias; 53 TIME_ZONE_ID_DAYLIGHT: Result := TimeZoneInfo.Bias + TimeZoneInfo.DaylightBias; 35 54 else 36 55 Result := 0; 37 56 end; 57 {$pop} 38 58 end; 39 59 {$ELSE} … … 45 65 function LeftCutString(var Source: string; out Output: string; Delimiter: string; Allowed: string = ''): Boolean; 46 66 var 47 I , J: Integer;67 I: Integer; 48 68 Matched: Boolean; 49 69 begin … … 99 119 if Pos('Z', XMLDateTime) > 0 then 100 120 LeftCutString(XMLDateTime, Part, 'Z'); 101 SecondFraction := StrToFloat('0' + De cimalSeparator + Part);121 SecondFraction := StrToFloat('0' + DefaultFormatSettings.DecimalSeparator + Part); 102 122 Millisecond := Trunc(SecondFraction * 1000); 103 123 end else begin … … 118 138 end; 119 139 120 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): WideString;140 function DateTimeToXMLTime(Value: TDateTime; ApplyLocalBias: Boolean = True): string; 121 141 const 122 142 Neg: array[Boolean] of string = ('+', '-'); … … 139 159 NewNode: TDOMNode; 140 160 begin 141 NewNode := Node.OwnerDocument.CreateElement( Name);142 NewNode.TextContent := IntToStr(Value);161 NewNode := Node.OwnerDocument.CreateElement(DOMString(Name)); 162 NewNode.TextContent := DOMString(IntToStr(Value)); 143 163 Node.AppendChild(NewNode); 144 164 end; … … 148 168 NewNode: TDOMNode; 149 169 begin 150 NewNode := Node.OwnerDocument.CreateElement( Name);151 NewNode.TextContent := IntToStr(Value);170 NewNode := Node.OwnerDocument.CreateElement(DOMString(Name)); 171 NewNode.TextContent := DOMString(IntToStr(Value)); 152 172 Node.AppendChild(NewNode); 153 173 end; … … 157 177 NewNode: TDOMNode; 158 178 begin 159 NewNode := Node.OwnerDocument.CreateElement( Name);160 NewNode.TextContent := BoolToStr(Value);179 NewNode := Node.OwnerDocument.CreateElement(DOMString(Name)); 180 NewNode.TextContent := DOMString(BoolToStr(Value)); 161 181 Node.AppendChild(NewNode); 162 182 end; … … 166 186 NewNode: TDOMNode; 167 187 begin 168 NewNode := Node.OwnerDocument.CreateElement( Name);169 NewNode.TextContent := Value;188 NewNode := Node.OwnerDocument.CreateElement(DOMString(Name)); 189 NewNode.TextContent := DOMString(Value); 170 190 Node.AppendChild(NewNode); 171 191 end; … … 175 195 NewNode: TDOMNode; 176 196 begin 177 NewNode := Node.OwnerDocument.CreateElement( Name);178 NewNode.TextContent := D ateTimeToXMLTime(Value);197 NewNode := Node.OwnerDocument.CreateElement(DOMString(Name)); 198 NewNode.TextContent := DOMString(DateTimeToXMLTime(Value)); 179 199 Node.AppendChild(NewNode); 180 200 end; … … 185 205 begin 186 206 Result := DefaultValue; 187 NewNode := Node.FindNode( Name);188 if Assigned(NewNode) then 189 Result := StrToInt( NewNode.TextContent);207 NewNode := Node.FindNode(DOMString(Name)); 208 if Assigned(NewNode) then 209 Result := StrToInt(string(NewNode.TextContent)); 190 210 end; 191 211 … … 195 215 begin 196 216 Result := DefaultValue; 197 NewNode := Node.FindNode( Name);198 if Assigned(NewNode) then 199 Result := StrToInt64( NewNode.TextContent);217 NewNode := Node.FindNode(DOMString(Name)); 218 if Assigned(NewNode) then 219 Result := StrToInt64(string(NewNode.TextContent)); 200 220 end; 201 221 … … 205 225 begin 206 226 Result := DefaultValue; 207 NewNode := Node.FindNode( Name);208 if Assigned(NewNode) then 209 Result := StrToBool( NewNode.TextContent);227 NewNode := Node.FindNode(DOMString(Name)); 228 if Assigned(NewNode) then 229 Result := StrToBool(string(NewNode.TextContent)); 210 230 end; 211 231 … … 215 235 begin 216 236 Result := DefaultValue; 217 NewNode := Node.FindNode( Name);218 if Assigned(NewNode) then 219 Result := NewNode.TextContent;237 NewNode := Node.FindNode(DOMString(Name)); 238 if Assigned(NewNode) then 239 Result := string(NewNode.TextContent); 220 240 end; 221 241 … … 226 246 begin 227 247 Result := DefaultValue; 228 NewNode := Node.FindNode( Name);229 if Assigned(NewNode) then 230 Result := XMLTimeToDateTime( NewNode.TextContent);248 NewNode := Node.FindNode(DOMString(Name)); 249 if Assigned(NewNode) then 250 Result := XMLTimeToDateTime(string(NewNode.TextContent)); 231 251 end; 232 252 -
trunk/UCore.lfm
r22 r25 3 3 OnDestroy = DataModuleDestroy 4 4 OldCreateOrder = False 5 Height = 578 6 HorizontalOffset = 533 7 VerticalOffset = 229 8 Width = 817 5 Height = 867 6 HorizontalOffset = 800 7 VerticalOffset = 344 8 Width = 1226 9 PPI = 144 9 10 object ImageList1: TImageList 10 11 Height = 32 11 12 Width = 32 12 left = 36813 top = 17013 Left = 552 14 Top = 255 14 15 Bitmap = { 15 4C690C000000200000002000000061C66E0061C66E0061C66E0061C66E0061C6 16 6E0061C66E0061C66E0061C66E0061C66E0061C66E0061C56E0048B05E0947AF 17 5D4E47AE5C7946AD5B9A47AD5BB046AC5AB045AA589A44A9577944A7564E43A6 18 55095CC06B005CC06B005BBF6B005BBF6A005ABE6A005ABD6A0059BD6A0059BC 19 690058BB690058BB690057BA680061C66E0061C66E0061C66E0061C66E0061C6 20 6E0061C66E0061C66E0061C66E0061C66E0048B15E4E48B05EB147AF5DF647AE 21 5CFF46AD5BFF46AC5AFF46AC5AFF46AB5AFF45A958FF44A857FF43A756FF43A5 22 55F642A454B142A3534E5BBF6A005ABE6A005ABD6A0059BD6A0059BC690058BB 23 690058BB690057BA680057B9680061C66E0061C66E0061C66E0061C66E0061C6 24 6E0061C66E0061C66E0048B25F3648B15FC348B15EFF47B05DFF47AF5CFF5CB8 25 6FFF6CBE7EFF75C286FF79C58BFF79C58AFF74C184FF6ABB7CFF59B26BFF42A4 26 54FF42A353FF41A252FF41A151C3409F503659BD6A0059BC690058BB690058BB 27 690057BA680057B9680056B9680061C66E0061C66E0061C66E0061C66E0061C6 28 6E0061C66E0049B3607848B25FFF48B15EFF55B66AFF72C284FF8ECF9FFF93D1 29 A2FF90D0A0FF8CCF9BFF88CE98FF88CE98FF8BCF9BFF90D0A0FF92D1A2FF8ECE 30 9EFF6FBC7FFF50AA60FF40A050FF409E4FFF3F9D4E7858BB690058BB690057BA 31 680057B9680056B9680055B8670061C66E0061C66E0061C66E0061C66E0049B4 32 600949B360A848B25FFF48B15EFF6ABF7EFF94D2A4FF91D1A1FF8ED09DFF89CE 33 98FF83CD93FF7ECB8DFF79C989FF79C989FF7DCA8DFF83CC92FF88CD98FF8DCF 34 9DFF91D0A1FF94D1A4FF66B676FF3F9D4EFF3F9C4DFF3E9B4CA83D9A4B0957B9 35 680056B9680055B8670055B8670061C66E0061C66E0061C66E0049B4610349B3 36 60B148B25FFF4EB363FF7EC890FF92D1A2FF8ED09DFF87CE96FF7FCC8EFF77C9 37 86FF71C77FFF6CC57BFF69C578FF68C477FF6BC57AFF6FC57FFF75C785FF7DCA 38 8DFF86CC96FF8DCF9DFF92D1A2FF7BC28BFF449F52FF3E9A4BFF3D994AB13C97 39 490355B8670055B8670054B7670061C66E0061C66E0061C66E0049B3608748B2 40 5FFF50B467FF8ACD9BFF91D1A1FF8ACF99FF80CC8FFF76C985FF6DC67CFF67C5 41 76FF63C372FF61C270FF5FC16EFF5FC16EFF5FC06FFF61C170FF64C174FF6AC3 42 7AFF73C683FF7EC98EFF88CD99FF90D0A0FF89CA99FF469F54FF3D9849FF3C96 43 488755B8670054B7670054B6660061C66E0061C66E0049B3603C49B25FFF48B2 44 5FFF83CA94FF91D1A1FF88CE97FF7CCB8BFF70C87FFF67C576FF63C371FF5FC2 45 6EFF5EC16DFF5CC06BFF5CC06BFF5BBF6BFF5BBF6AFF5BBE6BFF5CBE6CFF5EBF 46 6FFF63C073FF7DC98BFF94D2A1FF86CC96FF90D0A0FF80C48FFF3C9749FF3C95 47 48FF3B94473C54B6660053B6660061C66E0049B3600349B360CF48B25FFF6DC1 48 80FF92D1A2FF89CF99FF7CCB8BFF6EC77DFF65C473FF60C36FFF5EC16DFF5DC1 49 6CFF5CC06BFF5CC06BFF5BBF6BFF5BBF6AFF5ABE6AFF5ABD6AFF59BD6AFF5ABC 50 6AFF6CC37CFFEAF7ECFFF6FBF7FF96D3A3FF87CC98FF91D0A2FF66B274FF3B94 51 47FF3B9346CF3A92450353B5660061C66E0049B3605448B25FFF59B86EFF94D1 52 A4FF8DD09DFF80CC8FFF6FC87FFF64C473FF60C36EFF5DC16CFF5DC16CFF5CC0 53 6BFF5CC06BFF5BBF6BFF5BBF6AFF5ABE6AFF5ABD6AFF59BD6AFF59BC69FF6AC2 54 79FFE7F5EAFFFFFFFFFFFFFFFFFFF8FCF9FF9AD4A7FF8CCE9CFF93D1A4FF4FA1 55 5BFF3A9245FF3A91445452B4660061C56E0048B25FBD48B15EFF74C387FF91D1 56 A1FF86CE96FF75C984FF67C575FF60C36EFF5DC16CFF5DC16CFF5CC06BFF5CC0 57 6BFF5BBF6BFF5BBF6AFF5ABE6AFF5ABD6AFF59BD6AFF59BC69FF68C177FFE5F5 58 E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFDFBFFA3D8B0FF90D0A0FF6EB7 59 7CFF3A9144FF399043BD52B4650048B25F1248B15FFC48B05EFF92D1A2FF8DD0 60 9DFF7ECC8DFF6DC67BFF62C371FF5EC16DFF5DC16CFF5CC06BFF5CC06BFF5BBF 61 6BFF5BBF6AFF5ABE6AFF5ABD6AFF59BD6AFF59BC69FF68C177FFE5F5E8FFFFFF 62 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFDFAFF99D3A6FF8BCD9CFF92CF 63 A2FF399043FF398F42FC388E421548B25F5748B15EFF5FBA73FF92D1A2FF88CE 64 98FF76C985FF67C575FF5FC26EFF5DC16CFF5CC06BFF5CC06BFF5BBF6BFF5BBF 65 6AFF5ABE6AFF5ABD6AFF59BD6AFF59BC69FF66C175FFE3F4E6FFFFFFFFFFFFFF 66 FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FCFAFF87CC93FF70C282FF85CB96FF91D0 67 A1FF57A462FF388E42FF388D415748B15E8B47B05DFF71C283FF8FD09FFF82CC 68 92FF70C77FFF62C371FF5EC16DFF5CC06BFF5CC06BFF5BBF6BFF5BBF6AFF5ABE 69 6AFF5ABD6AFF59BD6AFF59BC69FF66C175FFE2F3E5FFFFFFFFFFFFFFFFFFFFFF 70 FFFFFFFFFFFFFFFFFFFFF9FCFAFF83CA90FF59B96CFF68BE7AFF7EC78FFF8DCE 71 9EFF6AB377FF388D41FF378D418B48B15EAD48B05EFF7AC68CFF8BCF9AFF7DCB 72 8CFF6BC57AFF61C270FF5CC06BFF9FDAA8FF85D091FF5BBF6AFF5ABE6AFF5ABD 73 6AFF59BD6AFF59BC69FF66C175FFE0F2E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 74 FFFFFFFFFFFFFBFDFBFF84CB91FF54B667FF57B76AFF62BB75FF77C488FF88CC 75 98FF74BB82FF398E41FF388D40AD49B05EBA48AF5DFF7BC78DFF86CD96FF78C9 76 87FF68C477FF5FC16EFFB2E1B9FFFFFFFFFFF9FDFAFF81CD8DFF5ABD6AFF59BD 77 6AFF59BC69FF64C074FFE0F2E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 78 FFFFFBFDFBFF8ACD97FF53B666FF53B566FF55B569FF5FBA71FF71C183FF82C9 79 93FF77BD85FF398F42FF398E41BE49AF5DBB48AE5CFF7BC68CFF86CD96FF78C9 80 87FF6BC479FFC3E8C8FFFFFFFFFFFFFFFFFFFFFFFFFFF5FBF6FF7CCB8AFF59BC 81 69FF62BF72FFDEF1E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFE 82 FDFF8CCE98FF53B666FF53B566FF52B466FF55B568FF5EB971FF71C183FF82C9 83 93FF76BD85FF398E41FF388D41BE47AF5CAD47AE5CFF79C58AFF8ACE9AFF7DCB 84 8CFFD5EED9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FAF4FF81CC 85 8EFFDCF1DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFDFF8ECF 86 9AFF53B666FF53B566FF52B466FF53B466FF55B569FF62BA75FF76C388FF87CB 87 98FF74BA81FF378B3FFF378B3EAD46AD5B8B46AC5AFF70C082FF8FD09FFF82CC 88 91FFB1E0B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 89 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFDFF92D19EFF53B6 90 66FF53B566FF52B466FF52B465FF52B366FF57B66BFF66BC79FF7DC78FFF8DCE 91 9EFF69B175FF36893EFF36893E8B46AC5A5745AB59FF5FB771FF92D1A2FF87CD 92 97FF74C784FFB1E0B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 93 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94D1A0FF53B666FF53B5 94 66FF52B466FF52B465FF51B365FF53B467FF5BB76FFF6EC080FF84CA95FF91D0 95 A2FF54A05FFF36883DFF35873C5A45AB591545AA58FC44A958FF92D0A2FF8DCF 96 9DFF7DCA8DFF6AC37AFFAFDFB8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 97 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96D2A1FF53B666FF53B566FF52B4 98 66FF52B465FF51B365FF52B366FF56B569FF63BB76FF78C48AFF8BCD9CFF92CF 99 A2FF36893DFF35883CFC35873B155CC06B0044A958BD44A857FF70BE81FF91D0 100 A1FF85CC95FF73C683FF63C073FFB2DFBAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 101 FFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD4A5FF53B666FF53B566FF52B466FF52B4 102 65FF51B365FF52B366FF53B367FF5CB76FFF6DBF80FF82C994FF90CFA0FF6AB1 103 76FF35883CFF35873CBD4DAE63005CC06B0044A8574E43A756FF52AE63FF94D1 104 A4FF8DCF9DFF7EC98EFF6BC27CFF5FBE70FFB5E1BCFFFFFFFFFFFFFFFFFFFFFF 105 FFFFFFFFFFFFFFFFFFFF9ED6A9FF53B666FF53B566FF52B466FF52B465FF51B3 106 65FF52B366FF52B366FF58B66CFF65BB79FF7AC58CFF8BCD9CFF93D1A4FF4795 107 50FF35873CFF35863B4E4DAE62005BBF6B005BBF6A0043A655C342A554FF69B9 108 79FF92D0A2FF88CD98FF79C789FF69C17AFF5FBC70FFB9E2C0FFFFFFFFFFFFFF 109 FFFFFFFFFFFFA2D7ACFF53B666FF53B566FF52B466FF52B465FF51B365FF52B3 110 66FF53B367FF59B66CFF63BA77FF74C287FF86CA97FF91D0A1FF62AA6DFF3587 111 3CFF35863BC34DAE62004CAE62005BBF6A005ABE6A0043A5543942A453FF41A3 112 52FF7DC48DFF90D0A0FF86CC96FF78C689FF6AC17CFF60BC72FFBFE4C6FFFFFF 113 FFFFA9DAB2FF54B667FF53B566FF52B466FF53B466FF52B366FF54B468FF56B5 114 69FF5CB76FFF66BB79FF75C287FF84C995FF8FCFA0FF7ABD87FF35873CFF3586 115 3BFF34863B394CAE62004CAD62005ABE6A005ABD6A0059BD6A0042A3537B41A2 116 52FF45A356FF89CB99FF90D0A0FF88CC98FF7CC88DFF70C381FF66BE78FF92D1 117 9EFF5AB96CFF57B76AFF55B569FF55B568FF55B569FF58B66BFF5CB76FFF63BB 118 76FF6DBF80FF7AC58CFF86CA97FF90CFA0FF87C797FF3C8D43FF35873BFF3586 119 3B7B4CAE62004CAD62004CAD62005ABD6A0059BD6A0059BC690058BB690041A1 120 51A5409F50FF45A255FF7BC28BFF91D0A2FF8CCE9CFF84CA94FF7AC68BFF70C2 121 82FF69BF7BFF63BC76FF60BA72FF5FB972FF62BB75FF67BD7AFF6FC081FF78C4 122 8AFF82C994FF8BCD9CFF91D0A1FF79BD86FF3C8D43FF35873CFF35863BA84CAE 123 62004CAD62004CAD62004CAD620059BD6A0059BC690058BB690058BB690040A0 124 5009409E4FA83F9D4EFF3E9C4DFF65B474FF94D1A4FF90D0A0FF8BCE9CFF86CB 125 96FF7FC890FF78C589FF73C285FF73C285FF77C489FF7EC78FFF85CA96FF8BCD 126 9CFF90CFA0FF93D1A4FF61AA6CFF36883DFF35873CFF35863BA834853A094CAD 127 62004CAD62004CAD62004CAD620059BC690058BB690058BB690057BA680057B9 128 680056B968003F9C4D783E9B4CFF3D9A4BFF4EA35BFF6EB87CFF8FCD9EFF92D0 129 A2FF8ECF9FFF89CC9AFF84CA95FF84CA95FF89CC99FF8ECE9EFF92D0A2FF8ECD 130 9EFF6CB278FF489752FF36883DFF35873CFF35863B784CAE62004CAD62004CAD 131 62004CAD62004CAD62004CAD620058BB690058BB690057BA680057B9680056B9 132 680055B8670055B867003E9A4B363D994AC63C9749FF3C9648FF3B9547FF55A6 133 61FF68B276FF6FB87DFF76BE85FF76BD85FF6EB77CFF67B074FF52A05CFF378A 134 3FFF36893EFF36883DFF35873CC635873B364CAE62004CAD62004CAD62004CAD 135 62004CAD62004CAD62004CAD620058BB690057BA680057B9680056B9680055B8 136 670055B8670054B7670054B6660053B666003C9648513B9547B43B9446F93A93 137 45FF3A9144FF3A9144FF3A9143FF399043FF398E42FF378C40FF378B3FFF368A 138 3EF936893DB435883C514DAE62004CAE62004CAD62004CAD62004CAD62004CAD 139 62004CAD62004CAD62004CAD620057BA680057B9680056B9680055B8670055B8 140 670054B7670054B6660053B6660053B5660052B4660052B465003A93460C3A92 141 4551399144813A90449B398F43B6398E42B6388D419B378B3F81368A3E513689 142 3D0C4DAE63004DAE62004CAE62004CAD62004CAD62004CAD62004CAD62004CAD 143 62004CAD62004CAD62004CAD6200FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 144 FF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFF3B4AC6FF2838C1FF2838C1FF2838 145 C1FF2838C1FF2838C1FF2838C1FF2838C1FF2838C1FF2838C1FF2838C1FF2E3E 146 C3FF2838C1FF3B4AC6FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 147 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 148 FF00FFFFFF00FFFFFF00FAFAFAFF3B4AC6FF969DDEFFBDC3EEFFA3ACE9FFA3AC 149 E9FF99A0E0FF8D98E5FF8D98E5FF8D98E5FF8D98E5FF808BDDFF808BDDFF7985 150 DFFF808BDDFF6A78D9FF3B49BFFFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFF 151 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 152 FF00FFFFFF00FAFAFAFF3B4AC6FF99A0E0FFB1B9EDFF2341E5FF2341E5FF2341 153 E5FF2341E5FF2341E5FF2341E5FF2341E5FF2341E5FF2341E5FF2341E5FF2341 154 E5FF2A47E5FF7985DFFF626FD8FF3D4CC0FFFAFAFAFFFFFFFF00FFFFFF00FFFF 155 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 156 FF00FAFAFAFF3B4AC6FF99A0E0FFBDC3EEFF2A47E5FF2341E5FF2A47E5FF2A47 157 E5FF2A47E5FF2A47E5FF2A47E5FF2A47E5FF2A47E5FF2A47E5FF2A47E5FF2A47 158 E5FF2A47E5FF2A47E5FF6A78D9FF626FD8FF3D4CC0FFFAFAFAFFFFFFFF00FFFF 159 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFA 160 FAFF3B4AC6FF969DDEFFBDC3EEFF2F4AE6FF2A47E5FF2F4AE6FF2F4AE6FF2F4A 161 E6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4A 162 E6FF2F4AE6FF2A47E5FF2F4AE6FF6A78D9FF5A68D5FF3D4CC0FFFAFAFAFFFFFF 163 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFF3B4A 164 C6FF8C95DCFFB1B9EDFF2F4AE6FF2A47E5FF2F4AE6FF2F4AE6FF2F4AE6FF2F4A 165 E6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4A 166 E6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF6A78D9FF5663D3FF3D4CC0FFFAFA 167 FAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFF3B4AC6FF8C95 168 DCFFA3ACE9FF2F4AE6FF2A47E5FF2F4AE6FF2A47E5FF3651E8FF3651E8FF2A47 169 E5FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2F4AE6FF2A47E5FF3651 170 E8FF3651E8FF2A47E5FF2F4AE6FF2F4AE6FF2F4AE6FF626FD8FF5663D3FF3D4C 171 C0FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FAFAFAFF3B4AC6FF828AD9FFA3AC 172 E9FF2F4AE6FF2F4AE6FF2F4AE6FF314AEBFF2F4AE6FFF0F2FEFFF0F2FEFF314A 173 EBFF314AEBFF3651E8FF3651E8FF3651E8FF3651E8FF314AEBFF314AEBFFF0F2 174 FEFFF0F2FEFF2F4AE6FF314AEBFF3651E8FF2F4AE6FF3651E8FF5A68D5FF4958 175 C9FF3D4CC0FFFAFAFAFFFFFFFF00FAFAFAFF3B4AC6FF808BDDFF99A0E0FF3651 176 E8FF2F4AE6FF3651E8FF2F4AE6FF2F4AE6FFE8ECFDFFFFFFFF00FFFFFF00E8EC 177 FDFF2F4AE6FF2F4AE6FF3651E8FF3651E8FF2F4AE6FF2F4AE6FFE8ECFDFFFFFF 178 FF00FFFFFF00E8ECFDFF2F4AE6FF2F4AE6FF3651E8FF3651E8FF3651E8FF5663 179 D3FF4754C8FF3D4CC0FFFAFAFAFFEFEFEFFF2838C1FFACB3E5FF3651E8FF3651 180 E8FF3B54ECFF3651E8FF314AEBFFF2F4FDFFFFFFFF00FFFFFF00FFFFFF00FFFF 181 FF00E8ECFDFF2F4AE6FF314AEBFF314AEBFF2F4AE6FFE8ECFDFFFFFFFF00FFFF 182 FF00FFFFFF00FFFFFF00F2F4FDFF314AEBFF3651E8FF3B54ECFF3B54ECFF3B54 183 ECFF5663D3FF2E3EC3FFEFEFEFFFE9E9E9FF2838C1FFACB3E5FF314AEBFF3B54 184 ECFF3B54ECFF3B54ECFF314AEBFFC3CBFCFFFFFFFF00FFFFFF00FFFFFF00FFFF 185 FF00FFFFFF00E8ECFDFF314AEBFF314AEBFFE8ECFDFFFFFFFF00FFFFFF00FFFF 186 FF00FFFFFF00FFFFFF00C3CBFCFF314AEBFF3B54ECFF3B54ECFF3B54ECFF3B54 187 ECFF5663D3FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FFA3ACE9FF3D54F5FF3B54 188 ECFF3B54ECFF3B54ECFF3B54ECFF314AEBFFC3CBFCFFFFFFFF00FFFFFF00FFFF 189 FF00FFFFFF00FFFFFF00E0E5FDFFE0E5FDFFFFFFFF00FFFFFF00FFFFFF00FFFF 190 FF00FFFFFF00C3CBFCFF314AEBFF3B54ECFF3B54ECFF3B54ECFF3B54ECFF3B54 191 ECFF4958C9FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF99A0E0FF3B54ECFF445C 192 EFFF445CEFFF445CEFFF445CEFFF3B54ECFF314AEBFFC3CBFCFFFFFFFF00FFFF 193 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 194 FF00C3CBFCFF314AEBFF3B54ECFF445CEFFF445CEFFF445CEFFF445CEFFF3B54 195 ECFF4958C9FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF969DDEFF3B54ECFF445C 196 EFFF445CEFFF445CEFFF445CEFFF445CEFFF3B54ECFF314AEBFFC3CBFCFFFFFF 197 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C3CB 198 FCFF314AEBFF3B54ECFF445CEFFF445CEFFF445CEFFF445CEFFF445CEFFF455D 199 F0FF4754C8FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF8C95DCFF3B54ECFF455D 200 F0FF465EF0FF465EF0FF465EF0FF465EF0FF455DF0FF3B54ECFF314AEBFFB6BF 201 FAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B6BFFAFF314A 202 EBFF3B54ECFF455DF0FF465EF0FF465EF0FF465EF0FF465EF0FF455DF0FF455D 203 F0FF4754C8FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF8C95DCFF495FF8FF465E 204 F0FF465EF0FF465EF0FF465EF0FF465EF0FF455DF0FF3B54ECFF3B54ECFFE0E5 205 FDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E0E5FDFF3B54 206 ECFF3B54ECFF455DF0FF465EF0FF465EF0FF465EF0FF465EF0FF465EF0FF465E 207 F0FF3D4CC0FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF828AD9FF495FF8FF4D63 208 F4FF4D63F4FF4D63F4FF4D63F4FF465EF0FF495FF8FF455DF0FFE8ECFDFFFFFF 209 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E8EC 210 FDFF455DF0FF495FF8FF465EF0FF4D63F4FF4D63F4FF4D63F4FF4D63F4FF4D63 211 F4FF3B49BFFF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF828AD9FF495FF8FF4D63 212 F4FF4D63F4FF4D63F4FF4D63F4FF495FF8FF455DF0FFE8ECFDFFFFFFFF00FFFF 213 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 214 FF00E8ECFDFF455DF0FF495FF8FF4D63F4FF4D63F4FF4D63F4FF4D63F4FF4D63 215 F4FF3B4AC6FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF7881D3FF4D63F4FF4D63 216 F4FF4D63F4FF4D63F4FF455DF0FF4D63F4FFE8ECFDFFFFFFFF00FFFFFF00FFFF 217 FF00FFFFFF00FFFFFF00B6BFFAFFB6BFFAFFFFFFFF00FFFFFF00FFFFFF00FFFF 218 FF00FFFFFF00E8ECFDFF4D63F4FF465EF0FF4D63F4FF4D63F4FF4D63F4FF5468 219 F9FF3341C0FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF707BD2FF4D63F4FF5468 220 F9FF5468F9FF4D63F4FF495FF8FFE8ECFDFFFFFFFF00FFFFFF00FFFFFF00FFFF 221 FF00FFFFFF00C3CBFCFF3D54F5FF3D54F5FFC3CBFCFFFFFFFF00FFFFFF00FFFF 222 FF00FFFFFF00FFFFFF00D8DCFDFF495FF8FF5468F9FF5468F9FF5468F9FF5468 223 F9FF3341C0FF2E3EC3FFE9E9E9FFE9E9E9FF2838C1FF707BD2FF5468F9FF5468 224 F9FF5468F9FF5468F9FF495FF8FFCCD1FDFFFFFFFF00FFFFFF00FFFFFF00FFFF 225 FF00C3CBFCFF495FF8FF4D63F4FF4D63F4FF495FF8FFC3CBFCFFFFFFFF00FFFF 226 FF00FFFFFF00FFFFFF00CCD1FDFF495FF8FF5468F9FF5468F9FF586CF9FF586C 227 F9FF2E3EC3FF2E3EC3FFE9E9E9FFE9E9E9FF3B4AC6FF5663D3FF626FD8FF586C 228 F9FF5468F9FF586CF9FF5468F9FF495FF8FFC3CBFCFFFFFFFF00FFFFFF00F0F2 229 FEFF495FF8FF4D63F4FF586CF9FF586CF9FF4D63F4FF5468F9FFF0F2FEFFFFFF 230 FF00FFFFFF00C3CBFCFF495FF8FF5468F9FF586CF9FF586CF9FF586CF9FF3647 231 CBFF2E3EC3FF3B49BFFFE9E9E9FFEFEFEFFFC6C6C6FF3B49BFFF4958C9FF626F 232 D8FF5D71FBFF586CF9FF586CF9FF5468F9FF495FF8FFCCD1FDFFF2F4FDFF5468 233 F9FF5468F9FF586CF9FF586CF9FF586CF9FF586CF9FF5468F9FF5468F9FFF2F4 234 FDFFCCD1FDFF495FF8FF5468F9FF586CF9FF5D71FBFF586CF9FF3647CBFF2E3E 235 C3FF3D4CC0FFC6C6C6FFEFEFEFFFFAFAFAFFE6E6E6FFC6C6C6FF3B49BFFF4958 236 C9FF5A68D5FF5D71FBFF5D71FBFF586CF9FF586CF9FF5468F9FF4D63F4FF5468 237 F9FF586CF9FF5D71FBFF5D71FBFF5D71FBFF5D71FBFF586CF9FF5468F9FF4D63 238 F4FF5468F9FF586CF9FF5D71FBFF5D71FBFF5D71FBFF3647CBFF2E3EC3FF3D4C 239 C0FFC6C6C6FFE6E6E6FFFAFAFAFFFFFFFF00FAFAFAFFE6E6E6FFC6C6C6FF3B49 240 BFFF4754C8FF5663D3FF5D71FBFF5D71FBFF5D71FBFF5D71FBFF5D71FBFF5D71 241 FBFF5D71FBFF5D71FBFF5D71FBFF5D71FBFF5D71FBFF5D71FBFF5D71FBFF5D71 242 FBFF5D71FBFF5D71FBFF5D71FBFF5D71FBFF3647CBFF2E3EC3FF3D4CC0FFC6C6 243 C6FFE6E6E6FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FAFAFAFFE6E6E6FFC6C6 244 C6FF3B49BFFF4754C8FF5663D3FF6073FCFF6376FEFF6073FCFF6073FCFF6073 245 FCFF6073FCFF6073FCFF6073FCFF6073FCFF6073FCFF6073FCFF6073FCFF6073 246 FCFF6073FCFF6376FEFF6073FCFF3647CBFF2E3EC3FF3D4CC0FFC6C6C6FFE6E6 247 E6FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFFE6E6 248 E6FFC6C6C6FF3B49BFFF3B49BFFF4756D0FF6376FEFF6376FEFF6376FEFF6376 249 FEFF6376FEFF6376FEFF6376FEFF6376FEFF6376FEFF6376FEFF6376FEFF6376 250 FEFF6376FEFF6376FEFF3647CBFF2E3EC3FF3D4CC0FFC6C6C6FFE6E6E6FFFAFA 251 FAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFA 252 FAFFE6E6E6FFC6C6C6FF3B49BFFF3B4AC6FF4756D0FF697CFFFF697CFFFF697C 253 FFFF697CFFFF697CFFFF697CFFFF697CFFFF697CFFFF697CFFFF697CFFFF697C 254 FFFF697CFFFF3647CBFF2E3EC3FF3D4CC0FFC6C6C6FFE6E6E6FFFAFAFAFFFFFF 255 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 256 FF00FAFAFAFFE6E6E6FFC6C6C6FF3D4CC0FF3B4AC6FF3B4AC6FF3B4AC6FF3B4A 257 C6FF3341C0FF3341C0FF3341C0FF3341C0FF3341C0FF2E3EC3FF2E3EC3FF2E3E 258 C3FF2E3EC3FF2E3EC3FF3D4CC0FFC6C6C6FFE6E6E6FFFAFAFAFFFFFFFF00FFFF 259 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 260 FF00FFFFFF00FAFAFAFFE6E6E6FFC6C6C6FF3B4AC6FF2E3EC3FF2E3EC3FF2E3E 261 C3FF2E3EC3FF2E3EC3FF2E3EC3FF2E3EC3FF2E3EC3FF2E3EC3FF2E3EC3FF2E3E 262 C3FF2E3EC3FF3B49BFFFC6C6C6FFE6E6E6FFFAFAFAFFFFFFFF00FFFFFF00FFFF 263 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 264 FF00FFFFFF00FFFFFF00FAFAFAFFE6E6E6FFC6C6C6FFBCBCBCFFBCBCBCFFBCBC 265 BCFFBCBCBCFFBCBCBCFFBCBCBCFFBCBCBCFFBCBCBCFFBCBCBCFFBCBCBCFFBCBC 266 BCFFBCBCBCFFC6C6C6FFE6E6E6FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFF 267 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 268 FF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFFEFEFEFFFE9E9E9FFE9E9E9FFE9E9 269 E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9 270 E9FFE9E9E9FFEFEFEFFFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 271 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 272 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 273 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 274 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 275 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 276 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 277 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 278 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 279 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 280 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 281 FF00FFFFFF00FEFEFEFFFEFEFEFFFAFAFAFFF7F7F7FFF7F7F7FFF7F7F7FFF7F7 282 F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7 283 F7FFF7F7F7FFF7F7F7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 284 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 285 FF00FFFFFF00FEFEFEFF8C8C8CFF797979FF797979FF797979FF797979FF7979 286 79FF808080FF808080FF808080FF808080FF868686FF868686FF868686FF8686 287 86FF868686FF808080FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 288 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFFFF 289 FF00FFFFFF00FAFAFAFF737373FF737373FF797979FF797979FF797979FF7373 290 73FF737373FF737373FF737373FF737373FF737373FF737373FF737373FF7373 291 73FF737373FF737373FFC3C3C3FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 292 FF00FFFFFF00FFFFFF00FEFEFEFFCFCFE7FFB5B5DBFFFAFAFAFFFAFAFAFFFEFE 293 FEFFFFFFFF00F7F7F7FF6D6D6DFF797979FF868686FF808080FF808080FF7979 294 79FF797979FF797979FF797979FF737373FF737373FF6D6D6DFF737373FF7979 295 79FF9C9C9CFF797979FFA8A8A8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 296 FF00FFFFFF00FFFFFF00FEFEFEFFC4C4DBFF04068CFFB5B5DBFFF1F1F1FFF7F7 297 F7FFFEFEFEFFF7F7F7FF6D6D6DFF797979FF868686FF808080FF808080FF8080 298 80FF797979FF797979FF797979FF737373FF6D6D6DFF737373FF949494FFA8A8 299 A8FFB3B3B3FF797979FF9C9C9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 300 FF00FFFFFF00FFFFFF00FEFEFEFFC4C4DBFF04068CFF04068CFFA0A0BDFFEAEA 301 EAFFF7F7F7FFF5F5F5FF6D6D6DFF797979FF868686FF868686FF808080FF8080 302 80FF808080FF737373FF656565FF6D6D6DFF8C8C8CFFA8A8A8FFB3B3B3FFC3C3 303 C3FFBCBCBCFF737373FF9C9C9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 304 FF00FFFFFF00FFFFFF00FEFEFEFFC4C4DBFF04068CFF393ECDFF000081FFA0A0 305 BDFFEAEAEAFFF1F1F1FF676767FF797979FF868686FF868686FF868686FF7979 306 79FF606060FF656565FF868686FFA8A8A8FFB3B3B3FFBCBCBCFFC7C7C7FFCDCD 307 CDFFBCBCBCFF737373FF9C9C9CFFFFFFFF00FEFEFEFFFEFEFEFFFEFEFEFFFAFA 308 FAFFFAFAFAFFFAFAFAFFFAFAFAFFC4C4DBFF04068CFF616DFFFF393ECDFF0000 309 81FFA0A0BDFFE2E2E2FF676767FF797979FF8C8C8CFF868686FF868686FF6767 310 67FF6D6D6DFF9C9C9CFFB3B3B3FFBCBCBCFFC3C3C3FFCDCDCDFFCDCDCDFFCDCD 311 CDFFBCBCBCFF737373FF9C9C9CFFFEFEFEFFC4C4DBFF8686C0FF8686C0FF8686 312 C0FF8686C0FF8686C0FF8686C0FF7272B6FF04068CFF5765FFFF4F5DFDFF2A31 313 C6FF000081FFA0A0BDFF656565FF808080FF8C8C8CFF868686FF868686FF6767 314 67FF737373FFB3B3B3FFC7C7C7FFC7C7C7FFCDCDCDFFCDCDCDFFCDCDCDFFCDCD 315 CDFFC3C3C3FF6D6D6DFF9C9C9CFFFEFEFEFF7373B7FF04068CFF1D20ABFF1014 316 9FFF10149FFF10149FFF10149FFF10149FFF10149FFF4F5DFDFF4F5DFDFF4654 317 FAFF2A31C6FF000081FF41415CFF808080FF8C8C8CFF8C8C8CFF8C8C8CFF6565 318 65FF737373FFB3B3B3FFCDCDCDFFCDCDCDFFCDCDCDFFCDCDCDFFD8D8D8FFD8D8 319 D8FFC3C3C3FF6D6D6DFF9C9C9CFFFAFAFAFF7373B7FF1D20ABFF6E78FFFF616D 320 FFFF616DFFFF616DFFFF5765FFFF5765FFFF4F5DFDFF4654FAFF4654FAFF404F 321 FBFF404FFBFF2A31C6FF00007BFF686881FF949494FF8C8C8CFF8C8C8CFF6565 322 65FF737373FFB3B3B3FFCDCDCDFFCDCDCDFFD8D8D8FFD8D8D8FFD8D8D8FFDEDE 323 DEFFC7C7C7FF6D6D6DFF9C9C9CFFFAFAFAFF7373B7FF1D20ABFF616DFFFF616D 324 FFFF5765FFFF5765FFFF4F5DFDFF4F5DFDFF4654FAFF4654FAFF404FFBFF404F 325 FBFF3748F9FF3748F9FF0D16B4FF00007BFF686881FF8C8C8CFF8C8C8CFF6060 326 60FF6D6D6DFFB3B3B3FFCDCDCDFFD8D8D8FFD8D8D8FFD8D8D8FFD8D8D8FFDEDE 327 DEFFC7C7C7FF676767FF9C9C9CFFF7F7F7FF7373B7FF1D20ABFF616DFFFF5765 328 FFFF5765FFFF4F5DFDFF4F5DFDFF4654FAFF4654FAFF404FFBFF3748F9FF3748 329 F9FF2F40F7FF2F40F7FF283BF9FF0D16B4FF00007BFF868699FF8C8C8CFF6060 330 60FF6D6D6DFFB3B3B3FFD8D8D8FFD8D8D8FFD8D8D8FFDEDEDEFFDEDEDEFFE2E2 331 E2FFC7C7C7FF676767FF9C9C9CFFF7F7F7FF7373B7FF1D20ABFF5765FFFF4F5D 332 FDFF4F5DFDFF4654FAFF4654FAFF404FFBFF404FFBFF3748F9FF3748F9FF2F40 333 F7FF2F40F7FF283BF9FF1E30EBFF000081FF3E3E82FF949494FF8C8C8CFF6060 334 60FF676767FFB3B3B3FFD8D8D8FFDEDEDEFFDEDEDEFFE2E2E2FFE2E2E2FFEAEA 335 EAFFC7C7C7FF656565FF9C9C9CFFF7F7F7FF7373B7FF10149FFF4F5DFDFF4F5D 336 FDFF4654FAFF4654FAFF404FFBFF404FFBFF3748F9FF2F40F7FF2F40F7FF283B 337 F9FF283BF9FF1E30EBFF000081FF3E3E82FF999993FF949494FF949494FF6060 338 60FF676767FFB3B3B3FFDEDEDEFFE2E2E2FFE2E2E2FFE2E2E2FFEAEAEAFFEAEA 339 EAFFCDCDCDFF656565FF9C9C9CFFF7F7F7FF7272B6FF10149FFF3D48E4FF3D48 340 E4FF313DE0FF313DE0FF313DE0FF2734DEFF2734DEFF2F40F7FF283BF9FF283B 341 F9FF1E30EBFF000081FF16165EFF808080FF949494FF949494FF949494FF6060 342 60FF676767FFB3B3B3FFDEDEDEFFE2E2E2FFEAEAEAFFEAEAEAFFEAEAEAFFF1F1 343 F1FFCDCDCDFF606060FF9C9C9CFFFAFAFAFF7373B7FF000081FF00007BFF0000 344 7BFF00007BFF00007BFF00007BFF00007BFF000081FF283BF9FF283BF9FF1E30 345 EBFF000081FF3E3E82FF4C4C4CFF808080FF9C9C9CFF949494FF949494FF5D5D 346 5DFF656565FFB3B3B3FFE2E2E2FFEAEAEAFFEAEAEAFFEAEAEAFFEAEAEAFFF1F1 347 F1FFC7C7C7FF606060FF9C9C9CFFFAFAFAFFF1F1F1FFCDCDCDFFB3B3B3FFA8A8 348 A8FFA8A8A8FFA8A8A8FFA8A8A8FF868699FF000081FF2338FDFF1E30EBFF0000 349 81FF2E2E7EFF949494FF4C4C4CFF808080FF9C9C9CFF949494FF949494FF5D5D 350 5DFF656565FFB3B3B3FFEAEAEAFFEAEAEAFFEAEAEAFFF1F1F1FFF1F1F1FFF7F7 351 F7FFC7C7C7FF5D5D5DFF9C9C9CFFFEFEFEFFF7F7F7FFF1F1F1FFEAEAEAFFE2E2 352 E2FFDEDEDEFFDEDEDEFFDEDEDEFFAFAFC5FF000081FF2338FDFF04068CFF2E2E 353 7EFF9C9C9CFFB3B3B3FF4C4C4CFF808080FF9C9C9CFF949494FF9C9C9CFF5D5D 354 5DFF606060FFB3B3B3FFEAEAEAFFF1F1F1FFF1F1F1FFF5F5F5FFF5F5F5FFFAFA 355 FAFFC7C7C7FF5D5D5DFF9C9C9CFFFEFEFEFFFEFEFEFFFAFAFAFFF7F7F7FFF7F7 356 F7FFF5F5F5FFF5F5F5FFF5F5F5FFC4C4DBFF000081FF04068CFF2E2E7EFF9494 357 94FFB3B3B3FFD8D8D8FF555555FF868686FF9C9C9CFF9C9C9CFF9C9C9CFF5D5D 358 5DFF606060FFB3B3B3FFEAEAEAFFF1F1F1FFF5F5F5FFF7F7F7FFFAFAFAFFFFFF 359 FF00CDCDCDFF5D5D5DFF9C9C9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 360 FF00FFFFFF00FFFFFF00FEFEFEFFC4C4DBFF00007BFF2F2F87FF9C9C9CFFB3B3 361 B3FFE2E2E2FFEAEAEAFF4C4C4CFF4C4C4CFF555555FF555555FF555555FF4444 362 44FF606060FFB3B3B3FFF1F1F1FFF7F7F7FFFAFAFAFFFEFEFEFFFFFFFF00E2E2 363 E2FFA8A8A8FF555555FF9C9C9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 364 FF00FFFFFF00FFFFFF00FEFEFEFFC4C4DBFF2F2F90FFB3B3B3FFBCBCBCFFE2E2 365 E2FFF1F1F1FFF5F5F5FFB3B3B3FF868686FF797979FF737373FF737373FF4C4C 366 4CFF5D5D5DFFB3B3B3FFF1F1F1FFFEFEFEFFFFFFFF00EAEAEAFFB3B3B3FF8686 367 86FF555555FF555555FFA8A8A8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 368 FF00FFFFFF00FFFFFF00FEFEFEFFEAEAEAFFE2E2E2FFCDCDCDFFEAEAEAFFF1F1 369 F1FFFAFAFAFFFAFAFAFFF1F1F1FFD8D8D8FFCDCDCDFFC7C7C7FFC3C3C3FF6060 370 60FF5D5D5DFFA8A8A8FFF7F7F7FFF1F1F1FFBCBCBCFF8C8C8CFF555555FF4C4C 371 4CFF797979FF949494FFBCBCBCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 372 FF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFF5F5F5FFF5F5F5FFF5F5F5FFFAFA 373 FAFFFEFEFEFFFEFEFEFFFAFAFAFFF5F5F5FFF1F1F1FFEAEAEAFFEAEAEAFF6767 374 67FF5D5D5DFFB3B3B3FFBCBCBCFF949494FF5D5D5DFF444444FF737373FF9C9C 375 9CFFA8A8A8FFC7C7C7FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 376 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE 377 FEFFFFFFFF00FFFFFF00FEFEFEFFFEFEFEFFFEFEFEFFFAFAFAFFF5F5F5FF6D6D 378 6DFF5D5D5DFF949494FF5D5D5DFF444444FF656565FF949494FFA8A8A8FFC7C7 379 C7FFE2E2E2FFEAEAEAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 380 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 381 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F7F7F7FF6D6D 382 6DFF444444FF444444FF5D5D5DFF949494FF9C9C9CFFC3C3C3FFDEDEDEFFEAEA 383 EAFFF5F5F5FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 384 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 385 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFF6D6D 386 6DFF656565FF9C9C9CFFA8A8A8FFBCBCBCFFDEDEDEFFEAEAEAFFF1F1F1FFFAFA 387 FAFFFEFEFEFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 388 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 389 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFFE2E2 390 E2FFCDCDCDFFC3C3C3FFD8D8D8FFEAEAEAFFF1F1F1FFF7F7F7FFFEFEFEFFFEFE 391 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 392 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 393 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5 394 F5FFEAEAEAFFEAEAEAFFF1F1F1FFF7F7F7FFFEFEFEFFFEFEFEFFFFFFFF00FFFF 395 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 396 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 397 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFA 398 FAFFFAFAFAFFFAFAFAFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF 399 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 400 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 401 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 402 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 403 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 404 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 405 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 406 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 407 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 408 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 409 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 410 FF00FFFFFF007950EBFF8A75F5FF948CFBFFFFFFFF00FFFFFF00FFFFFF00FFFF 411 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 412 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 413 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 414 FF007950EBFF8A75F5FF948CFBFF9998FFFF9998FFFFFFFFFF00FFFFFF00FFFF 415 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 416 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 417 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007950 418 EBFF8A75F5FF948CFBFF9998FFFF9998FFFF9691FDFF9185F9FFFFFFFF00FFFF 419 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 420 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 421 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007950EBFF8A75 422 F5FF948CFBFF9998FFFF9998FFFF9691FDFF9185F9FF8A75F5FF8163F0FFFFFF 423 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 424 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 425 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF948C 426 FBFF9998FFFF9998FFFF9691FDFF9185F9FF8A75F5FF8163F0FF7547E9FFD7C6 427 F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 428 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 429 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4 430 FFFF9998FFFF9691FDFF9185F9FF8A75F5FF8163F0FF7547E9FF611CDDFFD4BF 431 F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 432 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 433 FF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4 434 FFFF79E1FFFF9185F9FF8A75F5FF8163F0FF7547E9FF611CDDFF5400D5FFFFFF 435 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 436 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 437 FF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1 438 FFFF5BD5FFFF45C5FCFF8163F0FF7547E9FF611CDDFF5400D5FFFFFFFF00FFFF 439 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 440 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 441 FF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5 442 FFFF45C5FCFF2CB1F7FF149CF1FF611CDDFF5400D5FFFFFFFF00FFFFFF00FFFF 443 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 444 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 445 FF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5 446 FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFF 447 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 448 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209B 449 EDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1 450 F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 451 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 452 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9 453 F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149C 454 F1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 455 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 456 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7 457 FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489 458 EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 459 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 460 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4 461 FFFF94E4FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007D 462 E7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 463 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 464 FF00FFFFFF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4 465 FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFF 466 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 467 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 468 FF00FFFFFF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1 469 FFFF5BD5FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFF 470 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 471 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 472 FF00FFFFFF00209BEDFF55B9F4FF87D7FBFF9CE4FFFF94E4FFFF79E1FFFF5BD5 473 FFFF45C5FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFF 474 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 475 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 476 FF00209BEDFF6DBCF4FF98DBFCFF9CE4FFFF94E4FFFF79E1FFFF5BD5FFFF45C5 477 FCFF2CB1F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFF 478 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 479 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E0EF 480 FCFF5492E5FFBDD8FAFFC8E0F8FFA9E6FFFF79E1FFFF5BD5FFFF45C5FCFF2CB1 481 F7FF149CF1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 482 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 483 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A3CE 484 F5FF77A9ECFFC8E0F8FFD6E8FEFFBFE4FEFF5BD5FFFF45C5FCFF2CB1F7FF149C 485 F1FF0489EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 486 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 487 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007CB3 488 EEFF9BC1F3FFD6E8FEFFD6E8FEFFC8E0F8FF71C9FAFF2CB1F7FF149CF1FF0489 489 EBFF007DE7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 490 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 491 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00649C 492 E8FFBDD8FAFFD6E8FEFFC8E0F8FF9BC1F3FF5094E6FF209BEDFF0489EBFF007D 493 E7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 494 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 495 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECF5FDFF81B0 496 EEFFC8E0F8FFBDD8FAFF81B0EEFF5492E5FF5492E5FF5094E6FF007DE7FFFFFF 497 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 498 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 499 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F6F6F6FF8EAAC2FF9BC1 500 F3FFA8CAF6FF649CE8FF5492E5FF5094E6FF69AAEDFFC8E0F8FFFFFFFF00FFFF 501 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 502 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 503 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D8D8D8FF415D77FF597E 504 AEFF5492E5FF69AAEDFFA3CEF5FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 505 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 506 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 507 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BABABAFF415D77FF4D69 508 7FFFC0C7CCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 509 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 510 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 511 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BABABAFFCFCFCFFFF6F6 512 F6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 513 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 514 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 515 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 516 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 517 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 518 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 519 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 520 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 521 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 522 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 523 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 524 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 525 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 526 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 527 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 528 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 529 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 530 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 531 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 532 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 533 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 534 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 535 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 536 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 537 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 538 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 539 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 540 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 541 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 542 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 543 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 544 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 545 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 546 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 547 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 548 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 549 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 550 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 551 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 552 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 553 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 554 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 555 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 556 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 557 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 558 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 559 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 560 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 561 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 562 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 563 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 564 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 565 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 566 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 567 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007468CEFF6E62C3FF6E62C3FF6E62 568 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62 569 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62 570 C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62C3FF6E62 571 C3FF6E62C3FF7468CEFFFFFFFF00FFFFFF006E62C3FF7A6CE3FF897EE6FF9186 572 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186 573 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186 574 E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF9186E7FF897EE6FF867A 575 E6FF7A6CE3FF6E62C3FFFFFFFF00FFFFFF006357B8FF7D6FEBFF8174ECFF8D81 576 EEFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387 577 EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387 578 EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF9387EFFF8D81EEFF7869 579 EAFF7869EAFF6357B8FFFFFFFF00FFFFFF006357B8FF7869EAFF7364EAFF7D6F 580 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F 581 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6F 582 EBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7D6FEBFF7869EAFF6757 583 E8FF7869EAFF6357B8FFFFFFFF00FFFFFF006357B8FF7364EAFF6251E7FF6757 584 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757 585 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757 586 E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF6757E8FF5C4A 587 E6FF7364EAFF6357B8FFFFFFFF00FFFFFF005D51AFFF6C5DE3FF503EDEFF503E 588 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E 589 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503E 590 DEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF503EDEFF4937 591 DCFF6C5DE3FF5D51AFFFFFFFFF00FFFFFF00544AA0FF6455D6FF3623CBFF3623 592 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623 593 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623 594 CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623CBFF3623 595 CBFF6455D6FF544AA0FFFFFFFF00FFFFFF004B4292FF6052CCFF2A18BAFF2A18 596 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18 597 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18 598 BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18BAFF2A18 599 BAFF6052CCFF4B4292FFFFFFFF00FFFFFF00433B84FF5D51C1FF2716ABFF2716 600 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716 601 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716 602 ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716ABFF2716 603 ABFF5D51C1FF433B84FFFFFFFF00FFFFFF003C3477FF5B4FB7FF5B4FB7FF5B4F 604 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F 605 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F 606 B7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4FB7FF5B4F 607 B7FF5B4FB7FF3C3477FFFFFFFF00FFFFFF00463C8BFF342C6AFF342C6AFF342C 608 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C 609 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C 610 6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C6AFF342C 611 6AFF342C6AFF463C8BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 612 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 613 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 614 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 615 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 616 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 617 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 618 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 619 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 620 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 621 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 622 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 623 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 624 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 625 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 626 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 627 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 628 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 629 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 630 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 631 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 632 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 633 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 634 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 635 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 636 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 637 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 638 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 639 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 640 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 641 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 642 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 643 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 644 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 645 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 646 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 647 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 648 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 649 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 650 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 651 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 652 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 653 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 654 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 655 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 656 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF005104FF0051 657 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051 658 04FFDBDBDBFFF3F3F3FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 659 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 660 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF76D0 661 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF0051 662 04FF949494FFDBDBDBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 663 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 664 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF9BDB 665 A0FF9BDBA0FF90D795FF90D795FF8CD692FF8CD692FF84D38AFF76D07FFF0051 666 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 667 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 668 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF9BDB 669 A0FF90D795FF90D795FF8CD692FF84D38AFF84D38AFF7ED184FF76D07FFF0051 670 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 671 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 672 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF90D7 673 95FF8CD692FF8CD692FF84D38AFF84D38AFF7ED184FF7ED184FF76D07FFF0051 674 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 675 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 676 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF8CD6 677 92FF8CD692FF84D38AFF84D38AFF7ED184FF79CF7FFF79CF7FFF76D07FFF0051 678 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 679 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 680 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF84D3 681 8AFF84D38AFF84D38AFF7ED184FF79CF7FFF74CD7BFF74CD7BFF76D07FFF0051 682 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 683 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 684 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF84D3 685 8AFF7ED184FF7ED184FF79CF7FFF74CD7BFF6FCC76FF6FCC76FF76D07FFF0051 686 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 687 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 688 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF7ED1 689 84FF79CF7FFF79CF7FFF74CD7BFF6FCC76FF6ACA72FF6ACA72FF76D07FFF0051 690 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 691 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 692 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF79CF 693 7FFF74CD7BFF74CD7BFF6FCC76FF6ACA72FF66C86DFF66C86DFF76D07FFF0051 694 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 695 FF00FFFFFF00FFFFFF00FFFFFF00005104FF005104FF005104FF005104FF0051 696 04FF005104FF005104FF005104FF005104FF005104FF005104FF76D07FFF74CD 697 7BFF6FCC76FF6FCC76FF6ACA72FF66C86DFF66C86DFF5AC462FF76D07FFF0051 698 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051 699 04FF005104FF005104FFDBDBDBFF005104FF76D07FFF76D07FFF76D07FFF76D0 700 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF6FCC 701 76FF6ACA72FF6ACA72FF66C86DFF66C86DFF41BB4AFF25B130FF76D07FFF76D0 702 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0 703 7FFF76D07FFF005104FF949494FF005104FF76D07FFF90D795FF8CD692FF84D3 704 8AFF84D38AFF84D38AFF7ED184FF79CF7FFF74CD7BFF74CD7BFF6FCC76FF6ACA 705 72FF66C86DFF66C86DFF41BB4AFF25B130FF09A715FF09A715FF09A715FF09A7 706 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A514FF089F 707 12FF76D07FFF005104FF707070FF005104FF76D07FFF8CD692FF84D38AFF84D3 708 8AFF7ED184FF7ED184FF79CF7FFF74CD7BFF6FCC76FF6FCC76FF6ACA72FF66C8 709 6DFF4ABE52FF25B130FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7 710 15FF09A715FF09A715FF09A715FF09A514FF09A514FF09A514FF089F12FF089F 711 12FF76D07FFF005104FF707070FF005104FF76D07FFF84D38AFF84D38AFF7ED1 712 84FF79CF7FFF79CF7FFF74CD7BFF6FCC76FF6ACA72FF6ACA72FF50C159FF32B5 713 3CFF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7 714 15FF09A715FF09A715FF09A715FF09A514FF09A514FF089F12FF089F12FF0697 715 10FF76D07FFF005104FF707070FF005104FF76D07FFF84D38AFF7ED184FF79CF 716 7FFF74CD7BFF74CD7BFF6FCC76FF6ACA72FF66C86DFF41BB4AFF25B130FF09A7 717 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7 718 15FF09A715FF09A715FF09A514FF09A514FF089F12FF089F12FF069710FF0694 719 0FFF76D07FFF005104FF707070FF005104FF76D07FFF7ED184FF79CF7FFF74CD 720 7BFF6FCC76FF6FCC76FF6ACA72FF5AC462FF32B53CFF09A715FF09A715FF09A7 721 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7 722 15FF09A715FF09A514FF09A514FF089F12FF079910FF069710FF06940FFF0692 723 0EFF76D07FFF005104FF707070FF005104FF76D07FFF79CF7FFF74CD7BFF6FCC 724 76FF6ACA72FF6ACA72FF50C159FF25B130FF09A715FF09A715FF09A715FF09A7 725 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A7 726 15FF09A514FF09A514FF089F12FF079910FF06940FFF06940FFF06920EFF0694 727 0FFF76D07FFF005104FF707070FF005104FF76D07FFF74CD7BFF6FCC76FF6ACA 728 72FF66C86DFF4ABE52FF25B130FF09A715FF09A715FF09A715FF09A715FF09A7 729 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF09A5 730 14FF09A514FF089F12FF079910FF06940FFF06920EFF06920EFF06940FFF0697 731 10FF76D07FFF005104FF707070FF005104FF76D07FFF76D07FFF76D07FFF76D0 732 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF09A7 733 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A715FF76D07FFF76D0 734 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D0 735 7FFF76D07FFF005104FF707070FF005104FF005104FF005104FF005104FF0051 736 04FF005104FF005104FF005104FF005104FF005104FF005104FF76D07FFF09A7 737 15FF09A715FF09A715FF09A715FF09A715FF09A715FF09A514FF76D07FFF0051 738 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051 739 04FF005104FF005104FF707070FFDBDBDBFF949494FF707070FF707070FF7070 740 70FF707070FF707070FF707070FF707070FF707070FF005104FF76D07FFF09A7 741 15FF09A715FF09A715FF09A715FF09A715FF09A514FF09A514FF76D07FFF0051 742 04FF4C4C4CFF646464FF707070FF707070FF707070FF707070FF707070FF7070 743 70FF707070FF707070FF949494FFF3F3F3FFDBDBDBFFCFCFCFFFCFCFCFFFCFCF 744 CFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFF005104FF76D07FFF09A7 745 15FF09A715FF09A715FF09A514FF09A514FF09A514FF089F12FF76D07FFF0051 746 04FF646464FFABABABFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCFCFFFCFCF 747 CFFFCFCFCFFFCFCFCFFFDBDBDBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 748 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF09A7 749 15FF09A715FF09A514FF09A514FF09A514FF089F12FF079910FF76D07FFF0051 750 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 751 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 752 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF09A7 753 15FF09A514FF09A514FF09A514FF089F12FF079910FF06940FFF76D07FFF0051 754 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 755 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 756 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF09A7 757 15FF09A514FF09A514FF089F12FF079910FF06940FFF06920EFF76D07FFF0051 758 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 759 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 760 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF09A5 761 14FF09A514FF089F12FF079910FF06940FFF06920EFF06920EFF76D07FFF0051 762 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 763 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 764 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF09A5 765 14FF089F12FF079910FF06940FFF06920EFF06920EFF06940FFF76D07FFF0051 766 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 767 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 768 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF09A5 769 14FF089F12FF069710FF06920EFF06920EFF06940FFF079910FF76D07FFF0051 770 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 771 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 772 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF76D07FFF76D0 773 7FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF76D07FFF0051 774 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 775 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 776 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00005104FF005104FF0051 777 04FF005104FF005104FF005104FF005104FF005104FF005104FF005104FF0051 778 04FF707070FFCFCFCFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 779 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 780 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DBDBDBFF949494FF7070 781 70FF707070FF707070FF707070FF707070FF707070FF707070FF707070FF7070 782 70FF949494FFDBDBDBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 783 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BCE4F3FF10A5DAFF78CEEEFFFEFE 784 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 785 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 786 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 787 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF74BEE4FF139ADEFF04A1DEFF78CE 788 EEFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 789 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 790 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 791 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF00B8FBFF029FE8FF04A1 792 DEFF8CD5F0FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 793 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 794 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 795 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF02BCFBFF01B4F8FF0B91 796 DBFF04A1DEFFA1DCF2FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 797 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 798 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 799 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF02BCFBFF00ACF3FF01B4 800 F8FF139ADEFF04A1DEFFB4E3F4FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF 801 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 802 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 803 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF02BCFBFF02BCFBFF02BC 804 FBFF01B4F8FF139ADEFF04A1DEFFBCE4F3FFFEFEFEFFFFFFFF00FFFFFF00FFFF 805 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 806 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 807 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF02BCFBFF00B8FBFF00B8 808 FBFF01B4F8FF029FE8FF0B91DBFF10A5DAFFD2EDF7FFFFFFFF00FFFFFF00FFFF 809 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 810 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 811 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF00B8FBFF00B8FBFF00B8 812 FBFF02BCFBFF00B8FBFF00ACF3FF0B91DBFF10A5DAFFE2F0F7FFFFFFFF00FFFF 813 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 814 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 815 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF00B8FBFF00B8FBFF00B8 816 FBFF00B8FBFF00B8FBFF00B8FBFF029FE8FF0B91DBFF28ACE1FFECF5F9FFFFFF 817 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 818 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 819 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CCDEFFF01B4F8FF00B8FBFF00B8 820 FBFF00B8FBFF00B8FBFF01B4F8FF00ACF3FF029FE8FF0B91DBFF37AAE1FFF3F8 821 FBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 822 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 823 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF01B4F8FF01B4F8FF01B4 824 F8FF01B4F8FF01B4F8FF01B4F8FF01B4F8FF01B4F8FF029FE8FF0B91DBFF46B0 825 E3FFF3F8FBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 826 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 827 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF01B4F8FF01B4F8FF01B4 828 F8FF01B4F8FF6CCDEFFF35BAEEFF01B4F8FF01B4F8FF009BE8FF009BE8FF0B91 829 DBFF57B8E5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 830 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 831 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF01B4F8FF01B4F8FF01B4 832 F8FF00ACF3FFCAE2ECFFECF5F9FF35BAEEFF00ACF3FF01B4F8FF00ACF3FF0293 833 E0FF088CD1FF6CC5EAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 834 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 835 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF01B4F8FF00ACF3FF00AC 836 F3FF00ACF3FFCAE2ECFFFEFEFEFFE2F0F7FF21B0E8FF00ACF3FF00ACF3FF00A4 837 EEFF018CD8FF088CD1FF80CAEBFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF 838 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 839 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF00ACF3FF00ACF3FF00AC 840 F3FF00ACF3FFCAE2ECFFFFFFFF00FFFFFF00D2EDF7FF21B0E8FF00ACF3FF00A4 841 EEFF00A7F0FF0B91DBFF088CD1FF95D3EEFFFEFEFEFFFFFFFF00FFFFFF00FFFF 842 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 843 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF00ACF3FF00ACF3FF00AC 844 F3FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FEFEFEFFD2EDF7FF09A6E8FF00AC 845 F3FF00ACF3FF00A7F0FF018CD8FF088CD1FFA7DAF0FFFEFEFEFFFFFFFF00FFFF 846 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 847 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF00ACF3FF00ACF3FF00AC 848 F3FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFBCE4F3FF09A6 849 E8FF00ACF3FF00A4EEFF0293E0FF0186D6FF088CD1FFBCE4F3FFFEFEFEFFFFFF 850 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 851 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC5EAFF00ACF3FF00ACF3FF00AC 852 F3FF09A6E8FFCAE0EBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFA7DA 853 F0FF09A6E8FF00A7F0FF00A7F0FF029FE8FF0186D6FF088CD1FFD2EDF7FFFEFE 854 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 855 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF00A7F0FF00A7F0FF00A7 856 F0FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE 857 FEFF95D3EEFF029FE8FF00A7F0FF00A7F0FF018CD8FF0186D6FF2095D3FFD2ED 858 F7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 859 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF00A7F0FF00A7F0FF00A7 860 F0FF09A6E8FFCAE2ECFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 861 FF00FEFEFEFF80CAEBFF029FE8FF00A4EEFF029FE8FF009BE8FF027FCBFF2095 862 D3FFE2F0F7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 863 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF00A4EEFF00A4EEFF00A4 864 EEFF029FE8FFCAE2ECFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 865 FF00FFFFFF00FEFEFEFF6CC0E7FF029FE8FF00A4EEFF00A4EEFF0293E0FF027F 866 CBFF2E99D7FFECF5F9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 867 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF00A4EEFF00A4EEFF00A4 868 EEFF029FE8FFCAE0EBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 869 FF00FFFFFF00FFFFFF00FEFEFEFF57B8E5FF029FE8FF00A4EEFF018CD8FF018C 870 D8FF027FCBFF3AA1D8FFF3F8FBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 871 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF00A4EEFF00A4EEFF00A4 872 EEFF029FE8FFCAE0EBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 873 FF00FFFFFF00FFFFFF00FFFFFF00F3F8FBFF46B0E3FF029FE8FF029FE8FF029F 874 E8FF018CD8FF027FCBFF49A9DBFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF 875 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF029FE8FF00A4EEFF029F 876 E8FF029FE8FFCAE0EBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 877 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F3F8FBFF37AAE1FF029FE8FF009C 878 E9FF0293E0FF027FCBFF027FCBFF5BB1DEFFFEFEFEFFFFFFFF00FFFFFF00FFFF 879 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CC0E7FF029FE8FF009CE9FF009C 880 E9FF009BE8FFCAE0EBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 881 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECF5F9FF2CA1DDFF009C 882 E9FF0097E6FF009CE9FF0186D6FF027FCBFF74BEE4FFFEFEFEFFFFFFFF00FFFF 883 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CBCE4FF009CE9FF009CE9FF009C 884 E9FF009BE8FFBDDDEFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 885 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E2F0F7FF139A 886 DEFF009BE8FF009BE8FF009BE8FF027FCBFF0277C3FF89CAECFFFEFEFEFFFFFF 887 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CBCE4FF009BE8FF009CE9FF009C 888 E9FF009BE8FF4EB2E3FFF3F8FBFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE 889 FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFF89CA 890 ECFF0097E6FF009BE8FF0293E0FF018CD8FF027FCBFF0277C3FF9ACEEAFFFEFE 891 FEFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFF6CBCE4FF009BE8FF009BE8FF009B 892 E8FF009BE8FF009BE8FF139ADEFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1 893 DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF2CA1DDFF0293 894 E0FF0097E6FF0097E6FF0097E6FF0097E6FF0096E6FF027FCBFF0277C3FFB0D6 895 EBFFFEFEFEFFFFFFFF00FFFFFF00FEFEFEFF74BEE4FF0097E6FF009BE8FF0097 896 E6FF009BE8FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097 897 E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097 898 E6FF0097E6FF0097E6FF0097E6FF0096E6FF0096E6FF027FCBFF027FCBFF0277 899 C3FFBDDDEFFFFEFEFEFFFFFFFF00FFFFFF00B0D6EBFF0293E0FF0097E6FF0097 900 E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0097E6FF0096E6FF0096 901 E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096E6FF0096 902 E6FF0095E6FF0095E6FF0095E6FF0095E6FF0193E4FF0193E4FF018CD8FF0277 903 C3FF0E81CAFFE2F0F7FFFFFFFF00FFFFFF00FEFEFEFF49A9DBFF0293E0FF0096 904 E6FF0095E6FF0095E6FF0095E6FF0095E6FF0095E6FF0095E6FF0193E4FF0193 905 E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193 906 E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0193E4FF0186 907 D6FF0277C3FF79BBE1FFFFFFFF00FFFFFF00FFFFFF00F3F8FBFF79BBE1FF2095 908 D3FF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91 909 DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91 910 DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF0B91DBFF018CD8FF0E81 911 CAFF2E99D7FFCAE0EBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 912 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 913 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 914 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 915 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 916 FF00FFFFFF00FFFFFF00FDFDFDFFFDFDFDFFFDFDFDFFFFFFFF00FFFFFF00FFFF 917 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFDFDFDFFFDFDFDFFFFFF 918 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFDFD 919 FDFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 920 FF00FEFEFEFFFAFAFAFFFAFAFAFFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFF 921 FF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFAFAFAFFFEFEFEFFFFFF 922 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFAFA 923 FAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE 924 FEFFFAFAFAFFF5F5F5FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFF 925 FF00FFFFFF00FEFEFEFFFAFAFAFFF5F5F5FFFAFAFAFFFEFEFEFFFFFFFF00FFFF 926 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFF5F5F5FFFAFAFAFFFEFE 927 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F0E5DAFFE2D4 928 C6FFE2D4C6FFE2D4C6FFEBDCCDFFEBDCCDFFEBDCCDFFEBDCCDFFEBDCCDFFEBDC 929 CDFFEBDCCDFFE2D4C6FFE2D4C6FFE2D4C6FFEBDCCDFFEBDCCDFFEBDCCDFFEBDC 930 CDFFEBDCCDFFEBDCCDFFEBDCCDFFE2D4C6FFE2D4C6FFE2D4C6FFEBDCCDFFF0E5 931 DAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFC0966CFFAB72 932 3AFFAB723AFFB07439FFB17439FFB17439FFB17439FFB17439FFB17439FFB074 933 39FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB17439FFB174 934 39FFB17439FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFC496 935 6AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFFC0966CFFAB72 936 3AFFB07439FFB17439FFB17439FFB17439FFB17439FFB17439FFB07439FFAB72 937 3AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB17439FFB17439FFB174 938 39FFB07439FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFC496 939 6AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFAFAFAFFC0966CFFB074 940 39FFB17439FFB17439FFB17439FFB17439FFB17439FFB07439FFAB723AFFAB72 941 3AFFAB723AFFB07439FFB17439FFB17439FFB17439FFB17439FFB17439FFB074 942 39FFAB723AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB17439FFC496 943 6AFFFFFFFF00FEFEFEFFFDFDFDFFFFFFFF00FDFDFDFFFAFAFAFFC4966AFFB174 944 39FFB17439FFB17439FFB17439FFB17439FFB07439FFAB723AFFAB723AFFAB72 945 3AFFB07439FFB17439FFB17439FFB17439FFB17439FFB17439FFB07439FFAB72 946 3AFFAB723AFFAB723AFFB07439FFB17439FFB17439FFB17439FFB17439FFC496 947 6AFFFEFEFEFFFAFAFAFFFDFDFDFFFFFFFF00FDFDFDFFFEFEFEFFC89E76FFFAF6 948 F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFF1EDEAFFF1EDEAFFD0B297FFEBDC 949 CDFFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFDECBBBFFD0B2 950 97FFF1EDEAFFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFC89E 951 76FFFAFAFAFFFAFAFAFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00C89E76FFFFFF 952 FF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFD8B99CFFF0E5 953 DAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFE2D4C6FFD0B2 954 97FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFC199 955 73FFF5F5F5FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E76FFFFFF 956 FF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFD8B99CFFF0E5 957 DAFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFE2D4C6FFD8B9 958 9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFC199 959 73FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00C6986EFFC89E 960 76FFC89E76FFC19973FFC19973FFC19973FFC89E76FFC89E76FFBD8856FFC496 961 6AFFC89E76FFC89E76FFC89E76FFC19973FFC19973FFC19973FFC29367FFBD88 962 56FFC89E76FFC89E76FFC89E76FFC89E76FFC89E76FFC19973FFC19973FFC496 963 6AFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E76FFFEFE 964 FEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00D8B99CFFF0E5 965 DAFFFFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFEBDCCDFFD8B9 966 9CFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFC89E 967 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E76FFF5F5 968 F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00D8B99CFFF0E5 969 DAFFFEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00EBDCCDFFD8B9 970 9CFFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFC89E 971 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFC0966CFFDECB 972 BBFFDECBBBFFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFCCA37DFFD4BB 973 A2FFDECBBBFFDECBBBFFDECBBBFFE7D3C1FFE7D3C1FFE7D3C1FFD8B99CFFCCA3 974 7DFFE7D3C1FFE7D3C1FFDECBBBFFDECBBBFFDECBBBFFE7D3C1FFE7D3C1FFC89E 975 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFFC19973FFD9C4 976 AEFFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFC89E76FFD0B2 977 97FFD9C4AEFFD9C4AEFFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFD4B494FFC89E 978 76FFE2CBB4FFD9C4AEFFD9C4AEFFD9C4AEFFE2CBB4FFE2CBB4FFE2CBB4FFC89E 979 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFAFAFAFFC19973FFFEFE 980 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFD0B297FFE6DB 981 D1FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00EBDCCDFFD8B9 982 9CFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00C89E 983 76FFFFFFFF00FEFEFEFFFDFDFDFFFFFFFF00FDFDFDFFFAFAFAFFC89E76FFFFFF 984 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFD0B297FFE6DB 985 D1FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EBDCCDFFD0B2 986 97FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E 987 76FFFEFEFEFFFAFAFAFFFDFDFDFFFFFFFF00FDFDFDFFFEFEFEFFC0966CFFCDA8 988 83FFCDA883FFCDA883FFCDA883FFCDA883FFC5A280FFC5A280FFB88A5CFFC89E 989 76FFCDA883FFCDA883FFCDA883FFCDA883FFCDA883FFCDA883FFC0966CFFB88A 990 5CFFC5A280FFCDA883FFCDA883FFCDA883FFCDA883FFCDA883FFCDA883FFC096 991 6CFFFAFAFAFFFAFAFAFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00C89E76FFFAF6 992 F3FFFAF6F3FFFAF6F3FFFAF6F3FFF1EDEAFFF1EDEAFFF1EDEAFFD4B494FFEBDC 993 CDFFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFF1EDEAFFDECBBBFFD0B2 994 97FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFFAF6F3FFC199 995 73FFF5F5F5FFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E76FFFFFF 996 FF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFD8B99CFFF0E5 997 DAFFFFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFE2D4C6FFD8B9 998 9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFC199 999 73FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E76FFFFFF 1000 FF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00D8B99CFFF0E5 1001 DAFFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFEBDCCDFFD8B9 1002 9CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFC199 1003 73FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C6986EFFC89E 1004 76FFC19973FFC19973FFC19973FFC89E76FFC89E76FFC89E76FFBD8856FFC496 1005 6AFFC89E76FFC89E76FFC19973FFC19973FFC19973FFC89E76FFC29367FFBD88 1006 56FFC89E76FFC89E76FFC89E76FFC89E76FFC19973FFC19973FFC19973FFC698 1007 6EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C89E76FFF5F5 1008 F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00D8B99CFFF0E5 1009 DAFFFEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00EBDCCDFFD8B9 1010 9CFFFFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFC89E 1011 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFC19973FFF4F4 1012 F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00D8B99CFFF0E5 1013 DAFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00EBDCCDFFD8B9 1014 9CFFFFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00C89E 1015 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FAFAFAFFC0966CFFDECB 1016 BBFFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFCCA37DFFD4BB 1017 A2FFDECBBBFFDECBBBFFE7D3C1FFE7D3C1FFE7D3C1FFE7D3C1FFD8B99CFFCCA3 1018 7DFFE7D3C1FFDECBBBFFDECBBBFFDECBBBFFE7D3C1FFE7D3C1FFE7D3C1FFC89E 1019 76FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFAFAFAFFE2D4C6FFE2CB 1020 B4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFD9C4AEFFD9C4 1021 AEFFD9C4AEFFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFE2CB 1022 B4FFD9C4AEFFD9C4AEFFD9C4AEFFE2CBB4FFE2CBB4FFE2CBB4FFE2CBB4FFEBDC 1023 CDFFFFFFFF00FEFEFEFFFDFDFDFFFFFFFF00FDFDFDFFFAFAFAFFFEFEFEFFFFFF 1024 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5F5FFF4F4F4FFF5F5 1025 F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFF5F5 1026 F5FFF4F4F4FFF5F5F5FFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 1027 FF00FEFEFEFFFAFAFAFFFDFDFDFFFFFFFF00FDFDFDFFFEFEFEFFFFFFFF00FFFF 1028 FF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFF5F5F5FFFAFAFAFFFEFE 1029 FEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFF5F5 1030 F5FFFAFAFAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFE 1031 FEFFFAFAFAFFFAFAFAFFFDFDFDFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 1032 FF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFAFAFAFFFEFEFEFFFFFF 1033 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFAFAFFFAFAFAFFFAFA 1034 FAFFFEFEFEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FEFEFEFFFAFA 1035 FAFFFAFAFAFFFAFAFAFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF 1036 FF00FFFFFF00FFFFFF00FDFDFDFFFDFDFDFFFDFDFDFFFFFFFF00FFFFFF00FFFF 1037 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFDFDFDFFFDFDFDFFFFFF 1038 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFDFDFFFDFD 1039 FDFFFDFDFDFFFFFFFF00FFFFFF0000000000000000000000000000000001A099 1040 8F37A69F9385A9A196D2A9A195E2AAA296FFAAA296FFAAA296FFAAA296FFAAA2 1041 96FFAAA296FFAAA296FFAAA296FFAAA296FFAAA296FFA9A195E2A9A196D2A69F 1042 9385A0998F370000000100000000000000000000000000000000000000000000 1043 00000000000000000000000000000000000000000003A79F9489AAA396FFB7AE 1044 A3FFC8BFB4FFD9D1C6FFDDD5CAFFF1E9DFFFF0E8DEFFF0E8DEFFF0E8DEFFF0E8 1045 DEFFF0E8DEFFF0E8DEFFF0E8DEFFF0E8DEFFF1E9DFFFDDD5CAFFD9D1C6FFC8BF 1046 B4FFB7AEA3FFAAA296FFA79F9489000000030000000000000000000000000000 1047 000000000000000000000000000000000004A69E93B2B5ADA1FFDED5CBFFE9E1 1048 D7FFE7DFD5FFE6DED4FFE5DDD3FFE5DDD3FFE4DCD2FFE4DCD2FFE4DCD2FFE4DC 1049 D2FFE4DCD2FFE4DCD2FFE4DCD2FFE4DCD2FFE5DDD3FFE5DDD3FFE6DED4FFE7DF 1050 D5FFE9E1D7FFE2DAD0FFB5ADA1FFA69E93B20000000400000000000000000000 1051 00000000000000000000000000000000000DA9A296FFE0D6CDFFE0D6CCFFDED5 1052 CBFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4 1053 CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4CAFFDDD4 1054 CAFFDED5CBFFDFD6CCFFE0D6CDFFA9A296FF0000000D00000000000000000000 1055 000000000000000000000000000000000015A69F93FFECE5DDFFD5CCC2FFD5CC 1056 C2FFD6CDC3FFD7CEC3FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CE 1057 C4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC4FFD7CEC3FFD6CD 1058 C3FFD5CCC2FFD5CCC2FFECE5DDFFA69F93FF0000001500000000000000000000 1059 000000000000000000000000000000000016A69E93FFFFFCF5FFEAE3DBFFD3C9 1060 C0FFCDC3B9FFCEC5BAFFCEC5BBFFCFC6BBFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6 1061 BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6BCFFCFC6BBFFCEC5BBFFCEC5BAFFCDC3 1062 B9FFD3C9C0FFEAE3DBFFFFFCF5FFABA499FF0000001600000000000000000000 1063 000000000000000000000000000000000016A69F93FFCFC8BFFFF8F4ECFFFFFA 1064 F4FFF8F2EBFFE9E2DAFFE3DAD3FFD7CFC6FFD4CBC2FFD4CBC2FFD4CBC2FFD4CB 1065 C2FFD4CBC2FFD4CBC2FFD4CBC2FFD4CBC2FFD7CFC6FFE3DAD3FFE9E2DAFFF8F2 1066 EBFFFFFAF4FFF4F0E8FFCFC8BFFFA69F93FF0000001600000000000000000000 1067 000000000000000000000000000000000016A7A093FFC7BEB6FFC6BFB4FFD2CB 1068 C2FFE2DBD3FFF0EAE2FFF3EEE7FFFDFAF3FFFDF9F2FFFDF8F2FFFCF8F1FFFCF8 1069 F1FFFCF8F1FFFCF8F1FFFDF8F2FFFDF9F2FFFDF9F3FFF3EEE7FFEFEAE2FFE2DC 1070 D3FFD3CCC3FFC7BFB6FFC8BFB7FFA7A093FF0000001600000000000000000000 1071 000000000000000000000000000000000016A69F94FFC8C0B8FFC9C2B8FFCCC3 1072 BAFFCEC6BDFFD2C8BFFFD5CBC3FFD9CEC6FFDCD2CAFFE0D6CEFFE3D9D2FFE8DD 1073 D6FFEADED7FFE5DAD3FFE1D7CFFFDDD4CCFFDACFC7FFD6CCC4FFD3C9C0FFCFC7 1074 BEFFCDC4BBFFCAC2B9FFCAC1B9FFA69F94FF0000001600000000000000000000 1075 000000000000000000000000000000000016A59E93FFC9C1B9FFCAC3B9FFCDC5 1076 BCFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5CDFFE2D8D0FFE5DBD4FFE9DE 1077 D7FFEADFD8FFE6DCD5FFE3D9D1FFDFD6CEFFDCD2CAFFD8CFC7FFD5CCC3FFD1C9 1078 C0FFCEC6BDFFCBC3BAFFCBC3BAFFA69F93FF0000001600000000000000000000 1079 000000000000000000000000000000000014918B80B8B6AEA4FFCBC4BAFFCEC6 1080 BDFFD1C9C0FFD4CBC2FFD7CEC6FFDBD1C9FFDED5CDFFE2D8D0FFE5DBD4FFE9DE 1081 D7FFEBDFD8FFE6DCD5FFE3D9D1FFDFD6CEFFDCD2CAFFD8CFC7FFD5CCC3FFD1C9 1082 C0FFCFC7BEFFCDC5BCFFBFB7ADFF928C80B40000001400000000000000000000 1083 000000000000000000000000000000000010928C82B5B4ACA3FFB5ADA2FFC9C1 1084 B8FFD3CBC2FFD6CDC4FFD9D0C8FFDDD3CBFFDFD6CFFFE3D9D1FFE6DCD5FFEADF 1085 D8FFECE0D9FFE7DDD6FFE4DAD2FFE0D7D0FFDDD4CCFFDAD1CAFFD7CEC5FFD3CC 1086 C2FFD3CBC1FFC6BDB3FF7A7B7DFF7F8081FF0000001200000000000000000000 1087 000000000000000000000000000000000010A29A8FFFF1EBE4FFB7AFA6FFA59C 1088 91FFABA298FFBBB2A9FFC5BAB1FFD1C8BFFFD5CBC2FFE1D7CFFFE8DED7FFECE1 1089 DAFFEEE2DBFFE9DFD8FFE6DDD5FFD9D1CBFFD2CDC7FFCFC8C4FFBFB7B0FFB8AE 1090 A5FFB3A99FFF787A7BFFC4C2C0FFB4B2AFFF777777FF00000006000000000000 1091 000000000000000000000000000000000014A09A8EFFD3CBC3FFF6F1EAFFEFE9 1092 E3FFDAD5CDFFCAC2BAFFBCB3ABFFB4ABA1FFB4AAA1FFB6ACA3FFB8AEA6FFBAB0 1093 A6FFBBB0A8FFB9AEA6FFB8AEA8FFB8B2AFFFB3772CFFB3772CFFCECCC9FFE4DF 1094 D9FF78797BFFC2C1BFFFAFADABFFA19E9CFF777778FF00000011000000000000 1095 000000000000000000000000000000000016A09A8FFFC8C0B7FFC7C0B6FFD4CD 1096 C4FFE4DDD6FFF2EDE5FFF6F1EAFFFFFCF5FFFFFBF4FFFFFBF4FFFEFAF3FFFDFA 1097 F3FFFDFAF3FFFFFBF5FFFFFFFFFFB1752BFFFFEECCFFFFEAC7FFB4782EFF737B 1098 83FFC1C1C2FFAFADABFF9F9B9AFF737375FF0000003700000011000000000000 1099 000000000000000000000000000000000016A09A8EFFC9C1B8FFC9C2B8FFCCC4 1100 BBFFCEC6BDFFD2C9C0FFD5CCC4FFD9CFC7FFDCD3CBFFE1D6CEFFE4D9D2FFE9DD 1101 D6FFEADFD8FFE6DEDAFFE5E1E0FFAF762EFFFFD699FFFFD093FFFBDAB3FFB77A 1102 31FFAAAEB3FF9C9B9CFF6E7073FFA8A094FF0000002200000006000000000000 1103 000000000000000000000000000000000016A0998FFFCAC2B9FFCAC3B9FFCDC5 1104 BCFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5CDFFE2D8D0FFE5DBD4FFE9DE 1105 D8FFECE2DDFFE9E3E3FFAD7229FFFFECC8FFAB7431FFFFD296FFFFCC8CFFF6D4 1106 A8FFB87C33FF686F78FFD3CCC4FFA39C92FF0000001600000000000000068888 1107 88FF8A8A8AFF0000000600000000000000148B867CB8B7AFA4FFCBC5BAFFCEC6 1108 BDFFD1C9C0FFD4CBC2FFD7CEC6FFDBD1C9FFDED5CDFFE2D8D0FFE5DBD4FFEADF 1109 D9FFEDE5E3FFAF7329FFFFE3BAFFFFCD8FFFFFE9CBFFAA7431FFFFCF90FFFDC8 1110 86FFF2CC9DFFB87C34FFBEBBB9FF8B877FB60000001400000006858686FFC6C3 1111 C1FFB4B2B0FF777778FF00000006000000108D877DB5B5ACA4FFB5ADA2FFC9C1 1112 B8FFD3CBC2FFD6CDC4FFD9D0C8FFDDD3CBFFDFD6CEFFE3D9D1FFE6DCD5FFEBE0 1113 DAFFEFE7E6FFB0762EFFFFDCAEFFFCC887FFFCC988FFFFE5C0FFAB7533FFFECB 1114 8BFFFBC580FFEBC390FFB77C35FF888883AD00000015858586FFC4C2C0FFB0AE 1115 ABFFA29E9CFF787878FF00000011000000109B958BFFF2ECE4FFB8AFA6FFA59C 1116 91FFABA298FFBBB2A9FFC5BAB1FFD1C8BFFFD5CBC2FFE5DBD3FFE8DED7FFEDE3 1117 DDFFF0EAE8FFB07730FFFED6A2FFF8C481FFF7C482FFF9C582FFFFDFB5FFAC76 1118 35FFFBC885FFF7C079FFEFC48DFFBA7F37FF7F868FFFC3C3C4FFAFAEACFFA09D 1119 9BFF767676FF0000003700000011000000149A958AFFD3CCC3FFF6F1EAFFEFE9 1120 E3FFDAD5CDFFCAC2BAFFBCB3ABFFB4ABA1FFB4AAA1FFB6ACA2FFB8AEA6FFBBB1 1121 A8FFBEB6B4FFB17832FFFCCF96FFF6C17DFFF5C17EFFF5C17DFFF7C27DFFFDD8 1122 A9FFAC7737FFF9C37EFFF4BD72FFDCAF74FFB97F37FFABB0B6FF9E9D9EFF7576 1123 78FF0000003D0000001C00000006000000169A9589FFC8C0B7FFC7C0B6FFD4CD 1124 C4FFE4DDD6FFF2EDE5FFF6F1EAFFFFFCF5FFFFFBF4FFFFFBF4FFFEFAF3FFFEFB 1125 F5FFFFFFFFFFB07731FFFAC888FFF4BE79FFF3BE79FFF3BE79FFF3BE79FFF5BF 1126 79FFFBD19CFFAD7939FFF7C078FFF3BA6DFFD29E57DFBB813AFF6D7580FF0000 1127 003D0000001C0000000600000000000000169A948AFFC9C1B8FFC9C2B8FFCCC4 1128 BBFFCEC6BDFFD2C9C0FFD5CCC4FFD9CFC7FFDCD3CBFFE1D6CEFFE4D9D2FFE9DE 1129 D9FFEEE7E6FFB17832FFF6C27BFFF1BC73FFF0BB73FFF0BB73FFF0BB73FFF0BB 1130 73FFF2BC73FFF7CB8EFFAD7A3BFFF4BD72FFEFB667FFCF994DE1BB8441FF0000 1131 002200000006000000000000000000000016999389FFCAC2B9FFCAC3B9FFCDC5 1132 BCFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5CDFFE2D8D0FFE5DBD4FFEAE0 1133 D9FFEFE7E5FFB37830FFF6BC6EFFF0B96FFFEEB76EFFEEB76EFFEEB76EFFEEB7 1134 6EFFEEB76EFFF0B86EFFF5C380FFAE7B3EFFF2B96EFFECB360FFD09645E4B985 1135 45FF00000006000000000000000000000016999489FFC8C1B7FFCBC4BAFFCEC6 1136 BDFFD0C8BFFFD4CBC2FFD7CEC6FFDBD1C9FFDED5CDFFE2D8D0FFE5DBD4FFECE1 1137 DAFFF3E8E3FF8C9196FFB47A33FFF2B766FFEEB668FFECB468FFECB468FFECB4 1138 68FFECB468FFECB468FFEEB668FFF1BB72FFB07D40FFECB15DFFEEB15BFFB885 1139 46FF0000001100000000000000000000001588847BC1A09B91FFC8C1B7FFD2CA 1140 C1FFD3CBC2FFD7CEC5FFD9D0C8FFDDD3CBFFDFD6CEFFE3D9D1FFE7DDD6FFF0E4 1141 DDFF8C8C8AFFE3E4E6FFD0D4DDFFB57A34FFEFB562FFEBB363FFEAB263FFEAB2 1142 63FFEAB263FFEAB263FFEAB263FFECB465FFF1B868FFB58244FFB88445FF0000 1143 00370000001100000000000000000000000D0000002E78736BA8979187FFA19B 1144 91FFB1AAA1FFC5BCB4FFCBC3BAFFE3D8D0FFE5DCD4FFEADFD7FFEEE3DCFFF7EA 1145 E3FF8E8D8BFFD6D4D4FFC1C2C4FFB0B5BBFFB97F39FFEFB35DFFECB25FFFECB2 1146 5FFFECB25FFFECB25FFFECB25FFFEEB460FFB68244FF00000048000000370000 1147 001C00000006000000000000000000000004000000130000002B0000003E4745 1148 406D737068A78B877DDF8E8980EA948F85FF938E84FF928E83FF928D83FF938E 1149 83FF8F8C8AFF8A8785FFB7B6B4FFA6A5A6FF777C84FFBB8440FFB78344FFB683 1150 45FFB68345FFB68345FFB68345FFB88445FF0000003D00000022000000110000 1151 000600000000000000000000000000000000000000030000000B000000160000 1152 00200000002D000000370000003E000000410000004300000043000000488F8C 1153 8BFFD7D5D4FF878682FF84837FFF7F7D7DFF0000004800000043000000430000 1154 0043000000430000004300000043000000370000001C00000006000000000000 1155 0000000000000000000000000000000000000000000000000000000000010000 1156 00050000000B000000110000001400000016000000160000001600000025ABA8 1157 A7C6868481FF0000004800000043000000370000002200000016000000160000 1158 0016000000160000001600000016000000110000000600000000000000000000 1159 0000000000000000000000000000000000000000000000000000000000000000 1160 00000000000000000000000000000000000000000000000000000000000D0000 1161 002B000000340000002200000016000000110000000600000000000000000000 1162 0000000000000000000000000000000000000000000000000000000000000000 1163 0000000000000000000000000000000000000000000000000000000000000000 1164 0000000000000000000000000000000000000000000000000000000000040000 1165 000D0000000F0000000600000000000000000000000000000000000000000000 1166 0000000000000000000000000000000000000000000000000000000000000000 1167 0000000000000000000000000000000000000000000000000000000000000000 1168 0000000000000000000000000000000000000000000000000000000000000000 1169 0000000000000000000000000000000000000000000000000000000000000000 1170 0000000000000000000000000000000000000000000000000000000000000000 1171 0000000000000000000000000000000000000000000000000000000000000000 1172 0000000000000000000000000000000000000000000000000000000000000000 1173 0000000000000000000000000000000000000000000000000000000000000000 1174 0000000000000000000000000000000000000000000000000000000000000000 1175 0000000000000000000000000000000000000000000000000000000000000000 1176 000000000000000000008080803485858598878789C68686869A808080440000 1177 0000000000000000000000000000000000000000000000000000000000000000 1178 0000000000000000000000000000000000000000000000000000000000000000 1179 0000000000000000000000000000000000000000000000000000000000000000 1180 0000000000008181816D878787FFE4E5E5FFE9EAEAFFDCDDDDFF9A9A9AF68383 1181 8590000000010000000000000000000000000000000000000000000000000000 1182 00000000000000000000000000000000000000000000878A87488092800E0000 1183 0000000000000000000000000000000000000000000000000000000000000000 1184 0000000000007C7C7C29848484F3E2E3E3FEF3F4F5FFECEEEFFFF3F4F4FFA4A4 1185 A4F6848485970000000100000000000000000000000000000000000000000000 1186 000000000000000000000000000000000000888D8A6B858A88FF898E8CD08989 1187 890D000000000000000000000000000000000000000000000000000000006D6D 1188 6D07000000000000000080808028858585EDDFDFE0FEF1F2F3FFEAECEDFFF3F4 1189 F5FFA4A4A4F68486868B00000000000000000000000000000000000000000000 1190 0000000000000000000000000000858C8849898F8DF5CACECEFFA2A7A6F7898E 1191 8CCE8080800C0000000000000000000000000000000000000000818181577F7F 1192 7FFF7D7D7D3F00000000000000007C7C7C27878787ECDFDFE0FEF1F2F3FFEAEC 1193 EDFFF3F4F4FF9A9A9AF67D7D7D3F000000000000000000000000000000000000 1194 00000000000000000000838B8B21858A88FFCBCFCEFFE3E6E6FFDADEDEFFA1A6 1195 A5F7868B89EAAAAAAA0300000000000000000000000000000000888888EFDADA 1196 DBFF898989F58080803E000000000000000080808026828282FFEDEDEEFFEAEC 1197 EDFFEBECEEFFE2E2E3FF878787AC000000000000000000000000000000000000 1198 00000000000000000000868A8876A3A7A7F6F5F6F6FFF1F2F2FFE1E4E4FF9FA3 1199 A2F5878C8AE8808080020000000000000000000000007B7B7B1FA8A8A9F6F7F8 1200 F8FFE8E8E9FF8A8A8AF47D7D7D3D0000000000000000868888BAE0E0E1FFEAEC 1201 EEFFE6E8EAFFEEEFEFFF878788D6000000000000000000000000000000000000 1202 000000000000878D8731878C8AF6BBC1C0FFE1E4E4FFE6E8E8FF949A98F4898D 1203 8CAA80808006000000000000000000000000000000007B7B7B1BA1A1A1F7F2F3 1204 F4FFEFF1F2FFE7E8E9FF898A8AF48080806E8080806C898989FCF1F1F2FFEAEB 1205 EDFFEAECEDFFDEDFDFFF868686B1000000000000000000000000000000000000 1206 0000858A8A30888D8CF0B9BEBEFEC8CDCDFF949A99F4868B89FE888D8B8BFFFF 1207 FF01000000000000000000000000000000000000000000000000878787E7EBEC 1208 ECFFEEEFF0FFEFF1F2FFE9E9EAFFABACACF3B0B1B1F4EAEBEBFFEEEFF1FFE5E7 1209 E9FFF6F7F7FFB6B7B7FB8181819E00000000000000000000000000000000858A 1210 8A30888D8BF0B8BEBDFEC8CDCDFF8B9290F5868A88878989891C000000000000 1211 0000000000000000000000000000000000000000000000000000808080549090 1212 90F6EFF0F1FFEEEFF0FFEFF0F1FFF2F3F4FFF2F3F4FFEDEFF0FFE5E7E9FFE5E7 1213 E9FFEBEDEEFFF0F1F2FF979797F68183836B00000000000000008888882F888C 1214 8BF0B8BEBDFEC8CDCDFF8B9290F5878E8C710000000000000000000000000000 1215 0000000000000000000000000000000000000000000000000000000000008282 1216 8270909091F6EFF0F1FFEEEFF0FFE5E7E9FFE5E7E9FFE6E8EAFFECEEEFFFE5E7 1217 E9FFE5E7E9FFEBEDEEFFF0F1F2FF979797F68282826C8888882F888D8BEFB6BA 1218 BAFEC8CDCDFF8D918FF4878E8C71000000000000000000000000000000000000 1219 0000000000000000000000000000000000000000000000000000000000000000 1220 0000828282708F8F8FF6EAEBEBFFF3F4F4FFF1F2F3FFF0F0F1FFF3F3F4FFEFF0 1221 F1FFE2E3E5FFC9C8C7FFDDDDDDFFF0F1F2FF969797F7858787F6A0A6A6FEB5BB 1222 BBFF8B918FF5888D8B7200000000000000000000000000000000000000000000 1223 0000000000000000000000000000000000000000000000000000000000000000 1224 0000000000008080804A868686EAA1A1A1F3A3A4A4F1878787FB858585FFEAEA 1225 EBFFE9EAEAFFC5C4C3FFC4C1C0FFDDDDDDFFF0F1F2FF969696FF8D9393FF888E 1226 8BF5868D8B720000000000000000000000000000000000000000000000000000 1227 0000000000000000000000000000000000000000000000000000000000000000 1228 00000000000000000000000000007B7B7B1F7C7C7C2180808004808080488A8A 1229 8AF5EAEBEBFFE8E8E8FFC5C4C3FFC4C1C0FFDEDDDEFFF0F1F2FF959595FF8485 1230 84AE000000000000000000000000000000000000000000000000000000000000 1231 0000000000000000000000000000000000000000000000000000000000000000 1232 0000000000000000000000000000000000000000000000000000000000008080 1233 80488B8B8BF6EAEBECFFE8E8E8FFC5C4C3FFC4C1C0FFDEDDDEFFF0F1F2FF9596 1234 96F68282826E0000000000000000000000000000000000000000000000000000 1235 0000000000000000000000000000000000000000000000000000000000000000 1236 000000000000000000000000000000000000AA55000386491E2A85481E438651 1237 1B13818383678B8B8BFEEAEBECFFE8E8E8FFC5C4C3FFC5C2C1FFDFDEDFFFF0F1 1238 F2FF959595F68282826E00000000000000000000000000000000000000000000 1239 0000000000000000000000000000000000000000000000000000000000000000 1240 0000000000000000000000000000894E1F52955F37EFAF8362F1B28768F3966B 1241 4BFA868885FA8C9392FE8B8B8BFFEAEBECFFE8E8E9FFC8C7C7FFC9C6C6FFE0E0 1242 E1FFF0F1F2FF959596F68282826E000000000000000000000000000000000000 1243 0000000000000000000000000000000000000000000000000000000000000000 1244 00000000000000000000864A215DA06E4CF7D9BDA1FFDAB38FFFD5AA83FFA399 1245 8CFF8F9695FF969F9FFF858987F88B8B8BF9EAEBECFFE8E9EAFFCBCBCBFFCCCB 1246 CBFFE1E2E3FFF0F1F2FF959696F68282826E0000000000000000000000000000 1247 0000000000000000000000000000000000000000000000000000000000000000 1248 000000000000864B235FA2714EF7DCBEA4FFD7AF89FFCD9B6EFFC68F60FFB185 1249 61FF898C89FF878B88FF877565B3808080488C8C8CF6EBEBECFFE9EAEBFFCFCF 1250 CFFFCFCFD0FFE3E3E5FFF0F1F2FF959696F68383836F00000000000000000000 1251 0000000000000000000000000000000000000000000000000000000000000000 1252 0000864C2261A1714EF7DDC1A6FFD7B08BFFCD9B6EFFC68E60FFB47A4DFFBA77 1253 45FFAD7347FFB9957BFF8E522AD000000000808080488C8C8CF6EBEBECFFE9EA 1254 ECFFD2D3D4FFD2D3D4FFE4E5E7FFF0F1F2FF949595F68383836F000000000000 1255 000000000000000000000000000000000000000000000000000000000000864B 1256 2163A3734FF7DDC2A9FFD8B18CFFCD9C6EFFC38D5EFF9F6B41FFBB8054FFB46C 1257 39FFAD5F2AFFC38E6BFF955B35E20000000000000000808080488C8C8CF6EBEB 1258 ECFFEAEBEDFFD5D7D9FFD4D5D7FFE4E5E7FFF0F1F2FF959595F5828282700000 1259 0000000000000000000000000000000000000000000000000000894920389F6C 1260 49F7DEC2A9FFD8B08CFFCD9C6FFFC48D5EFF9E6B42FFBB8156FFB7703FFFAD5F 1261 2AFFB16532FFC39474FF8F5429B6000000000000000000000000808080488C8C 1262 8CF6EBEBECFFEAEBEDFFD5D7D9FFD4D5D7FFEAECEDFFF0F1F2FF949495F68282 1263 827000000000000000000000000000000000000000000000000092582DB1D0AF 1264 93FFD4AA82FFCD9C6FFFC38C5FFF9F6B43FFBB8156FFB77240FFAE602BFFB064 1265 31FFC59371FF9F6B48F7884A213E000000000000000000000000000000008080 1266 80488C8C8CF6EBECECFFEBECEDFFE0E2E4FFE5E7E9FFEBECEEFFF1F1F2FF9292 1267 93F57E7E7E47000000000000000000000000000000000000000097613BE0D7B4 1268 95FFCE9D70FFC38E5FFF9F6B43FFBC8256FFB77140FFAE602BFFB06431FFC593 1269 71FFA26F4DF6894B227000000000000000000000000000000000000000000000 1270 0000808080488C8C8CF6EBECECFFEEEFF0FFC6C7C9FF898A8AFFEFF1F2FFD4D6 1271 D6FF868686A7000000000000000000000000000000000000000091572FD2D4B3 1272 97FFC89264FFA87247FFBC8256FFB77140FFAE602BFFB06431FFC59271FFA16D 1273 4CF7884A226F0000000000000000000000000000000000000000000000000000 1274 0000000000017979794C8C8C8CF6EBECECFFEAEBECFFD3D5D6FFF5F5F6FFA8A8 1275 A9F681818169000000000000000000000000000000000000000C7A452086B489 1276 69F8D0A27DFFBB7C4CFFB5703EFFAE612CFFB16532FFC69471FF9F6E4BF87943 1277 1D7A000000050000000000000000000000000000000000000000000000070000 1278 000D00000013000000186363635D8C8C8CF7EAEBEBFFF4F5F5FFADAEAEF88181 1279 81B80E0E0E1200000009000000020000000200000014000000260C08043E864D 1280 27E4BB9071FCCA9773FFB97749FFB97547FFC69473FF9F6D49F9643618920000 1281 00310000001F0000000D000000000000000000000000000000060000000D0000 1282 00150000001C000000230000002A5454546A828282F0828282F97A7A7AAD0808 1283 0821000000170000001000000008000000010000001400000026000000381E0F 1284 065679421ECD996642FBAE7E5EF8A97A5AF8945D38F757311593000000430000 1285 00310000001F0000000B000000000000000000000000000000030000000A0000 1286 0010000000160000001C000000210000002400000024000000220000001E0000 1287 0018000000120000000C0000000500000000000000000000000A0000001A0000 1288 002600000030341D0D4F593115784A291264150D043C0000002C000000210000 1289 0013000000040000000000000000000000000000000000000000000000000000 1290 0002000000060000000B0000000D0000000F0000000F0000000E0000000C0000 1291 0008000000030000000000000000000000000000000000000000000000000000 1292 0000000000000000000100000002000000020000000000000000000000000000 1293 0000000000000000000000000000000000000000000000000000000000000000 1294 0000000000000000000000000000000000000000000000000000000000000000 1295 0000000000000000000000000000FFFFFF000000000000000000000000000000 1296 0000000000000000000000000000000000000000000000000000000000000000 1297 0000000000000000000000000000000000000000000000000000000000000000 1298 0000000000000000000000000000000000000000000000000000000000000000 1299 00069A9895FFAAA8A6A400000003FFFFFF000000000000000000000000000000 1300 0000000000000000000000000000000000000000000000000000000000000000 1301 0000000000000000000000000000000000000000000000000000000000000000 1302 00000000000000000000000000000000000000000006969391FF969391FF9693 1303 91FFBDBAB9FF969391FF0000000DFFFFFF000000000000000000000000000000 1304 0000000000000000000000000000000000000000000000000000000000000000 1305 00000000000000000000000000000000000000000006C3945CFFC3945CFFC394 1306 5CFFC3945CFFC3945CFFC3945CFFC3945CFF94918FFFDAD8D7FFCDCBCAFF918E 1307 8CFF918E8CFF000000330000000FFFFFFF000000000000000000000000000000 1308 0000000000000000000000000000000000000000000000000000000000000000 1309 000000000000000000000000000000000006BB8747FFFFE5C4FFFFE5C4FFFFE5 1310 C4FFFFE5C4FFFFE5C4FFFFE5C4FFFFE5C4FFC3945CFFCDCBCAFFBFBDBCFFB2B0 1311 AEFF8C8987FF0000002200000006FFFFFF000000000000000000000000000000 1312 0000000000000000000000000000000000000000000000000000000000000000 1313 00000000000000000006BB8747FFBB8747FFFEE2C1FFFDCC90FFFDCC90FFFDCC 1314 90FFFDCC90FFFDCC90FFFDCC90FFFDCC90FFFDCC90FFBB8747FFB2B0AEFFA5A2 1315 A0FF878482FF0000001600000000FFFFFF000000000000000000000000000000 1316 0000000000000000000000000000000000000000000000000000000000000000 1317 000000000006BB8747FFF6D3ABE1F2CFA5E3BB8747FFFCDFBBFFF9C789FFF9C7 1318 89FFF9C789FFF9C789FFF9C789FFF9C789FFF9C789FFF9C789FFBB8747FF827F 1319 7DFF000000370000001100000000FFFFFF000000000000000000000000000000 1320 0000000000000000000000000000000000000000000000000000000000000000 1321 000000000011BB8747FFFFCF96FFFECE94FFF9C688FFBB8747FFFAD9AFFFF6C3 1322 81FFF6C381FFF6C381FFF6C381FFF6C381FFF6C381FFF6C381FFFAD9AFFFBB87 1323 47FF000000220000000600000000FFFFFF000000000000000000000000000000 1324 0000000000000000000000000000000000000000000000000000000000000000 1325 00000000001100000037BB8747FFFDCC91FFFBCA8DFFF6C280FFBB8747FFF7D3 1326 A3FFF3BF7AFFF3BF7AFFF3BF7AFFF3BF7AFFF3BF7AFFF3BF7AFFF7D3A3FFBB87 1327 47FF000000160000000000000000FFFFFF000000000000000000000000000000 1328 0000000000000000000000000000000000000000000000000000000000000000 1329 0000000000060000001C0000003DBB8747FFFAC88AFFF9C687FFF3BE79FFBB87 1330 47FFF4CC96FFF0BA72FFF0BA72FFF0BA72FFF0BA72FFF0BA72FFF4CC96FFBB87 1331 47FF000000160000000000000000FFFFFF000000000000000000000000000000 1332 0000000000000000000000000000000000000000000000000000000000000000 1333 000000000000000000060000001C0000003DBB8747FFF7C484FFF6C381FFF0BA 1334 73FFBB8747FFF1C589FFEDB66BFFEDB66BFFEDB66BFFEDB66BFFF1C589FFBB87 1335 47FF000000160000000000000000FFFFFF000000000000000000000000000000 1336 0000000000000000000000000000000000000000000000000000000000000000 1337 0006A2A2A2FFA2A2A2FF0000000B0000001C0000003DBB8747FFF5C17EFFF3BF 1338 7BFFEDB66BFFBB8747FFEDBD7AFFEAB163FFEAB163FFEAB163FFEDBD7AFFBB87 1339 47FF000000160000000000000000FFFFFF000000000000000000000000000000 1340 000000000000000000000000000000000000000000000000000000000006A2A2 1341 A2FFBBB9B7FFACAAA8FF7B7B7BFF0000000B0000001C0000003DBB8747FFF2BD 1342 78FFF1BB74FFEAB265FFBB8747FFE9B46BFFE6AD5CFFE6AD5CFFE9B46BFFBB87 1343 47FF000000160000000000000000FFFFFF000000000000000000000000000000 1344 00000000000000000006BB8747FFBB8747FF0000000600000006A2A2A2FFBBB9 1345 B7FFACAAA8FF9E9B99FF7B7B7BFF00000011000000060000001C0000003DBB87 1346 47FFEFB971FFEEB76EFFE7AE5EFFBB8747FFE5AC5BFFE4A955FFE5AC5BFFBB87 1347 47FF000000160000000000000000FFFFFF000000000000000000000000000000 1348 000000000006BB8747FFF6D4ABE1F4D1A8E1BB8747FFA2A2A2FFBBB9B7FFACAA 1349 A8FF9E9B99FF7B7B7BFF000000370000001100000000000000060000001C0000 1350 003DBB8747FFEDB66BFFEBB468FFE6AC5AFFBB8747FFE3A854FFBB8747FF0000 1351 0037000000110000000000000000FFFFFF000000000000000000000000000000 1352 000000000011BB8747FFFECE94FFFDCC91FFEEC99CE3BB8747FFACAAA8FF9E9B 1353 99FF7B7B7BFF0000003D0000001C000000060000000000000000000000060000 1354 001C0000003DBB8747FFEAB265FFE9B062FFCB9349E6BB8747FF0000003D0000 1355 001C000000060000000000000000FFFFFF000000000000000000000000000000 1356 0006BB8747FFFFDEB7FFBB8747FFFDCC91FFFAC88AFFE8C08FE6BB8747FF7B7B 1357 7BFF0000003D0000001C000000060000000000000006A2A2A2FFA2A2A2FF0000 1358 000B0000001C0000003DBB8747FFE7AE5EFFE6AC5BFFBB8747FF000000220000 1359 0006000000000000000000000000FFFFFF00000000000000000000000006BB87 1360 47FFFDD9AEFFFCCB8FFFFDDEB9FFBB8747FFFAC98BFFF7C484FFE3B984E6BB87 1361 47FF00000022000000060000000000000006A2A2A2FFBBB9B7FFACAAA8FF7B7B 1362 7BFF0000000B0000001C0000003DBB8747FFBB8747FF00000037000000110000 1363 0000000000000000000000000000FFFFFF00000000000000000000000011BB87 1364 47FFFBD4A4FFFAC889FFFAC889FFFCDAB0FFBB8747FFF8C586FFF5C17EFFE2B5 1365 7BE3BB8747FF0000000600000006A2A2A2FFBBB9B7FFACAAA8FF9E9B99FF7B7B 1366 7BFF00000011000000060000001C00000037000000370000001C000000060000 1367 0000000000000000000000000000FFFFFF00000000000000000000000016BB87 1368 47FFF8CF99FFF7C483FFF7C483FFF7C483FFF9D5A6FFBB8747FFF5C280FFF2BD 1369 78FFDEB071E2BB8747FFA2A2A2FFBBB9B7FFACAAA8FF9E9B99FF7B7B7BFF0000 1370 0037000000110000000000000006000000110000001100000006000000000000 1371 0000000000000000000000000000FFFFFF00000000000000000000000016BB87 1372 47FFF6C98FFFF5C17EFFF5C17EFFF5C17EFFF5C17EFFF7CF9CFFBB8747FFF3BE 1373 7AFFEFB971FFD9A766E3BB8747FFACAAA8FF9E9B99FF7B7B7BFF0000003D0000 1374 001C000000060000000000000000000000000000000000000000000000000000 1375 0000000000000000000000000000FFFFFF00000000000000000000000016BB87 1376 47FFF4C383FFF3BE79FFF3BE79FFF3BE79FFF3BE79FFF3BE79FFF5C991FFBB87 1377 47FFF1BB74FFEDB66BFFD2A05BE6BB8747FF7B7B7BFF0000003D0000001C0000 1378 0006000000000000000000000000000000000000000000000000000000000000 1379 0000000000000000000000000000FFFFFF00000000000000000000000016BB87 1380 47FFF1BD78FFF0BB73FFF0BB73FFF0BB73FFF0BB73FFF0BB73FFF0BB73FFF2C4 1381 85FFBB8747FFEEB86EFFEAB265FFCE9950E6BB8747FF00000022000000060000 1382 0000000000000000000000000000000000000000000000000000000000000000 1383 0000000000000000000000000000FFFFFF00000000000000000000000016BB87 1384 47FFEEB76EFFEEB76EFFEEB76EFFEEB76EFFEEB76EFFEEB76EFFEEB76EFFEEB7 1385 6EFFF0BD79FFBB8747FFECB469FFE7AE5EFFCD9447E3BB8747FF000000060000 1386 0000000000000000000000000000000000000000000000000000000000000000 1387 0000000000000000000000000000FFFFFF000000000000000000000000169C9A 1388 97FFBB8747FFECB468FFECB468FFECB468FFECB468FFECB468FFECB468FFECB4 1389 68FFECB468FFECB66DFFBB8747FFE6AC5BFFE5AA58FFBB8747FF000000110000 1390 0000000000000000000000000000000000000000000000000000000000000000 1391 0000000000000000000000000000FFFFFF0000000000000000069C9A97FFDAD8 1392 D7FFCDCBCAFFBB8747FFE9B163FFE9B163FFE9B163FFE9B163FFE9B163FFE9B1 1393 63FFE9B163FFE9B163FFE9B163FFBB8747FFBB8747FF00000037000000110000 1394 0000000000000000000000000000000000000000000000000000000000000000 1395 0000000000000000000000000000FFFFFF000000000000000011999794FFCDCB 1396 CAFFBFBDBCFFB2B0AEFFBB8747FFE7AE5DFFE7AE5DFFE7AE5DFFE7AE5DFFE7AE 1397 5DFFE7AE5DFFE7AE5DFFBB8747FF00000048000000370000001C000000060000 1398 0000000000000000000000000000000000000000000000000000000000000000 1399 0000000000000000000000000000FFFFFF000000000000000016959290FF918E 1400 8CFFB2B0AEFFA5A2A0FF84817FFFBB8747FFBB8747FFBB8747FFBB8747FFBB87 1401 47FFBB8747FFBB8747FF0000003D000000220000001100000006000000000000 1402 0000000000000000000000000000000000000000000000000000000000000000 1403 0000000000000000000000000000FFFFFF0000000006959290FFC8C6C4FF8C8A 1404 87FF888683FF84817FFF00000048000000430000004300000043000000430000 1405 004300000043000000370000001C000000060000000000000000000000000000 1406 0000000000000000000000000000000000000000000000000000000000000000 1407 0000000000000000000000000000FFFFFF000000000FA5A3A1B28C8A87FF0000 1408 0048000000430000003700000022000000160000001600000016000000160000 1409 0016000000160000001100000006000000000000000000000000000000000000 1410 0000000000000000000000000000000000000000000000000000000000000000 1411 0000000000000000000000000000FFFFFF000000000D0000002A000000330000 1412 0022000000160000001100000006000000000000000000000000000000000000 1413 0000000000000000000000000000000000000000000000000000000000000000 1414 0000000000000000000000000000000000000000000000000000000000000000 1415 0000000000000000000000000000FFFFFF00000000030000000D0000000F0000 1416 0006000000000000000000000000000000000000000000000000000000000000 1417 0000000000000000000000000000000000000000000000000000000000000000 1418 0000000000000000000000000000000000000000000000000000000000000000 1419 0000000000000000000000000000FFFFFF000000000000000000000000000000 1420 0000000000000000000000000000000000000000000000000000000000000000 1421 0000000000000000000000000000000000000000000000000000000000000000 1422 0000000000000000000000000000000000000000000000000000000000000000 1423 0000000000000000000000000000000000000000000000000000000000000000 1424 00000000000000000000000000000000000000000000CFCFCF1DC1C1C162BDBD 1425 BD97B9B9B9B8B6B6B6C6B3B3B3C6B0B0B0B7A6A6A6969A9A9A62727272220000 1426 0006000000010000000000000000000000000000000000000000000000000000 1427 0000000000000000000000000000000000000000000000000000000000000000 1428 00000000000000000000FFFFFF01D2D2D250D4D4D4C1CECECEFCDBDBDBFFE5E5 1429 E5FFEDEDEDFFEFEFEFFFEDEDEDFFE6E6E6FFD9D9D9FFC8C8C8FFB2B2B2FAA5A5 1430 A5B88C8C8C500000000C00000003000000000000000000000000000000000000 1431 0000000000000000000000000000000000000000000000000000000000000000 1432 000000000000E1E1E12EC5C5C5C6D5D5D5FEEFEFEFFFFEFEFEFFFCFCFDFFFAFB 1433 FBFFF7F9F9FFF5F6F8FFF4F6F7FFF2F3F4FFF0F1F1FFEFEFEFFFEDEDEDFFD6D6 1434 D6FFB1B1B1FE999999BB5B5B5B38000000090000000100000000000000000000 1435 0000000000000000000000000000000000000000000000000000000000000000 1436 0000DFDFDF63CECECEF6EDEDEDFFFFFFFFFFFBFCFCFFFAFCFEFFE3E6EAFFCED1 1437 D2FFCCC5BCFFCEBFB0FFCFC0B1FFCDC7C1FFD1D4D9FFE0E4E8FFEAECEDFFE8E8 1438 E8FFE9E9E9FFC7C7C7FF989898EF6C6C6C690000001200000003000000000000 1439 000000000000000000000000000000000000000000000000000000000000E1E1 1440 E17CD4D4D4FEFAFAFAFFFCFCFCFFFBFCFDFFD3D6D7FFC7B4A0FFDFB081FFF4B4 1441 73FFF5B26FFFF4B16BFFF1AC66FFF0A85FFFE9A55EFFD8A874FFCDBBAAFFD6DB 1442 E0FFE3E4E6FFE2E2E2FFD8D8D8FF9B9B9BFB6969697E00000019000000040000 1443 0000000000000000000000000000000000000000000000000000E2E2E26BD5D5 1444 D5FEFCFCFCFFFBFCFCFFEAEEF0FFC3B6AAFFECB882FFFABD81FFF8BC81FFF6BB 1445 7EFFF5B87BFFF3B576FFF1B171FFEFAE6AFFEEA964FFECA55DFFEAA051FFDDA1 1446 64FFCDC6C0FFDCDFE2FFDDDDDEFFD9D9D9FF959595FB52525276000000190000 1447 00030000000000000000000000000000000000000000DFDFDF39CFCFCFF9F9F9 1448 F9FFFAFBFBFFE1E5E7FFCCB196FFFDC085FFFAC38AFFFAC189FFF7BE84FFF1B8 1449 7BFFEAAF72FFE4A869FFE2A464FFE4A361FFE8A55FFFEBA65EFFEAA25BFFE89E 1450 52FFE59848FFD0BAA5FFD6DADDFFDADADAFFCFCFCFFF858585F12A2A2A5C0000 1451 001300000001000000000000000000000000BEBEBE06CACACAD4EDEDEDFFF9F9 1452 FAFFE7EAEDFFCEB295FFFEC289FFFCC690FFF9C48EFFEBBF96FFECCBB3FFF2DA 1453 CEFFF8E6E4FFFDEEF0FFFEEEF2FFF9E4E3FFEFCFC2FFE0AF86FFDE9951FFE8A0 1454 56FFE69B4FFFE59440FFD2BCA7FFD4D7DAFFD6D6D6FFB6B6B6FF707070C50000 1455 003A0000000A000000000000000000000000D4D4D468D7D7D7FFF9F9F9FFF4F5 1456 F8FFC4B5A4FFFEC286FFFCC68FFFFFCA95FFE7B784FFF7E9EAFFFFF5F7FFFFF4 1457 F5FFFFF5F6FFFFF3F3FFFFF1F1FFFFEEEFFFFFEDEEFFFFEDF1FFEFCFC6FFD692 1458 4DFFE69B50FFE5974AFFE1913DFFD1CBC5FFD0D1D3FFD5D5D5FF8E8E8EFE3838 1459 38820000002100000003000000007E7E7E02C7C7C7DBEEEEEEFFF5F6F7FFCACC 1460 CDFFF3BB82FFFAC38AFFFCC692FFFFCD99FFE0B081FFF4E7E7FFFFFAFBFFFFFF 1461 FFFFFFF9FBFFFCF3F5FFFFFBFEFFFFF2F4FFFFEDEDFFFFEAEAFFFFEAEDFFE3BB 1462 A5FFDE9549FFE5974AFFE29241FFDD9D5DFFCFD4DAFFCECFCFFFB7B7B7FF6767 1463 67C9000000470000000D00000000C1C1C13ECECECEFEF5F5F5FFEFF1F3FFCDB2 1464 96FFFABD81FFF9C38AFFFBC690FFFFCC98FFE3B483FFF5EAECFFCCBDB1FFAD8E 1465 71FFA97E55FFAB7E50FFA17B54FFDFCEC8FFFFF0F1FFFFEAEAFFFFE7E8FFFBE1 1466 E3FFCA843DFFE4984BFFE19344FFE08A32FFD5C5B4FFC9CACCFFCCCCCCFF7D7D 1467 7DFD131313780000001F00000001BCBCBC86DBDBDBFFF1F1F1FFD3D7DAFFEBB6 1468 7DFFF7BC82FFF8C089FFFAC48DFFFDC893FFF4C18EFFCAA076FFDDAB7AFFF5BE 1469 86FFF9C185FFF9BC80FFEDB072FFBB946EFFFFF5F7FFFFEAEAFFFFE6E7FFFFE9 1470 EDFFBE7D39FFE5994AFFE19343FFDF8D38FFDCA66EFFC8CBCFFFC4C4C4FF9393 1471 93FF3131319A0000003600000007B8B8B8BEE5E5E5FFEEEFF0FFC8C4BEFFF6B6 1472 74FFF5BA7EFFF7BF84FFF9C18AFFFAC38CFFFBC58EFFFCC68DFFFCC28BFFF9C0 1473 87FFF7BD82FFF5B97CFFF1B172FFCEA47FFFFFF2F5FFFFEAEAFFFFE9E9FFEED2 1474 D0FFC9843DFFE59749FFE19242FFDF8E3CFFDE8C38FFCBD2D7FFBEBFBFFFA2A2 1475 A2FF464646B50000005000000010B7B7B7E2E9E9E9FFECEEEFFFCBB9A5FFF5B4 1476 72FFF4B77AFFF6BB7FFFF7BD83FFF8BF87FFF8C088FFF8BF88FFF7BE84FFF7BD 1477 82FFF6BA7CFFF3B474FFD89D62FFF2DFD8FFFFEEEFFFFFE8E9FFFFEDF1FFC49E 1478 82FFDA9246FFE49648FFE19141FFDE8D3AFFDD8429FFD1CDC7FFB8B8B9FFABAB 1479 ABFF545454CC0000006700000018B6B6B6F3EAEAEAFFE7EAECFFCEB399FFF4B1 1480 6EFFF2B477FFF4B77AFFF5B97DFFF6BB7FFFF6BB80FFF6BB80FFF6BB7EFFF2B5 1481 79FFE1A669FFE0B690FFF8E8E6FFFFF0F2FFFFECEDFFFFF0F4FFD7B8ADFFBB7C 1482 3BFFE5984AFFE29546FFE0903FFFDE8C38FFDD8328FFD4C5B7FFB4B4B5FFAEAE 1483 AEFF555555DC000000760000001EB2B2B2F6E8E8E8FFE4E6E9FFCEB397FFF1AE 1484 69FFF1B170FFF2B374FFF3B577FFF4B679FFF4B77BFFF5B879FFF3B577FFDDAE 1485 80FFFFF4F8FFFFF3F6FFFFEEEFFFFFEFF1FFF8E3E3FFB79279FFB97A3BFFE59A 1486 4EFFE49749FFE19242FFDF8E3CFFDD8A36FFDC8326FFD5C5B5FFAEAFB0FFAAAA 1487 AAFF555555DF0000007F00000021AEAEAEE8E3E3E3FFE3E5E6FFCEB8A2FFEFAB 1488 63FFEFAD6BFFF0AF6EFFF1B171FFF1B272FFF1B273FFF1B274FFF1B16FFFCCA1 1489 78FFFFF1F4FFFFEAEAFFFFECEEFFCDB1A4FFA46E36FFD5924CFFE69D51FFE599 1490 4CFFE29445FFE0903FFFDE8C3AFFDC8834FFDB7F23FFD0CAC3FFABABACFFA0A0 1491 A0FF4D4D4DD20000008000000021A4A4A4CAD9D9D9FFE0E1E2FFCBC2B9FFEFA6 1492 5BFFEDA965FFEEAB68FFEFAD6AFFEFAE6CFFEFAE6CFFEFAE6CFFEFAD69FFCB9D 1493 75FFFFF0F4FFFFEAEBFFFFEDF0FFD4AD93FFE19950FFE99D52FFE59A4CFFE395 1494 47FFE19242FFDF8E3CFFDD8A37FFDB8731FFDB832AFFC6CCD1FFA6A6A6FF9292 1495 92FF3E3E3EBE0000007A0000001F9C9C9C9AC9C9C9FFDFDFDFFFCCD1D5FFE7A3 1496 5DFFEBA55FFFECA762FFECA864FFEDA965FFEDAA65FFEDA965FFEDA964FFCC99 1497 6AFFE1C7C3FFDCC1BBFFDEC4BFFFCEA17FFFE2994FFFE6994EFFE39648FFE193 1498 43FFE08F3EFFDE8C39FFDC8833FFDA822BFFE3A261FFB1B5BAFFA2A2A2FF7C7C 1499 7CFF282828A80000006C0000001A8787875BB4B4B4FFDCDCDDFFD5D8DCFFD5AF 1500 87FFEBA056FFEAA35BFFEAA45DFFEBA55EFFEBA55FFFECA560FFECA55EFFD896 1501 4FFFB77938FFB27432FFB37431FFCA853CFFE4984CFFE39648FFE29344FFE090 1502 3FFFDE8D3AFFDD8935FFDB8630FFD97D1FFFE0C6ACFF9D9FA0FFA2A2A2FF6565 1503 65FE0E0E0E9B00000058000000124E4E4E159D9D9DEED6D6D6FFD6D7D8FFCBC9 1504 C8FFE89C4EFFE79F55FFE8A057FFE8A058FFE8A158FFE8A258FFE49C53FFE0AF 1505 90FFF9D5D1FFF8D2CDFFF8D2CDFFF0C9BFFFD38A3CFFE29443FFE0903FFFDF8D 1506 3BFFDD8A36FFDB8731FFDA8229FFDF9141FFBDC1C7FF9B9B9BFF919191FF4C4C 1507 4CDC000000950000003D00000009000000048E8E8E90B6B6B6FFD5D5D5FFD0D3 1508 D6FFD5B595FFE79748FFE69B50FFE69C51FFE69C51FFE79C51FFDE9649FFD5A9 1509 90FFFFE0E3FFFFDBDBFFFFDCDDFFF4CECDFFC47C31FFE2903EFFDE8D3AFFDD8A 1510 36FFDC8731FFDA842DFFD97B1DFFDECFBFFF96989BFF9B9B9BFF6A6A6AFF2222 1511 22A60000007C00000024000000020000000158585826949494EDCCCCCCFFCFD0 1512 D0FFCCCFD5FFDCA974FFE59544FFE4984AFFE4984BFFE4994CFFDD9345FFD1A0 1513 86FFF1CCCDFFEFC8C7FFF0C8C9FFE7BEBAFFC77D2FFFDF8D39FFDD8935FFDB87 1514 31FFDA842DFFD97A1CFFE7BF98FFA0A4A8FF959696FF888888FF464646DF0202 1515 029D0000005300000012000000000000000000000007797979749E9E9EFFD0D0 1516 D0FFC9CACAFFC9CDD2FFDCA973FFE3903BFFE29343FFE29344FFE29343FFC67F 1517 36FFA86A28FFA76826FFA76724FFB47027FFD98735FFDD8835FFDB8630FFDA83 1518 2BFFD97A1BFFE6BF97FFA7ACB2FF939494FF929292FF575757FD141414A20000 1519 007C0000002A00000005000000000000000000000001000000137C7C7CACA3A3 1520 A3FFC9C9C9FFC2C2C3FFC4C8CFFFD9B999FFE18E3AFFE18D39FFE08F3CFFE18F 1521 3CFFE18E3BFFE08D3AFFDF8C37FFDF8935FFDC8731FFDA842CFFD97E21FFDE88 1522 31FFE2CDB9FFA1A4A9FF919192FF929292FF616161FE2B2B2BAE000000930000 1523 00470000000F0000000000000000000000000000000000000004141414247272 1524 72BE9C9C9CFFC1C1C1FFBCBCBCFFB9BBBEFFCACAC8FFDFB388FFE09142FFDE86 1525 2BFFDE862BFFDD852CFFDB8329FFDB8225FFDB7E1FFFE09345FFE5C09BFFC2C5 1526 C9FF919396FF909090FF909090FF616161FF363636B90000009C0000005D0000 1527 001B000000030000000000000000000000000000000000000000000000071010 1528 102E6A6A6AB18C8C8CFFB3B3B3FFB6B6B6FFAFB0B0FFAFB1B4FFBFC4CBFFCDC6 1529 BEFFD8BFA4FFDDBC99FFDDBC9BFFD8C1AAFFCBC7C3FFB3BAC0FF939799FF9090 1530 91FF919191FF868686FF585858FE2F2F2FB10000009D00000065000000240000 1531 0005000000000000000000000000000000000000000000000000000000000000 1532 0008000000294F4F4F8B757575F0929292FFADADADFFACACACFFA6A6A6FFA2A3 1533 A3FF9E9FA1FF9A9C9EFF989A9CFF959798FF949495FF929292FF929292FF8C8C 1534 8CFF6B6B6BFF484848EA171717A3000000950000005F00000024000000070000 1535 0000000000000000000000000000000000000000000000000000000000000000 1536 000000000007000000211919195B4E4E4EAA6B6B6BF2818181FF8F8F8FFF9A9A 1537 9AFFA0A0A0FF9E9E9EFF9B9B9BFF979797FF8C8C8CFF7A7A7AFF666666FF4D4D 1538 4DED292929AD0303039E000000820000004D0000001C00000005000000000000 1539 0000000000000000000000000000000000000000000000000000000000000000 1540 0000000000000000000400000014000000340A0A0A652B2B2B93444444B65555 1541 55DA5E5E5EF4606060FE5D5D5DFE535353F2474747D6333333B51717179F0101 1542 019A000000850000005C0000002F000000120000000300000000000000000000 1543 0000000000000000000000000000000000000000000000000000000000000000 1544 000000000000000000000000000100000007000000170000002F0000004C0000 1545 00680000007D0000008B00000090000000900000008A0000007C000000650000 1546 00480000002B0000001500000007000000010000000000000000000000000000 1547 0000000000000000000000000000000000000000000000000000000000000000 1548 00000000000000000000000000000000000000000001000000050000000F0000 1549 0019000000200000002500000027000000270000002400000020000000170000 1550 000D000000040000000100000000000000000000000000000000000000000000 1551 0000000000000000000000000000 16 4C7A0C0000002000000020000000043200000000000078DAED9D075854D7D6F7 17 4D794D724B6E729378DFFBBDB7E5D6B437B9DE241A63B931F6C418351A4D8CBD 18 37EC0A5891DE3B08A282A2222A8220BD48EF60010B4A2FD2A41711E4FFADB599 19 33198699012CE47ECFE73CCFFF19E7CC3EFBB7F6DA6BADBDCF9C615C9CA03568 20 715F14AF3568B2EF8297269D9B3F6D92CF0F3A13CFCE739D74769EEFC433DFFB 21 4EF09EEB3AFED41C9DF127BF9D36EEC4EC977EB8B876106B5E146BCDA0EF2349 22 116B067DC70A5F3D686E5897E684AEEA137BB2DF8269C4F623760BB1416C10B7 23 4BA7BFC784537331DE6B0EC69DFC16E38ECF6EF9DC7396DFE7C7BE99D61B7B4E 24 8866FEE4F30B874DF65B184B7C4CF29D8F49E77EC00FC11BB02E720FB6C51841 25 27DE9C6486ADD1065813B60BDF9D5F0B6283D8187B7426C67ACC88FDECC8F461 26 EAD8DF6AE04FF15FA44D7C307B76E01A6C8E318055E611D85F3E0A9B4BEEB0C8 27 3C08938C0342E6F46F3E6647EF59651CC686F0BD98EEBD089FB94FC76787BFC6 28 BF0F4DD356C59E1DBCB2273760D14BC4F692D86BA2F6C0E18A276C2F7BC0EAD2 29 2198124F3FDD1E7B522DA1936C2AB43BC512FA697630493F00CBCC43B0BDE401 30 87CB9E5811B89DD9F8B7DB57187370AAD768D72F5F52642BF3A7042C7E8ED87E 31 CC9EE6BF147B926CBAC6445CE30C27EC4DB3C28E64236C4ADC8B75F13BB13A5E 32 1BABE276606DBC2E36C4EFC5B64443618B519A93B083CFDD19638EF14766628C 33 EB9718EDF285DF28E729CF49EC59412B957D6ECCECE9012B61967E508CD92CD3 34 05FBD2ACB13DD910EB13766165FC762C8DDD8CC5311BB1305AAB4B17376071F4 35 462C8BDE8A35B1BAD892A08F3DC956E40F17312FA6292E98786416461F988251 36 4E938D25F6ACC0158AEC5153D8E724FD1407C136C970C6AE54736C4CDA2BE36E 37 C2C2182D2C885E0FCA2F21CA31D21ACC8BA4D791EBB0206A03965EDC82DDC9E6 38 346F1EC2176CC3BE386BD0D831CA7132463A4C1AC5EC6F647C62B3DF3399BD3E 39 7A9FF09B298D9BD95A89BBB13C6E0B16C56E10DCF9D1EB7AB029C74039068A73 40 7C1FBE06EB6277A1B2B51A2DEDAD70BA7A0CC6690728268E62C5F9ADCCC648FB 41 89999FDA4D78EE9B0B72FE2C667F17AC25E2C692E69B7DBE81C6BD4CB0B504B7 42 3736E518D6C4E8E04E7325A4C7BD8E36B8669D8445861BE58E27BEF6980762E3 43 53DBF1B36606ACE8AA6BE7174670AC6F8D35167E37A258DB966C403EDFD62FF6 44 AAE81D286D2E87F2E3FE83761CBBE12BE6412B6817B331C2665CC4CC80E5CCFE 45 35D5980EAA6FC2EF3CF63D6996146B3BB184E6BB2F3ED7C4EEE2DF87CBD51330 46 4F77835DE651666384F5E71D9F587DFE06F1E7F0D817866E117CAE271CEB3C76 47 8EB5BEB057446F437153994A765BC77D9A7F7B6C8CD90FC35427511BE6782E01 48 B1F189E558669B736DDD14A30FEB4B47B09FEAC846CA6F69EC7D61173596AA65 49 EBA7D8E0BB90755815A98B3D89D6B0A4FAB8C67F07B331DC72AC39F1CFB2EF75 50 132CA88EBA6277AA85A8279CDFCC3D92E305C34BB66AD9050DC52AD9ED34E706 51 A9B69815B8127382D66049D836EC88338109E5C2D6B0FD186135966CF8ECEC14 52 DF05A193CFCDC7CE44AA5BE94ED04E3616358DEBCAF9C290AE71D0FCE9A55B76 53 632FBBB85523DB2CDD1994DFA01CC3EC0BAB697E376153B43EF627DB63478421 54 CF3FDB1039E5DCFCB0C9B4A6EEA4F14BFCB5713A882D4FEAD667737B0BD50333 55 C15E12B51979F5852AD90F3A1F50AE1D90B329C788BF0A0B427EE46F67BE18FF 56 D8485A53CFF29ACEEBA8594697FFB36B6EAAECBBF17E13F4680DB85D9FAF966D 57 4573A8C8FE26A06BFC4B42B7617BAC098C53C9FFA17A186EFE6FD298B3B49730 58 E77DC4C68BFB65F1670BBF8210F4F7C16CBBCB87BBB129BF31D37F05E604AEC5 59 8A701DEC96C5DF6ABF6D18663A86C5EC39134E7F8785419B44FE19D3BC6D4D34 60 E8B70D0E97DD7BB067F82FA7F1AFC4BCA00DD0BAB80F06298EA20ECF725F8861 61 26A3F1B1F1A8EF89FD06EDDF3AC6D31ECA8EDEE37593D7505EC7CEE507F789ED 62 44EB8C2A368FFD5BF2FDD2B0EDD08E3393D79F61A6C43619D5F1B1F1C837789F 63 48EC08DEBF6D8CD413F5C130CD51ACA1BC8E9DCF0FD5C876CD3AAE96FD8DFF4A 64 FC40635F1FB58FE2CE013699EE58E3B79DD93CF688AF7C968A7D2AB1A7F1DE71 65 A6CFD2AEF5877CC0EBF7DA985D5818B911170AC355B20F5F3BA596CD9A1BB80E 66 CBC374A01B6F21C6CEEBCF24C7E9CCC6C74623A77DE5B344BE47A67D73ECE7C7 67 676175888E9807DE4BE9249A6275B42E16866F4448D1C56EECA3D7CF681CF777 68 C45E1ABA035B638C6194E22CFCBAC47BBDC48E65F654C1EFDA238F3B3E6BC4E7 69 9EB46F3D3613BBE32CC55AC57B07ED0453AC89DE8545E19B11559220D8A772CE 70 8BBAA69863CC9D15B04ACC37FB7C058D7B1BB10D921D614D7ED78D3096D8F8C8 71 68E408664F3DBBA4DBFE9CF6CD3B79DF3CE1D8B7304DEDDA3B71BDDC9564898D 72 B17A5811A92D72EC7BAAE75C5339AFB9B6F0F35CCA31E672ACF17CB3CF79DC3C 73 E7C689CE1865398EF82399BF53620BBED2B501EDD98FD39E1D138ECE167B47CE 74 17DE3B18D09E4C37C15CAC63ABA3766269F8762C0ADD8C85219B456D5F19417B 75 D08B7A22CE39D678BED9E73A114632B618BB97229BA57C6D407BF69768CFEEC5 76 FBE631B46F5E1EB055C424FBC29CEC30A235742FED8BB5E34DB125C65068479C 77 A958DB0C539C0497C7CCB1B6D87B9D94E782FD91E1A72F29B2055FCD7509EDD9 78 B569CF0EDAB363DAB179D00ADE05EBF4C32236F93AC434CD55D41396699A8BB8 79 EE10EF519B75E7B531D979A6225B5B79DC92D45D97B068CF3E8CF6EC0962DFEA 80 44FB56C749987D6231569DDF8E0DC1BBB13DD250AC25BCA75AE9BB1533DD7FC0 81 70B37F77D5D62E7602CDF930756C89AF8A2DEDCF798F4CEC19C40E18E930B1ED 82 537BB17794695CD75E8AF632C32D3E136BCA30B3316D54DF02A8C6CC90724C1D 83 9BD51B9BF7C8BC4FE5BDE2A7F6137F417BD719236CC7EB7D6A33FEE008EB7181 84 C40EA475F420B1F5883D83D8BFE0BAD617368BD259A3EEDFBF8F915F24E0AD4F 85 A2FBA4F7C7C48A673E87CFEDADFFBEB09D0EE52122B606C7CE5408B9B817C0F2 86 406937ED33CF15D231CC17CF6BB46F62E494A887B6416233CB2FE42EFE32B6B4 87 CF7A6752A9B063C9861B183DF562BF6D5064F3B8B93FA9DFFE887DD05F1B947D 88 FEC11765A22F7EEE8FA473D886EF5765F7C906896DE1785BF8FC61D9CA621BBE 89 5D7A55A30D8A6C8E3145363F0F9B512EA4C91E4DED781ED4D920B1F79BDD94B3 90 250DFDA24A3CD735740AF16B96C491241D97DA49E7F27BFC6F7EE679983237B9 91 9B0D129B7386E34DB1BD644379F503B9BDFC6FE9B8C4EE6B3B16FB60D2AC24B9 92 0DB5B5B5A25E9CF1FFD177236755CBC7D4D0F4A0C77C497D4B6356664BE27325 93 1F709F92D806AE53CCAEA8A890F3B9AD623B7E1D9BDAA1325E9827F155B1597C 94 AE729F8A7C664B7C9EF7D1B39A7BB4D5644341E903B0FAC366710C28F379EEF9 95 BDF13FD476536F36F4C656D59F2A3ED71B55EDFB6B8326366BC2FC3A117FCA7C 96 CE7B3E87DF9FB8A0BBF89864436094FA1AC6EF496C75FD68E24F5978AFC7398A 97 7C96BAF996E2416AA78A2F89734F99CFB587F95F2D6DEA266ECFC7B93F7571AE 98 9C17DC561A8B727F2C5E97FBCAEF0F5B950D2AF954EF94F9DA7A577BB4E33EF8 99 591D9BE75B5D3CF03992FF14FB9CB5AA0D1F8EEDE9FF8D3BAFC8DF674963D754 100 5BB85EB0D4E5C58DDB0F441F529F92D4F195DBF1B969977BF299A7E85BFEB72A 101 1BF85C45FEDC755D62B6229FE7836B22AF91FCBED456B241B16F5EDB24B6D49F 102 E4377E4FD946452E6BD8A454C1E6186436AF01090909E235D725B661FEA67679 103 7B453FF07AA23C16C5762C6EA3386E7E4FEA4F6273FE3193D9BC0696959575B3 104 81D7693E47D90E699C529F8AEAAD8D329B998A7B00451BB83EF17C28331E569A 105 D88A7B2055362CDAD281A5DB3BC5737F249DD317B63A1B841DDF5E127D3D8CFA 106 C3566B03E506DBB07A17FAA58761ABB281CF671B14C5F54359524E2BEA61D82A 107 FD20ABD7FD11FBEE61D9AA6C080F0FEF971E95AD6883B44FED8FA4DAF228ECA7 108 52AFCECE4EB0D8C7ADADAD0FA547E55B5858404747A787F6EDDBD74D4646463D 109 C4C7FB334E498A71B965CB162145B674AC2F8A8D8D456FECCCCC3BB870E196F0 110 334BB281FDB77EFD7AC194C6C352F685C4E2B692AD6E6E6EE2D9CBCBAB577E5C 111 DC2D3C3FD842D8505F5F2FE68D8FABE32BDBA0C8767070104C7F7F7FB91D7DE5 112 B3DCDD2350595929D8CDCDCDDDF8CA36306FF9F2E5A20DC789C4659F737DE2F7 113 FBC31F31261D8306E9C96D605FAC5CB9B21B9FC5AF172D5A24D8FC5AE2323331 114 3111E9E9E93DF88AF125CDB32489BF783DBAD950545424E7F3F8243E1FE33173 115 DF1297C7CC5C498A7C698C464617556AF3E640C19FB31CF87AFE03BC3334416E 116 038F917DADCCE7BE99CDE395C6AC28B647B291F95BB60409C6EFFF741AAFBC7E 117 44A598CD9A38EBBEDC86B1637F90F325B14D125F997BE3C60D21457E571E0709 118 B69636849F25F198A5713397F5D9D7ED425D36ECC4AA557A22AE35F1252E2B2F 119 2F4FF844155F1557157BF8E436A15F0E0990DB20F139F6B86F89AFC856E4F33C 120 319F734991AF892D713FF8AC55E8AD913FDA6064E4D283AFCC6571DCAAE3F765 121 CC8AEC3FFCB34AC4C19831FBE573C07CEE5BE22B72599CBBCCE77952E42BC798 122 325B91ABCC7671B1177C96225F912BB1593C2F8A7CCE31E68F9E5C2234747481 123 5CFFF8284F48157BC8900522FE25B63ABEC495EA16F3B99D62FC717F3C8FAAA5 124 A772DC53A74E157CEE47E2CF9F3F5F8C8DF9CA6C89CFFE57E44B36F1395C2F15 125 C571C5BCBF7CF240CE7EFFFD3D82D51B5F992BAD5FCCE77652FDE163FC1EB763 126 9BA598619D3B172FE7738D62B6545B95F9FCCCFDF2D824BEC4E5F58AC5E355E6 127 2BEFA3A4B62CAECDCC97D8CC91627BF6ECD9A2E6723F9254F1B91FEE57DA0FB3 128 AF257E5FD63F8E810F3E30968F5B9A571E3F8BED90347EFC78395FF2B7E2BE85 129 CFE579E5B67DE57FF0818D7C2DE3F3A531F13169CD95F6396C0F8F4DE24B5CB6 130 576A2FD9DA97FD8F1413EC33C99FD2DACCFFE679E0F7784E795DE1B1339FFB96 131 E28AEDE6DAC44CB68FEDE579E4E3BDF199A3180F922F15DF936297C5B92F8D9F 132 FB977282E7455AF3D936B6B72FD747CAFB5FC53DB0F2BE45DA93314F91CBF928 133 EDFD982BC5CFE3BE2691F6A4CC644976F098796E389F992BF9F171F3B94FE64B 134 B59DC7CB732071A5D851F6E3E3E44BB1CAE3E5D894B8D2BEFD497015E3817DAB 135 58730782AB9C2F8A1A08EE53F594CEF42A986D6B8683453B7E4AB6CB0108FD94 136 6C27DB07B0356CC34FC9E6E37A4BEB9E980D7F3A7817B3439A34B2B74DAAC0F5 137 84163C29B6F1F576B895A8672FFE5D2EB2A29AF024D90E249D42A864CF1A943D 138 20EC79849910DFF193B2DFF36BC5EB6EF53F29FB7953BA5ED87DE729FB29FB29 139 FBFF31F6FAF0261CB8D531E0EC82DA0ECCB22B45C48DFB482AB887536503C766 140 1DCB68C68E53D5827DADBC1351259D03C666EDF2AFC1C1E846C166B11D9B92EF 141 0F089BB5CCAD5CF85E62B32DD31DCAC031F1A4D9D5CD0FA0E75B23B86C03FF9B 142 6381C5363C49764B4B0BACBC63C478BD525AC07E90B8ABBDEF0A9B9EE4DE91AF 143 15C7CEDF81EFF6F8082E333916076ADF1C1A1A2AF85FADDE8B8B8969037ECDC0 144 FCCCCC4CF03C3CBD7E7BAAA77AAAA77AAAFF1FB4755506B496C40EA89829F1F9 145 B5EEBA6298EE2983ADD19D2726EEDF48B74CB09829F197CE09C6EE0D55D0DB5A 146 0D4BBD1AD81BD73E1171DFDAAB2B8598A9C8E7635B96550A3B9E9498B1724EB9 147 4A3EB397CCB823DE7F92FAE18B32C152E4CF9F710EEBE61763FA98BC27AE29C3 148 6F0B163325FEAC2FDCB16CF6350CFB4BEA808859CC94F85F7E6E874533D3F0CE 149 7F870E8898C54C893F6EA401F9231AFF18727A40C42C664AFC511FEDC0BCAF83 150 0654CC94F8134799E3A3F7D60CA898F974ED79AAA77AAAA7FACFD7A019CFA3AF 151 BA75EB161A1B1BF1B8F9DB2FEDED55DC8EBFF3C2363C09FEC15BEE4236D71D85 152 2CAED909195C3593F3376EDC283E4B7B527C453673597B2E1B0C085F79CC127B 153 A0F8AAD83A997B8506822F7115D95BD3770A0D145FF2B7C4DE90B65D6820F88A 154 FE96D86B52360B0D045FD1DF127B45D27AA187E1F7A7AE71FF8AFE56647F1FB7 155 44CEEF4F9DEC6B5D93A4E86F893D36EC0BFCCDEF9FFDEA47AA93CA79AD29BE95 156 C72C715F3AF946EF3AFEBAD08B477EDD6D9E14F35AB99E28C7B7C4FE227266BF 157 B9125B1D5F553D518EEFE9D1DFE15F1746F58DAB62DCACC1CEAFA8E56BF277BF 158 7CAD813DD8E1572AF9EAFCCD71DDEF312BB15F707945CE1E6CF7B24ABE3A7FF7 159 7BCCAAD8CC95B1D58D5FD9DFFD8A3135B126673357C65637FF7D95267E7FF35F 160 E2F7A7FE691A7B7FEB1FF3B906721DE27F6B9246BECCE7129FBF63BE6CD9B25E 161 FB642EEF53D9065E2F3449255F69BE253EB34F9F3EDD6B9FFDD9A3F6E0AB88B5 162 81587F35C5F940F395736C40F81AF27BA0F8EA6ACB40F2453D57600F54FCF5B5 163 AE3D097E7FEADAE3E6F7B54E4A75AD3FB525BCA411AF1CCF817646CD80FFBD00 164 F3B64696E035D73C3CEF9137E036306B5D7A2D0605B7E3D923E5C2068BECBA01 165 B341E23F1BDE8E6702EEE1E7B6B7840D1EB71B06EC6F4624FEA0338DC206692E 166 028A9B9EB80D8A7C498A36706C3EE9BFD9918F3FB84BCCE758E0B9E0BCB872B7 167 1503117F92E4B6D07C483614D53D191B54F1BBD922F3C35B670A51DDFCF8FF86 168 43E2B3CF95D9E218F940B261B877211AEF3DDEBFA711FCF84AC1D224C98689BE 169 C58FD506757CF6C9C7A135F2D7830E960BB10D73824B1F5B4EA8E2B3CF538AAA 170 C57CB30D525D1073615F80172D2E8B731E870D8A7CEE5F12F3F93D8EFB377DCB 171 7F7CCF937C627143D8B02FA5EA916D90F88A6C892FB5E1FC97DB40FC4127EBC4 172 3CB00D8E571F6DBD52C57FE94479373EB7611BF8B8BC1DD920F9E164CEC3AF57 173 7DE14BEDB816CB6D203F702C3C63744DD8F0B0755A2DBFA00AAADAF258850D34 174 7E16E7A56403FBA8BF3608FEC53BF2FE58AAC6AFD89EE79CB9527B9E07B6E14F 175 8E57FBBD56F4972F9DC3B12F6CF094D942B5E1D9BDA9C286FEAC15723EC7B54C 176 DC9F26BEE279920D523CB00DEFBB5CEFF35AA196AF62FE559DCBB550B241CC03 177 896DF8D4E3469FEAF4A3F059CCE03581CF9124D930E5D4AD5EE351D98F521F7D 178 E54B36F0DA28FA70AB90CF036B9E5F9E461BBAF1E95CA183FDE377FDED401BDE 179 F3C8ED3ADFB94C3C734EB00DBCBF576783E08797FCC896F123726BFB5D4B38EE 180 79DF28AD95524E3CBB2316A629D52A6D90F30F761FFFB4F35DEBBCAABFFFD724 181 E688F1339BEBA32C16D806D78C9E6B6637BE92782CECD3FE889982AF28A732B9 182 0DBED7AA7AFC8601CF8F6473B7E7C7212705BECC069E5B451BD8269576ABE9AB 183 573976D733F6255DE2B920FECB7A29DD6A24DBC2B92A6C50717E8F7E1E459C13 184 64834E58219473988F71FDE6BDC593108F9FC7CEF5B9BFF9FD53E8C183079034 185 90ED947F474153ED7A9CED947FF3A42F7D3EAE76E2B7754BE93A332B41AEAADB 186 E96AF5B0ED98A1CECE8B4EEB707AF3A742BE5B47C04F85F8B8D4E661DAC539AD 187 51FBDBAF12FF49B1D5F1391E25FE93642BF2D9DF521E487C7EEF49B225BE1493 188 8A7C3E9674783BEEB734F650FDDD4AA14BE79D450CA96AC3CA4B0D136DB8ADBA 189 368221CB43E53AC0EFA9FA3D97A6A626F17C23C44D65FC4AED38C699AF2917A3 190 5DB6A8FDFD1D45BE329B5FABE22BB6633EB7D1F4DB34CC575707120E6809FFB0 191 B89D24E95884C9B762FEA4D7CAED62EC578A368AEF2BB793E65F958DDC4ED5B8 192 E57FA3A9307E55ED383694C7AFDC4E798E95F9EAD88A7C75362AF355B553C797 193 EA1FC730EBCED5E81E4A3BB61B596147E56D94DB319BDB48AF55B553C7E798E0 194 F9B919E783A2D40095E27339BEB98DAA7659010EA20DFF5B6AA3DC4E155FAA3F 195 CCD7943BCC2EBB7559E5DC28FA5FD31C4A7C55F54FD3DC705F125F9D8DCCE736 196 EAD88A31AEAAFEF1FCA77BE9F750FCD17D42C1663F081B55B561F1F9DC86DB6A 197 6AA3A9FEA9ABBD2C9E5F75F597DF97EAAFBADACBFA4FAE7F8AB1A12A8694F9CA 198 ED54D51FE5769A625CAABFAA6AAFAAFAABDC4E5DFD556CC78CFFD4FAC7F669CA 199 1D89AFCE4645BE3A1B35D53FA9FEAAAABDAAEAAFF2FB8AF5575D8DD654FFC43E 200 594DEDD55453FBD38E7DA4AEFE69AABD9AE2E261DAA9AA7F03793DA4AAFE0DF4 201 75E07FC2F5AFD2E3197717EBE1278ED81B9EF270BA72CAC3B1C8FBA813FA226E 202 CBE7F0B9DC07F735A8EF8FE74E1E7130F53EE684209F63488AA218BE9C80DCEC 203 14D457E4A3AE3C4FA3B80DB7E573F85CEE836DE23EB9EF5ED8CF9F386C7FFEC2 204 590FE465A7A2A2F03AEEE467A32C2F0BA5B957854A6E5FD128A91D9FC3E7721F 205 453997C07D72DFCCD0C0FFE529B2B5E05A3A294DD8909B95F248E23EF2A92FEE 206 93FB668606FE1B3467A82ECD45765A8CD0B5F4585CCF60C5F553B1E25CA91FEE 207 93FB668606FE10F211D0D18CCAE25BB89A7C11E9B121C8880F258521338115DE 208 8BC2445B3E87CFE53EB82FEEF3B427FF7EF2A0211AF96463665214EE355503F7 209 9B70AFA10A15453928CEB98AEB9909C84A8DD1286EC36DF91C3E97FB68AA2B17 210 7DCAC6AF917FD2DD1E89918148A0D8BD42FD15DDBA8ABACA2234D6DCC183FB8D 211 78D0D68007F71AD071AFBE9BF89878AFAD51B4ADA5738A6E5FC5D5B458244605 212 522E0481FBEE7DFCB46FBF188CE49860A4C592DF132270856CCF4E8DC5CD8C04 213 DCBE9242B19481E29B57509E7B0D9579D7514AE32DBC9E49F196869CCC445C4B 214 8B137ECF4C8C447A5C1852624290121D02EEBB37FE719AFF646A9B4273971E1F 215 8E4BC4167E25F6ADCBC914CFE928BA7109A5B7B25041ECCAFC1B28BB9D4DF65C 216 A638CF10F6DD201BB269DC97C906B63F95C6C1EA83FF5FB735DF171CE8E389D4 217 B8AEB1731F9AF855BDF0850F681C5141676167B12F80191AF8AFD859ECBF1070 218 E618D58BA3E487605C4DE51C8CC3CD4B49C8BDCAB99C2958CCE4B15717DCC41D 219 9A87929C2B28B87EA96B0E2EA790BDF134F731747E341222FCA1BB7337F6EEE3 220 DF351FF46B4DFCA3AED6A8AF2A41D0B91338EE668BD3470F20ECFC29C487FAE1 221 B288831831D7E534F6EAC21CD414DD4205FB20379B6A6E2AAEA42752ACC7D178 222 7D11EC731CFEA78E405B7727E2622E22E0FC39ECD8B1836D18ACCEFFEEAE5664 223 732C5AEA2B515B518C1CF2774A4C28C2FD4F23E0B40702BC3D1048FE09F63981 224 50DF1308F3F54208FD3BD8C70BC1D4BFFF8EF78432D29251927F13DA3A3B1113 225 1D8573674FC3E3B01BF1B599FFAABAF873A7F1275D0C42E2C5406491DF4BC8B7 226 0D774B853D5C43D0DE24D4C9B92813DAC56F43C16FDBBB404D1A50998800EDF7 227 B165A73EA2A36304FBC841576CD9B28DD9C335F3ADC4BC8BFCA3DC11F9477194 228 4D397593E2EA36C54021C55909E55F05E71FFB3E2F07A5850538B7FD7DE09A0B 229 70C91EED39FE08D21D0A6F1F7FB81D7483D6C62DF07217F9F7670DFE1F42EB75 230 57BEF629FF28FE8A7251515C8CB39BDF06AA93707AEB50E08A13906681962C9A 231 935D1F62D5066D8AC5381C73B353CCBFC1262626303333538C87D7CD8D760507 232 9DA3FC8BEF3DFF2A697EEF9616E3DC1662178702E9D640452ABCD9864C1B3C48 233 324243DA21B2E123448685C0DC786FA02CFF061B1A192121369A62D2578A09B6 234 E1154BE3DD172E9CF1D4907F19F2FCAB2AC841ED9D32F8B2DF6FFBA023C9181D 235 C92640E9459CDEF6213A53CDD11EBF0F55B13608DAF5314C4CF4CFF2FA676868 236 24F2C1D7E7348E524C6A6BCB63F295838EE668A82E41B086FC2BA53581F3EF6E 237 712EAD0DE5F0DDF14F745E3B8A7B717A688DDB8FB6F8FD40FE059CD9FE31DA93 238 0CD17A5107B5719608DD3B1C7B8DAC111B1B87733E67E07EE820B66FDFAE1893 239 AFBB3A9A89354373FE1D15F917E6E785C8C000F869FF0B1D994E6889DE8DE6E8 240 3DA4DD688DD98D07374EE1CC8EE1688BDD83A688CDB87D6E2B42C886D3BE8138 241 7CE830B66D17E31E4DFA9DCCFF435C1D4DFB9C7F9DB2BCF3DD3114F7934CD014 242 A98346053547E9A0FDB21BCEEA8C201F68A331743DAE1C9E931FA6F729D66FDB 243 A7CC16F1EFEA60D6F7FCCBBB891A9A7F1E7F4BCC4ED4876F415D587735D0B1D6 244 542B9CD51D297C501BB812992E5F1586198C55958B435CEC4DFB9C7F9554FB6B 245 EF94C25FFB9F6809D7425DC806D40469F5505DB0169A63F7C167E718348468A1 246 DA7F112E394D2809319C801E7C07F27F74907CFDD3C4E7FADF585E0C0B5B2704 247 E87E8886A015A8095C85EA809EE2E3F5619BE1BBFB3354FBCD478DDF3C041B4E 248 54AEC56F9818EC8C763F682B6CB892122DF28FD732E5FCE335AFAE2417161666 249 282E29C3A5AC5C5CD0FD08B51796A0CA7F292ACFF75475C072D407AFC285FDE3 250 116C3041552DE6BDF1FBDA5BD67A39DB1AC383ECF0A3788F0F0F10FB87621EF7 251 6DAE3BD751537C1BAD95C5B0B234C7B5AC2C44C7C4C1F74218C5F708D4FACF47 252 F5F9853D5413B00881C426C66419FB774AFEE76B83D748EF92C64C9AF0D9FA2D 253 1B579D3437DE9D6F65BAAFD2C1DA10F65606B0B3D2879DA53EFD5B1FD6347E33 254 634304511E9E387E023B761920CCE03304E98F47A0FE846E928D79B42CEE5E55 255 B30EF035D2CF6575FA4FA4FF95D93A863496344EA6C9D616E6B89E9D0563A3FD 256 30D0DF8BBDBB774B631BA746AAC6ACEEC1D78CFF25B3E55559DD1EA2A0BF9DF6 257 3A996064A0A7C81C2E1BDB10357AB58FECBE3C7E299BA78F14988FB3FFDE1ECF 258 CB6CF8D50032FFBF7DECDBB7EF234343C303C6C6A609464646AEF47AFC40B1F5 259 F4F4D61B1B1BA3A4B414159595B89D9B0B5757D7167D7D439B7E7EB6221EC666 260 C693F7D9ED7BB9AFED77EDDAF5B68181416351717167635333AA6B6AD1D8D404 261 4F4FCF16030343E7FED8606269B6D6D0CC04A65616974C4D4D357D163168FDFA 262 F52F28F8FF2DF2FFDDFCFC82CEFA86465456DF05DB226C303232EF0BDBD0C264 263 8AA9B565734A46068E9E3CD14A366450BFBF50E3F3397BF7EEC5EEDDBBFFADE0 264 877FD03C5477B7A149CC85623B550F7D73F33779DCA999B47E959521272F0F1E 265 278EB71A999B567A7B7BF7F85C8AF6C6B53939B7403E6A261BC728F8E1EFFBF7 266 EFC7DDBB35825F555D83A2A262905D6734F18DCC4CB61F3B79B2A5B9A505F50D 267 0D282C29C19163479B8D2DCCCAA9CF6715DBEEDCB9F38F5E5EA75A5AEFDD4379 268 7905EFD19B687CA3E57D99988416141412BF0665E595A8A9AD25BEC935B5F166 269 693C94382D61D11705B7ACBC1C0EAE079A4C2D2DBC89DDA37611FF7F3C3C3C5A 270 1B1A9B505BDF803B648329D9406DB548EBC8271DF574BCB2EAAEF0415E7E3EFF 271 5F467E2AE7DCCCEC9F269616752191919D49E9E9C47569229F779A589AF38F4E 272 A98D5BF2E79DAAEA6A1A5B9DB0A1A2A212A7CF9C69F4F5F36BAAACAAA2E3F528 273 BD538196D656040605B553BC1C56CD36AF0B8E8C106C733B9B669A0763B2FF77 274 7DA837B36C6C6C5A6AEBEABB6CA067F607EB2EBD6636AB8AE2A08EEC7376766E 275 D1D3D75FAB103F1F985874671B5B596CEA4F9DA038DB6863632BB74162F29C73 276 0D5065039DB34EB02DCD6B03434305DBD2D6BAA9BF6C451BACADAD5BD8E79C6B 277 9C7775644F23C7063D17159722392911B95413D9062767E7564363E316F71327 278 3A2F8485C1DCD6BA996CD9FC88B5FF0B8AAF4A8AC9C6639E9EF5141BED548B50 279 595925EA717C5C2CE228B6E5363839C1D2DE1E2656E6CD468FC856CE4BAA416F 280 923DCF9326535E36B35FCA299F241BF272F3840D8E8E8E303034F079C26BE264 281 7373739A9B6AD5363839713C683D4EA6F7EC41CF194DF9C33B8693FF30CE68C6 282 FFBC4631BF926CE854B4213E261AF979F9921F1E9B0DA6D3FE38D371E1F0DA73 283 FA4BEACF1BAF6A745AFBE57D2313C3FB16F6769D6403BA6CA840526222921312 284 C035B2CB8647F783D1176FCE77D79ADA7A33C20339FED6C8F6D6C731170B583B 285 39C2E9C811189A1ADF231BDA840D54AB52535391462AA4B5E151E7C2E8CBBF2C 286 3CBA695AEBED484F5C3F678AF4835A48B05E043FC3C530B53085B1B9098CB72D 287 F7E778B0B0B068A9221B2A2837BAFEB6FD128A2947251BF4F5F537F48B3DF5CF 288 8B3D889D1B7D02D77DCDBBD8568BE87AF32B84EE9880B35B2621C47127AC66BE 289 73498AC91F6DA8C695AB594225A577840D0E140F7DB5C1E8CB37971EDBF2756B 290 6ECC29DCF0B340BA9B16622D17E0C8DAB108DB370B01EB46E0ECC277106BB516 291 8EF33E2E52CC0BC9065EA3B2AFDF4456F675B90D1493CD5CD734C6DA943F7D72 292 64DD94D63C66FB327B03E2887D78EDE708D3FB16411BFF2DD87ECBFF855887AD 293 B09EF576A0726EAAB281D74BE1070791176A6DB09BFBBF7E97CED923CB7BBF60 294 C75A2CA4718FEB626FFE0C3E8BDE85EFB2A188B7DF44C727B79A7CF1E61855F5 295 41D840EB6815710B8A4ABAD60BDA37F0FA6D6767DFBC67CF9E49AAF8CE8B4716 296 5C0F7044C6A18DE4DF2E76F87E626FEACE3EBAE1AB16D32FFFBC51538D926CE0 297 352C213199F712624DCFBA768DF70D27559D673BE7832B59FECE48B25B06AFCD 298 937AB2ED36C163FD541AF79F7B8BA567747474A64A36707E5ECDBE86E6E616F0 299 1E8BF60DAB559CF30BDD097F320A305D7DEFD2D1DD08DB351517368E81CFE2F7 300 C47C273890CFB5BEBCA733EEF7BAB26B64558F1764D787FC79C27F2F5DBA743E 301 D9D0CAEB45537333CEFAF8DC2376F0CB2FBFCCF7035E223D2B135F67FFFD172F 302 3E3FC6E8AB7F9484D96CEA4871DE82901D5310B26D12B1B7E0C8FA296DCB86FD 303 B71DB51B4AFAA38A7B8A8365C7DE905DEFFF85F4CEAC59B3D650CCD591DA7475 304 75CFBEF8E28B6FD2F1DFF0E79EA41765D711824FFAE40FBF1AFCADCEE77F4877 305 59F179BBCF9E05F74EE97E7FCF61FE27AD7386BE612FBBDE97F83F57F119C6CF 306 64FD0E91D9C0ACBFCAC4D7EB7F60BFC8EE87FC42C98F7CEEFF91D9F1CF8F7EFF 307 CBAFBF1BFA86F6176FFF7AD91BBF7C7E141D7B4FD6DF6BBDDCCF7D56E68B9F2B 308 5CABB35E96315FECC33D69E9B310697E9ED843C577009EF463B0EB0147787B9D 309 F0643F0C107FB093BD2D2445848688679E9FC7C41F1CEBF003D4C9C1D61A3937 310 AE233D3505B656164274CE871C178F813F38CC7812501AA7566C03B3A322C271 311 DED70716A6C6F2CFA11F812FB8ACCEA2683C48B3D1286EC7ECE347DD616CB05F 312 7E4FE821F982DD72F5746143E6F162FE77477E18DA124D358ADBEDDFBBBBDB67 313 C00FC97F55F83CD3099D190E684B30117DDFBF790E2DB17A6AC5EF733BC57B00 314 0FCBE731705F0FD26CD19E628996987DA2EFD6ABC7D018A5AB52FC9E8C3FE411 315 F37FB0ACBE8E16E34E32231F188BFB2FFCBA29CD0975A19B7B888F3F267E0F1B 316 5AE30C848FEB42B708467DBC29EE06AEED263EF618F8838F1E3D0A96ACC6CB6D 317 E0FB608D513B058B5FDF8DD045A5DF52B9F8F523F2053B2C240867BCBD40D786 318 3D6C6888D0467DD856549E5F2E5815016B5176F60721FE773FF8F2FC96F9BA1B 319 FBF0411789FFAAF25CD4866C12F7A0EEF82C10E7979E99879253B3C5731FF95D 320 F99D75BAB0E9B25721FF5B0D5BF15E4E371B780EAA0256A1ECCCF78259EC354B 321 6277BBFFA3862FF29B739BF3AB26D94DD41825F66815F735BAD9C07350E1BB04 322 A9F653CA64EC1EE7A8E077D5F3BC2048F9CDF9557ED15AF4A186AD3626790ECA 323 7EF47B8FEF0128F105FBC14D1F74A45AE3415E48575D4B3617F9551C6250A6A2 324 9F5E635295DFD5F085DFDBB33C69CCA6421D39BEE2FC7BF14622BF8A2EEC2CEE 325 674C0ED7740F4A893F44B0325D68BCFA72B5659F103634538DE5FCCAF3DD54D4 326 8F987C55D33D2255FC96646BD93DF51FD59AE9266C688CD415F975F3E48ABEC6 327 647FF67F82DF14ABDFED9EBAFCDE7AB26D576DA5FAC2F975C57D9EA6987C687E 328 3DF958F99EBAFCDE7A9CA1B0A126584BE45786CBF43275B1FDB07C55F7D3BBDD 329 5B8FE85AE7AA03568BFC4A7798A418938FC477737596F5BD4AB302D78B769CDB 330 A5DE73A51C7BF511F883992DED53C5DA416B566FEA2DBFFBC17FD5C5D9A1DB3E 331 B5AB7ECD572B1977723FEF31ABE30F71B4B3117B73699F6AA0B7573E3E55EAC3 332 7DF5BEF207333B29210E1666C63031D217ECC7785FBD37FEAF8E1FF338CFEC81 333 BEAF2EE3F375F23BB26BA201BDAF2EE33FF753DD57FF09AEBF1FEA919999F9FB 334 E8E8E825111111CE212121C181818109FEFEFE09BEBEBE41274E9C707275755D 335 B279F366A9063FF3987CF3CC952B57A66765654567646474F06F1A969696E2EE 336 DDBBA8ADAD15CF656565B879F32692929270FEFCF9FBC78F1F0FB6B0B0982EFB 337 ACE5B98765171616BE1F1F1F9F909D9DDDC92CFEDB8D8E8E07B8DFDE8ED6B636 338 34B7DC43534BABB83757575F2FB7E7DAB56BF0F3F3EB747171099B376FDE27B2 339 CFD9FAE58FFCFCFCA534DE16EE8F1FED1D1DB8DFD189E2B24A645CBE82B4F870 340 6444F922F3A21FD213A37139EB260A4ACAC5E7BC7C3FA4A2A2028989893870E0 341 40EDBA75EB56CB3EEF7AAE8FE3DE45FEEEE4BF4FE9206E3B8DF9EAB5EB480C70 342 47BEAF1E9A02B6A0F9FC0634F9D1F5D49915A8F35A888AE30B70C36B2BD2C3BC 343 71ED5681F86E56515111F8FF543D78F060FBEAD5ABF750D7BFEDE573B34174CE 344 5AF67717B703953575880DF44675F07EDC8FD0C3BD70BA8E0EA3FD50F04E345E 345 D88E7ABF4DA8F559839A53CB507D7C3E2ADD6720D76319D2132EE2767E117273 346 F3446C383A3AB6CF9C3973BBCC86E7D4F87C04C5781B3DC41C1796DE419A9F13 347 1E5C34C4FD5833DC8F36456BA401EA895D796E334ABC56A3C873194A8E2D46F9 348 F185A83AB1009547E7A1FCF04C941E988C4BA1C7712D2717393939E29E88A1A1 349 61FD3BEFBCF383ECF3C36EF110191939382525258BE7BBADED3EEE54DE45C679 350 4774C6D0FE37C1066D7156A88A724275AA3F1A723270AFAC040FC8379D350D68 351 2B29466D660C0ACE1921CF6506CADDBF45D9C1AF51EAF019AE849F44D6F51C11 352 9394AFFCDBA0F184FB54F659A7FC41F3BDEAFAF5EBE0B13735DF43DC054F621B 353 11DB1A4871C49D2003B4565402CDADA006F4DC02F0FFEF41718F9A5AE06E0D89 354 72203301D7ECBE22FE74943A7F8142DBD1B89C1A8F4B97AF82E6155656569D9F 355 7CF2C97ED9E7A8621EF6ECD9F32CC5EAAD9A9A1AEAB6152969E9680CDB2F7CDE 356 916007A4BBA080E3EECE1DD0C4887C405B3B3A1AF97BA19D404313B1294F2AC9 357 3EF25B71D871E4394E11FC22BBB1C83D341F995939C8A039080A0AC2CA952B93 358 093B49FAFC9A6ADA18CAB54EFEBBB1DAFA46A49F7712B1D646FC76F23DD20EA0 359 38401FCD95D5488BF0C359AB4D38B567364EEF990E8F9DB3909F91042A005DFC 360 3BE5682F2C468AC168941CF81285F6E35160F62F64C7072039250D696969FCDD 361 9207AFBDF69AB6EC33EC67C2C3C38DB8AED5932FAFD25C5505EE466BF87EDCBB 362 48D73F71967890648FA6682BA4B86F47EE695D34471AA12DDA106DE1FB70D777 363 33C21CB4BAE685F965E4A38ABB88DC3D02A52EE47FFB71C8B7FC04B74F682129 364 3513717171B0B7B7C7D0A1435D893D8CEF1704070747724DE5FB244971916809 365 DC8AE650BADE8832200EC57DAC05DAE3AD682E2CD111638EB68BC6688DD88FE6 366 905D947F9B91E1B997E6A0B98B4F75A7E6CA2524D3F84B9DA7A0D0EE73E45B8D 367 429EC52748BD721D915151E29A69E2C4891788CD35FA159A9322AE57FCDD82D4 368 90E3680ED88CA6205DCAF3BDC4D1C7BD2863F285093D9B88FC63764BE82E3406 369 6CC58D434BD0907FA32B06CB2B440CC61DDE8F1CBB8928719A4CF1371679969F 370 22D7E06D5C4E4F44707088F85DEE59B366A5117B25DF0BA0BC68AC24DBEFD0FC 371 66F8BB505DD34243C00E614373C86E61474BD83E99F6A0E1820E0A4FAC4641A0 372 0DEE9597D1DC3700547751D784EBC16711B66B24E53FC59EE34414D8FC5B8C3D 373 57FF2D64C5072120E0027C7C7C307BF6ECDBC4E67AF4075AB35AB86697945510 374 DF19F53EABC9AF1BD1E0BF956A1CD911A843B6ECA49AA7235EE7FAECA31CBC47 375 F9D7D235EEDA7ADC2B2E46909D0E427489ED3A0D250ABECF351B86DBFA7FA718 376 24F6395F787B7B333F9FD87B390FC99EF2623ABFB8B40C19C147517B7A296ACF 377 AE45DD392D515FEBCF6F266D216DA5D71B90E6A14D79DFD435DFD53548F7F384 378 A7D63064DB4D45D9A11914775351E4304136F64F71DBE423DCDAFB175C4A8925 379 DF9F81BBBB3BBEFAEAAB2B7C9B8EF99E9E9E295CA30B0A8B901A1382DA13F370 380 F7D472D49C5E4576ACA1FABEEE479D5D8DD443DB84AF515945F35D87ACB3F628 381 74998E8A4354775DA7A2D87192C2D887E396F150DCD27F0709699741FB14D8D9 382 D961CC983191C4E6FB687F747373734D4E4E06D57FA45DCEC69D63F35145F5BC 383 FAE412547B2D13B6DCF55EDEF54CEB4C9ACB1A1426C6E2767418F2E2A290E1B1 384 17452E5FA3CC651A8A39E628E70AACC7D0D847D0D83F44CEFE77517C7431FC2E 385 848AD8DFB56B17DE7AEB2D2F62AFE3FB4DC6C6C6F302020270FB762EB26FDC46 386 F6396354510DAF3C360F959E6CCB822E7B8E2F22D13AEBF43582743EC1F9ADFF 387 82FFD6A148311C45B566AA601771BD61BF73CC9B7E8C5B46FFC4CDDD7F4441C2 388 191C3AE22EF8CB972FEF7CF9E5970F127B2EEF0BA64D9BF6C6A143876A788DB8 389 76FD0652939350EE360D778ECCA6B5640E692ECA3D4847E7A2C4ED1B5A67683D 390 CABE8C7B57D285EA92A370D56C14CDF938C1CEB71C29628EFD9EB3FF6DE4530E 391 464427F23E00B6B6B6FCDBFC1CFB8EB26B27DE1B3D4FEB820DAF4FBC465CBA7A 392 0DD91768CD719E2CD69132B719427748794E53907D8A6A724131C0BF6F4D3E6B 393 CA4847DCAEA128B219D3356E8E77661BFC2F6EEEFC3DF232A3E074E0A0E0AF59 394 B3067FFEF39F4FF0D7FA64F704F9DEDA3373E7CEFDBB8383C35DAECF99972E21 395 2D331BB74F6D45A9E378F2ED17A29697505CE7DA4FC0657723D4D31A559B9488 396 BAA464DC890C45E2EE0F68DC23BA7C2EB1757F873B5107E0EEE9C5DF8100FFDD 397 0BD5BDFC679F7DF61031BF19D4FD6FB25ED0D1D1D97AF8F0615C227E724A0A92 398 D3AF900D5B506C3392E6759C985B7E4ED83B0C5E6BDEC2C9557FC7C9957F45C0 399 C67FE0A6F1C7C835E99AEF1CFD7789FD3F288B72C6C933E761EFE020627ECE9C 400 390F5E7FFDF5A3B2B1BFA374EF93F723AF516C9E3976EC18381F626262119794 401 899B212E28B4FA148534BE02EB512864598D4401F93ADF6238F269CC5DFE7E0F 402 37F7BC893C139A8BF41078789EA2F9B613ECC58B1777BEFBEEBBFCBD247BD9DA 403 FB2B155BB0E7C9BEBFD2354424E524685D06AD8D08098B444A4A12F2FD4D5060 404 FB39F28CDE15CA357C8FF2FA6DDCDAFF37DCDA43314E73537AF12062E293616B 405 EF041B1B1B216263D8B06121D4BF1B693EE97F34EC855F78E59557DEA738F1A3 406 6B08D0F58DD8379DF3F5C539BF0044C5A5D2DE321237A23C911BEE423A881BD1 407 DE48A57AE01F7A11F6CE2EC4B415716E6464048AABCE0F3EF880BFA3C873BE5C 408 1673FFD5CB169CEF0FBFFDF5D75F9B6FDBB6AD8EFD77F6EC599C397346D4AFA3 409 343F878F78C0D5ED300EB8BAC1D1F9007FAF43F899C576AF5DBB1693274FAEFC 410 CD6F7E734C966B0B65EC17FA7809C2EDDEFCED6F7F3B8FEA8337F5D7A0A7A707 411 6B6B6BFEDEABA8E11CAB9C53CECECE82A9ABAB8B152B56706DBFFBF6DB6F9F7D 412 EEB9E7F8BB91BCD7FB4AF639C57FF5F312EC79D9F7023EFAD9CF7EB69CE2C77E 413 FCF8F181B476E52C58B0A069D1A2459DF3E7CFEFFCE69B6F1A264D9A74EDC30F 414 3FBC40E33DF2CC33CFF0DEC690C47BED0FFA73EDA3E61EFC0BB2EF2B705F5349 415 AB48BB49FCFD631B99CC6479B55CF6F9C9BBB2EF41BCF098AE85A5BF8BF895EC 416 1AE64FA4BF91FE21D35F65C77E23DBD73EDF57EEFF05DE7F3B51 1552 417 } 1553 418 end 1554 419 object ActionList1: TActionList 1555 420 Images = ImageList1 1556 left = 3721557 top = 97421 Left = 558 422 Top = 146 1558 423 object AExit: TAction 1559 424 Caption = 'Exit' … … 1582 447 end 1583 448 end 1584 object CoolTranslator1: TCoolTranslator449 object Translator1: TTranslator 1585 450 POFilesFolder = 'Languages' 1586 OnTranslate = CoolTranslator1Translate1587 left = 3601588 top = 380451 OnTranslate = Translator1Translate 452 Left = 540 453 Top = 570 1589 454 end 1590 455 object ApplicationInfo1: TApplicationInfo … … 1603 468 RegistryRoot = rrKeyCurrentUser 1604 469 License = 'CC0' 1605 left = 1001606 top = 104470 Left = 150 471 Top = 156 1607 472 end 1608 473 object PersistentForm1: TPersistentForm 1609 474 MinVisiblePart = 50 1610 475 EntireVisible = False 1611 left = 1011612 top = 178476 Left = 152 477 Top = 267 1613 478 end 1614 479 object ScaleDPI1: TScaleDPI 1615 480 AutoDetect = False 1616 left = 3661617 top = 273481 Left = 549 482 Top = 410 1618 483 end 1619 484 end -
trunk/UCore.pas
r22 r25 6 6 7 7 uses 8 Classes, SysUtils, FileUtil, Controls, ActnList, UDatabase, U CoolTranslator,8 Classes, SysUtils, FileUtil, Controls, ActnList, UDatabase, UTranslator, 9 9 UApplicationInfo, UPersistentForm, Forms, URegistry, UScaleDPI; 10 10 … … 20 20 AExit: TAction; 21 21 ActionList1: TActionList; 22 CoolTranslator1: TCoolTranslator;22 Translator1: TTranslator; 23 23 ImageList1: TImageList; 24 24 PersistentForm1: TPersistentForm; … … 29 29 procedure AExitExecute(Sender: TObject); 30 30 procedure APreferencesExecute(Sender: TObject); 31 procedure CoolTranslator1Translate(Sender: TObject);31 procedure Translator1Translate(Sender: TObject); 32 32 procedure DataModuleCreate(Sender: TObject); 33 33 procedure DataModuleDestroy(Sender: TObject); … … 57 57 58 58 uses 59 UFormTables, UFormConnect, 60 UForm Databases, UFormPreferences, UFormMain, UFormAbout;59 UFormTables, UFormConnect, UAboutDialog, UFormDatabases, UFormPreferences, 60 UFormMain; 61 61 62 62 {$R *.lfm} … … 97 97 procedure TCore.AAboutExecute(Sender: TObject); 98 98 begin 99 FormAbout := TFormAbout.Create(nil); 100 FormAbout.ApplicationInfo := ApplicationInfo1; 101 FormAbout.ShowModal; 102 FormAbout.Free; 99 with TAboutDialog.Create(nil) do 100 try 101 ApplicationInfo := ApplicationInfo1; 102 Show; 103 finally 104 Free; 105 end; 103 106 end; 104 107 … … 111 114 end; 112 115 113 procedure TCore. CoolTranslator1Translate(Sender: TObject);116 procedure TCore.Translator1Translate(Sender: TObject); 114 117 var 115 118 I: Integer; 116 119 begin 117 120 for I := 0 to DbManager.DataTypes.Count - 1 do begin 118 TDataType(DbManager.DataTypes[I]).Title := CoolTranslator1.TranslateText(TDataType(DbManager.DataTypes[I]).Title, TDataType(DbManager.DataTypes[I]).Title);121 TDataType(DbManager.DataTypes[I]).Title := Translator1.TranslateText(TDataType(DbManager.DataTypes[I]).Title, TDataType(DbManager.DataTypes[I]).Title); 119 122 end; 120 123 end; … … 143 146 Preferences.RememberDatabase := GetValue('RememberDatabase', True); 144 147 Preferences.LastDatabaseName := GetValue('LastDatabaseName', ''); 145 CoolTranslator1.Language := CoolTranslator1.Languages.SearchByCode(148 Translator1.Language := Translator1.Languages.SearchByCode( 146 149 GetValue('Language', '')); 147 150 finally … … 158 161 SetValue('RememberDatabase', Preferences.RememberDatabase); 159 162 SetValue('LastDatabaseName', Preferences.LastDatabaseName); 160 SetValue('Language', CoolTranslator1.Language.Code);163 SetValue('Language', Translator1.Language.Code); 161 164 finally 162 165 Free; … … 170 173 begin 171 174 if not Initialized then begin 172 {$IFDEF Linux}175 {$IFDEF UNIX} 173 176 // If installed in Linux system then use installation directory for po files 174 177 if Application.ExeName = '/usr/bin/MyData' then 175 CoolTranslator1.POFilesFolder := '/usr/share/MyData/languages';178 Translator1.POFilesFolder := '/usr/share/MyData/languages'; 176 179 {$ENDIF} 177 180 FormConnect.Init;
Note:
See TracChangeset
for help on using the changeset viewer.