This repository has been archived by the owner on Apr 20, 2022. It is now read-only.
/
wallet.min.js
1 lines (1 loc) · 68.8 KB
/
wallet.min.js
1
function precisionToSatoshiBN(a){return Bitcoin.Util.parseValue(a).divide(BigInteger.valueOf(Math.pow(10,sShift(symbol_btc)).toString()))}function precisionToBTC(a){return Bitcoin.Util.formatValue(precisionToSatoshiBN(a))}function precisionFromSatoshi(a){return Bitcoin.Util.formatValue(a.multiply(BigInteger.valueOf(Math.pow(10,sShift(symbol_btc)))))}function precisionFromBTC(a){return precisionFromSatoshi(Bitcoin.Util.parseValue(a))}function formatPrecision(a){return formatBTC(precisionToSatoshiBN(a).toString())}var MyWallet=new function(){var i=this;this.skip_init=false;var F="abcaa314-6f67-6705-b384-5d47fbe9d7cc";var ao;var P;var k;var aO;var aq;var x;var e;var aE=0;var X=0;var ay=0;var N=0;var aY=0;var aM;var h={};var G=[];var H=false;var aC=0;var ax=0;var aH=1000;var L={};var aF;var at;var y=0.5;var J=true;var am=5000;var S=am;var c={};var r;var aT=0;var Z;var ae=[];var D;var Q=60000;var C=false;var af;var ac="en";var av=2;var T=0;var aQ=0;var ad=false;var aJ;var aw=false;var Y=false;var aB=false;var A=false;var R=null;var U=null;var t={pbkdf2_iterations:am,fee_policy:0,html5_notifications:false,logout_time:600000,tx_display:0,always_keep_local_backup:false,transactions_per_page:30,additional_seeds:[]};this.setEncryptedWalletData=function(a0){if(!a0||a0.length==0){ao=null;aF=null;return}ao=a0;aF=an()};this.setRealAuthType=function(a0){aT=a0};this.addAdditionalSeeds=function(a0){t.additional_seeds.push(a0)};this.getAdditionalSeeds=function(a0){return t.additional_seeds};this.getLanguage=function(){return ac};this.setLanguage=function(a0){MyStore.put("language",a0);ac=a0};this.addEventListener=function(a0){ae.push(a0)};this.sendEvent=function(a2,a1){for(var a0 in ae){ae[a0](a2,a1)}};this.getLogoutTime=function(){return t.logout_time};this.getSecondPasswordPbkdf2Iterations=function(){return t.pbkdf2_iterations};this.getMainPasswordPbkdf2Iterations=function(){return S};this.getSharedKey=function(){return e};this.getSharedcoinEndpoint=function(){return aJ};this.disableLogout=function(a0){aw=a0};this.getFinalBalance=function(){return aE};this.getTotalSent=function(){return X};this.getTotalReceived=function(){return ay};this.setLogoutTime=function(a0){t.logout_time=a0;clearInterval(Z);Z=setTimeout(i.logout,i.getLogoutTime())};this.getDoubleEncryption=function(){return H};this.getEncryptedWalletData=function(){return ao};this.getFeePolicy=function(){return t.fee_policy};this.setFeePolicy=function(a0){t.fee_policy=parseInt(a0)};this.setAlwaysKeepLocalBackup=function(a0){t.always_keep_local_backup=a0};this.getAlwaysKeepLocalBackup=function(){return t.always_keep_local_backup};this.setNTransactionsPerPage=function(a0){t.transactions_per_page=a0};this.getNTransactionsPerPage=function(){return t.transactions_per_page};this.getGuid=function(){return P};this.getHTML5Notifications=function(){return t.html5_notifications};this.setHTML5Notifications=function(a0){t.html5_notifications=a0};this.getNTransactions=function(){return N};this.getTransactions=function(){return G};this.addressExists=function(a0){return L[a0]!=null};this.getAddressTag=function(a0){return L[a0].tag};this.setAddressTag=function(a1,a0){L[a1].tag=a0};this.getAddressBook=function(){return h};this.getAddressLabel=function(a0){if(L[a0]){return L[a0].label}else{return null}};this.setAddressLabel=function(a0,a1){L[a0].label=a1};this.setAddressBalance=function(a0,a1){L[a0].balance=a1};this.getAddressBookLabel=function(a0){return h[a0]};this.isWatchOnly=function(a0){return !L[a0]||L[a0].priv==null};this.getAddressBalance=function(a0){return L[a0].balance};this.getMixerFee=function(){return y};this.getRecommendIncludeFee=function(){return J};this.deleteAddress=function(a0){delete L[a0]};this.addAddressBookEntry=function(a1,a0){h[a1]=a0};this.getPrivateKey=function(a0){return L[a0].priv};this.setLabel=function(a0,a1){L[a0].label=a1;i.backupWalletDelayed();d()};this.securePost=function(a0,a3,ba,a7){var a6=jQuery.extend({},a3);if(!a3.sharedKey){if(!e||e.length==0||e.length!=36){throw"Shared key is invalid"}var a1=new Date().getTime();var a5=parseInt((a1-aQ)/10000);var a4=Crypto.SHA256(e.toLowerCase()+a5);var a2=0;var a9=a4.substring(a2,a2+=8)+"-"+a4.substring(a2,a2+=4)+"-"+a4.substring(a2,a2+=4)+"-"+a4.substring(a2,a2+=4)+"-"+a4.substring(a2,a2+=12);a6.sharedKey=a9;a6.sKTimestamp=a5;a6.sKDebugHexHash=a4;a6.sKDebugTimeOffset=aQ;a6.sKDebugOriginalClientTime=a1;a6.sKDebugOriginalSharedKey=e}if(!a3.guid){a6.guid=P}a6.format=a3.format?a3.format:"plain";var a8="text";if(a3.format=="json"){a8="json"}$.ajax({dataType:a8,type:"POST",timeout:60000,url:root+a0,data:a6,success:ba,error:a7})};this.isCorrectMainPassword=function(a0){return aO==a0};function aj(a1,a3){var a0=Crypto.SHA256(a1,{asBytes:true});for(var a2=1;a2<a3;++a2){a0=Crypto.SHA256(a0,{asBytes:true})}return Crypto.util.bytesToHex(a0)}this.setPbkdf2Iterations=function(a0,a2){var a1=function(a3){console.log("Panic "+a3);window.location.reload()};i.getSecondPassword(function(){try{if(H){for(var a3 in L){var a5=L[a3];if(a5.priv){a5.priv=i.encrypt(i.decryptPK(a5.priv),e+aq,a0);if(!a5.priv){throw"addr.priv is null"}}}t.pbkdf2_iterations=a0;x=aj(e+aq,a0)}T=2;S=a0;i.backupWallet("update",function(){a2()},function(){a1(a4)})}catch(a4){a1(a4)}},function(a3){a1(a3)})};this.setDoubleEncryption=function(a2,a0,a4){var a1=function(a5){console.log("Panic "+a5);window.location.reload()};try{if(H==a2){return}if(a2){i.getSecondPassword(function(){try{H=true;aq=a0;for(var a5 in L){var a7=L[a5];if(a7.priv){a7.priv=j(B58.decode(a7.priv));if(!a7.priv){throw"addr.priv is null"}}}x=aj(e+aq,t.pbkdf2_iterations);aq=null;i.getSecondPassword(function(){try{i.checkAllKeys();i.backupWallet("update",function(){a4()},function(){a1(a8)})}catch(a8){a1(a8)}},function(a8){a1(a8)})}catch(a6){a1(a6)}},function(a5){a1(a5)})}else{i.getSecondPassword(function(){try{for(var a5 in L){var a7=L[a5];if(a7.priv){a7.priv=i.decryptPK(a7.priv);if(!a7.priv){throw"addr.priv is null"}}}H=false;aq=null;i.checkAllKeys();i.backupWallet("update",function(){a4()},function(){a1(a6)})}catch(a6){a1(a6)}},function(a5){a1(a5)})}}catch(a3){a1(a3)}};this.unArchiveAddr=function(a0){var a0=L[a0];if(a0.tag==2){a0.tag=null;d();i.backupWalletDelayed("update",function(){i.get_history()})}else{i.makeNotice("error","add-error","Cannot Unarchive This Address")}};this.archiveAddr=function(a0){if(i.getActiveAddresses().length<=1){i.makeNotice("error","add-error","You must leave at least one active address");return}var a0=L[a0];if(a0.tag==null||a0.tag==0){a0.tag=2;d();i.backupWalletDelayed("update",function(){i.get_history()})}else{i.makeNotice("error","add-error","Cannot Archive This Address")}};this.addWatchOnlyAddress=function(a0){return aW(a0)};this.addPrivateKey=function(a0,a2){if(ap()){return false}if(a0==null){throw"Cannot add null key."}if(a2==null){a2={}}var a5=a2.compressed?a0.getBitcoinAddressCompressed().toString():a0.getBitcoinAddress().toString();var a4=j(a0.priv);if(a4==null){throw"Error Encoding key"}var a1=new Bitcoin.ECKey(i.decodePK(a4));if(a5!=a1.getBitcoinAddress().toString()&&a5!=a1.getBitcoinAddressCompressed().toString()){throw"Decoded Key address does not match generated address"}if(aW(a5,a4)){L[a5].tag=1;L[a5].created_time=a2.created_time?a2.created_time:new Date().getTime();L[a5].created_device_name=a2.app_name?a2.app_name:APP_NAME;L[a5].created_device_version=a2.app_version?a2.app_version:APP_VERSION;if(L[a5].priv!=a4){throw"Address priv does not match encoded"}try{ws.send('{"op":"addr_sub", "addr":"'+a5+'"}')}catch(a3){}}else{throw"Unable to add generated private key."}return a5};this._seed=function(a1){var a3=""+new Date().getTime();if(aO&&aO.length>0){a3+=aO}if(a1&&a1.length>0){a3+=a1}if(af&&af.length>0){a3+=af}var a5=$("body").data("extra-seed");if(a5&&a5.length>0){a3+=a5}var a4=[];var a2=0;while(a4.length<rng_psize){a4=a4.concat(Crypto.SHA256(a3+a2,{asBytes:true}));++a2}var a0=Crypto.util.bytesToWords(a4);seed_large_int32_array(a0)};this.generateNewKey=function(a1){i._seed(a1);var a0=new Bitcoin.ECKey(false);var a2=i.addPrivateKey(a0,{compressed:true});if(a2){return{key:a0,addr:a2}}};this.setLoadingText=function(a0){$(".loading-text").text(a0)};function O(){try{$(".popover").remove()}catch(a0){}}$(window).resize(function(){$(".modal:visible").center();O()});function aV(a1,a0){a1.click(function(){B(a0.txIndex,a0.result)});a1.find(".show-note").unbind("mouseover").mouseover(function(){var a2=a0.note?a0.note:c[a0.hash];aP(this,a2,a0.hash)});a1.find(".add-note").unbind("mouseover").mouseover(function(){n(this,a0.hash)});return a1}function u(a1,a7){var a0=0;for(var a3=0;a3<a1.inputs.length;++a3){var a2=a1.inputs[a3].prev_out;if(!a2||!a2.addr){continue}var a6=L[a2.addr];if(a6){var a5=parseInt(a2.value);a0-=a5;if(a7){X+=a5;a6.balance-=a5}}}for(var a4=0;a4<a1.out.length;++a4){var a2=a1.out[a4];if(!a2||!a2.addr){continue}var a6=L[a2.addr];if(a6){var a5=parseInt(a2.value);a0+=a5;if(a7){ay+=a5;a6.balance+=a5}}}return a0}function an(){return Crypto.util.bytesToHex(Crypto.SHA256(ao,{asBytes:true}))}function z(a0){var a1=null;a0.onmessage=function(a8){try{var a5=$.parseJSON(a8.data);if(a5.op=="on_change"){var a9=an();var a7=a5.checksum;console.log("On change old "+a9+" == new "+a7);if(a1!=a7&&a9!=a7){a1=a7;M()}}else{if(a5.op=="utx"){var a6=TransactionFromJSON(a5.x);for(var bb in G){if(G[bb].txIndex==a6.txIndex){return}}var bd=u(a6,true);if(i.getHTML5Notifications()){i.showNotification({title:bd>0?"Payment Received":"Payment Sent",body:"Transaction Value "+formatBTC(bd),iconUrl:resource+"cube48.png"})}a6.result=bd;aE+=bd;N++;a6.setConfirmations(0);playSound("beep");if(ax==0&&aC==0){G.unshift(a6);var ba=false;if(G.length>i.getNTransactionsPerPage()){G.pop();ba=true}}i.sendEvent("on_tx");var a3=aa();if("my-transactions"==a3){if(ax==0&&aC==0){$("#no-transactions").hide();if(t.tx_display==0){var a2=$("#transactions-compact").show();aV($(E(a6,L,h)),a6).prependTo(a2.find("tbody")).find("div").hide().slideDown("slow");if(ba){a2.find("tbody tr:last-child").remove()}}else{var a2=$("#transactions-detailed").show();a2.prepend(a6.getHTML(L,h));if(ba){a2.find("div:last-child").remove()}setupSymbolToggle()}}}else{d()}}else{if(a5.op=="block"){for(var a4=0;a4<a5.x.txIndexes.length;++a4){for(var bc=0;bc<G.length;++bc){if(G[bc].txIndex==a5.x.txIndexes[a4]){if(G[bc].blockHeight==null||G[bc].blockHeight==0){G[bc].blockHeight=a5.x.height;break}}}}aD(BlockFromJSON(a5.x));i.sendEvent("on_block");ab()}}}}catch(a8){console.log(a8);console.log(a8.data)}};a0.onopen=function(){i.sendEvent("ws_on_open");az("ok");var a5='{"op":"blocks_sub"}';if(P!=null){a5+='{"op":"wallet_sub","guid":"'+P+'"}'}try{var a3=i.getActiveAddresses();for(var a2 in a3){a5+='{"op":"addr_sub", "addr":"'+a3[a2]+'"}'}}catch(a4){alert(a4)}a0.send(a5)};a0.onclose=function(){i.sendEvent("ws_on_close");az("error")}}var aU="ok";function az(a1){var a0=$("#logout");if(a1=="loading_start"){a0.attr("src",resource+"logout-orange.png");return}else{if(a1!="loading_stop"){aU=a1}}if(aU=="ok"){a0.attr("src",resource+"logout.png")}else{if(aU=="error"){a0.attr("src",resource+"logout-red.png")}}}this.showNotification=function(a0,a1){try{var a3;if(window.webkitNotifications&&webkitNotifications.checkPermission()==0){a3=webkitNotifications.createNotification(a0.iconUrl,a0.title,a0.body);a3.show()}else{if(window.Notification&&window.Notification.permissionLevel()=="granted"){a3=new window.Notification(a0.title,a0).show()}}if(a3){setTimeout(function(){a3.cancel()},a1?a1:5000)}}catch(a2){}};this.makeNotice=function(a1,a4,a3,a2){if(a3==null||a3.length==0){return}console.log(a3);var a0=$('<div class="alert alert-block alert-'+a1+'"></div>');a0.text(""+a3);if($("#"+a4).length>0){a0.attr("id",a4);return}$("#notices").append(a0).hide().fadeIn(200);(function(){var a5=a0;setTimeout(function(){a5.fadeOut(250,function(){$(this).remove()})},a2?a2:5000)})()};this.pkBytesToSipa=function(a0,a4){var a1=new Bitcoin.ECKey(a0);while(a0.length<32){a0.unshift(0)}a0.unshift(128);if(a1.getBitcoinAddress().toString()==a4){}else{if(a1.getBitcoinAddressCompressed().toString()==a4){a0.push(1)}else{throw"Private Key does not match bitcoin address"+a4}}var a2=Crypto.SHA256(Crypto.SHA256(a0,{asBytes:true}),{asBytes:true});a0=a0.concat(a2.slice(0,4));var a3=B58.encode(a0);return a3};function aL(a0){return a0}function aA(a0){return i.decryptPK(a0)}function ah(a0){var a1=i.decodePK(a0);return Crypto.util.bytesToBase64(a1)}function l(a0){var a1=i.decodePK(a0);return Crypto.util.bytesToHex(a1)}this.base58ToSipa=function(a0,a1){return i.pkBytesToSipa(i.decodePK(a0),a1)};this.makeWalletJSON=function(a0){return i.makeCustomWalletJSON(a0,P,e)};this.makeCustomWalletJSON=function(a5,a1,a7){var a4=aL;if(a5=="base64"){a4=ah}else{if(a5=="hex"){a4=l}else{if(a5=="sipa"){a4=i.base58ToSipa}else{if(a5=="base58"){a4=aA}}}}var a0='{\n "guid" : "'+a1+'",\n "sharedKey" : "'+a7+'",\n';if(H&&x!=null&&a4==aL){a0+=' "double_encryption" : '+H+',\n "dpasswordhash" : "'+x+'",\n'}if(t){a0+=' "options" : '+JSON.stringify(t)+",\n"}a0+=' "keys" : [\n';for(var a3 in L){var a6=$.extend({},L[a3]);if(a6.tag==1){delete a6.tag}if(a6.priv!=null){a6.priv=a4(a6.priv,a6.addr)}for(var a2 in a6){if(a6[a2]===null||a6[a2]===undefined){delete a6[a2]}}delete a6.balance;a0+=JSON.stringify(a6)+",\n";atLeastOne=true}if(atLeastOne){a0=a0.substring(0,a0.length-2)}a0+="\n ]";if(aK(h)>0){a0+=',\n "address_book" : [\n';for(var a3 in h){a0+=' {"addr" : "'+a3+'",\n';a0+=' "label" : "'+h[a3]+'"},\n'}a0=a0.substring(0,a0.length-2);a0+="\n ]"}if(R){a0+=',\n "hd_wallets" : '+JSON.stringify(R)}if(aK(c)>0){a0+=',\n "tx_notes" : '+JSON.stringify(c)}a0+="\n}";return a0};this.get_history=function(a1,a0){BlockchainAPI.get_history(function(a2){K(a2,false);if(G.length==0&&aC>0){i.setPage(0)}else{d()}if(a1){a1()}},function(){if(a0){a0()}},ax,aC*i.getNTransactionsPerPage(),i.getNTransactionsPerPage())};this.deleteAddressBook=function(a0){delete h[a0];i.backupWalletDelayed();$("#send-coins").find(".tab-pane").trigger("show",true)};function v(a0){$("#send-coins").find(".tab-pane.active").trigger("show",a0);if(a0){BlockchainAPI.get_ticker();$(".send").prop("disabled",false)}}function m(a0,a1,a5){var a4=a0.val();a0.empty();for(var a3 in L){var a6=L[a3];if(!a6||a6.tag==2){continue}var a2=a6.label;if(!a2){a2=a6.addr.substring(0,15)+"..."}if(a1||a6.balance>0){a0.prepend('<option value="'+a6.addr+'">'+a2+" - "+formatBTC(a6.balance)+"</option>")}}a0.prepend('<option value="any" selected>Any Address</option>');if(!a5&&a4){a0.val(a4)}}function s(a2,a3){m(a2.find('select[name="from"]'),false,a3);m(a2.find('select[name="change"]'),true,a3);a2.find('select[name="change"]').prepend('<option value="new">New Address</option>');a2.find(".local-symbol").text(symbol_local.symbol);a2.find(".btc-symbol").text(symbol_btc.symbol);if(a3){a2.find("input").val("");a2.find(".send-value-usd").text(formatSymbol(0,symbol_local)).val("");a2.find(".amount-needed").text(0)}var a1=a2.find(".recipient-container");if(a3){var a5=a1.find(".recipient:first-child").clone();a1.empty().append(a5)}function a0(){var a6=BigInteger.ZERO;a2.find(".send-value").each(function(){a6=a6.add(precisionToSatoshiBN($(this).val()))});return a6}function a4(a6){a6.find('input[name="send-to-address"]').typeahead({source:aG()}).next().unbind().click(function(){var a7=$(this).prev();i.scanQRCode(function(a8){console.log(a8);try{new Bitcoin.Address(a8);a7.val(a8)}catch(a9){i.handleURI(a8,a6)}},function(a8){i.makeNotice("error","misc-error",a8)})});a6.find(".send-value").unbind().bind("keyup change",function(a7){if(a7.keyCode=="9"){return}a2.find(".amount-needed").text(formatBTC(a0().toString()));a6.find(".send-value-usd").val(convert($(this).val()*symbol_btc.conversion,symbol_local.conversion)).text(formatSymbol($(this).val()*symbol_btc.conversion,symbol_local))});a6.find(".send-value-usd").text(formatSymbol(0,symbol_local)).unbind().bind("keyup change",function(a7){if(a7.keyCode=="9"){return}a6.find(".send-value").val(formatSatoshi(parseFloat($(this).val())*symbol_local.conversion,sShift(symbol_btc),true))})}a1.find(".recipient").each(function(){a4($(this))});a2.find(".remove-recipient").unbind().click(function(){var a6=a1.find(".recipient").length;if(a6>1){if(a6==2){$(this).hide(200)}a1.find(".recipient:last-child").remove()}});a2.find(".add-recipient").unbind().click(function(){var a6=a1.find(".recipient:first-child").clone();a6.find('input[type="text"]').val("");a6.appendTo(a1);a4(a6);a2.find(".remove-recipient").show(200)});a2.find('select[name="from"]').unbind().change(function(){var a8=0;var a6=$(this).val();for(var a7 in a6){if(a6[a7]=="any"){$(this).val("any");a8=aE;break}else{var a9=L[a6[a7]];if(a9&&a9.balance){a8+=a9.balance}}}a2.find(".amount-available").text(formatBTC(a8))}).trigger("change")}this.getAllAddresses=function(){var a1=[];for(var a0 in L){a1.push(a0)}return a1};this.getPreferredAddress=function(){var a1=null;for(var a0 in L){var a2=L[a0];if(a1==null){a1=a2}if(a2.priv!=null){if(a1==null){a1=a2}if(a2.tag==null||a2.tag==0){a1=a2;break}}}return a1.addr};function aX(){var a0=$("#restore-backup-modal");a0.modal({keyboard:true,backdrop:"static",show:true});a0.find(".btn.btn-secondary").unbind().click(function(){a0.modal("hide")})}this.scanQRCode=function(a2,a0){var a1=$("#qr-code-reader-modal");a1.modal({keyboard:false,backdrop:"static",show:true});loadScript("wallet/qr.code.reader",function(){QRCodeReader.init(a1,function(a3){QRCodeReader.stop();a1.modal("hide");a2(a3)},function(a3){a1.modal("hide");a0(a3)})},a0);a1.find(".btn.btn-secondary").unbind().click(function(){QRCodeReader.stop();a1.modal("hide");a0()})};this.getActiveAddresses=function(){var a2=[];for(var a0 in L){var a1=L[a0];if(a1.tag!=2){a2.push(a1.addr)}}return a2};this.getArchivedAddresses=function(){var a2=[];for(var a0 in L){var a1=L[a0];if(a1.tag==2){a2.push(a1.addr)}}return a2};this.getLatestBlock=function(){return aM};function aD(a3){if(a3!=null){aM=a3;for(var a1 in G){var a0=G[a1];if(a0.blockHeight!=null&&a0.blockHeight>0){var a2=aM.height-a0.blockHeight+1;if(a2<=100){a0.setConfirmations(aM.height-a0.blockHeight+1)}else{a0.setConfirmations(null)}}else{a0.setConfirmations(0)}}i.sendEvent("did_set_latest_block")}}function B(a1,a0){loadScript("wallet/frame-modal",function(){showFrameModal({title:"Transaction Summary",description:"",src:root+"tx-summary/"+a1+"?result="+a0+"&symbol_btc="+symbol_btc.code+"&symbol_local="+symbol_local.code})})}this.deleteNote=function(a0){delete c[a0];d();i.backupWalletDelayed()};function ak(a0){return/^[\w\-,._ @\+]+$/.test(a0)}function n(a0,a1){(function(a3,a5){a3=$(a3);try{a3.data("popover").tip().remove();a3.removeData("popover")}catch(a6){}console.log("addNotePopover()");a3.popover({title:'Add Note <span style="float:right"><i class="icon-remove-sign"></i></span>',trigger:"manual",content:'<textarea style="width:97%;height:50px;margin-top:2px" placeholder="Enter the note here..."></textarea><div style="text-align:right"><button class="btn btn-small">Save</button></div>'});a3.popover("show");a3.unbind("mouseleave").mouseleave(function(){if(!a3.__timeout){a3.__timeout=setTimeout(function(){a3.popover("hide")},250)}});function a2(){if(a3.__timeout){clearTimeout(a3.__timeout);a3.__timeout=null}}var a4=a3.data("popover").tip().mouseenter(a2);a4.find("textarea").focus(a2);a4.mouseleave(function(){a3.__timeout=setTimeout(function(){a3.popover("hide")},250)});a4.find("i").unbind().click(function(){a3.popover("hide")});a4.find("button").click(function(){var a7=$.trim(a4.find("textarea").val());if(!ak(a7)){i.makeNotice("error","misc-error","Note must be contain letters and numbers only");return}if(a7.length>0){c[a5]=a7;i.backupWalletDelayed()}d()})})(a0,a1)}function aP(a0,a1,a2){(function(a3,a4,a6){a3=$(a3);try{a3.data("popover").tip().remove();a3.removeData("popover")}catch(a7){}var a8="Note";if(c[a6]){a8+=' <span style="float:right"><img src="'+resource+'delete.png" /></span>'}a3.popover({title:a8,trigger:"manual",content:a4});a3.popover("show");a3.unbind("mouseleave").mouseleave(function(){if(!a3.__timeout){a3.__timeout=setTimeout(function(){a3.popover("hide")},250)}});var a5=a3.data("popover").tip().mouseenter(function(){if(a3.__timeout){clearTimeout(a3.__timeout);a3.__timeout=null}});a5.find("img").unbind().click(function(){i.deleteNote(a6)});a5.mouseleave(function(){a3.__timeout=setTimeout(function(){a3.popover("hide")},250)})})(a0,a1,a2)}function E(a3,a8,a5){var a9=a3.result;var a4='<tr class="pointer" id="tx-'+a3.txIndex+'"><td class="hidden-phone" style="width:365px"><div><ul style="margin-left:0px;" class="short-addr">';var a1=true;if(a9>=0){for(var a2=0;a2<a3.inputs.length;++a2){var a0=a3.inputs[a2].prev_out;if(!a0||!a0.addr){a1=false;a4+='<span class="label">Newly Generated Coins</span>'}else{var a6=a8[a0.addr];if(a6){continue}a1=false;a4+=formatOutput(a0,a8,a5)}}}else{if(a9<0){for(var a2=0;a2<a3.out.length;++a2){var a0=a3.out[a2];var a6=a8[a0.addr];if(a6&&a0.type==0){continue}a1=false;a4+=formatOutput(a0,a8,a5)}}}if(a1){a4+='<span class="label">Moved Between Wallet</info>'}a4+="</ul></div></td><td><div>";var a7=a3.note?a3.note:c[a3.hash];if(a7){a4+='<img src="'+resource+'note.png" class="show-note"> '}else{a4+='<img src="'+resource+'note_grey.png" class="add-note"> '}if(a3.time>0){a4+=dateToString(new Date(a3.time*1000))}if(a3.confirmations==0){a4+=' <span class="label label-important hidden-phone">Unconfirmed Transaction!</span> '}else{if(a3.confirmations>0){a4+=' <span class="label label-info hidden-phone">'+a3.confirmations+" Confirmations</span> "}}a4+="</div></td>";if(a9>0){a4+='<td style="color:green"><div>'+formatMoney(a9,true)+"</div></td>"}else{if(a9<0){a4+='<td style="color:red"><div>'+formatMoney(a9,true)+"</div></td>"}else{a4+="<td><div>"+formatMoney(a9,true)+"</div></td>"}}if(a3.balance==null){a4+="<td></td></tr>"}else{a4+='<td class="hidden-phone"><div>'+formatMoney(a3.balance)+"</div></td></tr>"}return a4}function aa(){O();if(aE==null){$("#balance").html("Loading...")}else{$("#balance").html(formatSymbol(aE,symbol,true));$("#balance2").html(formatSymbol(aE,(symbol===symbol_local)?symbol_btc:symbol_local),true)}return k.attr("id")}function d(a0){var a1=aa();if("send-coins"==a1){v(a0)}else{if("home-intro"==a1){f(a0)}else{if("receive-coins"==a1){aZ(a0)}else{if("my-transactions"==a1){ab(a0)}}}}}function f(a0){$("#summary-n-tx").html(N);$("#summary-received").html(formatMoney(ay,true));$("#summary-sent").html(formatMoney(X,true));$("#summary-balance").html(formatMoney(aE,symbol));$(".paper-wallet-btn").unbind().click(function(){loadScript("wallet/paper-wallet",function(){PaperWallet.showModal()})});var a2=i.getPreferredAddress();if(a2==null){return}if(i.isWatchOnly(a2)){$(".no-watch-only").hide()}else{$(".no-watch-only").show();var a1=$("#my-primary-address");if(a1.text()!=a2){a1.text(a2);loadScript("wallet/jquery.qrcode",function(){$("#my-primary-addres-qr-code").empty().qrcode({width:125,height:125,text:a2})})}}$("#tweet-for-btc").unbind().click(function(){i.openWindow("https://twitter.com/share?url=https://blockchain.info/wallet&hashtags=tweet4btc,bitcoin,"+a2+"&text=Sign Up For a Free Bitcoin Wallet @ Blockchain.info")})}function W(){var a0=$("#export-warning").show();var a1=$("#import-export-content").hide();$("#show-import-export").unbind().click(function(){i.getMainPassword(function(){a0.hide();loadScript("wallet/import-export",function(){ImportExport.init(a1,function(){a1.show()},function(){al($("#home-intro"))})},function(a2){i.makeNotice("error","misc-error",a2);al($("#home-intro"))})},function(){al($("#home-intro"))})})}function ab(){var a1=null;var a3=0;if(a1!=null){clearInterval(a1);a1=null}var a0;if(t.tx_display==0){$("#transactions-detailed").hide();a0=$("#transactions-compact").show().find("tbody").empty()}else{$("#transactions-compact").hide();a0=$("#transactions-detailed").empty().show()}if(G.length==0){$("#transactions-detailed, #transactions-compact").hide();$("#no-transactions").show();return}else{$("#no-transactions").hide()}var a2=function(){for(var a7=a3;a7<G.length&&a7<(a3+i.getNTransactionsPerPage());++a7){var a6=G[a7];if(t.tx_display==0){a0.append(aV($(E(a6,L,h)),a6))}else{a0.append(a6.getHTML(L,h))}}a3+=i.getNTransactionsPerPage();if(a3<G.length){a1=setTimeout(a2,15)}else{setupSymbolToggle();O();var a5=$(".pagination ul").empty();if(aC==0&&G.length<i.getNTransactionsPerPage()){a5.hide();return}else{a5.show()}var a4=Math.ceil(aY/i.getNTransactionsPerPage());var a9=" disabled";if(aC>0){a9=""}var ba=10;var a8=Math.max(0,Math.min(aC-(ba/2),a4-ba));a5.append($('<li class="prev'+a9+'"><a>← Previous</a></li>').click(function(){i.setPage(aC-1)}));if(a8>0){a5.append($("<li><a>≤</a></li>").click(function(){i.setPage(0)}))}for(var a7=a8;a7<a4&&a7<a8+ba;++a7){(function(bb){var bc="";if(aC==bb){bc=' class="active"'}a5.append($("<li"+bc+'><a class="hidden-phone">'+(bb+1)+"</a></li>").click(function(){i.setPage(bb)}))})(a7)}if(a8+ba<a4){a5.append($("<li><a>≥</a></li>").click(function(){i.setPage(a4-1)}))}var a9=" disabled";if(aC<a4-1){a9=""}a5.append($('<li class="next'+a9+'"><a>Next →</a></li>').click(function(){i.setPage(aC+1)}))}};a2()}this.setPage=function(a0){aC=a0;scroll(0,0);i.get_history()};function w(){loadScript("wallet/frame-modal",function(){showFrameModal({title:"Export History",description:"",src:root+"export-history?active="+i.getActiveAddresses().join("|")+"&archived="+i.getArchivedAddresses().join("|")})})}this.loadAdverts=function(a0){$.ajax({type:"GET",dataType:"json",url:"https://blockchain.info/adverts_feed",timeout:60000,success:function(a1){if(a1&&a1.partners){V(a1.partners)}},error:function(a1){}})};function V(a8){var a1=$("#partner-home-buttons");if(a8.home_buttons&&a8.home_buttons.length>0){a1.show();a1.find("p").empty();for(var bi in a8.home_buttons){var a0=a8.home_buttons[bi];var bg=$('<a class="btn" style="margin-left:3px;margin-bottom:3px;" href="" target="blank"><img src=""></a>');if(a0.button_class){bg.addClass(a0.button_class)}bg.attr("href",a0.link);bg.text(" "+a0.title);if(a0.image){bg.prepend("<img>").find("img").attr("src",a0.image.replace("{0}",resource))}a1.find("p").append(bg)}}else{a1.hide()}var a5=$("#send-coins-nav");a5.find("li.send_partner").remove();var bh=$("#partners-send-divider");if(a8.send_buttons&&a8.send_buttons.length>0){bh.show().next().show();for(var bi in a8.send_buttons){var a0=a8.send_buttons[bi];var a2=$('<li class="send_partner"><a target="blank"></a></li>');var bg=a2.find("a");bg.attr("href",a0.link);bg.text(" "+a0.title);if(a0.image){bg.prepend('<i class="icon-dice" style="background-position:0px;width:16px;height:16px;"></i>').find("i").css("background-image","url("+a0.image.replace("{0}",resource)+")")}bh.next().after(a2)}}else{bh.hide().next().hide()}var bf=$("#home-deposit-container").empty();if(a8.deposit_buttons.length>0){bf.show();var ba=$('<ul id="myTab" class="nav nav-tabs">');var a6={US:[],GB:[],EU:[]};var a3=[];for(var bi in a8.deposit_buttons){var a0=a8.deposit_buttons[bi];if(a0.country_code==null||a0.country_code.length==0){a3.push(a0);continue}var a4=a6[a0.country_code];if(a4==null){a4=[];a6[a0.country_code]=a4}a4.push(a0)}var a7=0;for(var bb in a6){var a4=a6[bb];if(a4.length==0&&a3.length==0){continue}var a9=$("<li><a></a></li>");if(a7==0){a9.addClass("active")}var bg=a9.find("a");bg.attr("href","#deposit-"+bb.toLowerCase());bg.text(" "+bb.toUpperCase());bg.prepend("<img>").find("img").attr("src",resource+"flags/"+bb.toLowerCase()+".png");++a7;ba.append(a9)}ba.find("a").click(function(){$(this).tab("show")});bf.append(ba);var bd=$('<div class="tab-content page-header">');var a7=0;for(var bb in a6){var a4=a6[bb];var bc=$('<div class="tab-pane" style="text-align:right">');if(a7==0){bc.addClass("active")}bc.attr("id","deposit-"+bb.toLowerCase());a4=a4.concat(a3);if(a4.length==0){continue}for(var be in a4){var a0=a4[be];var bg=$('<a style="margin-left:3px;" class="btn" target="blank"></a>');if(a0.button_class){bg.addClass(a0.button_class)}bg.attr("href",a0.link);bg.text(" "+a0.title);if(a0.image){bg.prepend("<img>").find("img").attr("src",a0.image.replace("{0}",resource))}bc.append(bg)}++a7;bd.append(bc)}bf.append(bd)}else{bf.hide()}}function K(a3,a2){if(!a2){if(a3.mixer_fee){y=a3.mixer_fee}J=a3.recommend_include_fee;if(a3.info){if(a3.info.symbol_local){setLocalSymbol(a3.info.symbol_local)}if(a3.info.symbol_btc){setBTCSymbol(a3.info.symbol_btc)}if(a3.info.notice){i.makeNotice("error","misc-error",a3.info.notice)}}}if(a3.disable_mixer){$("#shared-addresses,#send-shared").hide()}aJ=a3.sharedcoin_endpoint;G.length=0;if(a3.wallet==null){ay=0;X=0;aE=0;N=0;aY=0;return}ay=a3.wallet.total_received;X=a3.wallet.total_sent;aE=a3.wallet.final_balance;N=a3.wallet.n_tx;aY=a3.wallet.n_tx_filtered;for(var a1=0;a1<a3.addresses.length;++a1){if(L[a3.addresses[a1].address]){L[a3.addresses[a1].address].balance=a3.addresses[a1].final_balance}}for(var a1=0;a1<a3.txs.length;++a1){var a0=TransactionFromJSON(a3.txs[a1]);a0.result=u(a0,false);G.push(a0)}if(!a2){if(a3.info.latest_block){aD(a3.info.latest_block)}}i.sendEvent("did_multiaddr")}this.handleURI=function(a1,a0){loadScript("wallet/jsuri-1.1.1",function(){try{var a3=new Uri(a1);var a2=new Bitcoin.Address(a3.host());a0.find('input[name="send-to-address"]').val(a2.toString());var a4=parseFloat(a3.getQueryParamValue("amount"));if(a4>0&&!isNaN(a4)){a0.find(".send-value").val(a4)}}catch(a5){console.log(a5);i.makeNotice("error","error","Invalid Bitcoin Address or URI")}},function(){i.makeNotice("error","error","Invalid Bitcoin Address or URI")})};function aR(){M();Z=setTimeout(i.logout,i.getLogoutTime());i.sendEvent("did_decrypt");i.get_history(null,function(){MyStore.get("multiaddr",function(a3){if(a3!=null){K($.parseJSON(a3),true);d()}})});$("#initial_error,#initial_success").remove();var a2=decodeURIComponent(window.location.hash.replace("#",""));if(a2.indexOf("bitcoin:")==0){var a0=$("#send-coins");al(a0);var a1=a0.find(".tab-pane.active").find(".recipient").first();i.handleURI(a2,a1)}else{al($("#home-intro"))}window.location.hash=""}function g(a0,a3,a1){var a2={method:"wallet.aes.json",format:"json",checksum:a0};i.securePost("wallet",a2,function(a4){if(!a4.payload||a4.payload=="Not modified"){if(a3){a3()}}else{if(a1){a1()}}},function(a4){if(a1){a1()}})}function M(a2,a0){var a1={method:"wallet.aes.json",format:"json"};if(aF&&aF.length>0){a1.checksum=aF}i.setLoadingText("Checking For Wallet Updates");i.securePost("wallet",a1,function(a3){if(a3.storage_token){if(U==null||U.indexOf(a3.storage_token)==-1){MyStore.put("storage_token",(U?U+"|":"")+a3.storage_token)}}if(!a3.payload||a3.payload=="Not modified"){if(a2){a2()}return}i.setEncryptedWalletData(a3.payload);ag(function(){i.get_history();d();if(a2){a2()}},function(){if(a0){a0()}})},function(a3){if(a0){a0()}})}function ag(a1,a0){if(ao==null||ao.length==0){a0("No Wallet Data To Decrypt");return}i.decryptWallet(ao,aO,function(a9,a7){try{e=a9.sharedKey;if(!e||e.length==0||e.length!=36){throw"Shared Key is invalid"}if(a7){T=a7.version;S=a7.pbkdf2_iterations}if(a9.double_encryption&&a9.dpasswordhash){H=a9.double_encryption;x=a9.dpasswordhash}if(a9.options){$.extend(t,a9.options)}L={};for(var a3=0;a3<a9.keys.length;++a3){var a2=a9.keys[a3];if(!a2.addr||!ak(a2.addr)){i.makeNotice("error","null-error","Your wallet contains an invalid address. This is a sign of possible corruption, please double check all your BTC is accounted for. Backup your wallet to remove this error.",15000);continue}if(a2.tag==1||!ak(a2.tag)){a2.tag=null}if(a2.label&&!ak(a2.label)){a2.label=null}L[a2.addr]=a2}h={};if(a9.address_book){for(var a3=0;a3<a9.address_book.length;++a3){var a5=a9.address_book[a3];if(a5.label&&ak(a5.label)&&ak(a5.addr)){i.addAddressBookEntry(a5.addr,a5.label)}}}if(a9.hd_wallets){R=a9.hd_wallets}if(a9.tx_notes){for(var a6 in a9.tx_notes){var a4=a9.tx_notes[a6];if(a4&&ak(a4)){c[a6]=a4}}}if(aF==null||aF.length==0){aF=an()}a();a1()}catch(a8){a0(a8)}},a0)}this.getPassword=function(a5,a6,a3){if(!a5.is(":visible")){a5.trigger("hidden");a5.unbind()}a5.modal({keyboard:false,backdrop:"static",show:true});a5.center();var a4=a5.find('input[name="password"]');var a8=a4,a0=false,a7=false;a5.find(".vkeyboard li").unbind().click(function(){var bb=$(this),ba=bb.html();if(bb.hasClass("left-shift")||bb.hasClass("right-shift")){$(".letter").toggleClass("uppercase");$(".symbol span").toggle();a0=(a0===true)?false:true;a7=false;return false}if(bb.hasClass("capslock")){$(".letter").toggleClass("uppercase");a7=true;return false}if(bb.hasClass("delete")){var a9=a8.val();a8.val(a9.substr(0,a9.length-1));return false}if(bb.hasClass("symbol")){ba=$("span:visible",bb).html()}if(bb.hasClass("space")){ba=" "}if(bb.hasClass("tab")){ba="\t"}if(bb.hasClass("return")){ba="\n"}if(bb.hasClass("uppercase")){ba=ba.toUpperCase()}if(a0===true){$(".symbol span").toggle();if(a7===false){$(".letter").toggleClass("uppercase")}a0=false}a8.val(a8.val()+ba)});a4.keypress(function(a9){if(a9.keyCode==13){a9.preventDefault();a5.find(".btn.btn-primary").click()}});a4.val("");var a1=a5.find(".btn.btn-primary");a1.click(function(){if(a6){a3=null;var a9=a6;a6=null;setTimeout(function(){a5.modal("hide");a9(a4.val())},10)}else{a5.modal("hide")}});var a2=a5.find(".btn.btn-secondary");a2.click(function(){if(a3){var a9=a3;a3=null;a6=null;setTimeout(function(){a5.modal("hide");try{a9()}catch(ba){i.makeNotice("error","misc-error",ba)}},10)}else{a5.modal("hide")}});a5.on("hidden",function(){a4.unbind();a2.unbind();a1.unbind();a5.unbind();if(a3){var a9=a3;a3=null;a6=null;setTimeout(function(){try{a9()}catch(ba){i.makeNotice("error","misc-error",ba)}},10)}})};this.makePairingQRCode=function(a1,a0){i.getMainPassword(function(){loadScript("wallet/jquery.qrcode",function(){try{if(a0==1){i.securePost("wallet",{method:"pairing-encryption-password"},function(a3){a1($("<div></div>").qrcode({width:300,height:300,text:"1|"+P+"|"+i.encrypt(e+"|"+Crypto.util.bytesToHex(UTF8.stringToBytes(aO)),a3,10)}))},function(a3){i.makeNotice("error","misc-error",a3)})}else{if(a0==0){a1($("<div></div>").qrcode({width:300,height:300,text:P+"|"+e+"|"+aO}))}}}catch(a2){i.makeNotice("error","misc-error",a2)}})},function(){i.logout()})};this.getMainPassword=function(a1,a0){if(D>new Date().getTime()-Q){return a1(aO)}i.getPassword($("#main-password-modal"),function(a2){if(aO==a2){D=new Date().getTime();if(a1){try{a1(aO)}catch(a3){i.makeNotice("error","misc-error",a3)}}}else{i.makeNotice("error","misc-error","Password incorrect.");if(a0){try{a0()}catch(a3){i.makeNotice("error","misc-error",a3)}}}},a0)};this.getSecondPassword=function(a2,a0){if(!H||aq!=null){if(a2){try{a2(aq)}catch(a1){i.makeNotice("error","misc-error",a1)}}return}i.getPassword($("#second-password-modal"),function(a3){try{if(i.validateSecondPassword(a3)){if(a2){try{a2(a3)}catch(a4){console.log(a4);i.makeNotice("error","misc-error",a4)}}}else{i.makeNotice("error","misc-error","Password incorrect.");if(a0){try{a0()}catch(a4){i.makeNotice("error","misc-error",a4)}}}}catch(a4){if(a0){try{a0()}catch(a4){i.makeNotice("error","misc-error",a4)}}}},a0)};function b(){if(C||aB){return}function a1(a5){aB=false;i.makeNotice("error","misc-error",a5);i.sendEvent("error_restoring_wallet")}try{aB=true;var a0=$("#restore-password");aO=a0.val();a0.val("");D=new Date().getTime();if(ao==null||ao.length==0){i.setLoadingText("Validating Authentication key");var a2=$.trim($(".auth-"+r).find(".code").val());if(a2.length==0||a2.length>255){throw"You must enter a Two Factor Authentication code"}var a3={guid:P,payload:a2,length:a2.length,method:"get-wallet",format:"plain"};if(U){a3.storageToken=U}$.ajax({timeout:60000,type:"POST",url:root+"wallet",data:a3,success:function(a5){try{if(a5==null||a5.length==0){throw"Server Return Empty Wallet Data"}if(a5!="Not modified"){i.setEncryptedWalletData(a5)}$(".auth-"+r).hide();$(".auth-0").show();ag(function(){aB=false;o();aR()},a1)}catch(a6){a1(a6)}},error:function(a5){a1(a5.responseText)}})}else{ag(function(){aB=false;o();aR()},a1)}}catch(a4){a1(a4)}}this.getIsInitialized=function(){return C};function a(){if(C){return}az("error");webSocketConnect(z);C=true;$("#tech-faq").hide();$("#intro-text").hide();$("#large-summary").show()}this.connectWebSocket=function(){webSocketConnect(z)};this.quickSendNoUI=function(a2,a1,a0){loadScript("wallet/signer",function(){i.getSecondPassword(function(){try{var a4=initNewTx();a4.webworker_resource_prefix="";a4.from_addresses=i.getActiveAddresses();a4.to_addresses.push({address:new Bitcoin.Address(a2),value:Bitcoin.Util.parseValue(a1)});a4.addListener(a0);a4.start()}catch(a3){a0.on_error(a3)}},function(a3){a0.on_error(a3)})})};function I(){i.setLoadingText("Sending email backup");i.securePost("wallet",{method:"email-backup"},function(a0){i.makeNotice("success","backup-success",a0)},function(a0){i.makeNotice("error","misc-error",a0.responseText)})}this.backupWalletDelayed=function(a3,a2,a1,a0){if(at){clearInterval(at);at=null}at=setTimeout(function(){i.backupWallet(a3,a2,a1,a0)},3000)};this.backupWallet=function(a6,a5,a1){if(at){clearInterval(at);at=null}var a0=function(a7){i.sendEvent("on_backup_wallet_error");i.makeNotice("error","misc-error","Error Saving Wallet: "+a7,10000);M();d();if(a1!=null){a1(a7)}};try{if(a6==null){a6="update"}if(aK(L)==0){throw"Addresses Length 0"}var a2=i.makeWalletJSON();var a4=i.encryptWallet(a2,aO);if(a4.length==0){throw"Error encrypting the JSON output"}i.decryptWallet(a4,aO,function(bb){try{var a8=aF;i.setLoadingText("Saving wallet");i.setEncryptedWalletData(a4);var a7=aF;var a9={length:a4.length,payload:a4,checksum:a7,old_checksum:a8,method:a6,format:"plain",language:ac};if(A){a9.active=i.getActiveAddresses().join("|")}i.securePost("wallet",a9,function(bc){g(a7,function(){for(var bd in L){var be=L[bd];if(be.tag==1){delete be.tag}}i.makeNotice("success","misc-success",bc);d();if(a5!=null){a5()}i.sendEvent("on_backup_wallet_success")},function(){a0("Checksum Did Not Match Expected Value")})},function(bc){a0(bc.responseText)})}catch(ba){a0(ba)}})}catch(a3){a0(a3)}};function aS(a0){if(H){if(aq==null){throw"Cannot encrypt private key without a password"}return i.encrypt(a0,e+aq,i.getSecondPasswordPbkdf2Iterations())}else{return a0}return null}this.isBase58=function(a2,a1){for(var a0=0;a0<a2.length;++a0){if(a2[a0]<0||a2[a0]>58){return false}}return true};this.encrypt=function(a2,a1,a0){return Crypto.AES.encrypt(a2,a1,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:a0})};this.encryptWallet=function(a1,a0){return JSON.stringify({pbkdf2_iterations:i.getMainPasswordPbkdf2Iterations(),version:2,payload:i.encrypt(a1,a0,i.getMainPasswordPbkdf2Iterations())})};this.decryptWallet=function(a1,a9,ba,a4){try{i.setLoadingText("Decrypting Wallet");i.sendEvent("on_wallet_decrypt_start");var a6=function(bb,bc){i.sendEvent("on_wallet_decrypt_finish");if(ba!=null){ba(bb,bc)}};var a8=function(bb){i.sendEvent("on_wallet_decrypt_finish");if(a4!=null){a4(bb)}};var a0=null;try{var a0=$.parseJSON(a1)}catch(a3){}var a2=function(){try{var bc=Crypto.AES.decrypt(a0.payload,a9,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:a0.pbkdf2_iterations});var bb=$.parseJSON(bc);a6(bb,a0)}catch(bd){a8("Error Decrypting Wallet. Please check your password is correct.")}};if(a0&&a0.payload&&a0.pbkdf2_iterations){if(a0.version!=av){throw"Wallet version "+a0.version+" not supported"}if(a0.pbkdf2_iterations>0){var a7=$("#decrypting-progress-modal");var a5=setTimeout(function(){a7.modal({keyboard:false,backdrop:"static",show:true});a7.center()},500);i.decryptWebWorker(a0.payload,a9,a0.pbkdf2_iterations,function(bc){clearTimeout(a5);a7.modal("hide");try{var bb=$.parseJSON(bc);a6(bb,a0)}catch(bd){a2()}},function(bb){clearTimeout(a5);a7.modal("hide");a2()})}else{a2()}}else{i.decrypt(a1,a9,10,function(bc){try{var bb=$.parseJSON(bc);try{a6(bb)}catch(bd){console.log(bd)}return true}catch(bd){return false}},function(){a8("Error Decrypting Wallet. Please check your password is correct.")})}}catch(a3){a8(a3)}};this.getWebWorkerLoadPrefix=function(){return resource+"wallet/"};this.decryptWebWorker=function(a3,a7,a2,a8,a6){var a0=false;var a5=function(a9){if(!a0){a6(a9);a0=true}};try{var a1=new Worker(i.getWebWorkerLoadPrefix()+"signer"+(min?".min.js":".js"));a1.addEventListener("message",function(ba){var a9=ba.data;try{switch(a9.cmd){case"on_decrypt":a8(a9.data);a1.terminate();break;case"on_error":throw a9.e}}catch(ba){a1.terminate();a5(ba)}},false);a1.addEventListener("error",function(a9){a5(a9)});a1.postMessage({cmd:"load_resource",path:i.getWebWorkerLoadPrefix()+"bitcoinjs"+(min?".min.js":".js")});a1.postMessage({cmd:"decrypt",data:a3,password:a7,pbkdf2_iterations:a2})}catch(a4){a5(a4)}};this.decrypt=function(a4,a3,a1,a6,a2){try{var a0=Crypto.AES.decrypt(a4,a3,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:a1});if(a0!=null&&a0.length>0){if(a6(a0)){return a0}}}catch(a5){console.log(a5)}if(a1!=10){try{var a0=Crypto.AES.decrypt(a4,a3,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:10});if(a0!=null&&a0.length>0){if(a6(a0)){return a0}}}catch(a5){console.log(a5)}}try{var a0=Crypto.AES.decrypt(a4,a3);if(a0!=null&&a0.length>0){if(a6(a0)){return a0}}}catch(a5){console.log(a5)}try{var a0=Crypto.AES.decrypt(a4,a3,{mode:new Crypto.mode.OFB(Crypto.pad.iso7816),iterations:1});if(a0!=null&&a0.length>0){if(a6(a0)){return a0}}}catch(a5){console.log(a5)}try{var a0=Crypto.AES.decrypt(a4,a3,{mode:new Crypto.mode.CBC(Crypto.pad.iso10126),iterations:1});if(a0!=null&&a0.length>0){if(a6(a0)){return a0}}}catch(a5){console.log(a5)}if(a2){a2()}return null};this.handleNTPResponse=function(a4,a5){var a2=(new Date()).getTime();if(a4.clientTimeDiff&&a4.serverTime){var a0=a2-a4.serverTime;var a1=(a4.clientTimeDiff-a2+a5-a0)/2;var a3=(a0-a1)/2;if(ad){aQ=(aQ+a3)/2}else{aQ=a3;ad=true;MyStore.put("server_time_offset",""+aQ)}console.log("Server Time offset "+aQ+"ms - This offset "+a3)}};this.setGUID=function(a2,a0){if(C){throw"Cannot Set GUID Once Initialized"}i.setLoadingText("Downloading Wallet");$("#initial_error,#initial_success").remove();var a1=$("#restore-wallet-continue");a1.prop("disabled",true);var a4=(new Date()).getTime();var a3={format:"json",resend_code:a0,ct:a4};if(aF){a3.checksum=aF}if(e){a3.sharedKey=e}if(U){a3.storageToken=U}$.ajax({type:"GET",dataType:"json",url:root+"wallet/"+a2,data:a3,timeout:60000,success:function(a5){i.handleNTPResponse(a5,a4);a1.prop("disabled",false);if(!a5.guid){i.makeNotice("error","misc-error","Server returned null guid.");return}$(".auth-"+r).hide();af=a5.extra_seed;P=a5.guid;r=a5.auth_type;aT=a5.real_auth_type;A=a5.sync_pubkeys;if(a5.payload&&a5.payload.length>0&&a5.payload!="Not modified"){i.setEncryptedWalletData(a5.payload)}i.sendEvent("did_set_guid");war_checksum=a5.war_checksum;setLocalSymbol(a5.symbol_local);setBTCSymbol(a5.symbol_btc);$("#restore-guid").val(P);$(".auth-"+r).show();if(a5.initial_error){i.makeNotice("error","misc-error",a5.initial_error)}if(a5.initial_success){i.makeNotice("success","misc-success",a5.initial_success)}MyStore.get("guid",function(a6){if(a6!=P){MyStore.remove("guid");MyStore.remove("multiaddr");MyStore.remove("payload");if(P!=F){MyStore.put("guid",P)}}});if(a5.language&&ac!=a5.language){i.setLanguage(a5.language)}},error:function(a5){a1.prop("disabled",false);MyStore.get("guid",function(a6){i.sendEvent("did_fail_set_guid");try{var a8=$.parseJSON(a5.responseText);if(a8.authorization_required){loadScript("wallet/poll-for-session-guid",function(){pollForSessionGUID()})}if(a8.initial_error){i.makeNotice("error","misc-error",a8.initial_error)}return}catch(a7){}if(a5.responseText){i.makeNotice("error","misc-error",a5.responseText)}else{i.makeNotice("error","misc-error","Error changing wallet identifier")}})}})};function j(a0){var a1=B58.encode(a0);return aS(a1)}this.decryptPK=function(a0){if(H){if(aq==null){throw"Cannot decrypt private key without a password"}return i.decrypt(a0,e+aq,i.getSecondPasswordPbkdf2Iterations(),i.isBase58)}else{return a0}return null};this.decodePK=function(a1){if(!a1){throw"null PK passed to decodePK"}var a0=i.decryptPK(a1);if(a0!=null){return B58.decode(a0)}return null};this.signmessage=function(a0,a2){var a4=L[a0];if(!a4.priv){throw"Cannot sign a watch only address"}var a3=i.decodePK(a4.priv);var a1=new Bitcoin.ECKey(a3);return Bitcoin.Message.signMessage(a1,a2,a4.addr)};this.validateSecondPassword=function(a1){var a0=Crypto.SHA256(e+a1,{asBytes:true});var a4=aj(a0,i.getSecondPasswordPbkdf2Iterations()-1);if(a4==x){aq=a1;return true}if(i.getSecondPasswordPbkdf2Iterations()!=10){var a2=aj(a0,10-1);if(a2==x){aq=a1;x=a4;return true}}if(Crypto.util.bytesToHex(a0)==x){aq=a1;x=a4;return true}var a3=Crypto.SHA256(a1);if(a3==x){aq=a1;x=a4;return true}return false};this.runCompressedCheck=function(){var a0=[];var a2={};for(var a3 in L){var a7=L[a3];if(a7.priv!=null){var a6=i.decodePK(a7.priv);var a4=new Bitcoin.ECKey(a6);var a1=a4.getBitcoinAddress().toString();var a5=a4.getBitcoinAddressCompressed().toString();if(a7.addr!=a1){a2[a1]=a7.priv;a0.push(a1)}if(a7.addr!=a5){a2[a5]=a7.priv;a0.push(a5)}}}if(a0.length==0){alert("to_check length == 0")}BlockchainAPI.get_balances(a0,function(bb){var bc=0;for(var ba in bb){var bd=bb[ba].final_balance;if(bd>0){var a9=new Bitcoin.ECKey(i.decodePK(a2[ba]));var a8=a9.getBitcoinAddress().toString();if(i.addPrivateKey(a9,{compressed:a8!=ba,app_name:IMPORTED_APP_NAME,app_version:IMPORTED_APP_VERSION})){alert(formatBTC(bd)+" claimable in address "+ba)}}bc+=bd}alert(formatBTC(bc)+" found in compressed addresses");if(bc>0){i.backupWallet("update",function(){i.get_history()})}})};this.checkAllKeys=function(a0){for(var a1 in L){var a5=L[a1];if(a5.addr==null){throw"Null Address Found in wallet "+a1}if(a5.addr.toString()==null){throw"Error decoding wallet address "+a5.addr}if(a5.priv!=null){var a4=i.decodePK(a5.priv);var a3=new Bitcoin.ECKey(a4);var a2=a3.getBitcoinAddress().toString();if(a2!=a5.addr&&a3.getBitcoinAddressCompressed().toString()!=a5.addr){throw"Private key does not match bitcoin address "+a5.addr+" != "+a2}if(a0){a5.priv=j(a4)}}}i.makeNotice("success","wallet-success","Wallet verified.")};this.setMainPassword=function(a0){i.getMainPassword(function(){aO=a0;i.backupWallet("update",function(){i.logout()},function(){i.logout()})})};function al(a0){if(a0===k){return}if(k!=null){if($("#"+k.attr("id")+"-btn").length>0){$("#"+k.attr("id")+"-btn").parent().attr("class","")}k.hide()}k=a0;k.show();if($("#"+k.attr("id")+"-btn").length>0){$("#"+k.attr("id")+"-btn").parent().attr("class","active")}d(true)}function aK(a2){var a1=0,a0;for(a0 in a2){a1++}return a1}function ai(a0){L[a0].priv=null}function ap(){if(aK(L)>=aH){i.makeNotice("error","misc-error","We currently support a maximum of "+aH+" private keys, please remove some unused ones.");return true}return false}function aW(a2,a0){var a1=L[a2];if(!a1||a1.length==0){L[a2]={addr:a2,priv:a0,balance:0};return true}else{if(!a1.priv&&a0){a1.priv=a0;return true}}return false}function p(){var a2=$("#add-address-book-entry-modal");a2.modal({keyboard:true,backdrop:"static",show:true});var a0=a2.find('input[name="label"]');var a1=a2.find('input[name="address"]');a0.val("");a1.val("");a2.find(".btn.btn-primary").unbind().click(function(){a2.modal("hide");var a4=$.trim(a0.val());var a3=$.trim(a1.val());if(a4.length==0||a3.length==0){i.makeNotice("error","misc-error","You must enter an address and label for the address book entry");return false}if(!ak(a4)||!ak(a3)){i.makeNotice("error","misc-error","Label and Bitcoin Address must contain letters and numbers only");return false}var a6;try{a6=new Bitcoin.Address(a3);if(a6==null){throw"Null address"}}catch(a5){i.makeNotice("error","misc-error","Bitcoin address invalid, please make sure you entered it correctly");return false}if(h[a3]!=null){i.makeNotice("error","misc-error","Bitcoin address already exists");return false}i.makeNotice("success","misc-success","Added Address book entry");i.addAddressBookEntry(a3,a4);i.backupWalletDelayed();$("#send-coins").find(".tab-pane").trigger("show",true)});a2.find(".btn.btn-secondary").unbind().click(function(){a2.modal("hide")})}this.logout=function(){if(aw){return}if(P==F){window.location=root+"wallet/logout"}else{$.ajax({type:"GET",timeout:60000,url:root+"wallet/logout",data:{format:"plain"},success:function(a0){window.location.reload()},error:function(){window.location.reload()}})}};function au(a6){var a8=$("#delete-address-modal");a8.modal({keyboard:true,backdrop:"static",show:true});a8.find(".btn.btn-primary").hide();a8.find(".btn.btn-danger").hide();$("#change-mind").hide();a8.find("#to-delete-address").html(a6.join(" "));a8.find("#delete-balance").empty();var a2=a8.find("#delete-balance");var a0=[];for(var a5 in a6){var a7=a6[a5];if(L[a7]&&L[a7].priv){a0.push(a6[a5])}}BlockchainAPI.get_balance(a0,function(a9){a8.find(".btn.btn-primary").show(200);a8.find(".btn.btn-danger").show(200);a2.html("Balance "+formatBTC(a9));if(a9>0){a2.css("color","red")}else{a2.css("color","black")}},function(){a8.find(".btn.btn-primary").show(200);a8.find(".btn.btn-danger").show(200);a2.text("Error Fetching Balance")});var a3=false;var a5=0;var a1=null;var a4=10;changeMind=function(){$("#change-mind").show();$("#change-mind-time").text(a4-a5)};a8.find(".btn.btn-primary").unbind().click(function(){changeMind();a8.find(".btn.btn-primary").hide();a8.find(".btn.btn-danger").hide();a1=setInterval(function(){if(a3){return}++a5;changeMind();if(a5==a4){$("#delete-address-modal").modal("hide");i.makeNotice("warning","warning-deleted","Private Key Removed From Wallet");for(var a9 in a6){ai(a6[a9])}d();i.backupWallet();clearInterval(a1)}},1000)});a8.find(".btn.btn-danger").unbind().click(function(){changeMind();a8.find(".btn.btn-primary").hide();a8.find(".btn.btn-danger").hide();a1=setInterval(function(){if(a3){return}++a5;changeMind();if(a5==a4){try{$("#delete-address-modal").modal("hide");i.makeNotice("warning","warning-deleted","Address & Private Key Removed From Wallet");for(var a9 in a6){i.deleteAddress(a6[a9])}d();i.backupWallet("update",function(){i.get_history()})}finally{clearInterval(a1)}}},1000)});a8.unbind().on("hidden",function(){if(a1){a3=true;clearInterval(a1);a1=null}});a8.find(".btn.btn-secondary").unbind().click(function(){a8.modal("hide")})}function aG(){var a2=[];for(var a0 in h){a2.push(h[a0])}for(var a0 in L){var a1=L[a0];if(a1.tag!=2&&a1.label){a2.push(a1.label)}}return a2}this.sweepAddressesModal=function(a1,a0){i.getSecondPassword(function(){var a3=$("#sweep-address-modal");a3.modal("show");BlockchainAPI.get_balance(a1,function(a4){a3.find(".balance").text("Amount: "+formatBTC(a4))},function(){a3.find(".balance").text("Error Fetching Balance")});var a2=a3.find('select[name="change"]');m(a2,true);a3.find(".btn.btn-primary").unbind().click(function(){loadScript("wallet/signer",function(){BlockchainAPI.get_balance(a1,function(a5){var a6=initNewTx();var a4=a2.val();if(a4=="any"){a4=i.getPreferredAddress()}a6.fee=a6.base_fee;a6.to_addresses.push({address:new Bitcoin.Address(a4),value:BigInteger.valueOf(a5).subtract(a6.fee)});a6.from_addresses=a1;a6.extra_private_keys=a0;a6.start()},function(){i.makeNotice("error","misc-error","Error Getting Address Balance")})});a3.modal("hide")});a3.find(".btn.btn-secondary").unbind().click(function(){a3.modal("hide")})})};this.openWindow=function(a1){function a0(a4){var a3=false;try{if(typeof a4=="undefined"||!a4){a3=true}else{if(a4&&a4.closed){a3=false}else{if(a4&&a4.test){a3=false}}}}catch(a5){}return a3}var a2=window.open(a1,null,"scroll=1,status=1,location=1,toolbar=1");if(a0(a2)){i.makeNotice("error","misc-error","Popup Blocked. Try and click again.");return false}else{return true}};function aI(){try{$(".pop").popover({offset:10,placement:"bottom"})}catch(a0){}}function o(){if(Y){return}Y=true;$("#add-address-book-entry-btn").click(function(){p()});$("#home-intro-btn").click(function(){al($("#home-intro"))});$("#my-transactions-btn").click(function(){al($("#my-transactions"))});$("#send-coins-btn").click(function(){al($("#send-coins"))});$("#import-export-btn").click(function(){al($("#import-export"));W()});$("#chord-diagram").click(function(){loadScript("wallet/frame-modal",function(){showFrameModal({title:"Address Relationships",description:"",src:root+"taint/"+i.getActiveAddresses().join("|")})})});$("#verify-message").click(function(){loadScript("wallet/address_modal",function(){verifyMessageModal()})});$("#generate-cold-storage").click(function(){loadScript("wallet/paper-wallet",function(){PaperWallet.showColdStorageModal()},null,true)});$("#group-received").click(function(){loadScript("wallet/taint_grouping",function(){try{loadTaintData()}catch(a0){i.makeNotice("error","misc-error","Unable To Load Taint Grouping Data")}})});$("#my-account-btn").click(function(){al($("#my-account"));var a0=$("#account-settings-warning").show();var a1=$("#my-account-content").hide();$("#show-account-settings").unbind().click(function(){i.getMainPassword(function(){a0.hide();loadScript("wallet/account",function(){AccountSettings.init(a1,function(){a1.show()},function(){al($("#home-intro"))})},function(a2){i.makeNotice("error","misc-error",a2);al($("#home-intro"))})},function(){al($("#home-intro"))})})});$("#shared-addresses").on("show",function(){var a0=$(this);loadScript("wallet/shared-addresses",function(){buildSharedTable(a0)})});$("#active-addresses").on("show",function(){var a6=$(this).find("table:first");a6.find("tbody:gt(0)").remove();var a3=a6.find("tbody").empty();for(var a5 in L){var a7=L[a5];if(a7.tag==2||a7.tag==1){continue}var a4="";if(a7.tag==1){a4=' <font color="red" class="pop" title="Not Synced" data-content="This is a new address which has not yet been synced with our the server. Do not used this address yet.">(Not Synced)</font>'}else{if(a7.priv==null){a4=' <font color="red" class="pop" title="Watch Only" data-content="Watch Only means there is no private key associated with this bitcoin address. <br /><br /> Unless you have the private key stored elsewhere you do not own the funds at this address and can only observe the transactions.">(Watch Only)</font>'}}var a0="";var a2=a7.addr;if(a7.label!=null){a2=a7.label;a0='<span class="hidden-phone"> - '+a7.addr+"</span>"}var a1=$('<tr><td><div class="short-addr"><a href="'+root+"address/"+a7.addr+'" target="new">'+a2+"</a>"+a0+" "+a4+'<div></td><td><span style="color:green">'+formatMoney(a7.balance,true)+'</span></td> <td><div class="btn-group pull-right"><a class="btn btn-mini dropdown-toggle" data-toggle="dropdown" href="#"><span class="hidden-phone">Actions </span><span class="caret"></span></a><ul class="dropdown-menu"> <li><a href="#" class="pop act-archive" title="Archive Address" data-content="Click this button to hide the address from the main view. You can restore or delete later by finding it in the Archived addresses tab.">Archive Address</a></li> <li><a href="#" class="pop act-label" title="Label Address" data-content="Set the label for this address.">Label Address</a></li> <li><a href="#" class="pop act-qr" title="Show QR Code" data-content="Show a QR Code for this address.">QR Code</a></li> <li><a href="#" class="pop act-sign" title="Sign Message" data-content="Sign A message with this address.">Sign Message</a></li> <li><a href="#" class="pop act-request" title="Request Payment" data-content="Click here to create a new QR Code payment request. The QR Code can be scanned using most popular bitcoin software and mobile apps.">Create Payment Request</a></li> <li><a href="#" class="pop act-pubkey">Show Public Key</a></li> </ul></div></td></tr>');(function(a8){a1.find(".act-archive").click(function(){i.archiveAddr(a8)});a1.find(".act-label").click(function(){loadScript("wallet/address_modal",function(){showLabelAddressModal(a8)})});a1.find(".act-qr").click(function(){loadScript("wallet/address_modal",function(){showAddressModalQRCode(a8)})});a1.find(".act-pubkey").click(function(){i.getSecondPassword(function(){var a9=i.getPrivateKey(a8);if(a9==null){i.makeNotice("eror","misc-error","Public Key Unknown");return}var ba=new Bitcoin.ECKey(i.decodePK(a9));if(ba.getBitcoinAddressCompressed().toString()==a8){var bb=ba.getPubCompressed()}else{var bb=ba.getPub()}i.makeNotice("success","pub-key","Public Key of "+a8+" is "+Crypto.util.bytesToHex(bb),20000)})});a1.find(".act-sign").click(function(){loadScript("wallet/address_modal",function(){showAddressModalSignMessage(a8)})});a1.find(".act-request").click(function(){loadScript("wallet/frame-modal",function(){showFrameModal({title:"Create Payment Request",description:"Request Payment into address <b>"+a8+"</b>",src:root+"payment_request?address="+a8})})})})(a7.addr);if(a7.balance>0&&a7.priv){a6.prepend(a1)}else{a6.append(a1)}}aI()});$("#archived-addresses").on("show",function(){$("#archived-addr tbody").empty();var a1=$(this).find("tbody");var a0=i.getArchivedAddresses();var a2=function(){a1.empty();for(var a6 in a0){var a8=L[a0[a6]];if(a8.tag!=2||a8.tag==1){continue}var a5="";if(a8.priv==null){a5=' <font color="red">(Watch Only)</font>'}var a3="";var a4=a8.addr;if(a8.label!=null){a4=a8.label;a3='<span class="hidden-phone"> - '+a8.addr+"</span>"}var a7=$('<tr><td style="width:20px;"><input type="checkbox" class="archived_checkbox" value="'+a8.addr+'"></td><td><div class="short-addr"><a href="'+root+"address/"+a8.addr+'" target="new">'+a4+"</a>"+a3+" "+a5+'<div></td><td><span style="color:green">'+formatBTC(a8.balance)+'</span></td><td style="width:16px"><img src="'+resource+'unarchive.png" class="act-unarchive" /></td></tr>');(function(a9){a7.find(".act-unarchive").click(function(){i.unArchiveAddr(a9)})})(a8.addr);if(a8.balance>0&&a8.priv){a1.prepend(a7)}else{a1.append(a7)}}};a2();BlockchainAPI.get_balances(a0,function(a3){a2()},function(a3){i.makeNotice("error","misc-error",a3)})});$("#archived-select-all").click(function(){$(".archived_checkbox").prop("checked",true)});$("#archived-select-none").click(function(){$(".archived_checkbox").prop("checked",false)});$("#archived-sweep").click(function(){var a0=[];$(".archived_checkbox:checked").each(function(){var a1=L[$(this).val()];if(a1.priv==null){i.makeNotice("error","misc-error","Cannot Sweep Watch Only Address");return}a0.push(a1.addr)});if(a0.length==0){return}i.sweepAddressesModal(a0)});$("#archived-delete").click(function(){var a0=[];$(".archived_checkbox:checked").each(function(){a0.push($(this).val())});if(a0.length==0){return}au(a0)});$("#shared-never-ask").click(function(){SetCookie("shared-never-ask",$(this).is(":checked"))});$(".deposit-btn").click(function(){var a2=$(this);var a1=i.getPreferredAddress();var a0=a2.data("extra");if(a0==null){a0=""}loadScript("wallet/frame-modal",function(){showFrameModal({title:a2.data("title"),description:"Deposit into address <b>"+a1+"</b>",top_right:'Have Questions? Read <a href="'+a2.data("link")+'" target="new">How It Works</a>',src:root+"deposit?address="+a1+"&ptype="+a2.data("type")+"&guid="+P+a0})})});$(".withdraw-btn").click(function(){var a0=$(this);i.getSecondPassword(function(){var a1=i.getPreferredAddress();loadScript("wallet/frame-modal",function(){showFrameModal({title:a0.data("title"),description:"Your Wallet Balance is <b>"+formatBTC(aE)+"</b>",src:root+"withdraw?method="+a0.data("type")+"&address="+a1+"&balance="+aE+"&guid="+P})})})});$("#logout").click(i.logout);$("#refresh").click(function(){M(function(){i.get_history()})});$("#summary-n-tx-chart").click(function(){loadScript("wallet/frame-modal",function(){showFrameModal({title:"Number of transactions",description:"",src:root+"charts/n-transactions?show_header=false&address="+i.getActiveAddresses().join("|")})})});$("#summary-received-chart").click(function(){loadScript("wallet/frame-modal",function(){showFrameModal({title:"BTC Received Per Day",description:"",src:root+"charts/received-per-day?show_header=false&address="+i.getActiveAddresses().join("|")})})});$("#summary-balance-chart").click(function(){loadScript("wallet/frame-modal",function(){showFrameModal({title:"Wallet Balance",description:"",src:root+"charts/balance?show_header=false&address="+i.getActiveAddresses().join("|")})})});$("#new-addr").click(function(){M(function(){i.getSecondPassword(function(){var a1=i.generateNewKey();if(!a1||!a1.addr){throw"Error Generating New Address"}var a0=a1.addr;i.backupWallet("update",function(){i.makeNotice("info","new-address","Generated new Bitcoin Address "+a0);loadScript("wallet/address_modal",function(){showLabelAddressModal(a0)});i.get_history()})},function(){i.logout()})})});$(".tx_filter a").click(function(){aC=0;ax=$(this).data("value");i.get_history()});$(".tx_display a").click(function(){var a0=$(this).data("value");if(a0=="export"){w();return}t.tx_display=a0;d();i.backupWalletDelayed()});$("#email-backup-btn").click(function(){I()});$("#dropbox-backup-btn").click(function(){i.openWindow(root+"wallet/dropbox-login?guid="+P)});$("#gdrive-backup-btn").click(function(){i.openWindow(root+"wallet/gdrive-login?guid="+P)});$("#balance").click(function(){toggleSymbol();d()});$("#send-quick").on("show",function(a2,a1){var a0=$(this);s(a0,a1);a0.find(".send").unbind().click(function(){loadScript("wallet/signer",function(){startTxUI(a0,"quick",initNewTx())})})});$("#send-email").on("show",function(a2,a1){var a0=$(this);s(a0,a1);a0.find(".send").unbind().click(function(){loadScript("wallet/signer",function(){startTxUI(a0,"email",initNewTx())})})});$("#send-shared").on("show",function(a2,a1){var a0=$(this);s(a0,a1);a0.find(".mixer_fee").text(y);a0.find(".fees,.free,.bonus").show();if(y<0){a0.find(".fees,.free").hide()}else{if(y==0){a0.find(".fees,.bonus").hide()}else{a0.find(".free,.bonus").hide()}}a0.find(".send").unbind().click(function(){loadScript("wallet/signer",function(){startTxUI(a0,"shared",initNewTx())})});a0.find(".shared-fees").text("0.00");a0.find('input[name="send-before-fees"]').unbind().bind("keyup change",function(){var a4=parseFloat($(this).val());var a3=0;if(a4>0){if(y>0){a3=parseFloat(a4+((a4/100)*y))}else{a3=parseFloat(a4);a0.find(".bonus-value").text(formatPrecision((Math.min(a4,precisionFromBTC(200))/100)*y))}}if(precisionToBTC(a4)<0.1||precisionToBTC(a4)>250){a0.find(".shared-fees").text("0.00");a0.find(".send").prop("disabled",true)}else{a0.find(".shared-fees").text(formatBTC(a3*symbol_btc.conversion));a0.find(".send").prop("disabled",false)}a0.find(".send-value").val(a3).trigger("keyup")})});$("#send-custom").on("show",function(a2,a1){var a0=$(this);s(a0,a1);a0.find(".send").unbind().click(function(){var a3=false;if(a0.find('textarea[name="public-note"]').val()){a0.find(".send-value").each(function(){if($(this).val()<0.0001){i.makeNotice("error","misc-error","You cannot attach a note to a transaction with an output size less than 0.0001 BTC");a3=true;return false}})}if(!a3){loadScript("wallet/signer",function(){startTxUI(a0,"custom",initNewTx())})}});a0.find('input[name="fees"]').unbind().bind("keyup change",function(a3){if(a3.keyCode=="9"){return}$(this).parent().find(".send-value-usd").val(convert($(this).val()*symbol_btc.conversion,symbol_local.conversion)).text(formatSymbol($(this).val()*symbol_btc.conversion,symbol_local))});a0.find(".reset").unbind().click(function(){s(a0,true);a0.find('select[name="from"]').trigger("change")})});$("#shared-coin").on("show",function(a2,a1){var a0=$(this);loadScript("wallet/sharedcoin",function(){try{s(a0);SharedCoin.init(a0)}catch(a3){console.log(a3);i.makeNotice("error","misc-error",a3)}},function(a3){i.makeNotice("error","misc-error",a3)})});$("#send-sms").on("show",function(a2,a1){if(a1){return}var a0=$(this);s(a0);$.ajax({type:"GET",timeout:60000,url:resource+"wallet/country_codes.html",success:function(a3){a0.find('select[name="sms-country-code"]').html(a3)},error:function(){i.makeNotice("error","misc-error","Error Downloading SMS Country Codes")}});a0.find(".send").unbind().click(function(){loadScript("wallet/signer",function(){var a3=initNewTx();startTxUI(a0,"sms",a3)})})});$("#address-book").on("show",function(){var a1=$("#address-book-tbl tbody");if(aK(h)>0){a1.empty();for(var a0 in h){var a2=$("<tr><td>"+h[a0]+'</td><td><div class="addr-book-entry">'+a0+'</div></td><td style="width:16px" class="hidden-phone"><img src="'+resource+'delete.png" class="act-delete" /></td></tr>');(function(a3){a2.find(".act-delete").click(function(){i.deleteAddressBook(a3)})})(a0);a1.append(a2)}}});$('a[data-toggle="tab"]').unbind().on("show",function(a0){$(a0.target.hash).trigger("show")});$("#receive-coins-btn").click(function(){al($("#receive-coins"))});$("#cash-into-coins").click(function(){$(this).attr("href",$(this).attr("href")+i.getPreferredAddress())});$(".show_adv").click(function(){$(".modal:visible").center()});$(".download-backup-btn").show();aI()}function q(){$(".resend-code").click(function(){i.setGUID(P,true)});$("#reset-two-factor-btn").click(function(){i.openWindow(root+"wallet/reset-two-factor"+(P?"?guid="+P:""))});$(".recover-wallet-btn").click(function(){i.openWindow(root+"wallet/forgot-password"+(P?"?guid="+P:""))});$(".download-backup-btn").toggle(ao!=null).click(function(){if(!ao){i.makeNotice("error","error","No Wallet Data to Download");return}try{var a1=!!new Blob()}catch(a2){}if(a1){loadScript("wallet/filesaver",function(){var a3=new Blob([ao],{type:"text/plain;charset=utf-8"});saveAs(a3,"wallet.aes.json")})}else{var a0=window.open(null,null,"width=700,height=800,toolbar=0");a0.document.write('<!DOCTYPE html><html><head></head><body><div style="word-wrap:break-word;" >'+ao+"</div></body></html>")}aX()});$(".auth-0,.auth-1,.auth-2,.auth-3,.auth-4,.auth-5").unbind().keypress(function(a0){if(a0.keyCode==13){a0.preventDefault();$("#restore-wallet-continue").click()}});$("#restore-wallet-continue").unbind().click(function(a1){a1.preventDefault();var a0=$.trim($("#restore-guid").val());if(a0.length==0){return}if(P!=a0){e=null;i.setGUID(a0,false)}else{b()}});$(".modal").on("show",function(){O();$(this).center()}).on("hidden",function(){var a1=$(".modal:visible");var a0=$("#notices").remove();if(a1.length>0){a1.find(".modal-body").prepend(a0)}else{$("#main-notices-container").append(a0)}}).on("shown",function(){O();var a0=$(this);setTimeout(function(){if(a0.is(":visible")){a0.find(".modal-body").prepend($("#notices").remove())}},100);a0.center()})}function ar(a1){var a2=Crypto.SHA256(a1+"?");switch(a2.slice(0,2)){case"00":var a3=Crypto.SHA256(a1,{asBytes:true});return a3;break;case"01":var a0=Crypto.util.hexToBytes(a2.slice(2,4))[0];var a4=Math.round(Math.pow(2,(a0/4)));var a3=Crypto.PBKDF2(a1,"Satoshi Nakamoto",32,{iterations:a4,asBytes:true});return a3;break;default:console.log("invalid key");break}}function aN(){var a2,a0="";if(window.getSelection){a2=window.getSelection();if(a2.rangeCount){var a3=a2.getRangeAt(0).cloneContents();var a1=document.createElement("div");a1.appendChild(a3);a0=a1.innerText}}else{if(document.selection&&document.selection.type=="Text"){a0=document.selection.createRange().htmlText}}return a0}this.detectPrivateKeyFormat=function(a1){if(/^5[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{50}$/.test(a1)){return"sipa"}if(/^[LK][123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{51}$/.test(a1)){return"compsipa"}if(/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{44}$/.test(a1)||/^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{43}$/.test(a1)){return"base58"}if(/^[A-Fa-f0-9]{64}$/.test(a1)){return"hex"}if(/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789=+\/]{44}$/.test(a1)){return"base64"}if(/^6P[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{56}$/.test(a1)){return"bip38"}if(/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{21}$/.test(a1)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{25}$/.test(a1)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{29}$/.test(a1)||/^S[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{30}$/.test(a1)){var a0=Crypto.SHA256(a1+"?",{asBytes:true});if(a0[0]===0||a0[0]===1){return"mini"}}throw"Unknown Key Format "+a1};this.privateKeyStringToKey=function(a1,a3){var a0=null;if(a3=="base58"){a0=B58.decode(a1)}else{if(a3=="base64"){a0=Crypto.util.base64ToBytes(a1)}else{if(a3=="hex"){a0=Crypto.util.hexToBytes(a1)}else{if(a3=="mini"){a0=ar(a1)}else{if(a3=="sipa"){var a2=B58.decode(a1);a2.shift();a0=a2.slice(0,a2.length-4)}else{if(a3=="compsipa"){var a2=B58.decode(a1);a2.shift();a2.pop();a0=a2.slice(0,a2.length-4)}else{throw"Unsupported Key Format"}}}}}}if(a0.length!=32){throw"Result not 32 bytes in length"}return new Bitcoin.ECKey(a0)};$(document).ready(function(){if(!$.isEmptyObject({})||!$.isEmptyObject([])){i.makeNotice("error","error","Object.prototype has been extended by a browser extension. Please disable this extensions and reload the page.");return}$("input,button,select").attr("autocomplete","off");i.loadAdverts();var a1=$(document.body);P=a1.data("guid");e=a1.data("sharedkey");ac=a1.data("language");if(i.skip_init){return}MyStore.get("storage_token",function(a7){U=a7});MyStore.get("server_time_offset",function(a7){aQ=parseInt(a7);if(isNaN(aQ)){aQ=0}});q();var a2=$("#restore-guid").val();if(P&&P.length==36){i.setGUID(P,false)}else{if(a2&&a2.length>0){$("#restore-wallet-continue").click()}else{if(isExtension||window.location.href.indexOf("/login")>0){MyStore.get("guid",function(a7){if(a7&&a7.length==36){i.setGUID(a7,false)}else{$("#signup-btn").show()}})}else{$("#signup-btn").show()}}}if(top.location!=self.location){top.location=self.location.href}a1.click(function(){if(Z){clearTimeout(Z);Z=setTimeout(i.logout,i.getLogoutTime())}rng_seed_time()}).keypress(function(){if(Z){clearTimeout(Z);Z=setTimeout(i.logout,i.getLogoutTime())}rng_seed_time()}).mousemove(function(a7){if(a7){rng_seed_int(a7.clientX*a7.clientY,16)}});$(".auth-"+r).show();k=$("#restore-wallet");k.show();var a3=false;var a6=17,a5=86,a0=67,a4=67;$(document).keydown(function(a8){try{if(a8.keyCode==a6||a8.keyCode==a4){a3=true}if(a3&&a8.keyCode==a0){var a7=$.trim(aN());var a9=L[a7];if(a9!=null){if(a9.priv==null){$("#watch-only-copy-warning-modal").modal("show")}}}}catch(a8){console.log(a8)}}).keyup(function(a7){if(a7.keyCode==a6||a7.keyCode==a4){a3=false}}).ajaxStart(function(){az("loading_start");$(".loading-indicator").fadeIn(200)}).ajaxStop(function(){az("loading_stop");$(".loading-indicator").hide()})});function aZ(){$("#receive-coins").find(".tab-pane.active").trigger("show");setupToggle()}};