рдЧреИрд░-рдорд╛рдирдХ рдЪреЗрдХрдмреЙрдХреНрд╕

рдХрд╛рд░реНрдп


рдорд╛рдирдХ рд▓реЛрдЧреЛрдВ рдХреА рдкреВрд░реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдорд╛рдирдХ рд▓реЛрдЧреЛрдВ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреЙрд▓рдмреИрдХ рдФрд░ рдХрд╕реНрдЯрдо рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзрд╛ред рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕рдореВрд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред



Jsfiddle рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ
рдЧреАрдереВрдм рд╕реЗ рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╕рдорд╕реНрдпрд╛


рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдордХреНрдЦреА рдкрд░ рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ:

рдЙрд╕реА рд╕рдордп, рдЙрд╕рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдХреБрдЫ рдХрдХреНрд╖рд╛рдПрдВ рджреЗрдВ + (рдЬреЛ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛)ред

рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдзрд╛рд░рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЗрд╕реА рдШрдЯрдирд╛ рдФрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ред

рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


HTML:
<fieldset class="frame-checks-not-standart"> <label> <span class="niceCheck b_n"> <input autofocus type="checkbox" checked="checked" tabindex="1"/> </span> <span class="title">focus checked</span> </label> </fieldset> 

рд╕реАрдПрд╕рдПрд╕:
рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ b_n рд╡рд░реНрдЧ рдХреА background-image:none рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП background-image:none рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдорд╛рдирдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП background-image:none рдирд┐рдпрдо background-image:none ред

рдЬреЗ рдПрд╕:
 $('.frame-checks-not-standart').nStCheck(); 


рдореБрдЭреЗ рдФрд░ рдХреНрдпрд╛ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ


  1. рдорд╛рдкрджрдВрдбреЛрдВ
    рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред

    • wrapper (jQuery рд╡рд╕реНрддреБ)
      рд░реИрдкрд░ рддрддреНрд╡ рдЬрд┐рд╕рд╕реЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рдПрдЧрд╛;

    • elCheckWrap (jQuery рдЪрдпрдирдХрд░реНрддрд╛)
      рд░реИрдкрд░ рддрддреНрд╡, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;

    • classRemove
      $(elCheckWrap) рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо (рдЖрдкрдХреЛ рдорд╛рдирдХ рдЫреЛрдбрд╝рдиреЗ рдпрд╛ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рдЧреИрд░-рдорд╛рдирдХ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред

    • evCond (рдмреВрд▓рд┐рдпрди рдкреНрд░рдХрд╛рд░)
      рдпрджрд┐ true рддреЛ trigger рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ after рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛;

    • trigger (рд╡рд┐рдзрд┐)
      рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:
      • рд╡рд╣ рд╡рд╕реНрддреБ рдЬрд┐рд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ;
      • wrapper ;
      • elCheckWrap ;
      • рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ (рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕)ред

    • after (рд╡рд┐рдзрд┐)
      рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ trigger рдХреЗ рд╕рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рдЗрд╕реЗ рд╕реАрдзреЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ);


  2. рддрд░реАрдХреЛрдВ
    рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХрд▓ рдкреИрд░рд╛рдореАрдЯрд░ $(elCheckWrap) рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИрдВ - рдпрджрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд┐рдзрд┐ рдХреЛ $(elCheckWrap) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдпрд╣ this рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдорд╛рди рд▓реЗрддрд╛ рд╣реИред
    рдореБрдЭреЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рджреЗрдВ:
     $('.niceCheck').nStCheck('changeCheck') 

    рд╕рд╛рде рд╣реА, рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
     $.nStCheck('changeCheck')($('.niceCheck')) 

    • _changeCheckStart
      рд╡рд┐рдзрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ (рдЬрд┐рд╕реЗ рдкреНрд▓рдЧрдЗрди рдЖрд░рдВрднрд┐рдХ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ);

    • checkChecked
      checked рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд░реИрдкрд░ рдФрд░ $(elCheckWrap) рд▓рд┐рдП active рд╡рд░реНрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ;

    • checkUnChecked
      checked рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, wrapper рдФрд░ $(elCheckWrap) рд▓рд┐рдП active рд╡рд░реНрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ;

    • changeCheck
      checked рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд (рдПрдХ рддрд░рд╣ рдХрд╛ рдЯреЙрдЧрд▓);

    • checkAllChecks
      рд╕рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП checked рдХреА checked рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ;

    • checkAllReset
      рд╕рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП checked рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ;

    • checkAllDisabled
      рд╕рднреА рдкрд╛рд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП disabled рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, wrapper рдФрд░ $(elCheckWrap) рд▓рд┐рдП disabled рд╡рд░реНрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ;

    • checkAllEnabled
      рд╕рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП disabled рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд░реИрдкрд░ рдФрд░ $(elCheckWrap) рд▓рд┐рдП disabled рд╡рд░реНрдЧ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ;


  3. рдШрдЯрдирд╛рдУрдВ
    рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╣реИрдВрдЧрд╕реНрдкреЗрд╕ ( nstcheck ) рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
    • reset ( рдкреНрд░рдкрддреНрд░ )
      рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕рднреА рдЪрдпрдирд┐рдд рдирд╣реАрдВ рдкрд╣рд▓реЗ рдФрд░ рдЪрдпрдирд┐рдд рдХреЗ рд▓рд┐рдП checkAllReset рд╡рд┐рдзрд┐ рдХреЛ checkAllReset ;

    • mousedown ( рдЗрдирдкреБрдЯ )
      рдПрдХ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ;

    • click ( рдЗрдирдкреБрдЯ )
      рд╣реИрдВрдбрд▓рд░ рдЗрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ stopPropagation() рд╡рд┐рдзрд┐ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ;

    • keyup ( рдЗрдирдкреБрдЯ )
      рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╕реНрдкреЗрд╕рдмрд╛рд░ рдХреЛ рджрдмрд╛рддреЗ рд╣реИрдВ рдФрд░ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ;

    • focus ( рдЗрдирдкреБрдЯ )
      рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ $(elCheckWrap) рдФрд░ wrapper рд▓рд┐рдП focus рдХреНрд▓рд╛рд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реИ;

    • blur ( рдЗрдирдкреБрдЯ )
      рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ $(elCheckWrap) рдФрд░ wrapper рд▓рд┐рдП focus рдХреНрд▓рд╛рд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ;

    • change ( рдЗрдирдкреБрдЯ )
      рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ;

    • click ( wrapper )
      рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд░реИрдкрд░ рддрддреНрд╡ (рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдерд┐рддрд┐) рдкрд░ "рд▓рдЯрдХрд╛" рд╣реИред


  4. рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ
    рд╕рднреА рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯреНрд╕ рдирд╛рдо рд╕реНрдерд╛рди ( nstcheck ) рдХреЗ рд╕рд╛рде рд╣реЛрддреЗ рд╣реИрдВ

    рд╕рднреА рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ рдЗрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЧреБрдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
    el ( $ (elCheckWrap) );

    рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреБрдЫ input рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:
     $('input').on('nstcheck.cc', function(e){ console.log(this); // $('input') - ,     // console.log(e.el); //  $(elCheckWrap) }); 

    • nstcheck.cc
      checkChecked рд╡рд┐рдзрд┐ checkChecked рд╣реИ рдЬрдм рдЙрдарддрд╛ рд╣реИ;

    • nstcheck.cuc
      checkUnChecked рд╡рд┐рдзрд┐ checkUnChecked рд╣реИ рдЬрдм рдЙрдарддрд╛ рд╣реИ;

    • nstcheck.ad
      рдЬрдм checkAllDisabled рд╡рд┐рдзрд┐ checkAllDisabled ;

    • nstcheck.ae
      checkAllEnabled рд╡рд┐рдзрд┐ checkAllEnabled рд╣реИ рдЬрдм рдЙрдарддрд╛ рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


рдкреНрд▓рдЧрдЗрди рдорд╛рдирдХ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреА рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рд╣реИ, рдЗрд╕рдореЗрдВ рдорд╛рдирдХ рд╕рдВрд░рдЪрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ HTML рд╕рдВрд░рдЪрдирд╛ - рдкреНрд░рд╕реНрддреБрддрд┐ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╕реНрдЯрдо рдШрдЯрдирд╛рдУрдВ рдФрд░ рдХреЙрд▓рдмреИрдХ рд╕реЗ рднреА рд╕реБрд╕рдЬреНрдЬрд┐рдд рд╣реИред рдЖрдк рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдирдХ рд╡рд╛рд▓реЗ рдореЗрдВ рд╣реИ, рдпрд╣ рдЯреИрдм рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдорд╛рдирдХ рд░реАрд╕реЗрдЯ рдмрдЯрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In204030/


All Articles