
рдЕрджреГрд╢реНрдп рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ I2P) рдмрдврд╝реА рд╣реБрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреЛрдкрдиреАрдпрддрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ рдЬрд╣рд╛рдВ рдиреЛрдб рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрджреГрд╢реНрдп рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдЕрдВрджрд░ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрдЬрд╛рдп, рдХрдиреЗрдХреНрд╢рди I2P рдЧрдВрддрд╡реНрдп рдирд╛рдордХ рдЖрднрд╛рд╕реА рдкрддреЗ рдХреЗ рдмреАрдЪ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдХрдИ рдкрддреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рднреА рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рдкрдХреНрд╖ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд▓реЗрдЦ рдЙрди рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ I2P рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рдПрд╕рд┐рдВрдХреЛрд╕рд┐рдпреЛ рдирд┐рд░реНрдорд┐рдд рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдПрд╕рдПрдПрдо рдПрдкреАрдЖрдИ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдФрд░ i2plib рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
I2P рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ API рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, I2CP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдирд┐рдпрдорд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, I2PTunnel, HTTP рдФрд░ Socks рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЖрд╡реЗрджрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрд╕рдПрдПрдо рдЪреБрдиреЗрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореВрд▓ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ, рдПрд╕рдПрдПрдо рдПрдкреАрдЖрдИ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред I2P рд░рд╛рдЙрдЯрд░ рд╡реЗрдм рдХрдВрд╕реЛрд▓, рдкреЗрдЬ "I2P рдЗрдВрдЯрд░реНрдирд▓" -> "рдЧреНрд░рд╛рд╣рдХ" рдкрд░ рдЬрд╛рдПрдВред рдмреЙрдХреНрд╕ рдХреЛ "рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЪрд▓рд╛рдПрдБ" рдФрд░ "рдкреНрд░рд╛рд░рдВрдн" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдлрд┐рд░ "рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рд╣реЗрдЬреЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

C ++ рдореЗрдВ, i2pd SAM рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИред
рдПрд╕рдПрдПрдо рдПрдкреАрдЖрдИ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ i2plib рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦреАред рдЖрдк рдЗрд╕реЗ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЧреАрдерд╣рдм рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
pip install i2plib
рдЪреВрдВрдХрд┐ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд┐рд▓реНрдЯ-рдЗрди asyncio asyncio рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдХреЛрдб рд▓реВрдк рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди (coroutines) рд╕реЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВ ред
рдЧрдВрддрд╡реНрдп рдФрд░ рд╕рддреНрд░ рдирд┐рд░реНрдорд╛рдг
рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, I2P рдЧрдВрддрд╡реНрдп рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдбреЗрдЯрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдЗрд╕ рдмрдВрдбрд▓ рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА I2P рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рд╣рдо i2plib.Destination рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд░реЗрдВрдЧреЗ:
dest = await i2plib.new_destination() print(dest.base32 + ".b32.i2p")
рдЖрдзрд╛рд░ 32 рдкрддрд╛ рд╡рд╣ рд╣реИрд╢ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЕрдиреНрдп рд╕рд╛рдереА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЖрдкрдХрд╛ рдЧрдВрддрд╡реНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЗрд╕ рдЧрдВрддрд╡реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░рдВрддрд░ рдЖрдзрд╛рд░ рдкрд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ dest.pStreet_key.data рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред
рдЕрдм рдЖрдк рдПрдХ SAM рд╕рддреНрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рд╣реИ рдЗрд╕ рдЧрдВрддрд╡реНрдп рдХреЛ рдСрдирд▓рд╛рдЗрди рдСрдирд▓рд╛рдЗрди рдХрд░рдирд╛:
session_nickname = "test-i2p"
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрдм рддрдХ рд╕рддреНрд░_рд▓реЗрдЦрдХ рд╕реЙрдХреЗрдЯ рдЦреБрд▓рд╛ рд╣реИ, рддрдм рддрдХ рдЧрдВрддрд╡реНрдп рдСрдирд▓рд╛рдЗрди рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЗрд╕ рдЧрдВрддрд╡реНрдп рдХреЛ "рдмрдВрдж" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ session_writer.close () рдХреЙрд▓ рдХрд░реЗрдВред
рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдирд╛
рдЕрдм рд╡рд╣ рдЧрдВрддрд╡реНрдп рдСрдирд▓рд╛рдЗрди рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЛрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ "udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqw2v4jna.b32.i2p", HTTP GET рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрдврд╝реЗрдВ (рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ "i2p-projekt.i2p) рд╣реИред
remote_host = "udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p" reader, writer = await i2plib.stream_connect(session_nickname, remote_host) writer.write("GET /en/ HTTP/1.0\nHost: {}\r\n\r\n".format(remote_host).encode()) buflen, resp = 4096, b"" while 1: data = await reader.read(buflen) if len(data) > 0: resp += data else: break writer.close() print(resp.decode())
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ
рджреВрд╕рд░реЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░реАрдХрддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдирдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдкрд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдПрд╕рдПрдПрдо ASCII рд╕реЙрдХреЗрдЯ рдХреЛ рдЙрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЧрдВрддрд╡реНрдп рдФрд░ рдбреЗрдЯрд╛ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд┐рдВрдЧ-рдкреЛрдВрдЧ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЛ Remote_destination рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреЛрдВрдЧ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИ:
async def handle_client(incoming, reader, writer): """ """ dest, data = incoming.split(b"\n", 1) remote_destination = i2plib.Destination(dest.decode()) if not data: data = await reader.read(BUFFER_SIZE) if data == b"PING": writer.write(b"PONG") writer.close()
рдпрд╣ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ I2P рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдПрд╕рдПрдПрдо рдПрдкреАрдЖрдИ рдпреВрдбреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рдорд╛рди рдЧреБрдордирд╛рдо рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрднреА i2plib рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ I2P рдореЗрдВ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрджреГрд╢реНрдп рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдЧреЛрдкрдиреАрдпрддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдпрд╛ рдкреА 2 рдкреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред