
 Hiew release 7.47                                   Dedicated to my wife...
 http://www.hiew.ru

 Release notes: version 7.40 

	New  engines are for 64bits disassmbler and assembler with x86-64
commands full support. Added PE32+ format support. Crypt grow up 64bit too. 

**VERY IMPORTANT**: Command MUL and DIV are changed ! 
(See section 'Crypt' for details)
For migrate previous crypt-program are *attentively* examine use the commands
DIV/MUL and replace  first line to '[HiewCrypt 6.70]'. 

 Release notes: version 7.00 

        After  a  considerable  delay  version 7.00 of Hiew has been released. 
	There are many new features:
- Hiew does not support DOS or OS/2 operating systems any longer. 
- Hiew now works with files and blocks of any size, so it can be used with  all
 physical and logical drives in the system (provided user has sufficient access
rights of course).
- Keyboard macros
- Progress bar 
- Fixups highlighting for PE and MZ
- Following offset based jumps/calls with one touch 
  (for example, when Hiew encounters a  call d,[12345678]  instruction, 
  it checks if the value at the offset of 12345678 looks like VA, 
  and assigns this call a number:  call d,[12345678]  ;.87654321  ---  (1) )
- New algorithm for reading the Import Table. 
- Search speed has been slightly  (~5-7%) increased.

**VERY IMPORTANT**:  Assembler  search  wildcards have been changed. They are
unified with the File wildcards now (see 'String Wildcards')

 Release notes: version 6.70 

        Crypt is 32-bit now.  Crypt programs (*.cry) are written in text format
now. Old binary format from version 5.01 will be supported by current version
(6.7x) only!  Tho new operators were added: AND, OR.  Programs can be up to 32
lines long.  Lines starting with ';' treated as comments.

 Release notes: version 6.60 

        Support for little-endian ELF executables 
        EDUMP - common dumper for NE/LX/LE/PE/ELF files

 Release notes: versions 6.29/6.30 

        32-bit console version for Windows.
        PEDUMP.EXE - dumper for PE files.
        All utilities have versions compiled for DOS, OS/2, and Win32

 Release notes: version 6.15 

        Starting with this release HIEW is SHAREWARE. See register.txt for
details.

 Release notes: version 6.00 

New features in version 6.00:

- "crypt" has been removed (it will be a separate project)
- Switching between files specified in the command line moved to
CtrlF11/CtrlF12.
- Alt- functions moved to Alt-Fn (except for Alt-P, Alt-H, Alt-=). See hiew.hlp
for details.
- History has been added for string input (PgDn) and file section
(press Backspace for menu, Tab to select next file in history).
- "ActionAfterWriteSavefile" option removed from the ini-file.
- "NextFileSaveOffset" option (preserve current offset for next file)
replaced by "NextFileSaveOffset" option (preserve current state for next file)

 Contents 

  About HIEW
  Assembler mode
  Basing
  Block operations
  Status bar                                                  
  Keys                                                          
  Bookmarks
  Jumps (call/jmp) in disassembler mode
  String wildcards                                         
  Search and replace                                          
  Crypt
  Local and Global offsets                                      
  Keyboard macros                                               
  Text string extraction					 
  INI file
  SAV file
  XLT file structure
  Command line                                                 
  History                                                        (Always new)

 About HIEW 

Basically  HIEW is a hex viewer for those who need to change some bytes in the
code (usually 7xh  to 0EBh). Hiew can view files of unlimited length in text,
hex, and disassembler modes.

    		Features:
* displaying files of any length in text, hex, and decode modes
* view, edit, search/replace for unicode
* x86-64 disassembler & assembler
* physical & logical drive view & edit
* support for NE, LE, LX, PE, PE32+ and little-endian ELF executable formats
* support for Netware Loadable Modules like NLM, DSK, LAN,...
* following direct call/jmp instructions in any executable file with one touch
* built-in simple 64bit decrypt/crypt system
* built-in powerful 64bit calculator
* operations with blocks of arbitrary length: read, write, fill, copy, move,
  insert, delete, crypt
* multifile search and replace
* editing the NewExecutable files header
* keyboard macros
* unicode support
* Hiew Extrenal Module (HEM) support

 Assembler mode 

	For  true  assemblers! 

All  numbers  are  hexadecimal  by  default,  but the suffix  "t"  changes  to
decimal   (e.g.   mov  al,10t). Possible use string as immed operand (e.g. mov
eax,"sign")   Constant    arithmetics   is    supported    (i.e.    mov    bx,
[123+23-46h]   produces  same results as  mov bx,[100h]).   Error messages are
very    brief   (invalid    command,    syntax    error,   invalid    operand,
missing/invalid size).

	Three non-standart commands exists:
jmps  = jmp short 
jmpf  = jmp far  [mem 16:16/32/64] 
callf = call far [mem 16:16/32/64] 

        Commands  can  be assembled different way. Since version 7.40 appeared
the possibility of the choice: F4 when entering the assembler command switches
to  choose  from  available variants or put the command of the minimum length.
Under included  options 'nop' will offers the different length from 1-9 bytes.


 Basing 

        Base is a constant  that is added  to all offset and jump  addresses.
If current offset is YY, and you want it to be XX, you can enter "*XX" as a
base (note the asterisks!). Pressing Ctrl-F5/Ctrl-F5 produces same result.


 Block operations 

        Block operations work only  in "Hex" and "Decode" modes.  You  can mark
blocks without switching to Edit. Marked block can be  written to a file by
pressing F2 (PutBlk).

To append the block to the end of file, type '*' character.  You can  load a
block from another file by pressing Ctrl-F2 (GetBlk).  Block will be loaded at
the current offset.

Since version 6.10, if nothing is marked in the current file, history is
searched for the latest file where the block is marked, and this block is used.


 Status Bar 


 xx%   Filename.ext           .dFRO -------- xxx PE xxxxxxxxHiew 7.00 (c) SEN

                     
 percentage                                current  progress bar will
 indicator                                 offset      appear here
 (when BAR=P                             V
 in HIEW.INI)                            neexecutable type
                 V                        
             file name                    
                                        > * Text mode: index of the
                                              first column
 kbmacro state:       <ٳ              * DeCode mode: operands and
 R - recording                                 addresses width;
 0..8 - replay                                 'a' means it was
                                               recognized automatically
 search direction     <ٳ                for executable
                                                                
 search area:         <ٳ     > status of all bookmarks
 F - whole file                           '-'    free
 B - block                                '1..8' occupied
 A - list from the command line           '*'    current
                                          
 file state:          <ٳ
 R - opened in Read mode          
 W - opened in Write mode         
 U - modified                     
                                  
 O - overwrite block  <
 I - insert block 


 Keys 

All keys described in the HIEW7.HLP help file (press F1 to open). You may may
modify HIEW7.HLP, but modified version should keep "[HiewHelp 7.00]" in the
first line.  Semicolon
';' denotes a comment.  F1 calls corresponding section (from [xxxx] to [yyyy]).

HIEW7.HLP must end with section called [End].

Since version 7.00 it is possible to create section links with:
+[SectionName]


 Bookmarks 

Bookmarks allows you to save the current screen and restore it later.  Press
'+' to save state of the current screen. Up to eight screens can be saved, and
each saved screen is assigned an index 1..8. To restore a screen press one of
Alt-1...Alt-8 according to the screen index. Bookmarks are kept separately for
each mode (Text/Hex/Decode).


 Jumps (call/jmp) in disassembler mode 

        Jumps are more configurable now. They can be specified in the jumpTable
array of HIEW.INI. It is a string (in C since) of digits and letters. First
character ('0' in HIEW 4, 'Z' in HIEW 5 day 28) is used to undo jump. Character
read from the keyboard are converted to upper case, then looked for in the
jumpTable. By default jumpTable consists of digits '1'-'9' followed by letters
'A'-'Z'.


 String wildcards 

String wildcards are used in the following places:

1. Search for wildcard in decode mode (F7-F7)
2. File masks in filemanager (F9)
3. Mask for imported functions in the Import Table (F8-F7)

Wildcard symbols:

?       - any single character
*       - arbitrary number of any characters (0 or more)
{ABD}   - A, B, or D
{A-D}   - A, B, C, or D
{!ABC}  - any single character except A, B, and C
!       - anything but ... (must be the first character)

Examples:

All executable files in file manager:  *.exe
All non-executable files in file manager:  !*.exe
Filter from imported functions ones working with registry:
reg*key* = RegCreateKey, RegDeleteKey, RegQueryKeyValue, etc.
 

 Search and replace 

        If Enter was pressed in ASCII field, search is case insensitive, for
case sensitive search move cursor to HEX field before pressing Enter.

        You can search assembler commands (F7).

        Search/replace can be restricted to a selected block now (F4 while
entering the search or replace string).

In the disassembler mode assembler commands can be searched with wildcards
(see above). If entered assembler command contains any of the wildcard
characters, wildcard search is started, otherwise command is just assembled.
Assembling can be forced with Ctrl+Enter for commands like 'mov eax,[eax*2]'

For example, in the DECODE mode <F7><F7> 'mov ax, *' will find 'mov ax,1234h", 
"mov ax,sp", and like.

"mov ?x, ax" will find "mov ax,ax", "mov bx,ax", "mov cx,ax", and "mov dx,
ax", 
but not "mov bp,ax" or "mov si,ax".


                               *** IMPORTANT ***
        strings are compared without conversion! Do not forget any leading
	zeroes, like 'cmp *,0ab' for byte, 'cmp *,000ab' for word, etc...


        Since version 5.83 possible search for the sequence of the commands, 
preparing their special character. Since version 7.40 such chracter is '/'.
        For example: "push *10 / call * / add *"

        will find:                      will not find:
        --------                        ---------
        push 00010                      push 00010
        call 01234:05678                push 00011
        add  sp,00006                   add  ax,00006


        Since version 6.10 search and replace can be performed in all files
that were specified in the command line. Option "fillArg" must be activated by
pressing "F4" while entering search or replace string.

        Alt-? can be used in ASCII and hex searches as any symbol wildcard. For
example (HEX mode, F7): 00 01 ?? 03 04 (?? is shown in place of Alt-?) will
find '00 01 02 03 04', '00 01 FF 03 04', '00 01 AC 03 04', and like.


 Crypt (F7 in Edit mode) 

        Crypt can be used for (de-)crypting code or data with some simple 
algorithm. Byte/Word/Dword/Qword of code or data is crypted at a time
(press F2 to change crypt width). Crypt routine must end with "LOOP lineNumber"
operator.

              Available commands:

        Reg mode    : neg,mul,div
        Reg-Reg mode: mov,xor,add,sub,rol,ror,xchg,and,or
        Reg-Imm mode: mov,xor,add,sub,rol,ror,and,or
        Imm mode    : mul,div,loop

        All 8/16/32/64-bit registers are available and equipollent, except for 
AL/AX/EAX/RAX that is used for (de-)crypted byte/word/dword/qword input and 
output.

   Differences from usual assembler:
      * there are no jumps;
      * 'loop' means jump or stop
      * 'rol/ror' operands must have the same width, i.e. ROL AX,CL is not
        allowed.
      * (7.40+) command DIV divides unsigned value in the register RAX by 
        source operand (register or immed) and store quotient in the RAX 
        and remainder in the RDX.
      * (7.40+) command MUL performs an unsigned multiplication of the 
        operand (register ot immed)  by register RAX and the result store 
        in register RAX.

   Example:
     a. XOR byte with 0AAh:
        1. XOR  al,0aah
        2. LOOP 1

     b. XOR word with mask increment
        1. MOV  dx,0
        2. XOR  ax,dx     <-+
        3. ADD  dx,1        |
        4. LOOP 2         --+


 Local and Global offsets 

Since version 5.40 Hiew can show (and set) local offsets, i.e. offsets from the
beginning of a segment or an object. Local offset is represented by a dot
followed by the offset itself.

For the case of the local offset in the NE/LX files, the new offset is
calculated as SSSSOOOO, where SSSS is a segment number for NE, or base for LX;
OOOO is a local offset. If SSSS is zero, then the offset is calculated from the
current segment.

For PE files object alignment (OA) is used in calculating the base. If you
enter (with F5) a local offset that is less than OA, the jump is performed in
the current section.
 
For LX files having objects larger than 0xFFFF (see object 1 in FC.EXE),
offsets are displayed as in some debuggers (for example, in SD386), and you
should use jumps like .0x200234, although there's no such base as 0x200000.

If the cursor is outside of a segment/object, error message is shown (incorrect
jump calculation).

*NB!* If the first input symbol is '.', the offset is considered local,
otherwise it is global.

Examples of local offset inputs with F5:

  a: (NE) .10023    - offset 0x0023 in the first segment
  b: (NE/LX/PE) .23 - offset 0x0023 in the current segment
  c: (LX) .10023    - object with base 0x10000 is searched in Object Table
                              and a jump to local offset 0x0023 is performed
  d: (PE) .401023   - virtual address (VA) 401023

If a local offset is set, then wildcards and NE/LX/PE links are searched only
in code segments. For dual-EXE the search area is defined by the active header.
If MZ header is active, then search stops at NewExe header.

Since version 7.00 64-bit offset representation is switched on for files larger
than 4 gigabytes. The offset is shown as "high32'low32". This is because
otherwise long numbers with lots of zeroes are difficult to read.

Titlebar for this kind of files always displays 64-bit offset, while in the
left column it's only shown on screens wider than 89 characters, otherwise just
low 32 bits are displayed, and you have to check the titlebar for the rest.


 Keyboard macros 

Macros allow you to record a sequence of keypresses in order to replay it
later.

1. Press Ctrl-. to start recording
2. Press any keys you want to record
3. Press Ctrl-. to stop recording

Recorded sequence is assigned to Ctrl + 0 as Macro0. It is possible to move it
to anothercombination (from Ctrl + 1 to Ctrl + 8) with Ctrl-Minus; it is also
possible to save it to a file, load it from file, specify delay between
replayed keypresses and set other various flags.

Key combinations for macro recording and playback:

Ctrl-Minus     - Macro manager (see button functions below)
Ctrl-.         - record/stop macros to Macro0
Ctrl-0         - replay Macro0
Ctrl-1         - replay Macro1
...
Ctrl-8         - replay Macro8

Macro manager:

Enter  - replay current macro
F2     - From 0  - copy Macro0 here
F4     - Delay   - set delay between keypresses
F5     - Rename  - rename macro
F8     - Unload  - unload from memory
F9     - Store   - save macro to a file
F10    - Load    - load macro from file
F11    - Up      - move macro up
F12    - Down    - move macro down
AltF1  - Loop    - loop macro playback
AltF2  - FailSr  - stop playback if search returned no results

Also it is possible to run Hiew with a macros from the command line:
HIEW /MACRO0=<filename>


 Text string extraction 

Starting  from  version  7.10  it's  possible  to  extract  all  text  strings
(sequences  of  letters,  digits  and  some  ASCII7 special  characters)  from
the    file   or   selected   block,   and  pass  extraction  results  through
a  wildcard-based  filter.  You  have  to  be  in  hex mode in order to invoke
this  function;  whole   file  is  being  used  for  extraction  when no block
is     selected.    Strings    with   length   smaller than 'MinStringLength='
ini-file   parameter  value  are  ignored,  and  this   value   itself  cannot
be  smaller  than  4.  Also,  wildcard  search  is  limited  to the first 1000
characters of a string.


 INI file 

HIEW.INI  file  is  searched  in  HIEW.EXE  home  directory.  INI  file can be
specified in "/INI=<inifile>" command line parameter. HIEW.INI must start with
"[HiewIni  5.03]" in the first line! Blank lines and commented lines (starting
with ';') are ignored.

Detailed information about all options is provided in the HIEW.INI itself.


 HEMKEYS.INI file 

	Since version 7.45 in hem-directory can be placed the file HEMKEYS.INI
with one-character keys of direct call hem-modules in hem-menu (F11).
First line must be line '[HemKeys 7.45]'. Next lines are keys defined:
k: hemfile

Blank lines and commented lines are ignored. 
Characters are converted in uppercase.
The hem-file name is compared from begin and is taken the first coincidence.

	Example:
[HemKeys 7.45]
w: FileWalker.hem
V: PEVERIFY


 SAV file 

        If started without any parameters, HIEW looks for SAV-file in the
current directory ("HIEW.SAV", or the value of 'savefile' statement in
HIEW.INI), and restores the previously saved (with Ctrl-F10) state.


 XLT file structure 

typedef  struct{
   BYTE  sign[ 9 ],             // "HiewXlat",0
         unused[ 5 ],
         versionMajor,          // 0x05
         versionMinor;          // 0x40
   }XLAT_HEADER;

typedef  struct{
   BYTE  title[ 16 ],           // show in F8
         tableOut[ 256 ],       // for output
         tableIn[ 256 ],        // for input
         tableUpper[ 256 ];     // for search with ignore case
   }XLAT;

 Maximum number of translation tables is 15

All translation tables can be viewed with F8-F9 in textmode, or Alt-F8-F9 in
other modes, including Edit mode.
                             
 Command line 

 Hiew [options] [/s]filemask...[/s][filemask]
      /O[thc]=OEP|END|[.]offset[th] - assign start mode and start offset
      /MACRO0=<macrofile>           - run keyboard macro after start
      /SAV=<savefile>               - location of savefile
      /INI=<inifile>                - location of inifile
      [/s]filemask...[/s][filemask] - more files, including wildcards


 *    option /s toggles search with subdirectories:
 hiew /s *.dll *.exe /s *.txt -> search for .dll and .exe in subdirectories,
                                 and for .txt files in current directory only


 *  offset in option '/O' possible reference in any type supported by hiew inside:
    - with first dot as local offset
    - base by default (16) may be changed by suffix 't'
    as well as:
    - special offset 'END' (without quote) set cursor at last byte of the file
    - special offset 'OEP' (without quote) set cursor at entry-point of the exe-file
    examples: 
    /Ot=END     - text mode, end of the file
    /Oc=OEP     - code mode, cursor at entry-point
    /Oh=1234    - hex mode, offset as 1234 (hex)
    /Oh=0x1234  - too most as above
    /Oh=1234t   - hex mode, offset as 1234 (decimal)
    /Oc=.401234 - code mode, local offset 401234

*   since version 7.40 the option '/O' it is used to all files 
    of the command line under CtrlF9/CtrlF11/CtrlF12


 Thanks 

 Special thanks to:
        Alexander Orechov as best beta-tester
        Alexander Volok
        Arkady Kapustinsky for ELF files support
        Ilfak Guilfanov for NE files support
        Kaspersky Labs, AVP research team for general support
        Michail Korneff for english translation of dox
        Roman Potapov for introduction to unix
        Vladimir Ibatulin for finding bugs
	Joergen Ibsen: for BriefLZ packer

 Thanks for beta-testing to:
        Elias Bachaalany
        Erwann Corvellec
        Konstantin Zhdanov
        Michael Orechov
        Nicola Krasnoyarsky

 Thanks to:
        Ruslan Kantorovych
        Tadashi Yamakawa
        Alexei Kulencov
        Andrew Shipinsky
        Kirill N. Joss
        Stas Mechanoshin
        Vladimir Kalashnikov
        Alexey Podrezov
	Marat Khalili
	Keith Byers

 History  

 7.00   23/12/04 - DOS and OS/2 versions are no longer supported
                 - support for files and blocks larger than 4Gb
                 - keyboard macros
                 - 64-bit calculator
                 - progress bar for search and block operations
                 - displaying names for ordinals in PE
                 - support for overlay MZ
		 - fixups highlighting for MZ and PE
		 - PE table section editing (deleting, adding, swapping...)
		 - all imports (incl. Delay) aggregated in one table (F8-F7)
                 - more wildcards for assembler search
                 - new lines in hiew.ini
                   MacroDelay=
                   MacroStopIfSearchFail=
	           MacroPath=
                   FlistSizeInK=
                   AutoloadOrdinals=
                   IgnoreDiskError=
                   ConfirmExitByEsc=
                   SuppressPrepareError=
                   CursorShapeInvert=
                   ColorFixup=
                   ColorMacroRec=
                   ColorMacroPlay=
 7.01   28/12/04 - FIX: trash for edit PE section name
                   FIX: crash on some files with a bad import table
 7.10   20/02/05 - sav-file is being packed now
                 - in calculator: @x = get value under cursor
                 - clipboard support (Shift-Insert)
                 - text string extraction
		 - FIX: all import list: incorrect function name by ordinal (under 2K/XP)
                 - FIX: displaying DLLNAME.ORDINAL instead of DLLNAME.DLL.ORDINAL
 7.20    2/06/05 - Pre-release!
                 - FIX: crash on some trashed fixups
                 - 6 XX showed as 'push XXXXXXXXX' (was: 'push XX')
                 - Unicode support
                 - HEM (Hiew Extrenal Module) support. HEM SDK version 0.11
                 - Edump version 1.43
 7.21    7/07/05 - Pre-release!
                 - FIX: found no code-reference for PE with code sections above one
     		 - FIX: crash with sav-file, if last file saved into unicode
                 - FIX: PE export table without names do not processing
                 - show device name into list of flist change drive
		 - horizontal scroll for names import/export tables
		 - show unicode-string for links
                 - HEM SDK version 0.21: HEM keys line
 7.22   24/09/05 - Pre-release!
                 - HEM SDK version 0.30: MessageWait(),IsKeyBreak()
 		 - HEM: vertical scroll for window()
                 - PE: Clear record in dir (F7)
                 - PE: Allow go dir offset after edit
                 - save number of current line for hem menu
                 - Unicode at odd offset
                 - FIX: StringCollections is crash for big string at end area
                 - Code: AltF9 (set auto opsize) join to CtrlF1 (opsize toggle)
 7.25   30/11/05 - FIX PE: crash on empty PE-header
                 - FIX PE: incorrect expand the header for some slyly packed file
		 - FIX NE: export names show with trash tail 
                 - FIX: show scanbar for replace
     		 - file history: Ctrl-Enter as alternative input
                 - target jump marker
                 - fastkey & filter for export view
 7.26   22/01/06 - FIX: targetJump is different for code and data
                 - FIX MZ: invalid far call/jmp target (since 7.11)
                 - FIX NE: crash for entry export without name
                 - FIX PE: use file alignment
                 - NE: segfix entry export
 7.27    4/04/06 - FIX: multimedia keyboards scancode ignore
		 - FIX: assemble far conditional jump to backward
		 - FIX: (Import) search for ordinal
		 - 'Goto offset' in text mode (F5)
                 - 'Goto offset' understands % at end (e.g. 50%, -10%, +5%)
		 - 'Strings' in text mode (Alt-F6)
		 - Strings: all types (ansi,unicode) at once
		 - Strings & resource strings: Filter as F9 (was: F10)
		 - Code edit: Alt-F2: nops
 7.28   26/09/06 - FIX: PE overlay calculate from last physical section 
		 - FIX: assembling 'rep strings'
		 - FIX(7.27): '%' in calculator as syntax error
		 - FIX: PE with section locate trick
		 - PE: show forwarded export
		 - Export: Stay cursor after sort/filter
		 - Type of StringCollections offset store depend on global/local
		 - "StringsShowOffset=" in ini-file
		 - "ColorCodeRet=" in ini-file
		 - HEM: SEH for load/call
		 - HEM FIX: memory leak 
		 - HEM FIX: return current choise from Hiew_Menu() for Fn-press
 7.40    5/02/07 - 64bit dis/assembler x86-64
                 - 64bit crypt (Attention! Commands MUL and DIV are changed!)
                 - Crypt debug trace (F11)
                 - Pe32+ support for machine 8664h
                 - TLS callback for PE/PE32+ (F8-F11)
                 - fast search by pattern for assembler
                 - choice of the command under ambiguous assemblering (F4)
                 - hexedit: dword/qword edit under cursor (AltF3/AltF4)
                 - find next start from find length (was: next byte)
                 - remove XOR-string (was: F8 for edit)
 7.41   25/04/07 - FIX(7.40): lose name show after edit
		 - FIX(7.40) PE: show invalid target va for some call/jmp
		 - import pattern use name from hiew7.ord
		 - deadloop for incorrect mz-fixups preparation in 'wild' PE
                 - PE: allfile autosizeing if PE-header active
 7.45   26/07/07 - HEM SDK 0.35: SetErrorMsg(), GetStringDual()
                 - HemKeys.ini
                 - FIX: crash if the file 'hiew.key' is encrypted
                 - relative jump under cursor (hex mode/Shift-F11)
                 - CryptBlock in code mode too (Alt-F3)
 7.47   26/09/07 - FIX: crash if 'hiew7.ini' is empty or only-comment lines
                 - FIX: crash if print into existed file and press esc
                 - Code lighting (Shift-F1 in code)
                 - HEM SDK 0.40 support
                 - "SignImmediate = On/Off" in ini-file, Alt-I in code
                 - "SignDisplacement = On/Off" in ini-file, Alt-D in code
                 - OpcodeShowBytes up to 15

  Eugeny Suslikov  <sen@kemtel.ru>, <eugenys@gmail.com> 
