	function cyr,x,transliterate=transliterate

prev=''

N=strlen(x)

b='!16'

	IF not keyword_set(transliterate) THEN BEGIN


	for j=0,N-1 do begin

start0:

if j ne 0 then prev=temp

temp=strmid(x,j,1)

	if prev eq '!' then begin
b=b+temp
j=j+1
goto, start0
	endif



	CASE temp OF
'à':b=b+'a'	;a
'á':b=b+'b'	;b
'â':b=b+'c'	;v
'ã':b=b+'d'	;g
'ä':b=b+'e'	;d
'å':b=b+'f'	;e
'æ':b=b+'g'	;zh
'ç':b=b+'h'	;z
'è':b=b+'i'	;i
'é':b=b+'j'	;j
'ê':b=b+'k'	;k
'ë':b=b+'l'	;l
'ì':b=b+'m'	;m
'í':b=b+'n'	;n
'î':b=b+'o'	;o
'ï':b=b+'p'	;p
'ð':b=b+'q'	;r
'ñ':b=b+'r'	;s
'ò':b=b+'s'	;t
'ó':b=b+'t'	;u
'ô':b=b+'u'	;f
'õ':b=b+'v'	;h
'ö':b=b+'w'	;c
'÷':b=b+'x'	;ch
'ø':b=b+'y'	;sh
'ù':b=b+'z'	;shch
'ú':b=b+'<'	;tw.znak
'û':b=b+'>'	;y
'ü':b=b+'@'	;myagk.znak
'ý':b=b+'\'	;e
'þ':b=b+'^'	;yu
'ÿ':b=b+';'	;ya

'À':b=b+'A'	;a
'Á':b=b+'B'	;b
'Â':b=b+'C'	;v
'Ã':b=b+'D'	;g
'Ä':b=b+'E'	;d
'Å':b=b+'F'	;e
'Æ':b=b+'G'	;zh
'Ç':b=b+'H'	;z
'È':b=b+'I'	;i
'É':b=b+'J'	;j
'Ê':b=b+'K'	;k
'Ë':b=b+'L'	;l
'Ì':b=b+'M'	;m
'Í':b=b+'N'	;n
'Î':b=b+'O'	;o
'Ï':b=b+'P'	;p
'Ð':b=b+'Q'	;r
'Ñ':b=b+'R'	;s
'Ò':b=b+'S'	;t
'Ó':b=b+'T'	;u
'Ô':b=b+'U'	;f
'Õ':b=b+'V'	;h
'Ö':b=b+'W'	;c
'×':b=b+'X'	;ch
'Ø':b=b+'Y'	;sh
'Ù':b=b+'Z'	;shch
'Ú':b=b+'#'	;tw.znak
'Û':b=b+'['	;y
'Ü':b=b+']'	;myagk.znak
'Ý':b=b+'%'	;e
'Þ':b=b+'"'	;yu
'ß':b=b+'_'	;ya
;'!':b=b+'!'	;!

else:b=b+temp
	ENDCASE

	endfor

	ENDIF ELSE BEGIN


	for j=0,N-1 do begin

start1:

if j ne 0 then prev=temp

temp=strmid(x,j,1)

	if prev eq '!' then begin
b=b+temp
j=j+1
goto, start1
	endif

	if temp eq 'z' then begin
j=j+1
goto, start1
	endif

	if prev eq 'z' then begin
		if temp eq 'h' then begin
b=b+'g'
j=j+1
goto, start1
		endif else b=b+'h'	;z
	endif

	CASE temp OF
'a':b=b+'a'	;a
'b':b=b+'b'	;b
'v':b=b+'c'	;v
'g':b=b+'d'	;g
'd':b=b+'e'	;d
'e':b=b+'f'	;e
'q':b=b+'g'	;zh
;'z':b=b+'h'	;z
'i':b=b+'i'	;i
'j':b=b+'j'	;j
'k':b=b+'k'	;k
'l':b=b+'l'	;l
'm':b=b+'m'	;m
'n':b=b+'n'	;n
'o':b=b+'o'	;o
'p':b=b+'p'	;p
'r':b=b+'q'	;r
's':b=b+'r'	;s
't':b=b+'s'	;t
'u':b=b+'t'	;u
'f':b=b+'u'	;f
'h':b=b+'v'	;h
'c':b=b+'w'	;c
'c':b=b+'x'	;ch
's':b=b+'y'	;sh
's':b=b+'z'	;shch
'tz':b=b+'<'	;tw.znak
'y':b=b+'>'	;y
'mz':b=b+'@'	;myagk.znak
'e':b=b+'\'	;e
'y':b=b+'^'	;yu
'y':b=b+';'	;ya

'A':b=b+'A'	;a
'B':b=b+'B'	;b
'V':b=b+'C'	;v
'G':b=b+'D'	;g
'D':b=b+'E'	;d
'E':b=b+'F'	;e
'Q':b=b+'G'	;zh
'Z':b=b+'H'	;z
'I':b=b+'I'	;i
'J':b=b+'J'	;j
'K':b=b+'K'	;k
'L':b=b+'L'	;l
'M':b=b+'M'	;m
'N':b=b+'N'	;n
'O':b=b+'O'	;o
'P':b=b+'P'	;p
'R':b=b+'Q'	;r
'S':b=b+'R'	;s
'T':b=b+'S'	;t
'U':b=b+'T'	;u
'F':b=b+'U'	;f
'H':b=b+'V'	;h
'C':b=b+'W'	;c
'C':b=b+'X'	;ch
'S':b=b+'Y'	;sh
'S':b=b+'Z'	;shch
'TZ':b=b+'#'	;tw.znak
'Y':b=b+'['	;y
'MZ':b=b+']'	;myagk.znak
'E':b=b+'%'	;e
'Y':b=b+'"'	;yu
'Y':b=b+'_'	;ya
;'!':b=b+'!'	;!

else:b=b+temp
	ENDCASE

	endfor


	ENDELSE

return,b+'!3'

end