Changeset 143


Ignore:
Timestamp:
Mar 8, 2022, 10:55:43 AM (2 years ago)
Author:
chronos
Message:
  • Added: Action to generate text as brainfuck code.
  • Modified: Used loop in number generation.
Location:
trunk
Files:
4 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormMain.lfm

    r136 r143  
    322322        Action = FormSourceCode.AGenerateNumber
    323323      end
     324      object MenuItem21: TMenuItem
     325        Action = FormSourceCode.AGenerateText
     326      end
    324327    end
    325328    object MenuItem9: TMenuItem
     
    386389  object ActionList1: TActionList
    387390    Images = Core.ImageListMain
    388     Left = 270
     391    Left = 272
    389392    Top = 240
    390393    object AProjectOpen: TAction
  • trunk/Forms/UFormMain.pas

    r136 r143  
    5454    MenuItem2: TMenuItem;
    5555    MenuItem20: TMenuItem;
     56    MenuItem21: TMenuItem;
    5657    MenuItem22: TMenuItem;
    5758    MenuItem24: TMenuItem;
  • trunk/Forms/UFormMemory.lfm

    r112 r143  
    11object FormMemory: TFormMemory
    22  Left = 565
    3   Height = 388
    4   Top = 182
    5   Width = 586
     3  Height = 418
     4  Top = 168
     5  Width = 1082
    66  Caption = 'Memory'
    7   ClientHeight = 388
    8   ClientWidth = 586
    9   DesignTimePPI = 144
    10   LCLVersion = '2.0.2.0'
     7  ClientHeight = 418
     8  ClientWidth = 1082
     9  DesignTimePPI = 150
     10  LCLVersion = '2.2.0.4'
    1111  object Label6: TLabel
    1212    Left = 6
    13     Height = 26
     13    Height = 27
    1414    Top = 6
    15     Width = 574
     15    Width = 1070
    1616    Align = alTop
    1717    BorderSpacing.Around = 6
    1818    Caption = 'Memory:'
    19     ParentColor = False
    2019    ParentFont = False
    2120  end
    2221  object ListViewMemory: TListView
    2322    Left = 6
    24     Height = 344
    25     Top = 38
    26     Width = 574
     23    Height = 373
     24    Top = 39
     25    Width = 1070
    2726    Align = alClient
    2827    BorderSpacing.Around = 6
     
    3029      item
    3130        Caption = 'Address'
    32         Width = 120
     31        Width = 125
    3332      end   
    3433      item
    3534        Caption = 'Data'
    36         Width = 495
     35        Width = 516
     36      end   
     37      item
     38        Caption = 'Text'
     39        Width = 414
    3740      end>
    38     Font.Height = -18
     41    Font.Height = -19
    3942    Font.Name = 'Courier New'
    4043    OwnerData = True
  • trunk/Forms/UFormMemory.lrj

    r112 r143  
    33{"hash":63203738,"name":"tformmemory.label6.caption","sourcebytes":[77,101,109,111,114,121,58],"value":"Memory:"},
    44{"hash":128683235,"name":"tformmemory.listviewmemory.columns[0].caption","sourcebytes":[65,100,100,114,101,115,115],"value":"Address"},
    5 {"hash":305313,"name":"tformmemory.listviewmemory.columns[1].caption","sourcebytes":[68,97,116,97],"value":"Data"}
     5{"hash":305313,"name":"tformmemory.listviewmemory.columns[1].caption","sourcebytes":[68,97,116,97],"value":"Data"},
     6{"hash":371956,"name":"tformmemory.listviewmemory.columns[2].caption","sourcebytes":[84,101,120,116],"value":"Text"}
    67]}
  • trunk/Forms/UFormMemory.pas

    r112 r143  
    5454  Row: string;
    5555  I: Integer;
     56  Text: string;
     57  Address: Integer;
    5658begin
    5759  if Core.CurrentTarget is TTargetInterpretter then
     
    6062    Item.Caption := IntToHex(Item.Index * RowSize, 8);
    6163    Row := '';
    62     for I := 0 to RowSize - 1 do
    63       if (Item.Index * RowSize + I) < (MemoryMaxUsedAddr + 1) then
    64         Row := Row + ' ' + IntToHex(Memory[Item.Index * RowSize + I], 2);
     64    Text := Default(string);
     65    SetLength(Text, RowSize);
     66    for I := 0 to RowSize - 1 do begin
     67      Address := Item.Index * RowSize + I;
     68      if Address < (MemoryMaxUsedAddr + 1) then begin
     69        Row := Row + ' ' + IntToHex(Memory[Address], 2);
     70        if Memory[Address] > Ord(' ') then Text[I + 1] := Chr(Memory[Address])
     71          else Text[I + 1] := ' ';
     72      end else Text[I + 1] := ' ';
     73    end;
    6574    Item.SubItems.Add(Row);
     75    Item.SubItems.Add(Text);
    6676  end;
    6777end;
  • trunk/Forms/UFormSourceCode.lfm

    r133 r143  
    11object FormSourceCode: TFormSourceCode
    22  Left = 459
    3   Height = 589
     3  Height = 614
    44  Top = 278
    5   Width = 672
     5  Width = 700
    66  Caption = 'Source code'
    7   ClientHeight = 589
    8   ClientWidth = 672
    9   DesignTimePPI = 144
     7  ClientHeight = 614
     8  ClientWidth = 700
     9  DesignTimePPI = 150
    1010  OnCreate = FormCreate
    1111  OnDestroy = FormDestroy
     
    1313  inline SynEditSource: TSynEdit
    1414    Left = 0
    15     Height = 589
     15    Height = 614
    1616    Top = 0
    17     Width = 672
     17    Width = 700
    1818    Align = alClient
    19     Font.Height = -16
     19    Font.Height = -17
    2020    Font.Name = 'Courier New'
    2121    Font.Pitch = fpFixed
     
    2929    OnKeyUp = MemoSourceKeyUp
    3030    OnMouseDown = MemoSourceMouseDown
    31     Gutter.Width = 80
     31    Gutter.Width = 83
    3232    Gutter.MouseActions = <>
    3333    RightGutter.Width = 0
     
    479479    inline SynLeftGutterPartList1: TSynGutterPartList
    480480      object SynGutterMarks1: TSynGutterMarks
    481         Width = 36
     481        Width = 38
    482482        MouseActions = <>
    483483      end
     
    506506      object SynGutterCodeFolding1: TSynGutterCodeFolding
    507507        AutoSize = False
    508         Width = 14
     508        Width = 15
    509509        MouseActions = <>
    510510        MarkupInfo.Background = clNone
     
    517517  object PopupMenuSource: TPopupMenu
    518518    Images = Core.ImageListMain
    519     Left = 154
    520     Top = 154
     519    Left = 160
     520    Top = 160
    521521    object MenuItem23: TMenuItem
    522522      Action = FormMain.ABreakpointToggle
    523     end
    524     object MenuItem26: TMenuItem
    525       Action = AFormatSource
    526     end
    527     object MenuItem21: TMenuItem
    528       Action = AGenerateNumber
    529523    end
    530524    object MenuItem29: TMenuItem
     
    567561      }
    568562    end
     563    object Separator1: TMenuItem
     564      Caption = '-'
     565    end
     566    object MenuItem26: TMenuItem
     567      Action = AFormatSource
     568    end
    569569    object MenuItem36: TMenuItem
    570570      Action = AShrinkSource
     571    end
     572    object MenuItem21: TMenuItem
     573      Action = AGenerateNumber
     574    end
     575    object MenuItem7: TMenuItem
     576      Action = AGenerateText
    571577    end
    572578    object MenuItem1: TMenuItem
     
    591597  object ActionList1: TActionList
    592598    Images = Core.ImageListMain
    593     Left = 152
    594     Top = 67
     599    Left = 158
     600    Top = 70
    595601    object AGenerateNumber: TAction
    596602      Caption = 'Generate number'
     
    641647      ShortCut = 16472
    642648    end
     649    object AGenerateText: TAction
     650      Caption = 'Generate text'
     651      ImageIndex = 29
     652      OnExecute = AGenerateTextExecute
     653    end
    643654  end
    644655  object SynJavaSyn1: TSynJavaSyn
    645656    DefaultFilter = 'Soubory Java (*.java)|*.java'
    646657    Enabled = False
    647     Left = 486
    648     Top = 316
     658    Left = 506
     659    Top = 329
    649660  end
    650661end
  • trunk/Forms/UFormSourceCode.lrj

    r115 r143  
    1515{"hash":195296268,"name":"tformsourcecode.aselectall.hint","sourcebytes":[83,101,108,101,99,116,32,97,108,108],"value":"Select all"},
    1616{"hash":19140,"name":"tformsourcecode.acuttoclipboard.caption","sourcebytes":[67,117,116],"value":"Cut"},
    17 {"hash":19140,"name":"tformsourcecode.acuttoclipboard.hint","sourcebytes":[67,117,116],"value":"Cut"}
     17{"hash":19140,"name":"tformsourcecode.acuttoclipboard.hint","sourcebytes":[67,117,116],"value":"Cut"},
     18{"hash":129197108,"name":"tformsourcecode.ageneratetext.caption","sourcebytes":[71,101,110,101,114,97,116,101,32,116,101,120,116],"value":"Generate text"}
    1819]}
  • trunk/Forms/UFormSourceCode.pas

    r131 r143  
    1515
    1616  TFormSourceCode = class(TForm)
     17    AGenerateText: TAction;
    1718    ACutToClipboard: TAction;
    1819    ASelectAll: TAction;
     
    3536    MenuItem5: TMenuItem;
    3637    MenuItem6: TMenuItem;
     38    MenuItem7: TMenuItem;
     39    Separator1: TMenuItem;
    3740    PopupMenuSource: TPopupMenu;
    3841    SynEditSource: TSynEdit;
     
    4346    procedure AFormatSourceExecute(Sender: TObject);
    4447    procedure AGenerateNumberExecute(Sender: TObject);
     48    procedure AGenerateTextExecute(Sender: TObject);
    4549    procedure APasteFromClipboardExecute(Sender: TObject);
    4650    procedure ASelectAllExecute(Sender: TObject);
     
    7276
    7377uses
    74   UCore, UFormMain;
     78  UCore, UFormMain, UBFCodeTools;
    7579
    7680resourcestring
    7781  SNumberGeneration = 'Number generation';
    7882  SEnterNumber = 'Enter number';
    79 
     83  STextGeneration = 'Text generation';
     84  SEnterText = 'Enter text';
    8085
    8186{ TFormSourceCode }
     
    8388procedure TFormSourceCode.AGenerateNumberExecute(Sender: TObject);
    8489var
     90  Number: Integer;
    8591  NumberText: string;
    86   Number: Integer;
    87   I: Integer;
    8892begin
    8993  NumberText := InputBox(SNumberGeneration, SEnterNumber, '1');
    9094  if TryStrToInt(NumberText, Number) then begin
    91     NumberText := '';
    92     for I := 0 to Number - 1 do
    93       NumberText := NumberText + '+';
    94     SynEditSource.SelText := NumberText;
     95    SynEditSource.SelText := GenerateNumber(Number);
    9596  end;
    9697end;
    9798
     99procedure TFormSourceCode.AGenerateTextExecute(Sender: TObject);
     100var
     101  Text: string;
     102begin
     103  Text := InputBox(STextGeneration, SEnterText, '');
     104  SynEditSource.SelText := GenerateText(Text);
     105end;
     106
    98107procedure TFormSourceCode.APasteFromClipboardExecute(Sender: TObject);
    99108begin
     
    107116
    108117procedure TFormSourceCode.AFormatSourceExecute(Sender: TObject);
    109 var
    110   Source: string;
    111   NewSource: string;
    112   Indent: Integer;
    113   I: Integer;
    114 const
    115   IndentText = '  ';
    116 begin
    117   Source := SynEditSource.Text;
    118   NewSource := '';
    119   Indent := 0;
    120   for I := 1 to Length(Source) do begin
    121     if Source[I] = '[' then begin
    122       NewSource := NewSource + LineEnding + DupeString(IndentText, Indent) + Source[I] + LineEnding ;
    123       Inc(Indent);
    124       NewSource := NewSource + DupeString(IndentText, Indent);
    125     end
    126     else if Source[I] = ']' then begin
    127       Dec(Indent);
    128       NewSource := NewSource + LineEnding + DupeString(IndentText, Indent) + Source[I] + LineEnding + DupeString(IndentText, Indent);
    129     end
    130     else if Ord(Source[I]) > $20 then
    131       NewSource := NewSource + Source[I];
    132   end;
    133   SynEditSource.Text := NewSource;
     118begin
     119  SynEditSource.Text := FormatCode(SynEditSource.Text);
    134120  MemoSourceChange(nil);
    135121end;
     
    151137
    152138procedure TFormSourceCode.AShrinkSourceExecute(Sender: TObject);
    153 var
    154   Source: string;
    155   Pos: Integer;
    156   I: Integer;
    157 begin
    158   Source := SynEditSource.Text;
    159   Pos := 1;
    160   for I := 1 to Length(Source) do begin
    161     if Source[I] > ' ' then begin
    162       Source[Pos] := Source[I];
    163       Inc(Pos);
    164     end;
    165   end;
    166   SetLength(Source, Pos - 1);
    167   SynEditSource.Text := Source;
     139begin
     140  SynEditSource.Text := ShrinkCode(SynEditSource.Text);
    168141  MemoSourceChange(nil);
    169142end;
  • trunk/Languages/LazFuck.cs.po

    r137 r143  
    277277msgstr "Data"
    278278
     279#: tformmemory.listviewmemory.columns[2].caption
     280msgid "Text"
     281msgstr "Text"
     282
    279283#: tformmessages.caption
    280284msgctxt "tformmessages.caption"
     
    418422msgstr "Generovat číslo"
    419423
     424#: tformsourcecode.ageneratetext.caption
     425msgid "Generate text"
     426msgstr "Generovat text"
     427
    420428#: tformsourcecode.apastefromclipboard.caption
    421429msgctxt "tformsourcecode.apastefromclipboard.caption"
     
    576584msgstr "Zadejte číslo"
    577585
     586#: uformsourcecode.sentertext
     587msgid "Enter text"
     588msgstr "VloÅŸte text"
     589
    578590#: uformsourcecode.snumbergeneration
    579591msgid "Number generation"
    580592msgstr "Generování čísla"
     593
     594#: uformsourcecode.stextgeneration
     595msgid "Text generation"
     596msgstr "Generování textu"
    581597
    582598#: utarget.scompiledfilenotfound
  • trunk/Languages/LazFuck.pot

    r137 r143  
    267267msgstr ""
    268268
     269#: tformmemory.listviewmemory.columns[2].caption
     270msgid "Text"
     271msgstr ""
     272
    269273#: tformmessages.caption
    270274msgctxt "tformmessages.caption"
     
    408412msgstr ""
    409413
     414#: tformsourcecode.ageneratetext.caption
     415msgid "Generate text"
     416msgstr ""
     417
    410418#: tformsourcecode.apastefromclipboard.caption
    411419msgctxt "tformsourcecode.apastefromclipboard.caption"
     
    566574msgstr ""
    567575
     576#: uformsourcecode.sentertext
     577msgid "Enter text"
     578msgstr ""
     579
    568580#: uformsourcecode.snumbergeneration
    569581msgid "Number generation"
     582msgstr ""
     583
     584#: uformsourcecode.stextgeneration
     585msgid "Text generation"
    570586msgstr ""
    571587
  • trunk/LazFuck.lpi

    r141 r143  
    9797      </Item4>
    9898    </RequiredPackages>
    99     <Units Count="28">
     99    <Units Count="29">
    100100      <Unit0>
    101101        <Filename Value="LazFuck.lpr"/>
     
    252252        <ResourceBaseClass Value="Form"/>
    253253      </Unit27>
     254      <Unit28>
     255        <Filename Value="UBFCodeTools.pas"/>
     256        <IsPartOfProject Value="True"/>
     257      </Unit28>
    254258    </Units>
    255259  </ProjectOptions>
  • trunk/LazFuck.lpr

    r141 r143  
    1111  Forms, UTarget, UFormCPU, UFormMain, UFormOutput, UFormInput, UFormMemory,
    1212  UFormMessages, UFormSourceCode, UFormTargetCode, UCore, Common,
    13   SysUtils;
     13  SysUtils, UBFCodeTools;
    1414
    1515{$R *.res}
  • trunk/UCore.lfm

    r139 r143  
    33  OnDestroy = DataModuleDestroy
    44  OldCreateOrder = False
    5   Height = 433
    6   HorizontalOffset = 793
    7   VerticalOffset = 444
    8   Width = 509
    9   PPI = 144
     5  Height = 451
     6  HorizontalOffset = 826
     7  VerticalOffset = 463
     8  Width = 530
     9  PPI = 150
    1010  object ApplicationInfo: TApplicationInfo
    1111    Identification = 1
     
    541541      0000000000000000000000000000000000000000000000000000
    542542    }
    543     Left = 108
    544     Top = 24
     543    Left = 113
     544    Top = 25
    545545  end
    546546  object Translator: TTranslator
    547547    POFilesFolder = 'Languages'
    548548    OnTranslate = TranslatorTranslate
    549     Left = 108
    550     Top = 108
     549    Left = 113
     550    Top = 113
    551551  end
    552552  object LastOpenedList: TLastOpenedList
    553553    MaxCount = 10
    554     Left = 108
    555     Top = 192
     554    Left = 113
     555    Top = 200
    556556  end
    557557  object PersistentForm1: TPersistentForm
    558558    MinVisiblePart = 50
    559559    EntireVisible = False
    560     Left = 108
    561     Top = 276
     560    Left = 113
     561    Top = 288
    562562  end
    563563  object ImageListMain: TImageList
    564     Left = 372
    565     Top = 24
     564    Left = 384
     565    Top = 25
    566566    Bitmap = {
    567       4C7A1D00000010000000100000007B1600000000000078DAED9C07585557B6C7
    568       99F8DEFB32CE9BCC33A33326D11933B6688C098A8225F682A88CA3891A131415
    569       8C150B22080AA2D7821A2B168A1415C48E281A250858B08195225205E5D23B5C
    570       CA85FFDB7B730F9C7B38B7412CC9E7F6FB7BCED967FFD65A7BED7DEABD5C3DBD
    571       5FA5A0996AE4251256A7A9706D5AC2B7D43FD7F677C737D6AB9672BBA6BCB66A
    572       AEFF66C6DFD2FEBF625EAF85C7CFDB55D0C2D8A0F8D752BEB93620F8D7525E57
    573       1B50F1AFA5BCB6365E85FF3795FF3735FF7E23E5888331A80EDB8FC5E1D563E0
    574       6B371A3EB6A3E0B36A24BC6D46C06BE57078590FC3A11543E1B97C083C977D0D
    575       8FA583E16E3508EE4B0632F6EA61275CF57544A8EF5A84FAAC41A8F71AFCE2ED
    576       80102F7B841CA25A8D2B9E76B8EC41E46E8B9FDD57E167371BB82D1EC0FC72A5
    577       AEAE8EA9B6B696480EB9BC06F29A1AD4D454A3A6BA0AD5545595A8AA92A1AA52
    578       86838B0CE14B62A665F3E6CD303333838F8F0F6AE56A58C25552C92A7060617F
    579       D2DF51CCE7AC59B3E0EAEA8A2953A630D6C1C101AB57AF868D8D0D56AC58012B
    580       2B2B2C5CB800F3E6CDC39C397320939563FF827E2C4F7524DEEDDBB763F2E4C9
    581       387AF468BD4FA2C67839BF15CC2F65651565D8FFA301CB717D5FEB63AE8F570D
    582       5B51CF56949761DFBCBE6C7C281B1C1C0C09B9AE5C0D0D6D92A77AB69CC79632
    583       B95AEAE310195B9A27676767DCB871033B77EE64AC8383BDA2FF2BB162F9722C
    584       59B2040B16D0FE5B92FECF46795909F65A7C45E6C51016B3B7B7179C9C9C70E6
    585       CC69A51CCB147E2B147ECBCB4A195B565A8C3D73BE64F3A93EDE2A5E5F056C79
    586       53B6ACB4087B66F7667391C67BF56A28F6ECD9835F7E0951CA71235BD2C89614
    587       A19468B7F9176C1E53BF6BD6AC61FDA7F388FAB4B7B7879D9D1D56AE5C89E5CB
    588       9791FE2F26FD9F0F4B4B4BCC9E3D1B25C585D835EB73B8916380C6BC6F9F2B63
    589       3DDCDD9572DC186F31F3595A52C8D892E202EC9CD9931C03462CDE4A619ED4B1
    590       4505282ECAC70EB31EEC18A0F398CE453A9FE89C70B5ECC3C6968E0FCD31CD13
    591       EDEB2EF35E2CE69D663DB1E3871EF8E9FBCFF0CAEF049A779FC2B8757AEB9874
    592       B0A1C4F1A5C1864A4E0B1B080F0FD7C8AAB1C1EA5B60A3A1BE993694EAB5B5C1
    593       BF0F15EE5367A38159B74EB40FAA6CF0395A04BC4A1B7C8E6ED3C2AF576783EF
    594       4F0BB6890DEEBE9F6375381E94FC37F3387A6DCF09EDDB87834A911B9DDB76EA
    595       741B7CA9B2A36E7FB76EF7C197B08DAA7A61E9D1E31138716DF9EBDA945EBD62
    596       20942E3C2D5F7E190F4EBAB27DFA3C8350DADAE8D72F199C3846B8ADAA1819A5
    597       8193B0ADAA7AAE0C1C980E4EEADAB484D7C686AEB96E4E795D7E5EEB137FCBDE
    598       53A87C77A535AFE2FD97182F117BF7C27B7FA38EA7AC5A5E6083CF732C5FDAF2
    599       62AC2E7C4BFD6BDD7FB1F75DBAE45F837F9573AFE9BB455DE7A3AA7793BA1D07
    600       2DE35B72CF2CB4F146CA4DC9285CDB30024F3D97206EFF7CC4B8CE65CBA0D583
    601       71CE6E10D4B3239074D816A5CF6E412E2BA62F0498E465F9288E0BC7ADBD66F0
    602       5FDA57D4C60DC948BCBCECC6DAD63C8E4075C066D46E9E865AC937A8F45B0FD9
    603       7DF25C5C2CC5E363F638B2B02794D9D1CC2F65ABC3FC01FB914088175051CAFC
    604       D7E5BF44B5DB32945EF44465512642B64DC5418B6E0D366E6C188EA267D751FD
    605       88DCE7AD1E061CB4AA8FFD4E106A775BA03AF22CEACA8B516EFB35F26F06E1C5
    606       BDF3D865F66903FF68C304D6DF6A1227AC07021253E0CC56D42DFE02B21FBBA3
    607       78CF7C662F7BC33788DF688ECAE23C387FFBCF063E9AB6A779729E002CD30716
    608       F542ED82CF5069D919657B2C514B7C97C5DC44E4A4F6B8F25D77D2B4161B4C3A
    609       34F2CE63195F693F0655F37BA0C2B22B8ACD3BA178D314565F1416809B33BAE0
    610       E28476B834AD0BE39D8C3F6EE49D46B3DCE51D58812CF34F9136A32312A77F84
    611       FC132E8CBF6DFA212E4F6883F313FE8A5B0E535051944752FC51037F61F54014
    612       C645B0DC24CFF818B153FF8EC753FE8AA76B2722C37F1342286BF2212E9AFC1F
    613       522EFB23E9CECF983AF8CF0DFC455B03C4B92D42559114C947B7E0D6A4BF22DC
    614       B40D92FCB730FFC1E3DA3036D66B3D4AF3A470B79E8C71067F569A0341CB3E47
    615       E2C975A82C94223DC41F518E531131BD33C2A7FD0B779CA622E5CA3194E44A71
    616       7EEF2A18EBBF2F3A077D17F442F896E948BB730132324675B572A672D25F1AB3
    617       97DD348C55C17265B7450F6C24B9DE32A91DD69B7484E3D88FB07AD4DF317DF0
    618       074D62FE8DDE1FB4F45C865FE11CD7F4F31B1DEF5594E2E0AE554D3F5FD4EABA
    619       C3B16A97EAAE5B9A580DBC8AB6DA4BC8EAF6F95F4BD886FE379315BF7FD09ED5
    620       F573BB77E51596BE6EF31A723C2FCA0D7A6E7D1BC4DFA7B270ED781C9FD76843
    621       C0B01804F1F0EBD4F162BE1AFAA4A57FADFAFC3AC644984F35F18BE5A7890D15
    622       452CC7C279A0D6BFC297BA39A089178B971FCFDB30266FE81D80C6E7382DBFB7
    623       D36C3E343454E37550CBEF0D412D4FD7F9D2EE9D06B42D3AFB17C4F1CEFF2BF6
    624       DF4CFEDDBDC45B711A837ABDE37FDFFCBBF2A64ACA2EDBB0675B97E1E9861F11
    625       BB663634D50B4BC2A6C561B98187501472128F574E83A67A6121B6C3B28EED45
    626       FEC523889E3F0E9AEA8585D80E7BE9BB0DB967DD7167E61068AA1716623BECF9
    627       4167505F37BEE9034DF5C2727BE1C430A9DF2E505F6126DDA1A95E582E7FD32F
    628       2CDD4D8274F78D081ED6119AEA8585D80E4FD8B808A9FB1C7162607B68AA1716
    629       623B8C8E2F196FB819B485A67A6121B6C39ED84C47D2B6E5D8DAEB2FD054DFE4
    630       F1C3A06DD883A593F06CCB123875FF1334D50B0BB11D26E9F901D674FB13ECBB
    631       B686A6FAB7E36A87B7427A7A4789FC898E772223E6481444745BB174ACAFF767
    632       EDD4F0C35BB73E13317468ACD4DC3CBF72E1C2D23A73F3BCCA214362A4AD5B9F
    633       8EA0FB55F3473AB56E7D32E2DB6F334A67CC48C7D4A9290DFAEEBBE7983429A5
    634       F48F7F3C1141DB89F35E8E030644659A983CC6E8D1D14D646CFC10FAFAD73369
    635       3B71DE3DC8C424A6D2D0300C54FAFA57D0BD7B203A74F0C7DFFEE6830F3FF444
    636       E7CE672A693B717EDF6DE2A3AE77EF9FD1B1E369D2DE0F6DDA1C55D2279F9CAE
    637       A3EDC4F99D410606D72BDBB60D226DCF89AA6DDBC04ADA4E9C77716CDFFE6C66
    638       DBB611A46D98A85AB7F6CFA4EDC47949A756AD5C22DAB50B2BFDF0C368D23E4A
    639       491F7CF04BE97BEF6D89A0EDC4796722BBE1EFBDB736A275EB00E95FFE72B7B2
    640       4D9BD83ABAA4DBB49EEEA7ED54F3364416649E9993F9664EE69DF96DC5D2B1BE
    641       DE464F15FF4EBF6D913297E8126F9B7BCE12ABDB266087F1DBF26DD1A5629B6A
    642       1B512745DB4E8AFD9DC47CF16C6F13F147FF1BC6E32F29DA89F14AF10AFD0BFC
    643       5C12A96BF025F4AD8E17E64424A6B91A7888C529D62721AFC8B5920F6E4C78FD
    644       9FAB86DF2678D6DEC61B4BD13EBD936AC5C7C74F888A8AF2118AD66BC3D3B662
    645       EF4068BD625CDE27FA1F4DFEAF5EBD1A4B39BAE4FB27E533325B13F57AEBAD56
    646       67878B83F3CB9B3B9FE92D2631AD21FA8FDE133D7D3D3B313B1AF9750AAD259A
    647       CCECD8F2ED68CDF3ED4CD17BCCD9796D7C73E36F49FE5A367E2D9A3F2D9DBFAF
    648       FAF8F96D5C7F4F4E20F7F98F882050B8763C65038C9AEFFF045A16BF32AFE9FD
    649       EDABF6AF298E57E09FE59F8C2379483BF93DD9FE1FDDFC3719FF44A24F9A318F
    650       9AE5FF15DC4FEA34FEEFF476E6AF05F337BC39C7CF1B3C7EDFF4F9E34D9F3F9B
    651       E45F782E69E6F5EB573B97BDBB7EBFBBFEBEF3FFEEFCF16B9E3F5ED3778174FF
    652       EE90FAEFA236F99B0B09FF3B9A7C4EB1CEED97887C7F54225EDF2446899ADFAE
    653       9168F177271235FEF97DD0B454E99FBF54F1F7421291EF3E8BF991A8F83E8BC8
    654       DFFFA8F4AF8AE796DAF8171CB3E27DD1C1BF30165DFC8BC5A26AFEEAE05FB4A8
    655       1B3F91BFDFFABD7E7750878F3175FEBEA0465E97BF3FE4FBE4D6751833B5C78A
    656       86E3AF897F757350E4F8D3E85FC3F1A7937F15F35F2BFFBA1C7F3AFA57790C6A
    657       E95F2DDF12FFAFFAF87F55CFCCEAB67F0B3CC734F77D039F6FE97B875F6B1C74
    658       D1BA86DFF6689E0D8E5BA7B0A1AD1D617B3EA7C98658DB37CDF3FBA44BFF5FD7
    659       737B38FD5D94DF99E2E3E31BD45C9ECE7D6D79A13F3ECFB7211617D79613B75F
    660       DB3AA12F6E5DDBBAB78517EBAB18AFA9FFFCBC0AF3AEAA9D3663ADAA9DB673AD
    661       A573F25549783EE8D221FD1F4456446789C214F2269AA9E95CF279E70CE75E5D
    662       3240969830260B3FB91461F6F739F8AC537DDD175D3352F57BBC1821C6F6FC57
    663       461811699B8EB96639B81F55C5EE91A49972ACB12DC017DD32D0FD9FE9A06D7A
    664       77CF98C36789CFDDB4BEEFE72FE0B6AF18E56575A8A9A94345451D2A2BEB2097
    665       0317CF9763E4E04C907E301B5F7D561F07D9EE4D63EEF68F74B64F9368BBAE1D
    666       D3697F5215BC778F4F33D8BEDC1CB9C6673ECA77FE249DF425832E7B13EE41F7
    667       4EF5B607F77B89C2825A58CCCAC5D7FDC97A612D6BBB6B7B11621E57B1754EB4
    668       3D593AD225CD0B5D8E1E9AC9F825F3F3603C5CCA789AF7037B8B111753ADC42B
    669       C4F86EFFACDF1E3D441BFE395F8EA42E95F669E2FC2A2C70AE416919B0F1A01C
    670       F31CEBD74D17562320B816C9E9756C9D6AC4B7A57CDE9BE662DC6C191EC4D371
    671       035E64D52129BD7E3D2EB90E794575A8AE06A263EB6D0C99584C62667C6F9A43
    672       3A9E83C616E28755D5D87F4C8EC3E7E438122487E72939FCCECBE11B2887D769
    673       396CB7D7305EDF209BF42B3D5569FE747989F4CC3A64E6D4E165B6B8B272EB30
    674       EC3F256C8E1A7ED5388F490C1F903C3DE8D5E325864F296DE8275F131754B318
    675       7B74A6F35479FE72FAA25BFA6E1217BEEA23C520E3428C9C5A86E1934B306014
    676       99FF9FBF44AF2EE9A9FD7A677CA3EE189C344EDACDE08B8C955D3A3C0F23F961
    677       EADAF1B93789D742EBFB826BC04DA20DCE1B70D4F7285BA7A2EBB44E1BB6A12D
    678       7F2FCFA63A968A6B4BA5A710B7AD0D4B6BF5860DAF67E93543B104B75FC082CF
    679       5E533CF3713C5FB48E48C986C0B74A96279D79AE0F429E173B2731DFD06BB47B
    680       53D05721DF6087D7672E5B37857956C36B9218CF5DDFB5D9E6E780DB7753604B
    681       DDB62A5EB854C98B8C9FB6F18BCD419DF2A6E118509B6F1E939D9E802737CEE3
    682       76B0B74EA20C651F460422E5592CCACBCB2193C944555656A6B44DDB5286B261
    683       A7F6233F3F9FFD866DFDEFFE368AD651F646421139FF572BD55386B2578EED42
    684       5E5E1EB956D42889B62F2D2DC5F6907C0CD891C77CF2F75386B2C1BE2EC8CECE
    685       4615FBFDD946151515C1E5E71C74DF984BAE8385B8F22897D9E0F65386B2673D
    686       D6432A95927B8D8A0651BFAEA159F8C4299BED5B7F210BDD2539AC9E6B43EB29
    687       1BE0BA062F5EBC60FB3851DF6D1DB21B96DC3A15D78632943DFC930D9E3F7FDE
    688       B09F8AF6CD606B36ABFFF3AA2CB64D95919181CCCC4C141414B07D94F5D8BC04
    689       2929292C9FB44FC9C9C94CB4AEEBFA17700E4C63EB94F5DB658B335E2E484F4F
    690       47525212635D9D2DD97A4E4E0EB3EDEA3003071C67E2D0A605D8B7E607B64DD7
    691       AF9CF268D87FD66B0B9E3E7DCAD81DF633919090C0F2417D50DDBD760977AE5D
    692       648A0C0DC42DA2E4C4A78C39E0644E7817C4C6C63276B3F534C4C5C5B17C50A5
    693       A5A5C143321F7BEDBF239AC196749BD6EF779C85338736B3F5989818C63A2F99
    694       84C4C444E63F353595F585C6A34A2F5FBE646D2943D9B53F8E635C5656166E85
    695       9CC4059FCDF0FF69A94AD13CD1B1A00C65B7ACFC0EC18127184FED6A236A8332
    696       948D0C3DA7B773AD25ACCD86E824CA50B667BF8FDFB8E282FDC057E469CDE2B3
    697       4D0A39C73451A15449734DF4C1E7E33C2588739520D2D51A71DBA9E6225242E4
    698       301991D62310B9A85E710E234479CA2125AE5E7191C0FDE07A45FAD52BD89548
    699       02A9269E1FA712EB0A99A775139EE682F68FF1D42FE79BC7CAFC248C65BCB506
    700       9EEF5F1AD7D8272229C909E349BD282FE657E19BB112059FA28617F1CBF52B8E
    701       8C855A9EF89509FBABF04BD9386B153CF149C75ECA8B57296609E1242358EEE9
    702       BA18AF52C2BE28C4F154745D57FD5AC79EB004D91BB53B676F74E68C9DA1F494
    703       AD61ED895586F2E32B0D9FFB591B7A1CB331FC2F4D9F2710B6F0EC6AA3EF4EDB
    704       19061116012B0DE147747485210E2F372CF1586AA8963F6B675847FCAE22EC4D
    705       010BEF65444B0D5B09FC29F1C4EFF193AB0C4F1FB7313CEDBFD2F02C9F3D6445
    706       ECCDF9B4D53EDEF71E3C2C8CA88D1DC4AF9CF89513561E60632827AC9CB0723E
    707       EBB1A43FC6C7CB438DE38131B1481EF504EF13763D61415870FDF517C4CCB107
    708       17F7C7B858F939C282B018F118C7499E13B565F72FEC9F4FD828058B610F41FD
    709       D608D8DAC3CBFA67792FED97E9B5A45FA6E762834CB7450699071618447697A3
    710       F5A818C83976C87D50BF357CBF2EBBADDBFD3B15672626A3727C2264E312201B
    711       1B0F198B39A6D12F65074781FA4DE2D8A356FA61A66908314D06262402260900
    712       CB559C383BF01E40E6D50EAEBF4716F53E3F3105328D6C743D6B7407DBE918FA
    713       2E374CA0B9F25DD0FBE2F824C8B4644FEADD809EEF3243BD4D56867A5E4BEBE7
    714       3661AB8C9F36B0B584BD49D85B84BD45D83B83A2D08AB07FA06D07DD69FAF11B
    715       61AB9AF87D802CC28EA77E07DC452B75F39FB037052C8D398DB0C3895F1AF77B
    716       AA5832567A84FD6FC26E1DF6A881E5FA7B99A8ADB69F0B16C80A3E8E8D8EFB31
    717       2E3A6E5EA1ACE023AD39E4FD6F5646B6D9C3F38FA3021D2ED405AEB950F7F0C2
    718       E37BD919D9DFE723EF4FAAB83424B7CACBCD1BFEF45AC2F94B9BAF54B94FF5C6
    719       5E93834C1ED37C7069CB95AAA7D79E9D23F74EC39291A094C3AC6C6987D40769
    720       AEE107AE17F898FBC175821BBC671EC1E955E770DAE61CBCCD8EB03A9FD97E88
    721       38783D3FEDE1F33D59B9599F34FCBEC0FD5417DA769FA93B0EFCC71357F74420
    722       2F351F3595354CB9297908DD1DCEF6D13627579C42D2BDC44D8A0FD8DE7BFC73
    723       CC718FE93ED837D11D5749BB9AAA1A764D2FCA2C66A2A55A568320C7F3D83AD8
    724       053B47BAE0FEF9A8E394E5F35E3F1C464E522E6BFFE0EC23F892780FCFF1C71D
    725       BFBBB879E81A7CCC3D483F7660F7D86DB81F24E0A779E3E4F233A8AAA8464976
    726       298E581C23B93B809DA376129F9BF0D3F0CDB8EB7F0B4F821F91DCB8233AF09E
    727       80F7C18965842FAB42595E1989E510D6F55C89B55DADB0A9FF5AEC2031477A5F
    728       C7FDD351649F5B13DE73BA2F3C67F8223356CAE28F3E750BBBC6389358D713BF
    729       D7F130F03EBC67B9333BBBC66C558EFF72CC71B7291ED8DCDF19FE8B3C515E58
    730       C66C94E597A2BCA094AD57903AEF59AE70EA618DEDC336E181227F740C92A393
    731       377A9BEF87FDA7F3B1BAD38F383C771F926EC4A324A79829F17A1C7CE7B8B27D
    732       B48D97D95E24DD7DB69E1B7F698EB47DE29DF8AD17369CC8DE3AC81EB61D2DE1
    733       D4D38AE4CC91C9A98715ABDB3AD81E172427B312EF3EDD929597F577FE1C2411
    734       FF21BFB060C0E3CBD1C703AC3C2BD6F75E0EDB0E16449658FFE50A042C3D54FE
    735       E4CAFD630585058625A83F7F88950AC8DFCFCA904EB9ED1F71C37BD69E1A6FF3
    736       BD357702AE5DCB7A913599EED3F63824996B97F4E4D974A269E4A953E5711F90
    737       5F89E6E8185174790D262616354BE39F15C12DA702FF26EBCD11B5E1FEBBE78B
    738       1BD7934B94D635F24FF3317CB72746BAFB93ED428C39158241CB6C31D8662D8C
    739       2F466AE44DE3736164361B83AC6C30FE461C0CC64F84D1EC793032B7C4D08D3B
    740       3031A140333FCB028396DB615C4814FA0C198A612E7B31E16E324CE372B4F34F
    741       F9A5AB601A938DAFEDD6A1CFE0C1309C3113A38F0513FF85E27C12C95972294C
    742       49FF194FE2A7F9328DCDC198808BACAEEFC8D1187BF92EDCF32A9BB0E3AFC762
    743       E4C1A33009BD8FFE53A6B17C8DBB720F43253BD8BED14702A13F702046FA07C3
    744       3DBF4A99277EC69E098581B1090CC618A3EFE831CCA7F1A55BE837690AA91FC7
    745       EA8C66CE81C9ED44B8E7CA604AFBCAD7B3428C23BE471D39076312A329C9338B
    746       EBD633D6EFD1019730E15E0AC95F31EBBF456A49533D2F85457A39599635D6A5
    747       29EAA8C8FA9CD462F8E7C9F0FF5154DA7B
     567      4C7A1E0000001000000010000000571700000000000078DAED9C07585457DAC7
     568      D9F8ED7E59773759B3BA6BA2EE9AB51B3551516CB11744655D4DD498A8A86017
     569      2B82A8283A7663C542916241EC8AA2518280051B7618449A8232F40E4319F8EF
     570      3967EE853B973B0D62491E8FCFDF7BEFB9E7F7BEEF79CFB975863131F9450A6A
     571      A82A5E266375FA0ADFA6367C6DFDF36D7F737C55BD7669B6ABCE1BAA9AFAAF61
     572      FCB5EDFF6BE64D6A79FCBC5B05B58C0DDCBFDAF235B501D1BFDAF2C6DA80967F
     573      B5E50DB5F13AFCBFADFCBFADF9F72B2907979983EA80E3101C583A183E0E83E0
     574      6D3F10DE4B06C0CBAE3F3C17F783E7A2BED8BFB00F3C16F486C7FCAFE13EAF17
     575      DC6C7BC26D6E0FC65E39B012577C9C10E4B30241DECB11E4B51C3F7B2D43A0A7
     576      2302F7532DC5650F075C722772B3C74F6E4BF093AB1D5CE774677EF9525151C1
     577      545E5E4EA4824A5506555919CACA4A51565A8252AA92629494285152ACC4BED9
     578      66F02131D3B27EFD7A4C983001DEDEDE2857E96009574CA52CC2DE595D497F07
     579      329F93264D828B8B0B468F1ECDD865CB9661E9D2A5B0B3B3C3C2850B616B6B8B
     580      59B36662DAB4699832650A94CA42EC99D985E5A982C4BB65CB168C1A350A870E
     581      1D52FB24AA8A97F75BC4FC52565954803DD34D598ED57D55C7AC8E57075BA466
     582      8B0A0BB07B5A67363E940D0808808C5C57AE040555CB939A2D14B0F94C2E361D
     583      B19F8C2DCD93B3B333AE5FBF8E6DDBB63176D93247AEFF8BB170C102CC9D3B17
     584      3367D2FEDB90FE4F4661411E76597F45E6456F16B397972756AE5C8953A74E6A
     585      E458C9F92DE2FC1616E433B6203F173BA77CC9E6933ADE12415F456C6175B620
     586      3F073B2777607391C67BE54A1076EEDC899F7F0ED4C871159B57C5E6E5209F68
     587      87557B368FA9DFE5CB97B3FED379447D3A3A3AC2C1C1018B172FC68205F349FF
     588      E790FECF808D8D0D264F9E8CBCDC6C6C9FF4055CC9314063DEBDDB85B1EE6E6E
     589      1A39AE8A3797F9CCCFCB666C5E6E16B64D6C4B8E816E2CDE62719E74B13959C8
     590      CDC9C4D6096DD83140E7319D8B743ED139E162D3898D2D1D1F9A639A27DAD7ED
     591      56ED58CCDB26B4C5D61FDAE0C7EF5BE3B5DF09D4EC3E8571AB4C563119614383
     592      134A8F0DAD9C0136101212A297D56183D5D7C246657D0D6D68D41B6A43781F2A
     593      DEA7CB4625B36A95641FB4D91072B48878AD36841CDDA64558AFCB86D09F016C
     594      351BFC7D3FCF1A713C68F8AFE171F4C69E131A360C0115971BA3DB366D7A0B42
     595      69B3A36B7FCB96F72194B88DB67A7169D3E61178F16D85EB869476ED22209631
     596      3C2D5F7E19055EC6B29D3A3D835886DAE8D2250EBC7846BCADAD74EBF61CBCC4
     597      6DB5D5F3A5478F44F0D2D5A636BC21368CCD754DCA9BF2F3469FF86BF79E42EB
     598      BB2B83792DEFBFA47899D4BB17C1FB1B5D3C6575F2221B429E6785329497628D
     599      E16BEBDFE0FE4BBDEF3226FF7AFC6B9D7BD5DF2D1A3B1FB5BD9B34EE38A81D5F
     600      9B7B66B18DB7526EC806E2EA9AFE78EA3117F23D3310E132952DFD97F6C25987
     601      9ED0CDF647EC017BE43FBB09953297BE106052156422571E829BBB26C0775E67
     602      491BD76503F0EA922B6B5BF63814A57EEB51BE7E2CCA65DFA0F8F06A28EF93E7
     603      E25C051E1F71C4C1596DA1C90E627E295B1AEC0B380E00023D81A27CE6BF22F3
     604      154A5DE723FF82078A739211B8790CF659B7ACB4717D4D3FE43CBB86D247E43E
     605      6F695F609FAD3AF6DBFE28DF618DD2B0D3A828CC45A1FDD7C8BCE18F9777CF61
     606      FB84CF2BF9476B86B3FE969238B1A80720B3044E6D42C59CF6504E6F85DC9D33
     607      98BDD435DF206AAD158A7333E0FCEDBF2AF97BB43DCD93F370607E4760763B94
     608      CF6C8D629B6628D8698372E2BB20E206C24636C4E5EF5A91A6E55863D1B88A77
     609      1EC2F862C7C12899D10645362D906BD514B9EB46B3FA9C603FDC18DF1C178637
     610      C0C5B1CD19BFD2FCB32A7EE52096BB8CBD0B9162F5399E8F6F8298719F22F3D8
     611      46C6DFB2FC049786D7C3B9E17FC3CD65A35194934152FC69257F7E690F64CB43
     612      596EE2C67F86C831FFC0E3D17FC3D3152390E4BB0E8194B5F804172CFE8AF84B
     613      BE88BDFD13C6F4FA4B257FC1DE1472D7D928C95120EED006DC1CF9378458D643
     614      ACEF06E63F60683DC6467AAE467E86026E8B4661A8E95F34E680FFFC2F10737C
     615      158AB315480CF445B8D318848E6B8690B1FFC6ED9563107FF908F2D21538B76B
     616      09CC3B7E2839077D66B643C88671787EFB3C94648C2ACA554C85A4BF34664F87
     617      B118A285E5CB0EEB36584B72BD616403ACB66802A7219F62E9C07F605CAF8FAA
     618      C5FC2BBD3FA8EDB90CBFC039AEFAE73746DEAB68C4C15FABAA7FBE68D0758767
     619      752E755DB7F4B17A782D6D0D979835EEF3BFDAB095FDAF212B7DFF60386BECE7
     620      76EFCB6B2C9D5DA755E6785AB82B4C5C3B574AB84F6BE1DB093821AFD7868861
     621      3188E211D6E9E2A57C55F6C940FF06F5F94D8C89389F3AE297CA4F351B5A8A54
     622      8EC5F340A77FCE97AE39A08F978A5718CFBB30266FE91D80DEE73803BFB75363
     623      3E282848EF75D0C0EF0D41274FD78532EC9D060C2D46FB17C5F1DEFF6BF65F43
     624      FEFDBDC43B711A836EBDE77FDBFCFBF2B64AFC76FBE0679BE6E3E99AE9885C3E
     625      19FAEAC5257ADD9CE0F433FB9113781C8F178F85BE7A7121B683538EEC42E685
     626      83B8376328F4D58B0BB11DFCCA6733D24FBBE1F6C4DED0572F2EC476F08B7DCE
     627      A0BEAE7FD309FAEAC5E5D6AC11C18AC3DB417D055BB482BE7A71B9F44D97E044
     628      571912DDD622A06F13E8AB1717623B247AED6C24EC76C2B11E0DA1AF5E5C88ED
     629      603ABE64BCE16A5A1FFAEAC585D80E7E62370EB19B176053BB8FA1AFBEDAE387
     630      69FDE007F346E2D986B958D9EA4FD0572F2EC476B0ACED4758DEF24F706C5117
     631      FAEADF8DAB1DDE0999981C22F2253ADA948C9813913FD12D6EE9A4AEF765ED74
     632      F0FDEAD63D15DAA74FA4C2CA2AB378D6ACFC0A2BAB8CE2DEBD231475EB9E0CA5
     633      FBB5F3079BD6AD7B3CF4DB6F93F2C78F4FC49831F195FAEEBB171839323EFF8F
     634      7F3C164ADB49F39E4EDDBB87275B583CC6A041F7AAC9DCFC213A76BC964CDB49
     635      F36EFE161611C56666C1A0EAD8F1325AB53A83C68D7DF1F7BF7BE3934F3CD0AC
     636      D9A962DA4E9ADF7D8BF8A8E8D0E12734697292B43F8C7AF50E69A851A39315B4
     637      9D34BFCDDFD4F45A71FDFAFEA4ED5949D5AF7FA698B693E6373A356C783AB97E
     638      FD50D236585275EBFA26D376D2BCAC699D3A1B431B3408CEFFE4937BA47DB886
     639      3EFAE8E7FC0F3ED8104ADB49F3CE440EFD3EF8604568DDBA7E8A8F3FBE535CAF
     640      5E64055DD26D5A4FF7D376DA793B226B32CFACC87CB322F3CEEA16B77452D7DB
     641      9968E3DFEBD72D52A6125D146CF3CF5952759B456C5F615BA12DBAE4B6A93613
     642      35E5DA36E5F63795F225B0BD59C21FFDAFAF80BFC8B593E235E215FB17F9B928
     643      5157E94BEC5B172FCE89444C53F5F0908A53AA4F629ECBB5860F7E4C04FD9FAA
     644      83DF2C7AD6DE2C184BC93EBD97764545450D0F0F0FF7168BD61BC2D3B652EF40
     645      683D372E1F12FD419FFF2B57AE44528E2E85FE49694D666B8C490793A5BAECF0
     646      71F07E0573A7B5C91C12D372A2FF9A3C31E968E22065472FBF8AD30AA251CC8E
     647      BDD08EC1BCD0CE6893C7BC9D37C6D734FEDAE4AF76E357ABF953DBF9FBBA8F9F
     648      5FC7F5F7F870729FFF8808228518C653D6AF5BCDFD1F43EDE2D7E4F5BDBF7DDD
     649      FEF5C5F11AFCB3FC9371240F69C7BF27DB7F30CE7FB5F18F216A5483795423FF
     650      AFE17ED2A8F17FAF77337FB598BF2135397EDEE2F1FBB6CF1F6FFBFC592DFFE2
     651      73490DAF5FBFD8B9ECFDF5FBFDF5F7BDFFF7E78F5FF2FCF186BE0B64FC778774
     652      7F17B5DADF5CC884DFD11472DC3ABF5F26F1FD5199747DB518653A7EBB4666C0
     653      DF9DC874F817F641DF52AB7FE152CBDF0BC924BEFB2CE547A6E5FB2C127FFFA3
     654      D5BF369E5F1AE25F74CC4AF7C508FFE2588CF12F158BB6F96B847FC9A26BFC24
     655      FE7EEBB7FADD41233EC634FAFB827A7963FEFE50E8935F3762CC741E2B7A8EBF
     656      6AFE75CD4189E34FAF7F3DC79F51FEB5CC7F83FC1B73FC19E95FEB3168A07F9D
     657      7C6DFCBFEEE3FF753D33EBDAFE35F03C53D3F70D42BEB6EF1D7EA9713046AB2A
     658      7FDBA36636786E1567C3503BE2F6424E9F0DA9B66F9B17F6C998FEBFA9E7F610
     659      FABB28BF3145454555AAA63C9DFB86F2627F425E68432A2EBE2D2F7EBFA17562
     660      5FFCBAA175EF0A2FD557295E5FFF857915E75D5B3B43C65A5B3B43E75A6DE7E4
     661      EB92F87CD0BC71E23F896C894E130573F2229AA8EF5CF245B324E776CD934096
     662      183E38053F6ECCC1E4EFD3D0BAA9BAAE7D8BA4848E6D5EF69762DBFE3B299888
     663      B44DC4D40969B81F5EC2EE9114C92A2CB7CF42FB964968F5AF44D0361D5A254D
     664      11B2C4E70E5ADFF98B9770DD9D8BC2820A949555A0A8A802C5C51550A9800BE7
     665      0A31A05732483F988DAF5AABE320DB1D68CC2DFF99C8F6E9136DD7A24922ED4F
     666      02C77BB5F93C89ED4B4F53E97DE6A37CB34689A42F4974D981700F5A3555DBEE
     667      D5E515B2B3CA613D291D5F7725EBD9E5ACEDF62D3988785CC2D679D1F664E944
     668      97342F7439A84F32E3E7CEC880793F05E369DEF7EECA853CA25483E7C4F896FF
     669      526F0FEA6D08FF422827529740FB34624609663A9721BF0058BB4F85694EEA75
     670      CB59A5F00B28475C62055BA7EAFF6DBE90F7A2B9183A5989075174DC80972915
     671      884D54AFCBE32A90915381D252E05EA4DA46EF11B92466C677A039A4E3D97348
     672      367E58528A3D47543870568583FE2A789C50E1F039157CCEA8E0795205FB2D65
     673      8CEF689A4AFA9598A0317F9ABF4262720592D32AF02A555A29E915E8FBDF3C36
     674      47CDBEAA9AC724868F489E1EB46BF30AFD46E757F653A811334B598C6D9AD179
     675      AA397F79B56F99B883C485AF3A29D0D33C1B03C614A0DFA83C741F48E6FF17AF
     676      D0AE796242970E49DFE83A06470E55B4346D9FB4B879E317C1243F4C2D9ABCF0
     677      22F15A1B7C5F7015B841B4C6790D0EF91C62EB54749DD619C256B615EE15D8D4
     678      C552F16DA94C38F1DB86B0B4D6A46F3F354BAF19DC12FC7E110B217B957BE6E3
     679      79A1681D91860D916FADAC4046F37C1FC4BC20765E52BE615265F786A8AF62BE
     680      D28EA0CF7CB66E88F3AC83D727299EBFBE1BB22DCC01BFEF86C896AE6D6DBC78
     681      A99597183F43E3979A8346E54DCF31A033DF022635311A4FAE9FC3AD002FA344
     682      19CA3E0C3D83F86791282C2C8452A99454414181C6366D4B19CA069FD883CCCC
     683      4CF61BB6EADFFDAD12ADA3ECF5E81C72FE2FD5A8A70C652F1FD98E8C8C0C72AD
     684      28D3106D9F9F9F8F2D8199E8BE3583F914EEA70C65037C362235351525ECF767
     685      AB949393838D3FA5A1D5DA74721DCCC6E547E9CC06BF9F32943DEDBE1A0A8582
     686      DC6B14558AFA75094A41A395A96CDFEAF32968254B63F57C1B5A4F593F97E578
     687      F9F225DBC78BFAAEBF2CB572C9AF53F16D2843D9033FDAE1C58B1795FBA968DF
     688      4C37A5B2FABF2C4961DB54494949484E4E46565616DB4759F7F573111F1FCFF2
     689      49FB141717C744EB5AAC7E09E733CFD93A650F6FB7C729CF8D484C4C446C6C2C
     690      635D9C6DD87A5A5A1AB3EDB26C3CF63A4DC4FE7533B17BF90F6C9BAE5F3EE15E
     691      B9FFB4E7063C7DFA94B15B1D27223A3A9AE583FAA0BA73F5226E5FBDC0141674
     692      063789E2629E3266EF4A2BC26F4464642463D72F1A0BB95CCEF241F5FCF973B8
     693      CB666097E37744E3D9926ED3FA3D4E93706AFF7AB61E1111C158E7B923111313
     694      C3FC272424B0BED078B4E9D5AB57AC2D6528BB62FA50C6A5A4A4E066E0719CF7
     695      5E0FDF1FE76915CD131D0BCA5076C3E2EF1070E618E3A95D43446D5086B26141
     696      674DB6ADB0C1A209BD8D126528DBB6CB676F5DF280C3102AECA47E09D96A859C
     697      63AA295BA1A1A9161D21E4E51E32C85D6408735904F916AAA90893112D1B85B0
     698      45FD11365B2DF9B2FE923CE5102F574B1E06DC0F502BECB05A012E443228F4F1
     699      C238355817283D1655E3692E68FF184FFDF2BE05ACF2B08CB18C5FA48717FA57
     700      C8ABFA44A42039613CA997E4A5FC72BE192BE3F8781DBC845FBE5F7232163A79
     701      E25729EE2FE797B2F2455A78E2938EBD4210AF46CC32C2C9FAB3DCD375295EAB
     702      C47DE1C4F35474DD58FD52C79EB8F83B766B70D6B1DBA9530E668A13F666E5C7
     703      9698A98E2E367B71789199FB113BB3FFD3F7790261B34F2FEDF6DD4907337FC2
     704      C26FB1190E131D5A6886030BCCF2DCE799E9E44F3B985510BF4B087B43C4C26B
     705      3ED13CB33A227F1A3CF17BF4F812B39347EDCC4EFA2E363B2D64F7DB127B533E
     706      AFB35BF0BD0777EB6ED4C656E25745FCAA08ABF2B33353115645589590759FDB
     707      15C3A25441E651C0E048C40D7C820F09BB9AB0202CF8FEFA8A62E6D97D73BA62
     708      68A4EA2C614158F47F8CA324CF3186B27B6675CD246C38C7A2EF4350BF6522B6
     709      FCC0FCAE295EF3BA247BCEED92EC31C734D975B669F2DE99A661AD54A83B3002
     710      2A9EED7D1FD46F99D0EFC61D8B1AFC2701A746C4A178580C9443A3A11C120525
     711      8B39A2CA2F657B8583FA8DE5D943B61D832D9F23D0320E181E035844032C5772
     712      69B6C75D80CCABAD7C7F0FCEEE706E443C947AD97B6AB6DB6D6CA163E8B3C02C
     713      9AE6CA6766870BC362A134903D6E721D263EF3CD4CD6D99A9978CE53CF6DC296
     714      983FAD64CB097B83B037097B93B0B77B86A30E617F47DBF6BC5DFDE337C29654
     715      F3FB0029841D46FD76BF833ABAE63F616F88581AF373C2F6237E69DC1F6863C9
     716      589910F6F784DDD4F75125CBF7F712517D433F17CC52667D16794F3E5D7E4F3E
     717      2D5B99F5A9C11C32FE9C92943AE1E1B9C7E167969DAF38B3FC7CC5C3F38FEFA6
     718      26A57E9F898C3F69E39E23AE4E467A46BFA757A3CF5D5C7FB9C46D8C177659EC
     719      63721FEB8D8B1B2E973CBDFAEC2CB977EA1B87688D1CA6A42A1A273C78EE12B2
     720      F75A96B7D561B80C7785D7C48338B9E42C4EDA9D85D78483ACCE7BF26184EEBB
     721      96F9FCE18B9D29E9298D2A7F5FE07EC246DA76B7A51BF6FED703577686222321
     722      1365C5654CE9F11908DA11C2F6D136C7179E40ECDD9875DC076C1F3CFE29E2A8
     723      FB386FEC1EE1862BA45D594919BBA6E724E732D152AA2C83BFD3396CEAB511DB
     724      066CC4FD73E147292BE43D7F3880B4D874D6FEC1E947F021F11E98E28BDB87EF
     725      E0C6FEABF0B67227FDD88A1D4336E3BEBF881FEB85E30B4EA1A4A81479A9F938
     726      687D84E46E2FB60DDC467CAEC38FFDD6E38EEF4D3C09784472E3867B67EE8A78
     727      6F1C9B4FF882121464149058F66355DBC558D1C216EBBAAEC056127398D735DC
     728      3F194EF6B956E33DC6F9C063BC0F9223152CFE7B276E62FB606712EB6AE2F71A
     729      1E9EB90FAF496ECCCEF6C19B34E3BF1471D475B43BD6777586EF6C0F14661730
     730      1B0599F928CCCA67EB45A4CE6B920B56B659842D7DD7E101973F3A0671F7E2D6
     731      7A59ED81E3E733B0B4E9741C98BA1BB1D7A3909796CB14734D0E9F292E6C1F6D
     732      E339611762EF3C5BCD8FBF224DD130E676D4A6F36B8EA56EEAE908FB263658D9
     733      D696E4CC8969651B5B56B7A99723CECB8EA7C4DC79BA212523E51FC2394822FE
     734      5D667656F7C797EE1DF5B3F5285ADD6101EC1B5B13D960F5970BE1376F7FE193
     735      CBF78F64656799E5417DFE902A45507D9892A4187DCB37F4BAD7A49D655E56BB
     736      CA6EFB5DBD9AF2326514DD67E8714832D720F6C9B3714463C953A7D6E3DE2FB3
     737      1835D111A27B856518119353230D7B9603D7B422FC87ACD744D486DB6F9ECFAD
     738      5A8FCBD358D7CB3FCD44BF1D1E18E0E64BB6B331F844207ACEB7472FBB1530BF
     739      10A697B78C4A47B70993D1D3D60EC3AECB613A6C04BA4D9E866E5636E8B3762B
     740      464467E9E72759A3E702070C0D0C47A7DE7DD077E32E0CBF13074B799A61FE29
     741      3F6F092C2352F1B5C32A74EAD50B66E32762D09100E23F5B9A8F25398BCB8725
     742      E93FE349FC345F96916918EC7781D5751E3008432EDD815B46713576D8B5480C
     743      D877081641F7D175F45896AFA197EFA28F6C2BDB37E8E01974ECD103037C03E0
     744      9659A2C9133F434E05C1D4DC02A683CDD179D060E6D3FCE24D7419399AD40F65
     745      75DD264E81C5AD18B8A52B6149FB2AD4B36C0C25BE071E3C0B7312A325C9338B
     746      EBE633D6EF417E1731FC6E3CC95F2EEBBF75425E75BDC887756221591654D53D
     747      E7EAA8C8FA94845CF86628DFFF1E92BAFC9EE8AF447FE6B6E975E5FFB5B4A5FB
     748      1A13099F851670EF75A3B9EDE682CFAA5389BEE5EA5B726D687D12117F1FE343
     749      24272AE762E0F9E544D7899E70EDAE705C6FA2C902FF8FE80F70704C0F013F9D
     750      3ED271DCC79C7D67517F683F4B898611A511CD16F005444AEE6FF9BFE0EA6CC4
     751      3F77C9D5EFA59752FA4825E0D7723FEA42EBDB7275B3443CFDBBFC12FAE8C7E5
     752      E6AE287E6B6EBD11178F37C7F1D7D05DF42796B8F5795CBCAD39E6677A7B4014
     753      C5B5DFC1E5E02097533AEE8B89E6737C27222FA2F6DCD28BEB4323C13CA17F63
     754      7C8168F56F61E2FF0F303E1932
    748755    }
    749756  end
    750757  object ScaleDPI1: TScaleDPI
    751758    AutoDetect = False
    752     Left = 372
    753     Top = 120
     759    Left = 388
     760    Top = 125
    754761  end
    755762  object ThemeManager: TThemeManager
    756     Left = 362
    757     Top = 209
     763    Left = 377
     764    Top = 218
    758765  end
    759766  object AboutDialog: TAboutDialog
     
    761768    ThemeManager = ThemeManager
    762769    ApplicationInfo = ApplicationInfo
    763     Left = 362
    764     Top = 288
     770    Left = 377
     771    Top = 300
    765772  end
    766773end
Note: See TracChangeset for help on using the changeset viewer.