!function(o){"use strict";for(var r,e,i={},n=function(){},t="memory".split(","),p="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(",");r=t.pop();)o[r]=o[r]||i;for(;e=p.pop();)o[e]=o[e]||n}(this.console=this.console||{}); !function(e,t){function n(e){var t=e.length,n=ct.type(e);return ct.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=kt[e]={};return ct.each(e.match(pt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(ct.acceptData(e)){var o,a,s=ct.expando,u=e.nodeType,l=u?ct.cache:e,c=u?e[s]:e[s]&&s;if(c&&l[c]&&(i||l[c].data)||r!==t||"string"!=typeof n)return c||(c=u?e[s]=tt.pop()||ct.guid++:s),l[c]||(l[c]=u?{}:{toJSON:ct.noop}),("object"==typeof n||"function"==typeof n)&&(i?l[c]=ct.extend(l[c],n):l[c].data=ct.extend(l[c].data,n)),a=l[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[ct.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[ct.camelCase(n)])):o=a,o}}function o(e,t,n){if(ct.acceptData(e)){var r,i,o=e.nodeType,a=o?ct.cache:e,u=o?e[ct.expando]:ct.expando;if(a[u]){if(t&&(r=n?a[u]:a[u].data)){ct.isArray(t)?t=t.concat(ct.map(t,ct.camelCase)):t in r?t=[t]:(t=ct.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!s(r):!ct.isEmptyObject(r))return}(n||(delete a[u].data,s(a[u])))&&(o?ct.cleanData([e],!0):ct.support.deleteExpando||a!=a.window?delete a[u]:a[u]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(St,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:Et.test(r)?ct.parseJSON(r):r}catch(o){}ct.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!ct.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(){try{return G.activeElement}catch(e){}}function f(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function p(e,t,n){if(ct.isFunction(t))return ct.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return ct.grep(e,function(e){return e===t!==n});if("string"==typeof t){if($t.test(t))return ct.filter(t,e,n);t=ct.filter(t,e)}return ct.grep(e,function(e){return ct.inArray(e,t)>=0!==n})}function d(e){var t=Ut.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){return ct.nodeName(e,"table")&&ct.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function g(e){return e.type=(null!==ct.find.attr(e,"type"))+"/"+e.type,e}function m(e){var t=on.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function y(e,t){for(var n,r=0;null!=(n=e[r]);r++)ct._data(n,"globalEval",!t||ct._data(t[r],"globalEval"))}function v(e,t){if(1===t.nodeType&&ct.hasData(e)){var n,r,i,o=ct._data(e),a=ct._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)ct.event.add(t,n,s[n][r])}a.data&&(a.data=ct.extend({},a.data))}}function b(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!ct.support.noCloneEvent&&t[ct.expando]){i=ct._data(t);for(r in i.events)ct.removeEvent(t,r,i.handle);t.removeAttribute(ct.expando)}"script"===n&&t.text!==e.text?(g(t).text=e.text,m(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),ct.support.html5Clone&&e.innerHTML&&!ct.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&tn.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function x(e,n){var r,i,o=0,a=typeof e.getElementsByTagName!==Y?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==Y?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||ct.nodeName(i,n)?a.push(i):ct.merge(a,x(i,n));return n===t||n&&ct.nodeName(e,n)?ct.merge([e],a):a}function T(e){tn.test(e.type)&&(e.defaultChecked=e.checked)}function w(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=kn.length;i--;)if(t=kn[i]+n,t in e)return t;return r}function C(e,t){return e=t||e,"none"===ct.css(e,"display")||!ct.contains(e.ownerDocument,e)}function N(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)r=e[a],r.style&&(o[a]=ct._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&C(r)&&(o[a]=ct._data(r,"olddisplay",A(r.nodeName)))):o[a]||(i=C(r),(n&&"none"!==n||!i)&&ct._data(r,"olddisplay",i?n:ct.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function k(e,t,n){var r=vn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function E(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=ct.css(e,n+Nn[o],!0,i)),r?("content"===n&&(a-=ct.css(e,"padding"+Nn[o],!0,i)),"margin"!==n&&(a-=ct.css(e,"border"+Nn[o]+"Width",!0,i))):(a+=ct.css(e,"padding"+Nn[o],!0,i),"padding"!==n&&(a+=ct.css(e,"border"+Nn[o]+"Width",!0,i)));return a}function S(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=fn(e),a=ct.support.boxSizing&&"border-box"===ct.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=pn(e,t,o),(0>i||null==i)&&(i=e.style[t]),bn.test(i))return i;r=a&&(ct.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+E(e,t,n||(a?"border":"content"),r,o)+"px"}function A(e){var t=G,n=Tn[e];return n||(n=j(e,t),"none"!==n&&n||(cn=(cn||ct("')}return e.trustAs("html",n)}var r,i=[],s={},d=Config.Emoji,c=18;for(r in d)i.push(d[r][0]),s[d[r][0]]=r;var u=new RegExp("((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>\"']))|(\\n)|("+i.join("|")+")","i"),l=/(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;return{wrapRichText:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,a){function o(){i||(i=!0,$(t).on("blur focus keydown mousedown touchstart",n))}function n(o){"mousemove"==o.type&&$(t).off("mousemove",n);var i="blur"==o.type||"timeout"==o.type?!0:!1;a.cancel(r),i||(r=a(function(){n({type:"timeout"})},3e4)),e.idle.isIDLE!=i&&(e.$apply(function(){e.idle.isIDLE=i}),i&&"timeout"==o.type&&$(t).on("mousemove",n))}e.idle={isIDLE:!1};var r,i=!1;return{start:o}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","IdleManager",function(e,t,a){function o(){d||(d=!0,t.$watch("idle.isIDLE",r),t.$watch("offline",r))}function n(e){var o=tsNow();if(!(e&&!s||!e&&5e4>o-s||t.offline))return s=e?0:o,a.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function r(){i&&e.cancel(i),t.idle.isIDLE?i=e(function(){n(!0)},5e3):(n(!1),i=e(r,6e4))}var i,s=0,d=!1;return{start:o}}]).service("NotificationsManager",["$rootScope","$window","$timeout","$interval","$q","MtpApiManager","AppPeersManager","IdleManager","AppConfigManager",function(e,t,a,o,n,r,i,s,d){function c(e){return void 0!==S[e]?S[e]:S[e]=r.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)}})}function u(e,t){var a=angular.copy(t);return a._="inputPeerNotifySettings",S[e]=n.when(t),r.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)},settings:a})}function l(e){return c(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function p(){if(!w)return!1;"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",h);try{$(t).on("beforeunload",v)}catch(e){}}function h(){Notification.requestPermission(),$(t).off("click",h)}function g(t){return e.idle.isIDLE?(M++,w&&"granted"===Notification.permission?(d.get("notify_nosound").then(function(e){e||m()}),void d.get("notify_nodesktop").then(function(e){if(!e){var a=++b,o=t.key||"k"+a,n=new Notification(t.title,{icon:t.image||"",body:t.message||""});n.onclick=function(){n.close(),window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus(),v(),t.onclick&&t.onclick()},n.onclose=function(){delete y[o],v()},y[o]=n}})):!1):!1}function m(){var e="img/sound_a.wav";$("#notify_sound").html('')}function f(e){var t=y[e];if(t)try{t.close&&t.close()}catch(a){}}function v(){angular.forEach(y,function(e){try{e.close&&e.close()}catch(t){}}),y={}}var _,w="Notification"in window,y={},b=0,M=0,S={},A=$('link[rel="icon"]'),D=$(''),U=document.title;return e.$watch("idle.isIDLE",function(e){o.cancel(_),e?(U=document.title,_=o(function(){var e=tsNow();!M||e%2e3>1e3?(document.title=U,$('link[rel="icon"]').replaceWith(A)):(document.title=M>1?M+" notifications":"1 notification",$('link[rel="icon"]').replaceWith(D))},1e3)):(M=0,document.title=U,$('link[rel="icon"]').replaceWith(A),v())}),{start:p,notify:g,cancel:f,clear:v,getPeerSettings:c,getPeerMuted:l,savePeerSettings:u}}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,a){function o(a,o){if(i>=2)return console.log("Skip error box, too many open",i,a,o),!1;o=o||{};var n=e.$new();angular.extend(n,a),i++;var r=t.open({templateUrl:"partials/error_modal.html",scope:n,windowClass:o.windowClass||"error_modal_window"});return r.result["finally"](function(){i--}),r}function n(e,t){return o({title:e,description:t})}function r(a,o){o=o||{};var n=e.$new();angular.extend(n,a);var r=t.open({templateUrl:"partials/confirm_modal.html",scope:n,windowClass:o.windowClass||"confirm_modal_window"});return r.result}var i=0;return a.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),r(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:o,alert:n,confirm:r}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function a(){var a=e.$new();return t.open({templateUrl:"partials/peer_select.html",controller:"PeerSelectController",scope:a,windowClass:"peer_select_window"}).result}return{selectPeer:a}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function a(a,o){o=o||{};var n=e.$new();return n.multiSelect=a,angular.extend(n,o),t.open({templateUrl:"partials/contacts_modal.html",controller:"ContactsModalController",scope:n,windowClass:"contacts_modal_window"}).result}return{selectContacts:function(e){return a(!0,e)},selectContact:function(e){return a(!1,e)}}}]); "use strict";angular.module("myApp.controllers",[]).controller("AppWelcomeController",["$scope","$location","MtpApiManager","ErrorService",function(e,t,o){o.getUserID().then(function(o){o?t.url("/im"):e.showWelcome=!0})}]).controller("AppLoginController",["$scope","$location","$timeout","MtpApiManager","ErrorService",function(e,t,o,n,r){function a(e){n.setUserAuth(i.dcID,{expires:e.expires,id:e.user.id}),o.cancel(c),t.url("/im")}function s(){o.cancel(c),--e.callPending.remaining?c=o(s,1e3):(e.callPending.success=!1,n.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash},i).then(function(){e.callPending.success=!0}))}n.getUserID().then(function(e){return e?void t.url("/im"):void 0});var i={dcID:1,createNetworker:!0};e.credentials={},e.progress={},e.callPending={};var c;e.sendCode=function(){o.cancel(c),e.progress.enabled=!0,n.invokeApi("auth.checkPhone",{phone_number:e.credentials.phone_number},i).then(function(t){return e.progress.enabled=!1,t.phone_registered?(e.progress.enabled=!0,void n.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_number,sms_type:0,api_id:2496,api_hash:"8da85b0d5bfe62527e5b244c209159c3"},i).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.error={},e.callPending.remaining=t.send_call_timeout,s()},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"},t.handled=!0}})):(r.show({error:{code:400,type:"ACCOUNT_REQUIRED"},phone:e.credentials.phone_number}),!1)},function(t){switch(e.progress.enabled=!1,t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"},t.handled=!0}})},e.logIn=function(t){var o="auth.signIn",r={phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(o="auth.signUp",angular.extend(r,{first_name:e.credentials.first_name,last_name:e.credentials.last_name})),e.progress.enabled=!0,n.invokeApi(o,r,i).then(a,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return t.handled=!0,e.logIn(!0);if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return t.handled=!0,e.logIn(!1);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},t.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},t.handled=!0;break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"},t.handled=!0}})}}]).controller("AppIMController",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","ContactsSelectService","ErrorService",function(e,t,o,n,r,a,s,i,c,l){function u(){e.curDialog={peer:o.p||!1}}e.$on("$routeUpdate",u),e.$on("history_focus",function(o,n){a.dismissAll(),n.peerString==e.curDialog.peer?e.$broadcast("ui_history_focus"):t.url("/im?p="+n.peerString)}),e.isLoggedIn=!0,e.openSettings=function(){n.open({templateUrl:"partials/settings_modal.html",controller:"SettingsModalController",windowClass:"settings_modal_window"})},e.openContacts=function(){c.selectContact().then(function(t){e.dialogSelect(i.getUserString(t))})},e.openGroup=function(){c.selectContacts().then(function(t){if(1==t.length)e.dialogSelect(i.getUserString(t[0]));else if(t.length>1){var o=r.$new();o.userIDs=t,n.open({templateUrl:"partials/chat_create_modal.html",controller:"ChatCreateModalController",scope:o,windowClass:"contacts_modal_window"})}})},e.dialogSelect=function(e){r.$broadcast("history_focus",{peerString:e})},e.logOut=function(){l.confirm({type:"LOGOUT"}).then(function(){s.logOut().then(function(){location.hash="/login",location.reload()})})},u()}]).controller("AppImDialogsController",["$scope","$location","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager",function(e,t,o,n,r,a){function s(){l=0,u=0,p=!1,d={},c=!1,a.getDialogs(e.search.query,u).then(function(t){e.dialogs=[],e.contacts=[],t.dialogs.length&&(l+=t.dialogs.length,u=t.dialogs[t.dialogs.length-1].top_message,p=null===t.count||l0?s=t:0>t&&(a=s+t),o=a;s>o;o++)n=e.history[o],r&&n.from_id==r.from_id&&n.date0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),i.deleteMessages(t).then(function(){D()})}}function v(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),u.selectPeer().then(function(e){var o=c.getPeerID(e);i.forwardMessages(o,t).then(function(){D(),n.$broadcast("history_focus",{peerString:e})})})}}function U(){e.selectActions?D():(e.selectActions=!0,e.$broadcast("ui_panel_update"))}function P(t){t&&(e.missedCount=0),e.mediaType=t||!1,e.history=[],y()}function S(){e.curDialog.peerID>0?n.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&n.openChat(-e.curDialog.peerID)}e.$watch("curDialog.peer",h),l.attach(),p.start(),d.start(),e.history=[],e.mediaType=!1,e.selectedMsgs={},e.selectedCount=0,e.selectActions=!1,e.missedCount=0,e.typing={},e.state={},e.toggleMessage=M,e.selectedDelete=A,e.selectedForward=v,e.selectedCancel=D,e.selectedFlush=I,e.toggleEdit=U,e.toggleMedia=P,e.showPeerInfo=S;var b,w=0,E=!1,F=0,N={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument"},k=0,T={};e.$on("history_update",angular.noop),e.$on("history_append",function(t,r){if(r.peerID==e.curDialog.peerID){if(e.mediaType)return void(r.my?P():e.missedCount++);e.history.push(i.wrapForHistory(r.messageID)),_(-3),e.typing={},e.$broadcast("ui_history_append",{my:r.my}),r.my&&(e.historyUnread={}),w++,n.idle.isIDLE||o(function(){i.readHistory(e.curDialog.inputPeer)})}}),e.$on("history_delete",function(t,o){if(o.peerID==e.curDialog.peerID){for(var n=[],r=0;r0){var t=[];return angular.forEach(e.selectedContacts,function(e,o){t.push(o)}),o.close(t)}},e.importContact=function(){t.open({templateUrl:"partials/import_contact_modal.html",controller:"ImportContactModalController",windowClass:"import_contact_modal_window"}).result.then(function(t){t&&r(e.search&&e.search.query||"")})}}]).controller("PeerSelectController",["$scope","$modalInstance",function(e,t){e.dialogSelect=function(e){t.close(e)}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){e.group={name:""},e.createGroup=function(){if(e.group.name){e.group.creating=!0;var t=[];return angular.forEach(e.userIDs,function(e){t.push({_:"inputUserContact",user_id:e})}),n.invokeApi("messages.createChat",{title:e.group.name,users:t}).then(function(e){r.saveApiUsers(e.users),a.saveApiChats(e.chats),s.saveSeq(e.seq)&&s.saveUpdate({_:"updateNewMessage",message:e.message,pts:e.pts});var t=a.getChatString(e.message.to_id.chat_id);o.$broadcast("history_focus",{peerString:t})})["finally"](function(){delete e.group.creating})}}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){var i=a.getChat(e.chatID);e.group={name:i.title},e.updateGroup=function(){return e.group.name?e.group.name==i.title?t.close():(e.group.updating=!0,n.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){r.saveApiUsers(t.users),a.saveApiChats(t.chats),s.saveSeq(t.seq)&&s.saveUpdate({_:"updateNewMessage",message:t.message,pts:t.pts});var n=a.getChatString(e.chatID);o.$broadcast("history_focus",{peerString:n})})["finally"](function(){delete e.group.updating})):void 0}}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager",function(e,t,o,n){void 0===e.importContact&&(e.importContact={}),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},n.importContact(e.importContact.phone,e.importContact.first_name,e.importContact.last_name).then(function(e){t.close(e)})["finally"](function(){delete e.progress.enabled}))}}]); "use strict";angular.module("myApp.filters",[]).filter("userName",[function(){return function(t){return t&&(t.first_name||t.last_name)?t.first_name+" "+t.last_name:"DELETED"}}]).filter("userFirstName",[function(){return function(t){return t&&(t.first_name||t.last_name)?t.first_name||t.last_name:"DELETED"}}]).filter("userStatus",["$filter",function(t){return function(r){return r&&r.status&&"userStatusEmpty"!=r.status._?"userStatusOnline"==r.status._?"online":"last seen "+t("relativeTime")(r.status.was_online):"offline"}}]).filter("chatTitle",[function(){return function(t){return t&&t.title?t.title:"DELETED"}}]).filter("dateOrTime",["$filter",function(t){var r={};return function(e){if(r[e])return r[e];var n=1e3*e,u=Math.abs(tsNow()-n),i="HH:mm";return u>5184e5?i="shortDate":u>432e5&&(i="EEE"),r[e]=t("date")(n,i)}}]).filter("duration",[function(){return function(t){var r=t%60,e=Math.floor((t-r)/60);return 10>r&&(r="0"+r),e+":"+r}}]).filter("phoneNumber",[function(){return function(t){var r=" ";return t=(t||"").replace(/\D/g,""),"7"==t.charAt(0)&&11==t.length?"+"+t.charAt(0)+r+"("+t.substr(1,3)+")"+r+t.substr(4,3)+"-"+t.substr(7,2)+"-"+t.substr(9,2):"+"+t}}]).filter("formatSize",[function(){return function(t){return t?1024>t?t+" b":1048576>t?Math.round(t/1024*10)/10+" Kb":Math.round(t/1048576*100)/100+" Mb":"0"}}]).filter("formatSizeProgress",["$filter",function(t){return function(r){var e=t("formatSize")(r.done),n=e.split(" "),u=t("formatSize")(r.total),i=u.split(" ");return i[1]===n[1]?n[0]+" of "+i[0]+" "+(n[1]||""):e+" of "+u}}]).filter("nl2br",[function(){return function(t){return t.replace(/\n/g,"
")}}]).filter("richText",["$filter",function(t){return function(r){return t("linky")(r,"_blank").replace(/\n| /g,"
")}}]).filter("relativeTime",["$filter",function(t){return function(r){var e=1e3*r,n=Math.abs(tsNow()-e);return 6e4>n?"just now":3e6>n?Math.ceil(n/6e4)+" minutes ago":1e7>n?Math.ceil(n/36e5)+" hours ago":t("dateOrTime")(r)}}]); angular.module("myApp.templates",[]).run(["$templateCache",function(n){n.put("partials/chat_create_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/chat_edit_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/chat_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/confirm_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/contacts_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/dialog.html",'\n\n
\n
\n \n \n
\n\n
\n \n
\n\n
\n\n
\n \n \n \n \n
\n\n
\n \n You{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n \n\n \n Photo\n Video\n Document\n Audio\n Location\n Contact\n \n\n \n created the group \n changed group name\n changed group photo\n removed group photo\n\n \n \n returned to group\n \n \n invited \n \n \n\n \n \n left group\n \n \n kicked \n \n \n \n\n \n
\n\n
\n
\n'),n.put("partials/edit_contact_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/error_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/head.html",'
\n \n
'),n.put("partials/im.html",'
\n\n
\n\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n\n
\n
\n Please select a chat to start messaging\n
\n
\n Loading history\n
\n\n
\n
\n\n
\n\n
\n
\n\n Info\n Edit\n\n \n \n Show all messages\n +{{missedCount}}\n \n\n
\n

Photos

\n

Videos

\n

Documents

\n\n

\n
\n \n {{historyPeer.data | userStatus}}\n
\n
\n \n \n \n \n \n
\n

\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n No messages here yet...\n
\n
\n
\n
\n
\n\n
\n
\n is typing\n
\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
Drop photos here to send
\n \n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n
\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n
\n\n
\n\n\n
\n\n\n\n
\n\n'),n.put("partials/import_contact_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/login.html",'
\n\n\n\n'),n.put("partials/message.html",'
\n \n \n
\n\n
\n\n\n
\n\n
\n
\n\n \n\n \n \n created the group «»\n \n \n changed group name to «»\n \n \n changed group photo\n \n \n removed group photo\n \n \n \n invited \n \n \n returned to group\n \n \n \n \n kicked \n \n \n left group\n \n \n\n \n \n\n
\n\n \n \n \n\n
\n\n
\n
\n \n
\n\n \n \n \n\n \n\n \n \n \n
\n \n
\n\n
\n\n \n \n\n
\n Forwarded message from , \n
\n\n
\n\n \n \n \n\n
\n \n \n \n \n \n\n
\n
\n Video\n \n \n
\n \n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n
\n\n
\n
\n \n \n \n
\n
\n Download\n Open\n
\n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n \n \n \n \n\n
\n
\n \n Voice message\n \n \n \n
\n
\n Play\n
\n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n\n
\n \n \n \n
\n \n \n
\n
\n
\n\n
\n \n
\n
\n \n \n
\n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n
\n
\n\n
\n
\n\n
\n\n'),n.put("partials/peer_select.html",'
\n\n \n\n
'),n.put("partials/photo_modal.html",'
\n\n \n\n
'),n.put("partials/profile_edit_modal.html",'
\n\n \n\n \n\n \n\n
'),n.put("partials/settings_modal.html",'\n'),n.put("partials/user_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/video_modal.html",'
\n\n \n\n
'),n.put("partials/welcome.html",'
\n\n\n
\n\n
\n \n\n
\n
\n

Welcome to an unofficial web-client of mobile Telegram messenger.

\n

It is an alpha, which means it is still not 200% secure and functional.

\n

Visit telegram.org to learn more.

\n
\n Start Messaging\n
\n
\n\n
\n') }]); "use strict";angular.module("myApp.directives",["myApp.filters"]).directive("myDialog",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/dialog.html"}}).directive("myMessage",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/message.html"}}).directive("myDialogsList",["$window","$timeout",function(e,t){function o(o,i,n){function r(){return n.modal?($(i).css({height:$(e).height()-200}),void h()):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),c&&c.offsetHeight||(c=$(".im_page_footer")[0]),$(i).css({height:$(e).height()-c.offsetHeight-(l?l.offsetHeight:44)-72}),void h())}var a=$(".im_dialogs_wrap",i)[0],s=$(".im_dialogs_scrollable_wrap",i)[0],l=$(".tg_page_head")[0],c=$(".im_page_footer")[0],d=!1;onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var h=function(){onContentLoaded(function(){$(a).nanoScroller()})};o.$on("ui_dialogs_prepend",h),o.$on("ui_dialogs_append",function(){onContentLoaded(function(){h(),d=!1,t(function(){$(s).trigger("scroll")})})}),o.$on("ui_dialogs_change",function(){onContentLoaded(function(){h(),d=!1,t(function(){$(s).trigger("scroll")})})}),$(s).on("scroll",function(){!d&&s.scrollTop>=s.scrollHeight-s.clientHeight-300&&(o.$emit("dialogs_need_more"),d=!0)}),$(e).on("resize",r),r(),setTimeout(r,1e3)}return{link:o}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,o){function i(){$(o).css({height:$(e).height()-(r&&r.offsetHeight||0)-(n&&n.offsetHeight||0)-200}),$(a).nanoScroller()}var n=$(".contacts_modal_search")[0],r=$(".contacts_modal_panel")[0],a=$(".contacts_wrap",o)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("myHistory",["$window","$timeout","$transition",function(e,t,o){function i(i,n){function r(t){if(n.is(":visible")&&$(n[0].parentNode).is(":visible")){$(f).is(":visible")&&$(f).css({height:$(_).height()}),p&&p.offsetHeight||(p=$(".tg_page_head")[0]),m&&m.offsetHeight||(m=$(".im_page_footer")[0]);var o=$(e).height()-u.offsetHeight-g.offsetHeight-(p?p.offsetHeight:44)-m.offsetHeight;$(s).css({height:o}),$(c).css({minHeight:o-44}),a(),t!==!0&&(T&&onContentLoaded(function(){d.scrollTop=d.scrollHeight,b()}),b(100))}}function a(){$(l).css({marginTop:0}),l.offsetHeight>0&&l.offsetHeight<=d.offsetHeight&&$(l).css({marginTop:d.offsetHeight-l.offsetHeight-20-44+"px"}),$(s).nanoScroller()}var s=$(".im_history_wrap",n)[0],l=$(".im_history_messages",n)[0],c=$(".im_history",n)[0],d=$(".im_history_scrollable_wrap",n)[0],h=$(".im_history_scrollable",n)[0],u=$(".im_history_panel_wrap",n)[0],g=$(".im_bottom_panel_wrap",n)[0],f=$(".im_send_form_wrap",n)[0],p=$(".tg_page_head")[0],m=$(".im_page_footer")[0],_=$(".im_send_form",n)[0],v=!1;onContentLoaded(function(){d.scrollTop=d.scrollHeight,$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var y,b=function(e){t(function(){$(d).hasClass("im_history_to_bottom")||$(s).nanoScroller()},e||0)},w=!1,C=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(y=0;y=d.scrollHeight-d.clientHeight,!v&&d.scrollTop<=300&&(v=!0,i.$emit("history_need_more"))))}),$(e).on("resize",r),r(),onContentLoaded(r)}return{link:i}}]).directive("mySendForm",["$timeout","AppConfigManager",function(e,t){function o(o,i){function n(){if(v){e.cancel(y);var t=$("
").text(o.draftMessage.text||"").html();t=t.replace(/\n/g,"
"),$(v).html(t),a()}}function r(){v&&($(v).trigger("change"),a())}function a(){var e=v.offsetHeight;k!=e&&(k=e,o.$emit("ui_editor_resize"))}function s(){onContentLoaded(function(){_.focus()})}function l(e){var t,i=e&&e.target;if(i&&(t=i.src)&&0===t.indexOf("data")){i.parentNode.removeChild(i),t=t.substr(5).split(";");for(var n=t[0],r=atob(t[1].split(",")[1]),a=new Uint8Array(r.length),s=0;se-C||(C=e,o.$emit("ui_typing"))});var k=v.offsetHeight;$("body").on("dragenter dragleave dragover drop",d),$(document).on("paste",c),v&&$(v).on("DOMNodeInserted",l),o.$on("ui_peer_change",s),o.$on("ui_history_focus",s),o.$on("ui_history_change",s),o.$on("ui_message_send",s),o.$on("ui_peer_draft",n),o.$on("ui_message_before_send",r),o.$on("$destroy",function(){$("body").off("dragenter dragleave dragover drop",d),$(document).off("paste",c),v&&$(v).off("DOMNodeInserted",l)}),s()}return{link:o,scope:{draftMessage:"="}}}]).directive("myLoadThumb",["MtpApiFileManager",function(e){function t(t,o){var i=0,n=e.getCachedFile(t.thumb&&t.thumb.location&&!t.thumb.location.empty&&t.thumb.location);n&&o.attr("src",n),t.thumb&&t.thumb.width&&t.thumb.height&&(o.attr("width",t.thumb.width),o.attr("height",t.thumb.height));var r=(t.$watchCollection("thumb.location",function(n){t.thumb&&t.thumb.width&&t.thumb.height&&(o.attr("width",t.thumb.width),o.attr("height",t.thumb.height));var a=++i;if(!n||n.empty)return o.attr("src",t.thumb&&t.thumb.placeholder||"img/blank.gif"),void r();var s=e.getCachedFile(n);return s?(o.attr("src",s),void r()):(o.attr("src")||o.attr("src",t.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(t.thumb.location).then(function(e){a==i&&(o.attr("src",e),r())},function(e){console.log("Download image failed",e,t.thumb.location,o[0]),a==i&&(o.attr("src",t.thumb.placeholder||"img/blank.gif"),r())}))}),angular.noop)}return{link:t,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager",function(e){function t(t,o){var i=$("img",o);if(i.attr("src",e.getCachedFile(t.thumbLocation)||"img/blank.gif").addClass("thumb_blurred").addClass("thumb_blur_animation"),t.fullPhoto.location){var n;if(t.fullPhoto.size){var r={_:"inputFileLocation",volume_id:t.fullPhoto.location.volume_id,local_id:t.fullPhoto.location.local_id,secret:t.fullPhoto.location.secret};n=e.downloadFile(t.fullPhoto.location.dc_id,r,t.fullPhoto.size)}else n=e.downloadSmallFile(t.fullPhoto.location);t.progress={enabled:!0,percent:1},n.then(function(e){t.progress.enabled=!1,i.attr("src",e).removeClass("thumb_blurred")},function(e){console.log("Download image failed",e,t.fullPhoto.location),t.progress.enabled=!1,t.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to display this image.
Please, install Google Chrome or use mobile app instead.'}:{text:"Download failed",error:e}},function(e){t.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}return{link:t,transclude:!0,template:'
{{progress.percent}}% Complete (success)
{{error.text}}
',scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","MtpApiFileManager",function(e,t){function o(o){o.progress={enabled:!0,percent:1},o.player={};var i,n={_:"inputVideoFileLocation",id:o.video.id,access_hash:o.video.access_hash},r=!1;if(navigator.plugins)for(i=0;i=0&&(r=!0);var a=t.downloadFile(o.video.dc_id,n,o.video.size,null,{mime:"video/mp4"});a.then(function(t){o.progress.enabled=!1,o.player.hasQuicktime=r,o.player.quicktime=!1,o.player.src=e.trustAsResourceUrl(t)},function(e){console.log("Download video failed",e,o.video),o.progress.enabled=!1,o.player.src="",o.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to play this video.
Please, install Google Chrome or use mobile app instead.'}:{text:"Video download failed",error:e}},function(e){o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))}),o.$on("$destroy",function(){a.cancel()})}return{link:o,transclude:!0,template:'
{{progress.percent}}% Complete (success)
',scope:{video:"="}}}]).directive("myMapPoint",["ExternalResourcesManager",function(e){function t(t,o){var i="AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0",n="https://maps.googleapis.com/maps/api/staticmap?sensor=false¢er="+t.point.lat+","+t.point["long"]+"&zoom=13&size=200x100&scale=2&key="+i;e.downloadImage(n).then(function(e){o.append('')}),o.attr("href","https://maps.google.com/?q="+t.point.lat+","+t.point["long"]),o.attr("target","_blank")}return{link:t,scope:{point:"="}}}]).directive("myLoadingDots",["$interval",function(){function e(e,o){o.html(t(o[0])?'
':"...")}function t(e){if(void 0===o&&(o=void 0!==e.style.animationName,o===!1)){var t,i="Webkit Moz O ms Khtml".split(" ");for(t=0;te?$(i[0].parentNode).css("marginTop",(o-e)/2):$(i[0].parentNode).css("marginTop",""),t(function(){$(i[0].parentNode).addClass("modal-content-animated")},300)};onContentLoaded(n),$(e).on("resize",n),o.$on("ui_height",function(){onContentLoaded(n)})}return{link:o}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function t(t,o,i){var n=function(){var t=o[0].offsetHeight,n=$(e).height(),r=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,a=n>t?parseInt((n-t)*r):"";o.css({marginTop:a,marginBottom:a})};onContentLoaded(n),$(e).on("resize",n),t.$on("ui_height",function(){onContentLoaded(n)})}return{link:t}}]);