рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ C # 3.0 рдореЗрдВ рд╕рдм рдХреБрдЫ рдирдпрд╛

рд╕рдбрд╝рдХ рдкрд░ рдореМрд╕рдо рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдХрд╣реАрдВ рдирд╣реАрдВ рдЧрдпрд╛, рдореИрдВрдиреЗ рдХреБрдЫ рд╡рд┐рдХреГрдд рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ ... рдореИрдВ рдиреАрдЪреЗ рдПрдХ рдЫреЛрдЯреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдХреЛрдб рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдЙрд╕реЗ рдХреНрдпрд╛ рджрд┐рд▓рд╛рд╕рд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ ...



рдХрд░реНрдо рдХреЛ рдХрдо рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП: рдкреЛрд╕реНрдЯ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдЕрдиреНрдп рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЬрд╛рдПрдВред рд╡рд╣ рдПрдХ рдирд┐рдЬреА рдмреНрд▓реЙрдЧ рдкрд░ рд╣реИрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реВрдВ, рдЗрддрдирд╛ рдХрдареЛрд░ рдордд рдмрдиреЛ ...







рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ;

System.Collections.Generic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ;

System.Linq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ ;

System.Runtime.Remoting.Messaging рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ ;



рдиреЗрдорд╕реНрдкреЗрд╕ рдлреНрд░реЛрдЬрд╝рд┐рдХ

{

рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо

{

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рдЪрд╛рд░реНрдЯ рдлрд░реНрд╕реНрдЯрдЪрд╛рд░реН <TInput> ( рдпрд╣ TInput рдорд╛рди )

рдЬрд╣рд╛рдВ TInput: рд╡рд░реНрдЧ

{

рд╡рд╛рдкрд╕реА рдорд╛рдиред StString () [0];

}



рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп ()

{

var рддрд░реНрдХ = рдирдИ рд╕реВрдЪреА < string > { "arg_0" , "temp_z" , "arg_1" , "arg_2" };



рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЙрдХрд░;



рддрд╛рд▓рд╛ (рд▓реЙрдХрд░ = рдирдИ рд╡рд╕реНрддреБ ) ()

{

Console.WriteLine ( "рдкреНрд░рд╛рд░рдВрдн" );



(( рдлрд╝рдВрдХ < string >) () =>

{

рддрд╛рд▓рд╛ (рд▓реЙрдХрд░)

{

var рдкрд░рд┐рдгрд╛рдо = string .Empty;



foreach ( рд╕реНрдЯреНрд░рд┐рдВрдЧ arg in

(рддрд░реНрдХ рдореЗрдВ рддрд░реНрдХ рд╕реЗ

рдЬрд╣рд╛рдБ argEntity.StartsWith ( "arg_" )

argEntity.Substring (4)) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

{

Console.WriteLine (рдкрд░рд┐рдгрд╛рдо + = arg.FirstChar < string > ());

}



рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо;

}

}))ред BeginInvoke (

( рдкреНрд░рддрд┐рдирд┐рдзрд┐ (IAsyncResult рдкрд░рд┐рдгрд╛рдо) {

Console.WriteLine (

рдирдИ

{

рд▓реЗрдирде =

((рдлрдВрдХ < string >) ((AsyncResult) рдкрд░рд┐рдгрд╛рдо) редAsyncDelegate)ред

EndInvoke (рдкрд░рд┐рдгрд╛рдо)ред рдЧрддрд┐

} (рдХрдо);

})

рдирдИ рд╡рд╕реНрддреБ ()

);



Console.WriteLine ( "рд╕рдорд╛рдкреНрдд" );



Console.ReadKey ();

}



Console.ReadKey ();

}

}

}



рдиреАрдЪреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ





рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;

System.Collections.Generic рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;

System.Linq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;

System.Runtime.Remoting.Messaging рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░;



рдиреЗрдорд╕реНрдкреЗрд╕ рдлреНрд░реЛрдЬрд╝рд┐рдХ

{

рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо

{

// рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рд╕рднреА рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВ

// рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ

// рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред

// рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:

// рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рдпрд╛ рдЧреИрд░-рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдереЗ

// рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЖрдЧреЗ рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ

// рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП arg.FirstChar <string> ()

// рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рдЪрд╛рд░реНрдЯ рдлрд░реНрд╕реНрдЯрдЪрд╛рд░реН <TInput> (рдпрд╣ TInput рдорд╛рди)

// рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ - рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░ C # 2.0 рдФрд░ .net 2.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ

рдЬрд╣рд╛рдВ TInput: рд╡рд░реНрдЧ

{

рд╡рд╛рдкрд╕реА рдорд╛рдиред StString () [0];

}



рд╕реНрдерд┐рд░ рд╢реВрдиреНрдп рдореБрдЦреНрдп ()

{

// рдЗрдиреЛрд╡реЗрд╢рди - рдРрдб рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдмрд╕ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

// рдЬрдм рдПрдХ рдРрд▓рд╛рди рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА, рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ рд╕реВрдЪреА <string> рдХреЗ рд╣реЛрдВрдЧреЗ,

// intellisense рдЗрд╕реЗ рд╕рдордЭреЗрдЧрд╛ рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

var рддрд░реНрдХ = рдирдИ рд╕реВрдЪреА <string> {"arg_0", "temp_z", "arg_1", "arg_2"};



рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЙрдХрд░;



рддрд╛рд▓рд╛ (рд▓реЙрдХрд░ = рдирдИ рд╡рд╕реНрддреБ) ()

{

Console.WriteLine ("рдкреНрд░рд╛рд░рдВрдн");



// рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЧреБрдордирд╛рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░

// рдлрдВрдХ (рд░рд┐рдЯрд░реНрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди) рдЖрдк рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

// рдЬреЛ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ

// рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

// (рдкреНрд░рддрд┐рдирд┐рдзрд┐) ()

((рдлрд╝рдВрдХ <string>) () =>

// рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░реНрдп рдерд╛, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

// Console.WriteLine (((Func <int, int, string>) ((x, y) => (x + y)ред ToString ()) (5, 5));

// рд╣рдо рдПрдХ рд▓реИрдВрдмрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдЗрдирдкреБрдЯ рдкрд░ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ 2 рдЕрдВрддрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВ

// рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдФрд░ рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ 5 рдФрд░ 5 рдХреЗ рд╕рд╛рде рдХрд╣реЗрдВрдЧреЗред рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрдВрд╕реЛрд▓ рдХреЛ 10 рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧрд╛

// рдПрдХ рдЧреБрдордирд╛рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдКрдкрд░ рджреА рдЧрдИ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг -

// Console.WriteLine (((Func <int, int, string>) (рдбреЗрд▓реАрдЧреЗрдЯ (int x, int y)) {return (x + y) .ToString ();}) (5, 5));

{

// рд▓реИрдВрдмрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╕реНрдерд╛рдиреАрдп рдЪрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ

// рдореВрд▓ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рддрд╛рд▓рд╛ (рд▓реЙрдХрд░)

{

// рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╣реЛрдЧрд╛

var result = string.Empty;



foreach (рд╕реНрдЯреНрд░рд┐рдВрдЧ arg in

// рд▓рд┐рдирдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ - IEnumerable <string>

// рд╣рдо рдЙрди рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рддрд░реНрдХ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ "arg_" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ

// рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рдпрд╛ рд╕реЗ рдХреЗрд╡рд▓ рд╕рдмреНрд╕реНрдЯреНрд░рд┐рдВрдЧ (4) рд▓реЗрддреЗ рд╣реИрдВ

// рдкрд░рд┐рдгрд╛рдоред IEnumerable <string> рд╕реВрдЪреА <string> рдпрд╛ рдореЗрдВ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ

// string [], рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред ToList () рдпрд╛ ToArray () рдЕрдВрдд рдореЗрдВ

// рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд┐рдореНрди рдХреЗ рд╕рдорд╛рди рд╣реИ -

// рддрд░реНрдХред рдХрд╣реАрдВ рднреА ((argEntity) => argEntity.StartsWith ("arg_"))ред

// рдЪреБрдиреЗрдВ ((argEntity) => argEntity.Substring (4))

// рдЖрдк рдпрд╣рд╛рдБ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - msdn2.microsoft.com/en-us/vcsharp/aa33679.xx

(рддрд░реНрдХ рдореЗрдВ рддрд░реНрдХ рд╕реЗ

рдЬрд╣рд╛рдБ argEntity.StartsWith ("arg_")

argEntity.Substring (4)) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

{

// рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдПрдВ

Console.WriteLine (рдкрд░рд┐рдгрд╛рдо + = arg.FirstChar <string> ());

}



рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо;

}

}))ред

// рдЪреВрдВрдХрд┐ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрдирд╛рдо рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

// рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ

рд╢реБрд░реБрдЖрдд

// рдПрдХ рдЕрдирд╛рдо рдбреЗрд▓реАрдЧреЗрдЯ рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛,

// рдЗрд╕ рдЬрдЧрд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ

// (рдкрд░рд┐рдгрд╛рдо) => {

(рдкреНрд░рддрд┐рдирд┐рдзрд┐ (IAsyncResult рдкрд░рд┐рдгрд╛рдо) {

Console.WriteLine (

// рдордХреНрдЦреА рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛рдИ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реЛ,

// рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ рдФрд░ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдирдИ

{

рд▓реЗрдВрде = ((рдлрдВрдХ <string>) ((AsyncResult) рдкрд░рд┐рдгрд╛рдо) редAsyncDelegate)ред

EndInvoke (рдкрд░рд┐рдгрд╛рдо)ред рдЧрддрд┐

}ред

// рдмреЗрдирд╛рдореА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд▓реЗрди рджреЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд▓рдВрдмрд╛рдИ);

})

рдирдИ рд╡рд╕реНрддреБ ()

);



Console.WriteLine ("рд╕рдорд╛рдкреНрдд");



Console.ReadKey ();

}



Console.ReadKey ();

}

}

}



// рдХреЗрд╡рд▓ рддрд╛рд▓реЗ рд╣реА рдмрдиреЗ рд░рд╣реЗ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрд╛рдпрд╛ рдирд╣реАрдВ, рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП ;-)




All Articles